<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7633380562260343802</id><updated>2012-02-16T05:32:34.973-05:00</updated><category term='software engineering management'/><category term='web tools for the server side'/><category term='web architecture'/><category term='server side programming web api'/><category term='server side web programming'/><category term='self'/><category term='synthesis and representation'/><category term='open source'/><category term='java interfaces'/><category term='teamfrednet'/><category term='ultra light space flight'/><category term='fixed price contracting'/><category term='cognitive structure'/><category term='fv3tk'/><category term='software economics'/><category term='software engineering'/><category term='interaction mechanics'/><category term='java class libraries'/><category term='internet systems engineering'/><category term='web api'/><category term='glxp'/><category term='web economics'/><category term='technology economics'/><category term='computer science education'/><category term='java.net'/><category term='opennasa'/><category term='s-lang'/><category term='web tools'/><category term='xmpp'/><category term='java'/><category term='client side'/><category term='semantic web'/><category term='sx'/><category term='language'/><category term='java.awt'/><category term='wtkx'/><category term='systems theory'/><category term='tag clouds'/><category term='rest'/><category term='priority watch list'/><category term='llg'/><category term='cube sat web'/><category term='open service'/><category term='open commerce'/><category term='network virtual machine'/><category term='software development contracting'/><category term='cpi'/><category term='http streaming'/><category term='online app creation'/><category term='net neutrality'/><category term='economic theory'/><category term='csg'/><category term='jnlp-loader'/><category term='open source space flight'/><category term='ipr'/><category term='open partnership'/><category term='design patterns'/><category term='ena'/><category term='hapax3'/><category term='consciousness'/><category term='gd-astro'/><category term='resp'/><category term='c-lang'/><category term='http'/><category term='foucault'/><category term='java.io'/><category term='web architectural principles'/><category term='java classes'/><category term='interaction machine theory'/><category term='internet'/><category term='jogl'/><category term='jnlp'/><category term='java.nio'/><category term='jbxml'/><category term='cyclic project management'/><category term='lorv'/><category term='lxl'/><category term='odl'/><category term='info economic machinery'/><category term='syntelos speculative'/><category term='ustr'/><category term='dans le monde'/><category term='amazon s3'/><category term='streaming'/><category term='programmable web api'/><category term='syntelos'/><category term='fv3'/><category term='gap-data'/><category term='gae'/><category term='jela'/><category term='interface architecture'/><category term='blogger'/><category term='interaction'/><category term='interaction computing'/><category term='exploitation media'/><category term='executable web'/><category term='foucault graph'/><category term='natural language'/><category term='appjet'/><category term='deleuze'/><category term='organic oop'/><category term='economic systems theory'/><category term='slashdot'/><title type='text'>blog.syntelos.com</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.syntelos.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>81</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-320991290286260331</id><published>2012-01-15T16:19:00.001-05:00</published><updated>2012-01-15T16:19:35.911-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economic theory'/><category scheme='http://www.blogger.com/atom/ns#' term='economic systems theory'/><category scheme='http://www.blogger.com/atom/ns#' term='systems theory'/><title type='text'>Notes on Systems Theory in Economics</title><content type='html'>&lt;p&gt; The Economic systems of Governments and People are studied by their in situ participants.  In some moments, political demands on Economic theory, measurement and analysis may become so dramatic as to appear to overwhelm the independence of science from metaphysics.  Let's call this the Subjective Dynamic.  The Subjective Dynamic is a feedback channel into the Economy through Politics and Government from People.  It is independent of the objective processes that are marked by theory, measurement, and analysis. &lt;/p&gt;&lt;p&gt; The Economic activities of People and Government have many forms, from individual to incorporations.  For example, the development of many open source products are performed by individuals acting independently as well as individuals acting within an incorporated purpose.  These distinctions are blurred as the structures of incorporated purposes vary broadly from formal to informal.  Therefore a model is free to regard the incorporated purpose as a property of People or activity, or both, or as variations on the chartered entity from history. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-320991290286260331?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/320991290286260331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=320991290286260331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/320991290286260331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/320991290286260331'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2012/01/notes-on-systems-theory-in-economics.html' title='Notes on Systems Theory in Economics'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-7395456577463455869</id><published>2011-12-07T08:03:00.001-05:00</published><updated>2011-12-07T09:11:28.097-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='info economic machinery'/><category scheme='http://www.blogger.com/atom/ns#' term='web economics'/><category scheme='http://www.blogger.com/atom/ns#' term='technology economics'/><title type='text'>Pull Economy and Push - Pull Systems</title><content type='html'>&lt;p&gt; The subject of &lt;a href="http://www.fastcodesign.com/1665567/bruce-nussbaum-this-is-the-dawn-of-indie-capitalism"&gt;this post by Burce Nussbaum&lt;/a&gt; has condensed a thought process begun recently from work on &lt;a href="http://b.ulsf.net/2011/07/integrated-plastic-fabrication.html"&gt;Ultra Light Fabrication&lt;/a&gt; and a general interest in Economics.  &lt;/p&gt;&lt;p&gt;  Let's say that the industrial economy is a Push Economy, and a Do It Yourself, 3D Printer kind of economics are a Pull Economy.   As 3D Printers become faster, better and more capable we'll be "printing our own" more and more. &lt;/p&gt; &lt;p&gt; The usual mathematics of Push Economy require massive economies of scale to efficiently produce physical goods.   In contrast, the production of a mobile phone in a Pull Economy requires time and energy and raw materials.  While the time is in a practical range, we can count it as "zero" relative to the macroeconomy.  We can expect that energy and materials will be in practical ranges, as well.  &lt;/p&gt;&lt;p&gt; The macroeconomy will have hybrid Push Pull Markets.  That is, Push products competing with Pull products in terms of technology and features.  An open question concerns the dynamics of effective trade offs where Pull products win. &lt;/p&gt;&lt;p&gt; A great deal is implied.  Design, open source, private source, communication, trade and commerce.  The &lt;i&gt;&lt;a href="http://www.google.com/search?q=inverse+femtobarns"&gt;"multiple inverse femtobarns"&lt;/a&gt;&lt;/i&gt; of implications includes a family friendly work place at home, new choices, and new engineering of software and hardware by problem not component. &lt;/p&gt;&lt;p&gt; The individual facing the "buy versus print" choice is electing to consume a product or materials.  In electing to print with materials, one directly employs design information which may be commercial or free and may be open source or private source. &lt;/p&gt;&lt;p&gt; There's also an interesting exo-economy.  Printers as advanced as envisioned here will have implications for manned and unmanned development of extraterrestrial space.  For example, in situ planetary development and interstellar maintenance and development. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-7395456577463455869?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/7395456577463455869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=7395456577463455869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7395456577463455869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7395456577463455869'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2011/12/pull-economy-and-push-pull-systems.html' title='Pull Economy and Push - Pull Systems'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-3829778612126400657</id><published>2011-11-30T09:39:00.001-05:00</published><updated>2011-11-30T10:01:47.742-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='streaming'/><category scheme='http://www.blogger.com/atom/ns#' term='xmpp'/><category scheme='http://www.blogger.com/atom/ns#' term='gae'/><title type='text'>Google Talk XMPP Throttle Update Frequencies</title><content type='html'>&lt;p&gt; The update frequencies for sending XMPP packets into &lt;tt&gt;talk.google.com&lt;/tt&gt; as for Google Talk and AppEngine XMPP applications are determined by a throttle.  &lt;/p&gt; &lt;p&gt; As of this writing, maximal message throughput frequency is once in ten seconds.  This frequency is determined over ten messages by an averaging calculation.  &lt;/p&gt;&lt;p&gt; Exceeding this frequency will result in an XMPP CANCEL error which is not recoverable.  The CANCEL event should be followed by a disconnection, and then a fifty second pause before reconnecting. &lt;/p&gt;&lt;p&gt; As XMPP is the continuous stream for AppEngine, it's a nice fit for a number of applications. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-3829778612126400657?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/3829778612126400657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=3829778612126400657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3829778612126400657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3829778612126400657'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2011/11/google-talk-xmpp-throttle-update.html' title='Google Talk XMPP Throttle Update Frequencies'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-9209861132016884088</id><published>2011-11-12T18:50:00.001-05:00</published><updated>2011-11-12T23:17:21.212-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java code signing setup with keytool</title><content type='html'>&lt;div&gt;&lt;p&gt; Here's a funny little process that needs some code and documentation.  &lt;/p&gt;&lt;p&gt; The Certificate Authority (CA) that I like is &lt;a href="http://www.startcom.org/"&gt;StartCom&lt;/a&gt;.  They want a 2048 bit RSA key with SHA1 hashing.  The &lt;code&gt;java keytool&lt;/code&gt; won't generate such a key, so the following process is necessary to create a code signing key via StartCom. &lt;/p&gt;&lt;h3&gt;Create new key&lt;/h3&gt;&lt;p&gt; The process&lt;pre class="prettyprint lang-sh"&gt;&lt;br /&gt;openssl req -newkey rsa:2048 -new -out somename.csr&lt;br /&gt;&lt;/pre&gt;will create &lt;code&gt;"prikey.pem"&lt;/code&gt; and &lt;code&gt;"somename.csr"&lt;/code&gt; after asking for &lt;a href="http://en.wikipedia.org/wiki/Distinguished_Name"&gt;X.500 DName&lt;/a&gt; info. &lt;/p&gt;&lt;h3&gt;Send CSR&lt;/h3&gt;&lt;p&gt; Send your CSR to a &lt;a href="http://www.startssl.com/"&gt;CA&lt;/a&gt; for signing.  This process is fairly involved as the CA goes through its identity resolution process for issuing a Code Signing Certificate. &lt;/p&gt;&lt;h3&gt;Received Signed&lt;/h3&gt;&lt;p&gt; Receive your signed certificate from the CA, for example&lt;code&gt;"signed.pem"&lt;/code&gt;.&lt;/p&gt;&lt;h3&gt;Convert PEM files to DER files&lt;/h3&gt;&lt;p&gt;&lt;pre class="prettyprint lang-sh"&gt;&lt;br /&gt;openssl pkcs8 -topk8 -nocrypt -in prikey.pem -out prikey.der&lt;br /&gt;openssl x509 -in singed.pem -out signed.der&lt;br /&gt;&lt;/pre&gt;These forms depend on the filename extensions "pem" and "der" on these files.  Otherwise employ the &lt;code&gt;"-inform pem"&lt;/code&gt; and &lt;code&gt;"-outform der"&lt;/code&gt; options. &lt;/p&gt;&lt;h3&gt;Import Key and Signed&lt;/h3&gt;&lt;p&gt; The source file is &lt;a href="http://syntelos.googlecode.com/svn/www/src/jks/ImportKey.java"&gt;ImportKey.java&lt;/a&gt;, with a binary alongside it at &lt;a href="http://syntelos.googlecode.com/svn/www/src/jks/ImportKey.class"&gt;ImportKey.class&lt;/a&gt;.  Drop the binary into your key processing folder, open a command line terminal, change into that folder, and run&lt;pre class="prettyprint lang-sh"&gt;&lt;br /&gt;java ImportKey --help&lt;br /&gt;&lt;/pre&gt;to test your environment. &lt;/p&gt;&lt;p&gt; To perform the import into your key store (for jar signing), run the following in the folder containing all of these files, including &lt;code&gt;ImportKey.class&lt;/code&gt;.&lt;pre class="prettyprint lang-sh"&gt;&lt;br /&gt;java ImportKey -prikey prikey.der -signed signed.der -alias prikey -storepass ${keystorepass}&lt;br /&gt;&lt;/pre&gt;Refer to the &lt;code&gt;ImportKey&lt;/code&gt; "help" for additional options like key pass or store file.&lt;/p&gt;&lt;h3&gt;Test Installation&lt;/h3&gt;&lt;p&gt; Then to check the code signing operation, create a JAR to sign, then sign and verify.&lt;pre class="prettyprint lang-sh"&gt;&lt;br /&gt;jarsigner -storepass ${storepass} -keypass ${keypass} test.jar ${alias}&lt;br /&gt;jarsigner -verify -storepass ${storepass} -keypass ${keypass} test.jar &lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;h3&gt;Caveats&lt;/h3&gt;&lt;p&gt; This tool supports JKS key stores.  Additional support is easy enough to code in. &lt;/p&gt;&lt;h3&gt;Credits&lt;/h3&gt;&lt;p&gt; Other articles similar to this one are out and about.  I wrote this one because I wanted to import into an existing key store and wanted to be certain of the process (measure twice, cut once). &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-9209861132016884088?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/9209861132016884088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=9209861132016884088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/9209861132016884088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/9209861132016884088'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2011/11/java-code-signing-setup-with-keytool.html' title='Java code signing setup with keytool'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-1916533927326852574</id><published>2011-11-03T02:23:00.000-04:00</published><updated>2011-11-03T02:25:09.989-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='info economic machinery'/><category scheme='http://www.blogger.com/atom/ns#' term='web economics'/><category scheme='http://www.blogger.com/atom/ns#' term='natural language'/><category scheme='http://www.blogger.com/atom/ns#' term='internet systems engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='web tools'/><title type='text'>Information economy in politics</title><content type='html'>&lt;p&gt; We can make an epistemological approach to politics in the identification of two kinds of political currency: markers and actions.  And then we can apply monetary economics to the information that qualifies voting on behalf of political actors. &lt;/p&gt;&lt;p&gt; First we model voting at the legislature as the expenditure of marker or action money.  The marker is a cynical vote, and the action is a courageous vote.  Cynical is a vote against one's stated principles, and courageous is a vote in favor of one's stated principles. &lt;/p&gt;&lt;p&gt; Given such a model, we can apply essential monetary theory to the two kinds of currency.  From the metaphor "bad drives out good" we recall the principal that less valuable money will displace more valuable money in ordinary transaction markets.  As the marker currency is valued against an uncertain future (e.g. the actor may never benefit), and the action currency is a foregone conclusion (i.e. historical fact), we can deduce that the marker currency is less valuable than the action currency. &lt;/p&gt;&lt;p&gt; The remaining questions of interest concern the qualifying of voting and the tracking of currency in the real world. &lt;/p&gt;&lt;p&gt; Resolving the model to a practical application may involve conveniences or development.   For example, are marker and action transactions at vote casting time both positively signed?  Are additional, related transactions necessary to comprehensive information?  &lt;/p&gt; &lt;p&gt; An open database of stated positions (courage) is available from &lt;a href="http://www.votesmart.org/"&gt;Vote Smart&lt;/a&gt;. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-1916533927326852574?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/1916533927326852574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=1916533927326852574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1916533927326852574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1916533927326852574'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2011/11/information-economy-in-politics.html' title='Information economy in politics'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-7819673145299657733</id><published>2011-10-06T10:37:00.000-04:00</published><updated>2011-10-06T10:37:24.556-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='info economic machinery'/><category scheme='http://www.blogger.com/atom/ns#' term='web economics'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Info Economic Identity from G+</title><content type='html'>&lt;p&gt; It's &lt;a href="http://gigaom.com/2011/09/30/its-official-google-will-be-connected-to-everything/"&gt;become clear&lt;/a&gt; that &lt;a href="http://plus.google.com/"&gt;Google+&lt;/a&gt; is precisely what it looks like: Google doing for Human Identity what Google did for the Web.  Google is developing the value of the information we put into the internet (for our mutual benefit).  Clearly the social network is the home of Human Identity on the internet. &lt;/p&gt;&lt;p&gt; Identity is critical in the world of unrefined information -- information not carefully compiled according to a disciplined logic, which is most everything that's not Science Data. &lt;/p&gt; &lt;p&gt; If identity were logically crisp (globally precise), then the identity of authorship and the networks of association, sharing and collaboration would be refined information. &lt;/p&gt; &lt;p&gt; The problem with simple identity services like &lt;a href="http://www.google.com/accounts"&gt;Google Accounts&lt;/a&gt; is that they're mechanical.  I have a half dozen Google Accounts that I employ for reasons that are a combination of project structure purposes and Google quota subversion.  This situation dilutes the value of Identity in Google's data networks.  Before Plus, Google had a strong sense of projects (code, blog, video, etc), but a poor sense of Identity.&lt;/p&gt; &lt;p&gt; This is ultimately what they mean by "who are you". If a DNA sequence was a number, that number would be generally the same idea (while cloning is fiction the number is unique).&lt;/p&gt; &lt;p&gt; There's a continuum from poor mechanical identity to crisp, refined identity information.  Moving the value of Human Identity information up this range into higher values requires open solutions that permit identity to be applied.  The value is in the application, otherwise it is only info economic theory.  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-7819673145299657733?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/7819673145299657733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=7819673145299657733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7819673145299657733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7819673145299657733'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2011/10/info-economic-identity-from-g.html' title='Info Economic Identity from G+'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-7330053863310270167</id><published>2011-09-05T01:18:00.000-04:00</published><updated>2011-09-05T01:18:18.074-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interaction'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Notes on issues for applications as languages</title><content type='html'>&lt;p&gt; Language as the principal tool of solution faces two problems: the design of languages, and the intersection of language and interaction.  &lt;/p&gt;&lt;p&gt; Language design frameworks may be varieties of syntactic and semantic classes.  Of course the simplest is a list of one or more data literals, and among the most complex are the programming languages.  &lt;/p&gt;&lt;p&gt; The application of interaction  &lt;a href="http://www.cs.brown.edu/people/pw/" style="text-decoration: none;"&gt;*&lt;/a&gt; &lt;a href="http://www.cs.brown.edu/people/dqg/" style="text-decoration: none;"&gt;*&lt;/a&gt; to language design requires additional dimension in the definition of syntactic elements.  Simple syntax is defined in terms of one dimensional text codes, for example the character class (set) containing the lower case ASCII character codes.  Interaction syntax is defined in terms of complex codes extended for the desired attributes of interaction.   &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-7330053863310270167?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/7330053863310270167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=7330053863310270167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7330053863310270167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7330053863310270167'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2011/09/notes-on-issues-for-applications-as.html' title='Notes on issues for applications as languages'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-3805632478108988367</id><published>2011-09-03T17:26:00.000-04:00</published><updated>2011-09-05T00:14:58.525-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Notes on the success of Object Oriented Programming</title><content type='html'>&lt;p&gt; Formal verification shows us that every application should begin with the design and implementation of an application specific language.  That is, by existence as a language the formal verification of an application is the route to bug free applications.  &lt;/p&gt;&lt;p&gt; The application interface may be as simple as possible, and user productivity maximized.  The concept tends to be obscured by economic and practical elements of development engineering, such as a need to develop the definition of the problem domain.&lt;/p&gt;&lt;p&gt; At their best, the Object Oriented Programming Languages propose the creation of sublanguages on behalf of their users.  This practice permits experimental development while partially (significantly) following the ideal path of the translation of the computer instruction and programming languages into crisp and clean solution ranges.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-3805632478108988367?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/3805632478108988367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=3805632478108988367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3805632478108988367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3805632478108988367'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2011/09/notes-on-success-of-object-oriented.html' title='Notes on the success of Object Oriented Programming'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2185884689156405175</id><published>2011-05-15T11:00:00.031-04:00</published><updated>2011-05-15T13:34:16.637-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='info economic machinery'/><category scheme='http://www.blogger.com/atom/ns#' term='web architectural principles'/><category scheme='http://www.blogger.com/atom/ns#' term='internet systems engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='interface architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='open partnership'/><category scheme='http://www.blogger.com/atom/ns#' term='open commerce'/><title type='text'>Internet for Formula One</title><content type='html'>In &lt;a href="http://www.ferrari.com/English/about_ferrari/Corporate/Pages/110514_COR_Ferrari_and_Montezemolo_in_the_IHT_and_the_NYT.aspx"&gt;this article&lt;/a&gt;, Ferrari Chairman &lt;a href="http://www.ferrari.com/English/about_ferrari/Ferrari_today/Management/Pages/luca_di_montezemolo_en.aspx"&gt;Luca di Montezemolo&lt;/a&gt; discusses some views on the future of Formula One.  I believe these views are complementary to classical internet engineering, in which viral media are as common place as networks and their computers.&lt;br /&gt;&lt;br /&gt;As it happens, I met Luca di Montezemolo and &lt;a href="http://www.ferrari.com/English/about_ferrari/Ferrari_today/Management/Pages/piero_ferrari_en.aspx"&gt;Piero Ferrari&lt;/a&gt; in 1988 at American Service Center in Arlington, Virginia -- where I was working with Bill Story and Mark Hustler as the junior mechanic in the Ferrari service department.  Since then I've been to school, where I met the internet, and dove into Software and Systems Engineering head first.&lt;br /&gt;&lt;br /&gt;Ferrari remains, for me, an icon of engineering excellence on par with the National Aeronautics and Space Administration (NASA).  Each of Ferrari's machines are composed as a whole system in a remarkable way that compares with the most elegant (e.g. Atlas V and Centaur) of our (USA) space flight craft.&lt;br /&gt;&lt;br /&gt;As I understand it, the phenomenon that is Ferrari has been created by a team of exceedingly passionate and stubborn people who would not take "it can't be done" for an answer -- not unlike the Atlas Centaur story.&lt;br /&gt;&lt;br /&gt;In overview, the killer app for Formula One is a public multicast network for live track telemetry.  &lt;br /&gt;&lt;br /&gt;A multicast network is able to employ the internet backbone as a broadcast medium.  It won't reach the last mile to many data product consumers.  It can distribute track telemetry data to producers of data products in statistics and visualization.  Data product service networks are exemplified by &lt;a href="http://aws.amazon.com/ec2/"&gt;Amazon EC2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Given the multicast foundation, a sustainable ecosystem emerges.  Services to give me a TCP stream at home, and services to put 3D live telemetry on my mobile, desktop, and PS3.  The production of these telemetry data collection and visualization products is an art appropriate to a large, open world of products.&lt;br /&gt;&lt;br /&gt;In detail, internet engineering for important media begins with a protocol specification that all producers and consumers share in order to interoperate.  The specification is successful when it is complete enough to provide interoperability without proprietary extensions or adaptations.  A specification is "viral" when it is published publicly -- as for example via the &lt;a href="http://www.ietf.org/"&gt;Internet Drafts process&lt;/a&gt; which is highly accessible in an open variety of ways.&lt;br /&gt;&lt;br /&gt;As we know well, examples include the &lt;a href="http://tools.ietf.org/html/rfc791"&gt;internet&lt;/a&gt; itself, the &lt;a href="http://tools.ietf.org/html/rfc2616"&gt;web&lt;/a&gt;, and many media defined in the &lt;a href="http://www.ietf.org/"&gt;Internet Draft and Requests for Comment documents&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In this ideal telemetry data network, a multicast communication channel is broadcast to all telemetry data consumers listening to a network address and port number.  &lt;br /&gt;&lt;br /&gt;Multicast network addresses are Internet Protocol address numbers, for example "228.5.6.7", and must be employed sparingly.  Each network address has a fixed quantity of about 60,000 port numbers.  &lt;br /&gt;&lt;br /&gt;Therefore a track could be a network address, allocated and published dynamically, and have many port numbers for data products.&lt;br /&gt;&lt;br /&gt;Each telemetry stream on a network port number could be specific to a car or data type.  &lt;br /&gt;&lt;br /&gt;When these telemetry data streams are not encrypted, their utility as public media (re publicity &amp;amp; viralness) is maximized.  A publishing of public keys and the signing of telemetry data packets is necessary to the integrity of the telemetry data streams.&lt;br /&gt;&lt;br /&gt;The network address and port number and data type are published out of band (not in multicast).  HTTP is a good match, here.  Public utility is maximized when there is a single way of doing this, a directory, and this is done in a well defined way for both producers and consumers of the directory (via specification).&lt;br /&gt;&lt;br /&gt;The directory would need to control telemetry data producers with access control in order to deliver reliable and relevant information to consumers.  The directory is a utilitarian component of the ecosystem, and would not need an attractive or appealing user interface as it would be transparent to data product consumers.&lt;br /&gt;&lt;br /&gt;Next the content of data on the multicast network would need to be specified in a collection of formats for all telemetry data types.  &lt;br /&gt;&lt;br /&gt;The typical solution found across media and industry is a variation on the tagged data format.  A byte identifies the format of subsequent bytes.  This family of formats may be exemplified by the &lt;a href="http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One"&gt;ASN.1 and its transfer formats&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;How many kinds of data can be produced by track telemetry systems?  What are they?  How many update frequencies do they have?  Across the internet?  &lt;br /&gt;&lt;br /&gt;Typically once per second is a practical limit.  A single modest computer at the track could collect and serve this stream to the internet.  Redundancy adds these pairings of internet connection &amp;amp; server.&lt;br /&gt;&lt;br /&gt;In conclusion, excellence in commerce and engineering marries vision with sustainability and efficiency.  Superior sustainability for long term stability is necessarily derived from an extraordinary degree of openness.  The import is to partner with the world in an open way, inviting the world to partner with you.  This is viral media.&lt;br /&gt;&lt;br /&gt;One argument against may be the preservation of brand, for example that of "Formula One".  However, the brand is identified in the product consumer user interface and would be protected in conventional ways.&lt;br /&gt;&lt;br /&gt;Additional arguments against may be development cost or time to market.  These issues may be countered with the benefits of open partnership community, and long term stability.&lt;br /&gt;&lt;br /&gt;Implementations get caught up in tools, and projects fall prey to their features or limitations -- in terms of architectural principles and the long term stability of network resources.  An open solution lends structure to the problem by publishing practical and complete specifications, and adhering to them in a precise way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2185884689156405175?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2185884689156405175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2185884689156405175' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2185884689156405175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2185884689156405175'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2011/05/internet-for-formula-one.html' title='Internet for Formula One'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-1652052385733080394</id><published>2011-01-14T21:11:00.005-05:00</published><updated>2011-01-14T21:17:47.352-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>PVK for code signing on Windows</title><content type='html'>A little piece of code that needs to return to the wild, &lt;a href="http://syntelos.googlecode.com/svn/www/src/pvk/Pvk.java"&gt;Pvk.java&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is a partial rewrite of &lt;a href="http://www.drh-consultancy.demon.co.uk/pvk.html"&gt;PVK by Stephen Kenson&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This version accepts a PKCS#8 DER private key input, since the DER file I had translated via an older version of &lt;a href="http://www.openssl.org/"&gt;OpenSSL&lt;/a&gt; is no longer working via the latest (debian) version.&lt;br /&gt;&lt;br /&gt;Thanks to Stephen Henson and the folks at Sun Microsystems for plenty of great open source code to use in solving this problem.&lt;br /&gt;&lt;br /&gt;If (when) I make updates, they'll be copied &lt;a href="http://syntelos.googlecode.com/svn/www/src/pvk/Pvk.java"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-1652052385733080394?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/1652052385733080394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=1652052385733080394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1652052385733080394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1652052385733080394'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2011/01/pvk-for-code-signing-on-windows.html' title='PVK for code signing on Windows'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-7576738047931850763</id><published>2010-12-11T15:53:00.003-05:00</published><updated>2010-12-11T16:09:02.438-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='organic oop'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction machine theory'/><title type='text'>Organic Objects</title><content type='html'>It seems to me that the most valuable conception of Object Oriented Programming that I regularly employ would be that founded on the principles of Organic Programming as derived from the text &lt;a href="http://scholar.google.com/scholar?cluster=7471451178171382618"&gt;Theory of self reproducing automata&lt;/a&gt; by John von Neumann.&lt;br /&gt;&lt;br /&gt;The first principle of organicity derived from TSRA would be organic liveness: the organism (program) is alive or dead according to the rules in its design.  Dead being not usable.&lt;br /&gt;&lt;br /&gt;In Object Oriented Programming, an object is such an organism.  Its internal state is regulated by its functions, and its organic liveness depends on the coherency of its internal state.&lt;br /&gt;&lt;br /&gt;Therefore OOP design creates such organisms that regulate their internal state, and typically protect that organic liveness from becoming internally incoherent (by raising exceptions for function calls that would violate the object- organism's internal coherency).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-7576738047931850763?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/7576738047931850763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=7576738047931850763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7576738047931850763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7576738047931850763'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/12/organic-objects.html' title='Organic Objects'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-3478273865035062479</id><published>2010-11-25T15:56:00.010-05:00</published><updated>2010-11-27T17:27:19.763-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='exploitation media'/><title type='text'>Notes on the psychology of exploitation media</title><content type='html'>Media is central to a great many subjects, from internet to government.  The high utility of the concept of exploitation media deserves recognition.&lt;br /&gt;&lt;br /&gt;From the &lt;a href="http://plato.stanford.edu/entries/exploitation/"&gt;Stanford Encyclopedia of Philosophy&lt;/a&gt; I discovered a satisfying definition of exploitation from &lt;a href="http://scholar.google.com/scholar?q=Hill,+J.+L.,+1994,+%E2%80%9CExploitation,%E2%80%9D+Cornell+Law+Review,+79&amp;oe=utf-8&amp;rls=org.mozilla:en-US:official&amp;client=firefox-a&amp;um=1&amp;ie=UTF-8&amp;sa=N&amp;hl=en&amp;tab=ws"&gt;[Hill, J. L., 1994, “Exploitation,” Cornell Law Review, 79, pp. 631-99.]&lt;/a&gt;.  That is &lt;br /&gt;&lt;blockquote cite="Hill 1994, 637"&gt;&lt;br /&gt;“[E]xploitation is a psychological, rather than a social or an economic, concept. For an offer to be exploitative, it must serve to create or to take advantage of some recognized psychological vulnerability which, in turn, disturbs [perturbs] the offeree's ability to reason effectively [rationally as self in context of society and economy].”&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.google.com/search?q=John+Lawrence+Hill"&gt;Hill&lt;/a&gt; is clearly an astute thinker, from &lt;a href="http://heinonline.org/HOL/LandingPage?collection=journals&amp;handle=hein.journals/ilr84&amp;div=16&amp;id=&amp;page="&gt;"A Utilitarian Theory of Duress"&lt;/a&gt; to &lt;a href="http://lawmedia.shu.edu/lawreview/Vol%2026/Issue%201/26%20Seton%20Hall%20L%20Rev%2092.pdf"&gt;"Mill, Freud, and Skinner: The concept of the self and the moral psychology of liberty"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This definition satisfies the character of exploitation in media as observed to get one "high" -- from television and film to video games and including crossover media that blend fiction, provocation and promotion with non fiction (for example Fox News).  Naturally, such pleasures will tend to "leak" from the perception of fantasy into interactions with the physical world via both conscious and subconscious elements of mind.  The observation of these phenomena is very common.&lt;br /&gt;&lt;br /&gt;In the history of cinema, exploitation may be defined in terms of distraction.  References are often made to exploitation in the promotion of a film -- which is clearly a useful distinction.  For example, it is common among television series for the title sequence to be highly exploitative while the primary content may not be so, or far less so.  Indeed, advertising and promotion tend to be exploitative.&lt;br /&gt;&lt;br /&gt;It's not uncommon to observe an apparent belief that all media is exploitation.  Which of course is not true, but a projection of a personal state of mind onto "reality".  Many producers of media endeavor to do more than to maximize profit, recognizing that pure exploitation is not durable or satisfying (or both).&lt;br /&gt;&lt;br /&gt;Sometimes promotion can be the sharing of a fact of existing opportunity.  And sometimes excitement is sincere joy.  While in some cases these things can be no more (or too little more) than manipulation.&lt;br /&gt;&lt;br /&gt;Internet media combine elements recognized from the prior history of media with interaction.  Interactive and non interactive media each possess capacities for exploitation in distraction from utility and substance for self in society and economy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-3478273865035062479?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/3478273865035062479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=3478273865035062479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3478273865035062479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3478273865035062479'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/11/notes-on-psychology-of-exploitation.html' title='Notes on the psychology of exploitation media'/><author><name>John Pritchard</name><uri>http://www.blogger.com/profile/11476927126331604564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_n8k55XuGNL4/S_uEoYbMOmI/AAAAAAAAAAM/AdNlc1G9wYM/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-4948590794794087831</id><published>2010-09-16T22:56:00.013-04:00</published><updated>2010-09-17T05:32:23.794-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='gap-data'/><category scheme='http://www.blogger.com/atom/ns#' term='cpi'/><category scheme='http://www.blogger.com/atom/ns#' term='gae'/><title type='text'>Yet another version of the Cognitive Profile</title><content type='html'>It seems like ten years ago that the first version of the &lt;a href="http://www.cognitiveprofile.com/cpionline"&gt;CPI&lt;/a&gt; was launched on a JavaScript server named &lt;a href="http://www.john-pritchard.com/rhinojetty"&gt;Rhinojetty&lt;/a&gt;.  And then the second version of the CPI was launched on a prototype of the &lt;a href="http://www.john-pritchard.com/sx"&gt;Syntelos SX&lt;/a&gt; server.&lt;br /&gt;&lt;br /&gt;Tonight the latest iteration of this venerable educational app is launched in Googleland, with the server on &lt;a href="http://code.google.com/appengine"&gt;Google App Engine&lt;/a&gt;, the website on &lt;a href="http://www.google.com/sites"&gt;Google Sites&lt;/a&gt;, and the engineering on &lt;a href="http://code.google.com/p/cpi"&gt;Google Code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In the service of this latest production I put together a graphics renderer now found at &lt;a href="http://code.google.com/p/pisces-graphics"&gt;Pisces Graphics&lt;/a&gt;.  The  &lt;a href="http://code.google.com/appengine"&gt;GAE&lt;/a&gt; platform doesn't include the usual "headless" graphics packages found in most Java server side environments, and I couldn't find a reasonable replacement.  One possibility was &lt;a href="http://code.google.com/p/pulpcore/"&gt;PulpCore&lt;/a&gt;, which is a software renderer, however this package doesn't support the breadth of graphics operations needed for the CPI result image.&lt;br /&gt;&lt;br /&gt;Reworking Pisces required sorting its S15.16 fixed point math into a floating point user space package.  The current result, in version 1.0.1, has some notable omissions in its API.  The &lt;a href="http://code.google.com/p/pisces-graphics/source/browse/trunk/src/pisces/Graphics.java"&gt;pisces.Graphics API&lt;/a&gt; exposes the path operators moveTo, lineTo, cubicTo and friends but missed the close operator and the beginRendering and endRendering methods.&lt;br /&gt;&lt;br /&gt;The good part is the Path, available as&lt;br /&gt;&lt;pre class="prettyprint lang-java"&gt;&lt;br /&gt;    public class Graphics {&lt;br /&gt;&lt;br /&gt;        public Graphics draw(Path p)&lt;br /&gt;&lt;br /&gt;        public Graphics fill(Path p)&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I think this at least the third time I've done Font unpacking and rendering.  In this case there's yet another approach, foresaking the usual abstraction in the choice to simply name the font for its file.&lt;br /&gt;&lt;pre class="prettyprint lang-java"&gt;&lt;br /&gt;    Font font = new Font("sun12x22.psfu");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I like it.  Results in a simple and effective package.&lt;br /&gt;&lt;br /&gt;Here's the CPI code that uses Pisces, &lt;a href="http://code.google.com/p/cpi/source/browse/trunk/server/src/cpi/ProfileImage.java"&gt;Profile Image&lt;/a&gt;.  It's in a state between having been disassembled from the previous version, and possibly opening up to scaling the image.&lt;br /&gt;&lt;br /&gt;Many thanks to Google and Sun and David Eisenberg for lots of fun and interesting code to use in this project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-4948590794794087831?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/4948590794794087831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=4948590794794087831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4948590794794087831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4948590794794087831'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/09/yet-another-version-of-cognitive.html' title='Yet another version of the Cognitive Profile'/><author><name>John Pritchard</name><uri>http://www.blogger.com/profile/11476927126331604564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_n8k55XuGNL4/S_uEoYbMOmI/AAAAAAAAAAM/AdNlc1G9wYM/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-7235389603579283721</id><published>2010-09-03T18:12:00.008-04:00</published><updated>2010-09-03T18:26:29.788-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c-lang'/><category scheme='http://www.blogger.com/atom/ns#' term='s-lang'/><title type='text'>Notes on the address domain in the C programming language</title><content type='html'>Preliminary work towards a new programming language, &lt;a target="_top" href="https://docs.google.com/document/edit?id=1ofqPH0_lXmn5DYFl8JvCe29gsr2q3rKnPgxrziWMGQY&amp;hl=en#"&gt;S&lt;/a&gt;, examines &lt;a target="_top" href="https://docs.google.com/document/edit?id=1AK9jirRI4rs0MmERkofNflabRQxVjYPd7-kqXgejp4U&amp;hl=en#"&gt;pointer arithmetic in C&lt;/a&gt;.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Transparent reference programming languages like S are based on the principle of all names are references, and the identical equivalence between a named address of value and a named value.  In this case the address of operator is not required, the only dereferencing operation is for the named members of a structured region, and the type cast operation is simplified to one mode of operation over equivalent sizes.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This work endeavors to create a language with the highly readable syntax of Java and the transparency of C.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-7235389603579283721?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/7235389603579283721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=7235389603579283721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7235389603579283721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7235389603579283721'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/09/notes-on-address-domain-in-c.html' title='Notes on the address domain in the C programming language'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-8902790189556780302</id><published>2010-08-11T14:47:00.015-04:00</published><updated>2010-08-11T16:19:37.824-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='net neutrality'/><title type='text'>Are We Loosing Net Neutrality?</title><content type='html'>The internet is successful because the internet protocol is a powerful medium.  Service providers can imagine many ways of splitting up the medium to make more money, however the corporate conception is necessarily short sighted.&lt;br /&gt;&lt;br /&gt;On the long term, corporations evolve in fundamental ways.  They can open, merge, split, be acquired, and close.  This is appropriate to individual corporations including capital market service providers, but a headache for the consumers of infrastructure providers.  &lt;br /&gt;&lt;br /&gt;For profit internet service seems to work well enough on the short term.  However, in the past decade we have seen that most internet service consumers have no access to the multicast protocols.  And of course there's the famous case of Comcast versus BitTorrent.&lt;br /&gt;&lt;br /&gt;Perhaps corporations are not capable of being responsible for basic infrastructure over the long term, due to the need for continuous growth in the economic rent paid on public equity capital.  &lt;br /&gt;&lt;br /&gt;In other words, if for profit internet service providers can't do the business they entered into then other forms of internet service infrastructure will be needed.  The public postal service is not the only alternative.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Wireless_mesh_network"&gt;Wireless mesh networks&lt;/a&gt; have been developed by municipal governments, and individuals who install &lt;a href="http://www.google.com/search?q=wireless+mesh+router"&gt;a mesh node&lt;/a&gt; somewhere.&lt;br /&gt;&lt;br /&gt;If every house had a mesh node, then internet would route normally between houses and collective entities like cities and municipalities could connect the mesh to the conventional internet with a large, shared pipe.&lt;br /&gt;&lt;br /&gt;This has been done in a number of places including California and Massachusetts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-8902790189556780302?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/8902790189556780302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=8902790189556780302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8902790189556780302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8902790189556780302'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/08/are-we-loosing-net-neutrality.html' title='Are We Loosing Net Neutrality?'/><author><name>John Pritchard</name><uri>http://www.blogger.com/profile/11476927126331604564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_n8k55XuGNL4/S_uEoYbMOmI/AAAAAAAAAAM/AdNlc1G9wYM/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-3684130779405744527</id><published>2010-08-07T15:22:00.008-04:00</published><updated>2010-08-07T15:47:43.376-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><title type='text'>What is Software Engineering?</title><content type='html'>Most essentially, it is the art of realizing the significance of simplicity to reasoning about the organization of the machine.&lt;br /&gt;&lt;br /&gt;In the production of software we organize the machine for its operation.  The most important tools and methods we employ are for reasoning about this process -- to comprehend it.&lt;br /&gt;&lt;br /&gt;The ideal organization of the machine in a purely mechanical (performance) perspective is typically very different from the human logical one, as we use the programming language to reason about the organization of a program as a set of desired properties and characteristics.&lt;br /&gt;&lt;br /&gt;In the practice of Software Engineering we deal with this central issue in the compromises between the ideal and desired organizations of the code written in the programming language.&lt;br /&gt;&lt;br /&gt;With experience it becomes clear that simpler forms tend to narrow the difference between the ideal machine and the desired machine.  &lt;br /&gt;&lt;br /&gt;When the code is simpler, two possibilities emerge.  First, the code is easier to reason about and therefore fewer devices are employed for the sake of comprehension.  And second, code design can be more mechanical as a single state machine or stateless function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-3684130779405744527?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/3684130779405744527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=3684130779405744527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3684130779405744527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3684130779405744527'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/08/what-is-software-engineering.html' title='What is Software Engineering?'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-3991837508016349726</id><published>2010-07-14T17:48:00.000-04:00</published><updated>2010-07-14T17:57:40.240-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><category scheme='http://www.blogger.com/atom/ns#' term='csg'/><title type='text'>CSG in Fv3</title><content type='html'>Currently working on Constructive Solid Geometry in &lt;a href="http://fv3.googlecode.com/"&gt;Fv3&lt;/a&gt;.  Started with a rewrite from &lt;a href="http://unbboolean.sf.net/"&gt;Danilo Balby's UnBBoolean J3DBool&lt;/a&gt;, but that package employs an algorithm from &lt;a href="http://scholar.google.com/scholar?hl=en&amp;q=allintitle%3A+%22Constructive+Solid+Geometry+for+Polyhedral+Objects%22&amp;btnG=Search&amp;as_sdt=8000000000&amp;as_ylo=&amp;as_vis=0"&gt;Laidlaw, Trumbore and Hughes, "Constructive Solid Geometry for Polyhedral Objects"&lt;/a&gt; which is not very good for triangulated geometries.  A related paper by &lt;a href="http://scholar.google.com/scholar?hl=en&amp;q=allintitle%3A+%22Constructive+Solid+Geometry+for+Triangulated+Polyhedra%22&amp;btnG=Search&amp;as_sdt=8000000000&amp;as_ylo=&amp;as_vis=0"&gt;Philip Hubbard, "Constructive Solid Geometry for Triangulated Polyhedra"&lt;/a&gt; describes the situation and a solution.&lt;br /&gt;&lt;br /&gt;My &lt;a href="https://docs.google.com/document/edit?id=1uIZzKy_P6XTZMJ0-ciZeToiMkqUNzK5WejArjX0-BgI&amp;pli=1#"&gt;"Notes on Triangulated Polyhedra in Constructive Solid Geometry"&lt;/a&gt; is a place to document the work in progress on &lt;a href="http://code.google.com/p/fv3/source/browse/trunk/src/fv3/csg/u/AH.java"&gt;Fv3/CSG/AH&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-3991837508016349726?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/3991837508016349726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=3991837508016349726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3991837508016349726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3991837508016349726'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/07/csg-in-fv3.html' title='CSG in Fv3'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-1733754567604529524</id><published>2010-04-23T22:26:00.000-04:00</published><updated>2010-04-23T22:30:01.447-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source space flight'/><category scheme='http://www.blogger.com/atom/ns#' term='ultra light space flight'/><title type='text'>A cryogenic H2+O2 technology set</title><content type='html'>Developing ideas for open source engineering for space flight&lt;br /&gt;&lt;a href="http://ultra-light-space-flight.blogspot.com/"&gt;Ultra Light Space Flight&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://ultra-light-space-flight.blogspot.com/2010/04/cryogenic-h2o2-technology-set.html"&gt;A cryogenic H2+O2 technology set&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-1733754567604529524?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/1733754567604529524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=1733754567604529524' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1733754567604529524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1733754567604529524'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/04/cryogenic-h2o2-technology-set.html' title='A cryogenic H2+O2 technology set'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-753838691203086388</id><published>2010-04-15T14:51:00.000-04:00</published><updated>2010-04-15T14:52:13.597-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source space flight'/><category scheme='http://www.blogger.com/atom/ns#' term='ultra light space flight'/><title type='text'>Open Source Engineering for Space Flight</title><content type='html'>Today the President of the United States stands with NASA, the ISS partners, and private industry to further NASA's mission to extend the space frontier for all of us.&lt;br /&gt;&lt;br /&gt;On the internet, engineers have been making progress and gaining interest in ultra light space flight projects that cap spending at many orders of magnitude less than that required for human and public sector space flight missions.&lt;br /&gt;&lt;br /&gt;We have been studying and learning how to do this work in ways compatible with, and complementary to other parts of our lives and sectors of our societies.&lt;br /&gt;&lt;br /&gt;We recognize the role that open source engineering has played in everyone's lives online, and the similar potentials it may have for the expanding space economy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-753838691203086388?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/753838691203086388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=753838691203086388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/753838691203086388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/753838691203086388'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/04/open-source-engineering-for-space.html' title='Open Source Engineering for Space Flight'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-5993059437818821317</id><published>2010-04-07T17:44:00.000-04:00</published><updated>2010-04-08T09:38:02.996-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='info economic machinery'/><category scheme='http://www.blogger.com/atom/ns#' term='opennasa'/><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction computing'/><category scheme='http://www.blogger.com/atom/ns#' term='open partnership'/><title type='text'>Internet scale engineering</title><content type='html'>Like most human endeavors, engineering combines art and discipline for an objective result.  The objectives for engineering effort are predominantly economic, and our methods and practices reflect this history.&lt;br /&gt;&lt;br /&gt;In the internet, conventional economics have changed.  Fundamentally, the marginal cost of information replication is zero.  As a result, a particle physics of information economics is continuously emerging.&lt;br /&gt;&lt;br /&gt;For example, the Google Page Rank Algorithm recognized the economic value of a hyperlink in a hypertext web page -- and succeeded in converting these economic quanta into a very large cash flow like a great sail in the wind of internet information. &lt;br /&gt;&lt;br /&gt;The story of the past, present and future of the internet is the story of these quanta of effort and utility.&lt;br /&gt;&lt;br /&gt;The internet opportunity for engineering is being explored daily, perhaps most expressively in open source engineering.  In this case, free and open opportunity combines education with ambition on the internet scale.  Collegial communities of effort develop around opportunity and excellence to develop kernels of work into accomplishment.&lt;br /&gt;&lt;br /&gt;In one perspective, internet scale engineering could be described as collecting and organizing interested participants.  However the essential elements of the open source engineering proposition are an open (reproducible) result produced in a generous team.  In a good experience one learns and grows.  These are basic.  A particularly interesting or exciting project as in space flight for example is only all the more worthwhile.&lt;br /&gt;&lt;br /&gt;Moving up the economic ladder of internet opportunity for performing work is a function of minimizing the fixed and variable costs of project contribution.  Increasingly smaller quanta of effort express convenience and productivity.&lt;br /&gt;&lt;br /&gt;So there are a couple things to learn to do in order to launch projects into this future.&lt;br /&gt;&lt;br /&gt;One is the definition of the initial work kernel as motivating and sufficient to progress.  Another is realizing methods of contributing work that are a good fit for the folks needed by the project.  And another is some approaches to team communication that are a good fit to all of the above.&lt;br /&gt;&lt;br /&gt;Kernel, Tools, Community.&lt;br /&gt;&lt;br /&gt;With these things in place and well fit, it shouldn't take a year to bring even the most substantial project up to strength through social media -- friends and friends of friends -- and perhaps a few well chosen ad words.&lt;br /&gt;&lt;br /&gt;Internet scale engineering reaches deep into methods and practices.  It demands open generosity, or collaborate first and cynicate later.  Relationships will flux as characters emerge; while the life of the project will depend on maintaining the open source engineering proposition: open results in a generous team.  And it requires effective and convenient tools that maximize convenience.&lt;br /&gt;&lt;br /&gt;The internet frontier lies in extraordinary new heights in productivity for open, reproducible results -- and thereby in new degrees of freedom for innovation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-5993059437818821317?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/5993059437818821317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=5993059437818821317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5993059437818821317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5993059437818821317'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/04/internet-scale-engineering.html' title='Internet scale engineering'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2641929894893009575</id><published>2010-02-21T14:32:00.000-05:00</published><updated>2010-02-21T15:30:35.786-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='self'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='consciousness'/><title type='text'>Matters of screen size</title><content type='html'>In &lt;a href="http://www.theatlantic.com/doc/200807/google"&gt;"Is Google Making Us Stupid?"&lt;/a&gt;, Nicholas Carr looks into his own experiences and perceptions with the impact of the internet on his mind.  &lt;br /&gt;&lt;br /&gt;Naturally, when the researcher and the instrument or experiment are one in the same, there is no science, not even the soft or subjective science of statistical analysis -- at least not until one is able to condense a proper experiment from the collection of thoughts and ideas that emerge from the myriad processes of self analysis.&lt;br /&gt;&lt;br /&gt;However the subject is an important one, as the impact of the internet on our lives has been enormous.  Moving virtually the whole world population through short internet decades of awareness and development.  We went through the flame wars, when we discovered the false intimacy of the internet.  We went through the face book, when we discovered new kinds of vanity and attention in available degrees of fame.  It's been a fire hose in the gardens of our respective consciousnesses, clearing away everything but the very earth of self.&lt;br /&gt;&lt;br /&gt;We've passed through these doors with a sense of the goodness and benefit from these adventures.  And certainly that's true.  Or can be.&lt;br /&gt;&lt;br /&gt;Most recently I've been looking for a solution to the problem that Nicholas describes.  Managing the importance of my respective interests.  The least important is the easiest to do, and can sometimes fill time while important ideas are baking.  But sorting out the baking from the silly pleasures of innocent social intercourse has been in need of a solution.  The one I have found may be interesting.&lt;br /&gt;&lt;br /&gt;Sometimes one may pass a decade simply switching effectively between desktop windows and satisfying various interests and demands effectively.  But if this has stopped working for you, then here's another way.&lt;br /&gt;&lt;br /&gt;Large differences in display screen size have completely different emotional and psychological impact.  From a full size cinema screen, to a home theater screen, to desktop computer screen to laptop or handheld screens -- each captivates ones mind in a very different way.  The larger sizes have a substantial emotional and psychological impression, and the smallest sizes are completely bounded under ones own ego and comprehension.&lt;br /&gt;&lt;br /&gt;Here's a recipe for success.  Use your largest computer screen for your vital work, and a smaller device for interest or entertainment activities.  Maintain a strict regime for a week and the difference should become apparent enough to motivate the maintenance of the technique.&lt;br /&gt;&lt;br /&gt;My advice, go to the movie theater only for good movies, unless of course you want to play with your mind (not recommended after age 20).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2641929894893009575?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2641929894893009575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2641929894893009575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2641929894893009575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2641929894893009575'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/02/matters-of-screen-size.html' title='Matters of screen size'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-1251998465790764259</id><published>2010-02-14T03:31:00.000-05:00</published><updated>2010-02-14T03:57:35.023-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gd-astro'/><category scheme='http://www.blogger.com/atom/ns#' term='gap-data'/><title type='text'>GD Astro</title><content type='html'>Another fun application for &lt;a href="http://code.google.com/p/gap-data"&gt;Gap Data&lt;/a&gt;, Gap Cubed or the &lt;a href="http://docs.google.com/View?docID=d7wgv2t_25czjwp2dh"&gt;Gap Data Astro&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/View?docID=d7wgv2t_25czjwp2dh"&gt;GD Astro&lt;/a&gt; is an information architecture for the parametric data sets in space dynamics, following &lt;a href="/2010/02/help-wanted-on-project-lorv.html"&gt;LORV&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;See also &lt;a href="http://spacetweepsociety.org/blogs/jdpsyntelos/itar-web-whistle"&gt;The ITAR Web Whistle&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/View?docID=d7wgv2t_25czjwp2dh"&gt;GD Astro&lt;/a&gt; motivates work on the Unique from HashUnique switch for ODL/BigTable, and integrated Protection as begun in &lt;a href="http://code.google.com/p/gap-data/source/browse/trunk/src/gap/data/AdminReadWrite.java"&gt;AdminReadWrite&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;See also &lt;a href="http://docs.google.com/View?docid=0ATucYDYO2y-7ZDd3Z3YydF8yMGd4cXI4cGZu&amp;hl=en"&gt;Web Net Notes&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-1251998465790764259?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/1251998465790764259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=1251998465790764259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1251998465790764259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1251998465790764259'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/02/gd-astro.html' title='GD Astro'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-4931392618023879533</id><published>2010-02-13T02:30:00.000-05:00</published><updated>2010-02-13T07:27:53.040-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opennasa'/><category scheme='http://www.blogger.com/atom/ns#' term='cube sat web'/><title type='text'>Cube sat web</title><content type='html'>&lt;a href="http://opennasa.ideascale.com/"&gt;Open NASA @ Ideascale&lt;/a&gt; &lt;a href="http://opennasa.ideascale.com/a/ideascaleStatic.do?mode=api"&gt;(api)&lt;/a&gt; is &lt;a href="http://opennasa.ideascale.com/a/pmd/412729-7044"&gt;interesting&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A Cube Sat Web is a self funded open source project.&lt;br /&gt;&lt;br /&gt;A flying Cube Sat costs about as much as car, but here's a way to see one on orbit for free. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cube Sat&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;Cube Sat&lt;/b&gt; is a camera with a long fixed focal length cassegrain aperture.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://docs.google.com/uc?id=0BzucYDYO2y-7ZDNiM2M0NWQtYmU5NC00MzgzLTljZDctNmU3YTg1ODIyMWE5&amp;export=download&amp;hl=en"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 369px; height: 273px;" src="https://docs.google.com/uc?id=0BzucYDYO2y-7ZDNiM2M0NWQtYmU5NC00MzgzLTljZDctNmU3YTg1ODIyMWE5&amp;export=download&amp;hl=en" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;The camera is a CMOS sensor with memory connected to a radio transmitter.  It takes a still image at a scheduled time in the future.  It downloads an image from memory on command.  The image metadata includes satellite telemetry and time stamp.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Web&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;Web&lt;/b&gt; runs on &lt;a href="http://code.google.com/appengine"&gt;Google App Engine&lt;/a&gt;.  A logged in user can schedule a photograph, receive it and share it.  &lt;br /&gt;&lt;br /&gt;The full sourcecode for the web application is in open source, so anyone can copy the web site to charge fees or accept donations in order to fund the building and launch of a &lt;a href="http://www.google.com/search?q=cubesat"&gt;Cube Sat&lt;/a&gt;.  So, &lt;i&gt;caveat emptor&lt;/i&gt; applies.&lt;br /&gt;&lt;br /&gt;Cube Sat Web can be social or grouping or independent.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Done before&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Of course people are doing many things like this, for example &lt;a href="http://ultra-light-space-flight.blogspot.com/2009/10/wikisat.html"&gt;WikiSat&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;This essay is a cool example for &lt;a href="http://code.google.com/p/gap-data"&gt;Gap Data&lt;/a&gt;, and writing down the idea in one place.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Information Architecture&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The Cube Sat camera can use rotation with time in its photo command.  Rotation is relative to the frames received.  The time is in future or as soon as possible.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ground Stations&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Telemetry and telecommand needs one or many radio ground stations.  Some may be able to offer ground station design and construction.  The Cube Sat Web may register and schedule ground stations, or receive upload data files.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Web User Interface&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The Cube Sat Web user interface presents the telecommand of historical moments in the chain of photography.  The image store could be Flikr, Picassa, Apps or S3.  User telecommand input can be interpreted for a nearest neighbor, in camera flying and archive views.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://docs.google.com/uc?id=0BzucYDYO2y-7MTk3NjRiZWMtZjMyOS00NjA1LTk3OGUtODMyNzAxZjlmYzFh&amp;export=download&amp;hl=en"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 720px; height: 540px;" src="https://docs.google.com/uc?id=0BzucYDYO2y-7MTk3NjRiZWMtZjMyOS00NjA1LTk3OGUtODMyNzAxZjlmYzFh&amp;export=download&amp;hl=en" border="0" alt="" /&gt;&lt;/a&gt; &lt;i&gt;(Placeholder image, time lapse motion lines are more realistic)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Flight Testing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Weather balloon flights can generate interest, and test hardware with temperature and distance.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://docs.google.com/uc?id=0BzucYDYO2y-7MDM5ZjA0ZWEtMDYxYS00Nzg3LThhN2QtZDU2MDgxYTkwZDk5&amp;export=download&amp;hl=en"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 720px; height: 540px;" src="https://docs.google.com/uc?id=0BzucYDYO2y-7MDM5ZjA0ZWEtMDYxYS00Nzg3LThhN2QtZDU2MDgxYTkwZDk5&amp;export=download&amp;hl=en" border="0" alt="" /&gt;&lt;/a&gt; Suspended on its orbital axis, a balloon flight can demonstrate camera rotation control.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cube Sat Web Prize&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A two balloon flight imaging each other simultaneously in live radio image retrieval.  Electrical and optical techniques exclusively.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sun Pointing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A shutter should protect the aperture from entering Sunlight via sun sensors.  Hardware based solar protection on orbit simplifies the security model to one virtually public.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Knowledge Base Development&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;An &lt;a href="http://opennasa.ideascale.com/a/dtd/24083-7044"&gt;article&lt;/a&gt; for Open NASA @ Ideascale tries to present simple ideas from concurrent and knowledge based engineering.  These ideas are very productive for web sites.  &lt;br /&gt;&lt;br /&gt;As an illustration, this blog post could be the root of a tree of project requirements, design and development data.&lt;br /&gt;&lt;br /&gt;My own personal notes for &lt;a href="http://code.google.com/p/gap-data"&gt;Gap Data&lt;/a&gt; are available &lt;a href="http://docs.google.com/View?docID=0ATucYDYO2y-7ZDd3Z3YydF8yMGd4cXI4cGZu&amp;revision=_latest&amp;hgd=1"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-4931392618023879533?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/4931392618023879533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=4931392618023879533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4931392618023879533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4931392618023879533'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/02/cube-sat-web.html' title='Cube sat web'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-100449786349169445</id><published>2010-02-01T04:18:00.000-05:00</published><updated>2010-02-01T05:09:01.598-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lorv'/><category scheme='http://www.blogger.com/atom/ns#' term='teamfrednet'/><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><title type='text'>Help wanted on Project LORV</title><content type='html'>&lt;a href="http://lorv.googlecode.com/"&gt;Project LORV&lt;/a&gt; is a research project in support of &lt;a href="http://www.orekit.org/"&gt;OREKIT&lt;/a&gt;, an open source space dynamics library in Java from &lt;a href="http://uk.c-s.fr/"&gt;CS&lt;/a&gt; including &lt;a href="http://www.google.com/search?q=Luc+Maisonobe"&gt;Luc Maisonobe&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;This experiment in Software Engineering explores the objective to expand OREKIT's application and developer audience as broadly as possible -- for anyone with interest to find great convenience in scripting with OREKIT, and have a full and complete world of space dynamics math and physics at their fingertips.&lt;br /&gt;&lt;br /&gt;Project LORV needs programming support in java to port the test suites in &lt;a href="http://www.orekit.org/downloads.html"&gt;OREKIT 4.1&lt;/a&gt; into a collection of simple, junit independent, main programs over lorv's experimental "ore" packages.  &lt;br /&gt;&lt;br /&gt;It's possible that almost anyone interested could lend a hand in this work, as it is transpositions of working code from names like "org.orekit" to "ore" and adapting some API changes.&lt;br /&gt;&lt;br /&gt;Anyone interested should join the &lt;a href="http://groups.google.com/group/lorv"&gt;LORV discussion list&lt;/a&gt;, and introduce yourself.  Or contact myself, John Pritchard, via &lt;a href="mailto: jdp@syntelos.org"&gt;jdp@syntelos.org&lt;/a&gt; or &lt;a href="mailto: john.pritchard@teamfrednet.org"&gt;john.pritchard@teamfrednet.org&lt;/a&gt;.  Or send me code.&lt;br /&gt;&lt;br /&gt;Each test case would be a java (main) program working on the LORV package set and performing System exit with value one on failure and zero on success.  As in the following example.&lt;br /&gt;&lt;pre class="prettyprint lang-java"&gt;&lt;br /&gt;package lorv.test.bodies;&lt;br /&gt;&lt;br /&gt;import ore.bodies.Sun;&lt;br /&gt;import ore.errors.OrekitException;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Test implied data loading.&lt;br /&gt; * @author jdp&lt;br /&gt; */&lt;br /&gt;public class DataLoad {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] argv){&lt;br /&gt;        try {&lt;br /&gt;            Sun sun = Sun.Instance();&lt;br /&gt;&lt;br /&gt;            System.exit(0);&lt;br /&gt;        }&lt;br /&gt;        catch (OrekitException exc){&lt;br /&gt;            exc.printStackTrace();&lt;br /&gt;            System.exit(1);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This work would go into a "lorv/test" location, to be created.&lt;br /&gt;&lt;br /&gt;Independence from junit is chosen for simplicity: no more than necessary.  These tests are more scripts than units. &lt;br /&gt;&lt;br /&gt;Formatting without tab characters, four space tabbing.  And I'll format as necessary, too.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Write to be read&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-100449786349169445?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/100449786349169445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=100449786349169445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/100449786349169445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/100449786349169445'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/02/help-wanted-on-project-lorv.html' title='Help wanted on Project LORV'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2667150405280704418</id><published>2010-01-29T07:56:00.000-05:00</published><updated>2010-01-29T08:22:51.375-05:00</updated><title type='text'>What is open source?</title><content type='html'>Common selflessness can organize, bring people together to invest themselves in a worthy cause.  For myself, this is open source.  For publishers of open source software, there is (quite often) little reward beyond ones own practice of craft and sharing.  &lt;br /&gt;&lt;br /&gt;Aren't we each really practicing the craft of life through our tools and interests, each artisans and artificers?&lt;br /&gt;&lt;br /&gt;In these days of rare opportunity, it's more important than ever to align our senses to the truths life has to offer for creating opportunity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2667150405280704418?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2667150405280704418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2667150405280704418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2667150405280704418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2667150405280704418'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/01/what-is-open-source.html' title='What is open source?'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-1437840201972933692</id><published>2010-01-27T05:51:00.000-05:00</published><updated>2010-01-27T08:49:54.738-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='teamfrednet'/><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><category scheme='http://www.blogger.com/atom/ns#' term='glxp'/><title type='text'>Google Lunar X Prize</title><content type='html'>In &lt;a href="http://www.teamfrednet.org/"&gt;Team FREDNET&lt;/a&gt;, we've certainly got the world's first best response to the &lt;a href="http://www.googlelunarxprize.org/"&gt;GLXP&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A friend recently asked, "Why go to the Moon? Why an X Prize? It's been done. What's the contribution?"  My first response echoed the arguments heard in favor of the new space industry.  However I then reverted to my own perspective that the first best reason would be for education and inspiration.  A novel, open source experience of math, science and engineering on the internet.&lt;br /&gt;&lt;br /&gt;Through an open source educational experience of space flight systems, one is able to dig down into every myriad detail and gain a fuller sense of the various domains of math, science and engineering involved.  How they interact and how they exist with respect to one and the other in the real world example.&lt;br /&gt;&lt;br /&gt;My friend reacted enthusiastically.  That's a good reason.  We need to do more for education.  Not enough is being done in the private sector for education.  And I agree.  Mille grazie, Frank.  Your opinion is very important to me, having dimensions my own experience does not.&lt;br /&gt;&lt;br /&gt;In Team FREDNET we have a number of properties in our strategy that are naturally capable of producing precisely this result.  They are, open source, open participation, reproducible results, accessibility and convenience.  These objectives serve our purpose in realizing a GLXP success with a decentralized group, and with some complementary attention they serve the higher purpose of providing a working example of space flight systems for interested internet explorers.&lt;br /&gt;&lt;br /&gt;This would not be a representation of a space flight mission, this would be the real thing.  And our objective would not be to educate, per se, but simply to share and to make accessible and convenient the experience and exploration of it for anyone and everyone with interest.&lt;br /&gt;&lt;br /&gt;It seems to me that this is precisely what I would want to see on the internet if I were young in this time.  The representational, educational resources are being done, for example at the &lt;a href="http://www.challenger.org/"&gt;Challenger Center&lt;/a&gt;, &lt;a href="http://www.space-explorers.com/"&gt;Space Explorers&lt;/a&gt;, &lt;a href="http://www.usfirst.org/roboticsprograms/fll/content.aspx?id=13056"&gt;FIRST, For Inspiration and Recognition of Science and Technology&lt;/a&gt;, and at &lt;a href="http://www.nasa.gov/audience/foreducators/topnav/materials/listbytype/Rockets.html"&gt;NASA&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-1437840201972933692?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/1437840201972933692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=1437840201972933692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1437840201972933692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1437840201972933692'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/01/google-lunar-x-prize.html' title='Google Lunar X Prize'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-511686686569621398</id><published>2010-01-25T09:35:00.000-05:00</published><updated>2010-01-25T10:16:49.753-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='teamfrednet'/><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><category scheme='http://www.blogger.com/atom/ns#' term='glxp'/><title type='text'>Information Economy</title><content type='html'>I've recently completed a review of the problem and solution set for a non profit, open source effort to win the &lt;a href="http://www.googlelunarxprize.org/"&gt;Google Lunar X Prize&lt;/a&gt;.  The GLXP is a competition for as much as $20M to the first registered team to put a rover on the moon and traverse 500m while returning HD video, to complete the mission requirements.&lt;br /&gt;&lt;br /&gt;Not finding a gig lately, maybe I can help to create one.&lt;br /&gt;&lt;br /&gt;For me, the GLXP mission is most interesting when the purpose extends beyond getting there and winning the prize.  A deeper purpose, not that it's not a super cool project.  My recent work on the subject reenforces the notion.  For even with lots of free effort from capable minds and hands, it would take about $20M to do.  The lion's share of that is the cost of launching up to LEO/TLI, which figures in at about $12M.&lt;br /&gt;&lt;br /&gt;The GLXP itself has an interesting structure, when the reward is about the lowest possible cost of performance.&lt;br /&gt;&lt;br /&gt;I've long thought it an ideal application of a non profit, open source approach.  If $20M can be raised for the mission, then another $20M can be won and turned back into the enterprise.  And if every bit permitted by law and contract is freely and openly published, then the purpose becomes far more than the performance, or even the experience of -- or ability to perform.&lt;br /&gt;&lt;br /&gt;Then the purpose becomes educational, and perhaps inspirational.  In the spirit of sharing, and giving young people the opportunity to experience an area of math and science and engineering that may interest and focus their own ambitions.  After all, it is one of the hard parts in life for most people -- finding a direction, focusing the education, and then having a satisfactory adult career.  The internet is good for that.&lt;br /&gt;&lt;br /&gt;And then I thought, not sure how useful that will be if the jobs aren't there.  Open source is great, and it has helped people and created jobs.  But what more can open source do for jobs, I wondered.&lt;br /&gt;&lt;br /&gt;Well, currently we face a need for innovation.  And open source innovation is shared by everyone.  But as the information economy raises the bar on innovation in each decade, what effect does this evolution have on the way we create jobs?&lt;br /&gt;&lt;br /&gt;An increasingly decentralized or distributed information economy follows on telecommuting and crowd sourcing as value is created in digital production and services in commerce.&lt;br /&gt;&lt;br /&gt;How can internet tools better enable these businesses to be developed?  &lt;br /&gt;&lt;br /&gt;And then it follows, although not specifically in information, how much higher will the economic bar of innovation be raised before space is a more expansive component of the world economy?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-511686686569621398?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/511686686569621398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=511686686569621398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/511686686569621398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/511686686569621398'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/01/information-economy.html' title='Information Economy'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-1781931122641869162</id><published>2010-01-12T18:45:00.000-05:00</published><updated>2010-01-12T19:50:41.709-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lorv'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><title type='text'>What is real?</title><content type='html'>Real math is real engineering.  However in many domains of engineering, the math is the question.&lt;br /&gt;&lt;br /&gt;One of the application objectives for &lt;a href="http://fv3.googlecode.com/"&gt;Fv3&lt;/a&gt; is spaceflight simulation.  In the case of possible applications for &lt;a href="http://www.teamfrednet.org/"&gt;Team FREDNET&lt;/a&gt;, simulation and navigation are very close siblings.&lt;br /&gt;&lt;br /&gt;In these applications, fidelity is enhanced significantly when engineers and physicists are able to adapt the math in the software to the spacecraft design and performance.  Significantly because errors grow substantially among the large numbers common to spaceflight computation, be it distance or velocity.&lt;br /&gt;&lt;br /&gt;For example, when an engine fires a nonlinear and irregular acceleration is induced.  This acceleration can be adequately described in a mathematical function of (time and) properties of the engine and spacecraft, and the use of the engine by the spacecraft.  Without these enhancements, fidelity is affected.  &lt;br /&gt;&lt;br /&gt;In support of projects like these, the &lt;a href="http://lorv.googlecode.com/"&gt;Lorv&lt;/a&gt; project is experimenting with the software structure of the &lt;a href="http://www.orekit.org/"&gt;Orekit&lt;/a&gt; astrodynamical mathematics library to better reveal its mathematics to users, and to better enable the adaptation of the math by users.&lt;br /&gt;&lt;br /&gt;Another way of looking at this objective for &lt;a href="http://lorv.googlecode.com/"&gt;Lorv&lt;/a&gt; is a classic example of one of the less critical but not less important strengths of the Java programming language.  &lt;br /&gt;&lt;br /&gt;As the  &lt;a href="http://jela.googlecode.com/"&gt;Jela&lt;/a&gt; project experimented with, the Java programming language is interesting and powerful in a scripting role.  Developing Orekit/Lorv for compatibility with scripting positions will empower with convenience and flexibility in tools designed for getting work done without reflection on the tool itself.&lt;br /&gt;&lt;br /&gt;As a Software Engineer, I don't know the mathematics of many domains I encounter.  I need only some essential familiarity with it in order to write code to implement someone else's math, or to ensure that transformations on code are doing the same math.&lt;br /&gt;&lt;br /&gt;Working with people who do know the math is highly rewarding, as new vistas open before the mind's eye.  &lt;br /&gt;&lt;br /&gt;Those moments always remind me of the first time I saw the opening shot in George Lucas' most famous motion picture, when the atmospheric horizon of a planet looms into view -- filling the screen.  I'd never seen such an image in such color and definition.  It was 1977 and I was 11.  I went back to see it seven times that summer, riding the two miles on my bike. &lt;br /&gt;&lt;br /&gt;And of course if you're like me, the title of this essay echos with memories of another well known film.  Far more recent.  Kind of dark, but also a lot of fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-1781931122641869162?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/1781931122641869162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=1781931122641869162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1781931122641869162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1781931122641869162'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/01/what-is-real.html' title='What is real?'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2756106217427421069</id><published>2010-01-05T01:10:00.000-05:00</published><updated>2010-01-05T01:49:49.599-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><title type='text'>Fv3 needs fonts</title><content type='html'>My descent into fonts has traveled far and wide.  &lt;a href="http://www.fonteditor.org/details/index.html"&gt;Tim Taylor's compact mobile font format&lt;/a&gt; is nice, but in the end I chose a more rigorous route for a larger number of open avenues into future work.  I chose to read the &lt;a href="http://developer.apple.com/textfonts/TTRefMan/"&gt;True Type&lt;/a&gt; / &lt;a href="http://en.wikipedia.org/wiki/OpenType"&gt;Open Font&lt;/a&gt; file format directly.&lt;br /&gt;&lt;br /&gt;Font designers tend to release their work in the TTF/OTF file format -- for example on &lt;a href="http://www.dafont.com/"&gt;"dafont"&lt;/a&gt; or the &lt;a href="http://www.openfontlibrary.org/"&gt;"open font library"&lt;/a&gt;.  So reading this format directly in an efficient and effective way permits a wide open variety of applications for font glyph data -- as it should be.&lt;br /&gt;&lt;br /&gt;This fits into the &lt;a href="http://fv3.googlecode.com/"&gt;Fv3&lt;/a&gt; model for a static &amp;amp; dynamic tool chain.  It will be able to get fast font glyph data dynamically at runtime, or as part of a tool invocation at design time in the construction of relatively static products.  Both options are fast enough to keep all doors open to possible routes into tool and application structure.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://fv3.googlecode.com/svn/web/images/screenshot-font-inspect-600x439.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 600px; height: 439px;" src="http://fv3.googlecode.com/svn/web/images/screenshot-font-inspect-600x439.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There's a reason why few venture into the TTF/OTF reading &amp;amp; writing territory.  The specification is not as bad as &lt;a href="http://www.mozilla.org/projects/security/pki/nss/ssl/draft302.txt"&gt;SSL&lt;/a&gt;, but it's incomplete or just plain broken in all the most critical places.  So I have depended heavily on &lt;a href="http://fontforge.sourceforge.net/"&gt;George Williams' FontForge&lt;/a&gt; and &lt;a href="http://www.freetype.org/"&gt;David Turner, Robert Wilhelm, and Werner Lemberg's FreeType&lt;/a&gt; codebases to illuminate the dark corners.&lt;br /&gt;&lt;br /&gt;And I'm fairly done.  Whew.  That was a long walk.  Twelve days &lt;a href="http://code.google.com/p/fv3/source/detail?r=52"&gt;since Christmas&lt;/a&gt; according to &lt;a href="http://code.google.com/u/john.douglas.pritchard/updates"&gt;Google's lovely updates feed&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The image above shows a Java2D display of the font data (from &lt;a href="http://fv3.googlecode.com/svn/web/fv3-font-0.0.1.jar"&gt;fv3-font inspector&lt;/a&gt;).  Next comes 3D on &lt;a href="http://kenai.com/projects/jogl"&gt;JOGL&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2756106217427421069?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2756106217427421069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2756106217427421069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2756106217427421069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2756106217427421069'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2010/01/fv3-needs-fonts.html' title='Fv3 needs fonts'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-9041826048999854687</id><published>2009-12-22T06:45:00.000-05:00</published><updated>2009-12-22T07:50:01.424-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><category scheme='http://www.blogger.com/atom/ns#' term='jogl'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><category scheme='http://www.blogger.com/atom/ns#' term='llg'/><title type='text'>LLG plan</title><content type='html'>Well, getting the next version of the Lunar Lander game out the door for Christmas isn't going to happen.  &lt;br /&gt;&lt;br /&gt;The &lt;a href="http://blog.syntelos.com/2009/11/llg-version-zero-zero-three.html"&gt;LLG plan is to free up CPU cycles from the graphics by switching from 2D to 3D&lt;/a&gt;.  Which is counter intuitive.  In 3D, the game can better access the graphics hardware via &lt;a href="http://www.opengl.org/"&gt;Open GL&lt;/a&gt; (&lt;a href="http://kenai.com/projects/jogl"&gt;on Java&lt;/a&gt;).  &lt;br /&gt;&lt;br /&gt;That path &lt;a href="http://code.google.com/hosting/search?q=label:fv3"&gt;is panning out&lt;/a&gt;, but 3D is a pain in the neck.  &lt;a href="http://www.google.com/search?q=quaternion+multiplication+is+not+commutative"&gt;Quaternion multiplication is not commutative&lt;/a&gt;, &lt;i&gt;(p*q) != (q*p)&lt;/i&gt;.  &lt;br /&gt;&lt;br /&gt;I'd describe the situation as vector math being so powerful -- so much is accomplished with such simple expressions &lt;i&gt;(like a*b)&lt;/i&gt; -- that the ideas implied must be held quite firmly in mind.  But once one has got 3D coordinate spaces and transformations firmly in hand, it's a lot of fun.  At least it's a lot of fun just getting there.&lt;br /&gt;&lt;br /&gt;The software that I've found in the world for developing 3D applications isn't quite what I'm looking for.  So I'll write some.  And as &lt;i&gt;"what I don't know"&lt;/i&gt; has a possible equivalence with &lt;i&gt;"what unknown future applications will do"&lt;/i&gt;, I'm just writing tools to open the doors on GL programming for web centric applications &lt;i&gt;for myself&lt;/i&gt;.  &lt;br /&gt;&lt;br /&gt;The LLG game will be a first demo, flying a model.  Then there's &lt;a href="http://blog.syntelos.com/2009/12/fv3-demo-apps.html"&gt;a list of things to do next&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;As I get my head into 3D, all the world of web data applications looks like, "why aren't we doing this in 3D, now?".&lt;br /&gt;&lt;br /&gt;I think there's a contribution to be made, here, in what we're looking for and how we're reaching for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-9041826048999854687?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/9041826048999854687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=9041826048999854687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/9041826048999854687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/9041826048999854687'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/12/llg-plan.html' title='LLG plan'/><author><name>John Pritchard</name><uri>https://profiles.google.com/102180409349200176360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-bybDZCsiIcI/AAAAAAAAAAI/AAAAAAAABRc/LvgSD0d0hS8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2592391181115295793</id><published>2009-12-13T00:04:00.001-05:00</published><updated>2009-12-13T00:05:41.497-05:00</updated><title type='text'>Save energy, and see the stars</title><content type='html'>The &lt;a href="http://en.cop15.dk/"&gt;COP15&lt;/a&gt; conference was blogged by &lt;a href="http://www.youtube.com/user/oz9aec#p/u/0/eYuoeID-WEE"&gt;Alex Csete&lt;/a&gt; on &lt;a href="http://www.youtube.com/user/JohnDPritchard#p/a/f/1/eYuoeID-WEE"&gt;youtube&lt;/a&gt;.  &lt;br /&gt;  &lt;br /&gt;Made me think.  I thought of &lt;a href="http://www.lightpollution.org.uk/index.php?pageId=5"&gt;Light Pollution&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2592391181115295793?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2592391181115295793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2592391181115295793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2592391181115295793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2592391181115295793'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/12/save-energy-and-see-stars.html' title='Save energy, and see the stars'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-8740322981754080399</id><published>2009-12-09T17:39:00.000-05:00</published><updated>2009-12-09T17:53:01.843-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jnlp'/><category scheme='http://www.blogger.com/atom/ns#' term='jela'/><category scheme='http://www.blogger.com/atom/ns#' term='hapax3'/><category scheme='http://www.blogger.com/atom/ns#' term='jbxml'/><category scheme='http://www.blogger.com/atom/ns#' term='jogl'/><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><category scheme='http://www.blogger.com/atom/ns#' term='web tools'/><category scheme='http://www.blogger.com/atom/ns#' term='odl'/><title type='text'>Top to bottom media for data</title><content type='html'>Project building from data into renderers and actors presents the application development process with a very convenient structure.&lt;br /&gt;&lt;br /&gt;This process is implicit in the use of binding and templating tools.&lt;br /&gt;&lt;br /&gt;Partial work is bound and working partially, while fundamentally the &lt;i&gt;data roots&lt;/i&gt; and &lt;i&gt;programming leaves&lt;/i&gt; of the development process continuously guide iterations of inspection and discovery.&lt;br /&gt;&lt;br /&gt;This self guided process of discovery is highly productive, and natural and fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-8740322981754080399?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/8740322981754080399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=8740322981754080399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8740322981754080399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8740322981754080399'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/12/top-to-bottom-media-for-data.html' title='Top to bottom media for data'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-913367416424054035</id><published>2009-12-08T03:00:00.000-05:00</published><updated>2009-12-08T05:15:16.575-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jela'/><category scheme='http://www.blogger.com/atom/ns#' term='jbxml'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><title type='text'>The many layers of Fv3: Data handling and binding</title><content type='html'>As begun in &lt;a href="http://blog.syntelos.com/2009/12/many-layers-of-fv3-boot-loader.html"&gt;"Boot loader"&lt;/a&gt;, and continued in &lt;a href="http://blog.syntelos.com/2009/12/many-layers-of-fv3-toolkit.html"&gt;"Toolkit"&lt;/a&gt;, data handling and binding is a central issue in many kinds of systems -- not least of all in &lt;a href="http://fv3.googlecode.com/"&gt;Fv3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;First, Fv3 is a data parallel environment in service of the data parallel architecture of modern computer graphics hardware and its &lt;a href="http://www.opengl.org/"&gt;GL&lt;/a&gt; interface.  In order to efficiently feed diverse and arbitrary data needs, Fv3 implements a file cache for web content.  Over this file cache, Fv3 employs both memory buffering and file mapping strategies for loading data.&lt;br /&gt;&lt;br /&gt;For example, the &lt;a href="http://fv3ds.googlecode.com/"&gt;Fv3ds&lt;/a&gt; model loader employs file mapping to minimize the load time of large models transferred in this highly efficient file format.  For this reason, the 3ds file format will be one of the most efficient ways to store and display large models in Fv3.&lt;br /&gt;&lt;br /&gt;Data binding refers to the association of data with named or active elements of a system.  Fv3 will use data binding from &lt;a href="http://www.w3.org/XML"&gt;XML&lt;/a&gt; onto &lt;a href="http://www.java.com/"&gt;Java&lt;/a&gt; programming classes -- similarly to what &lt;a href="http://wtkx.googlecode.com/"&gt;WTKX&lt;/a&gt; did with conventional Java 2D graphics.  This binding will configure a world, region or model into the screen view almost like a web &lt;a href="http://www.w3.org/html/"&gt;HTML&lt;/a&gt; page does.&lt;br /&gt;&lt;br /&gt;Unlike HTML, the Fv3 JBX files will be endlessly extensible for producing systems and applications.&lt;br /&gt;&lt;br /&gt;Underlying the Fv3 data binding architecture are two processes.  One binding XML onto Java Beans in JBXML, and the other binds Java Beans into template processing for source code generation in &lt;a href="http://code.google.com/p/lxl/source/browse/trunk/hapax3/src/hapax/"&gt;Hapax3&lt;/a&gt;.  Static Design Time, and Dynamic Run Time source code generation and compilation are both open avenues for work and exploration in the future of &lt;a href="http://fv3.googlecode.com/"&gt;Fv3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Among other open topics in this work is the planned review of &lt;a href="http://code.google.com/p/jela/source/browse/trunk/src/jela"&gt;Jela&lt;/a&gt;, a part of JBX that adds Java Programming Language functions to JBXML.  Currently, Jela functions add a layer of java method invocation to the execution path.  While fast, this will inhibit the performance of Fv3.  In future, Jela functions will be bound into a target component subclass for the runtime performance of normal plain old java code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-913367416424054035?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/913367416424054035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=913367416424054035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/913367416424054035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/913367416424054035'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/12/many-layers-of-fv3-data-handling-and.html' title='The many layers of Fv3: Data handling and binding'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-8154543543690244493</id><published>2009-12-07T09:21:00.000-05:00</published><updated>2009-12-07T09:32:28.473-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3tk'/><category scheme='http://www.blogger.com/atom/ns#' term='jnlp-loader'/><title type='text'>The many layers of Fv3: Toolkit</title><content type='html'>As begun in &lt;a href="http://blog.syntelos.com/2009/12/many-layers-of-fv3-boot-loader.html"&gt;"The many layers of Fv3: Boot Loader"&lt;/a&gt;, the &lt;a href="http://fv3tk.googlecode.com/"&gt;Fv3Tk toolkit&lt;/a&gt; provides an &lt;a href="http://www.opengl.com"&gt;OpenGL&lt;/a&gt; screen via &lt;a href="http://kenai.com/projects/jogl"&gt;JOGL-2&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.opengl.com"&gt;OGL&lt;/a&gt; is a common software interface to the graphics hardware on your computer.  These days computers and many of the latest cell phones come with powerful graphics computing hardware capable of rendering 3D graphics and video at full live action frame rates (24 frames per second and more).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://fv3tk.googlecode.com/"&gt;Fv3Tk&lt;/a&gt; is intended to deliver graphics output, keyboard and joystick input, and audio subsystems to &lt;a href="http://fv3.googlecode.com/"&gt;Fv3&lt;/a&gt; applications as an independent layer over the &lt;a href="http://jnlp-loader.googlecode.com/"&gt;JNLP Loader&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Using &lt;a href="http://kenai.com/projects/jogl"&gt;JOGL-2/NEWT&lt;/a&gt; before it's first release leaves us with some problems to solve, but it's all fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-8154543543690244493?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/8154543543690244493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=8154543543690244493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8154543543690244493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8154543543690244493'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/12/many-layers-of-fv3-toolkit.html' title='The many layers of Fv3: Toolkit'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2234507247402502267</id><published>2009-12-06T12:56:00.000-05:00</published><updated>2009-12-06T13:26:43.616-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><title type='text'>The many layers of Fv3: Boot Loader</title><content type='html'>Layers in software architecture are well known in the domain of operating systems, where system prom, device drivers and kernel are the first three layers to deliver applications over the operating system.&lt;br /&gt;&lt;br /&gt;Layers are critical to software architecture.  The design of each layer in a system is the beginning of the fight against bugs or issues in the software system.  Ideally, each layer performs one role exceedingly well on behalf of the other layers in the system.  &lt;br /&gt;&lt;br /&gt;In an operating system, the boot prom or firmware tests the hardware when the power is turned on, and identifies the removable components attached to the hardware system.  Having performed this task successfully, this built- in software program will load the operating system (kernel) from its storage in persistent memory, into transient memory, and run it.&lt;br /&gt;&lt;br /&gt;Fv3 includes such a loader in &lt;a href="http://jnlp-loader.googlecode.com/"&gt;jnlp-loader&lt;/a&gt;.  The JNLP Loader installs and runs Fv3 from its persistent storage on the web, into a transient location on the desktop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2234507247402502267?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2234507247402502267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2234507247402502267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2234507247402502267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2234507247402502267'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/12/many-layers-of-fv3-boot-loader.html' title='The many layers of Fv3: Boot Loader'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-4701799247177000261</id><published>2009-12-04T01:34:00.000-05:00</published><updated>2009-12-04T01:37:57.382-05:00</updated><title type='text'>Test Fv3Tk</title><content type='html'>Mentioned in &lt;a href="http://blog.syntelos.com/2009/12/fv3-demo-apps.html"&gt;Fv3 Demo Apps&lt;/a&gt;, &lt;a href="http://code.google.com/p/fv3tk/issues/detail?id=2"&gt;fv3tk needs testing&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For Windows, Linux, Solaris, MacOSX 10.5 Leopard...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;If you know how to kill a process manually, then please test this for killing itself&lt;br /&gt;on key ESC or keys Alt-F4.&lt;br /&gt;{{{&lt;br /&gt; http://fv3tk.googlecode.com/svn/web/fv3tk-gears-loader-0.0.1.jar&lt;br /&gt;}}}&lt;br /&gt;And make a note here.. OS, Arch, Version, (run &lt;br /&gt;{{{&lt;br /&gt; java -classpath fv3tk-gears-0.0.1/cache/ fv3tk.Os&lt;br /&gt;}}}&lt;br /&gt;&lt;br /&gt;...works, not?&lt;br /&gt;&lt;br /&gt;many thanks&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-4701799247177000261?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/4701799247177000261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=4701799247177000261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4701799247177000261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4701799247177000261'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/12/test-fv3tk.html' title='Test Fv3Tk'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-9140967294411507592</id><published>2009-12-03T17:56:00.000-05:00</published><updated>2009-12-03T18:35:29.804-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><title type='text'>Fv3 Demo Apps</title><content type='html'>My dreams, today, include &lt;br /&gt;&lt;br /&gt;&lt;a href="http://llg.googlecode.com/"&gt;Lunar Lander version "G"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.websdr.org/"&gt;WebSDR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oz9aec.net/index.php/gpredict"&gt;GPredict&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://openrocket.sourceforge.net/"&gt;Open Rocket&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.atompub.org/"&gt;Feeds&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and my "Mission Builder", an original composition and physics programming environment.  Actually, it's almost the same idea as Open Rocket -- but completely different.&lt;br /&gt;&lt;br /&gt;Of course, &lt;a href="http://llg.googlecode.com/"&gt;LLG&lt;/a&gt; is scheduled for Christmas.&lt;br /&gt;&lt;br /&gt;Help LLG meet its schedule.. &lt;a href="http://code.google.com/p/fv3tk/issues/detail?id=2"&gt;test fv3tk&lt;/a&gt; if you know how to kill a process manually (test exit failsafe).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-9140967294411507592?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/9140967294411507592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=9140967294411507592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/9140967294411507592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/9140967294411507592'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/12/fv3-demo-apps.html' title='Fv3 Demo Apps'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-1697988571338247950</id><published>2009-12-03T03:58:00.000-05:00</published><updated>2009-12-03T04:09:38.419-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lxl'/><category scheme='http://www.blogger.com/atom/ns#' term='hapax3'/><category scheme='http://www.blogger.com/atom/ns#' term='jbxml'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><category scheme='http://www.blogger.com/atom/ns#' term='odl'/><title type='text'>LXL 1.0.3 begin</title><content type='html'>The &lt;a href="http://code.google.com/p/lxl/"&gt;lxl-coder&lt;/a&gt; project has been initialized, in support of &lt;a href="http://fv3.googlecode.com/"&gt;Fv3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://code.google.com/p/lxl/"&gt;lxl-coder.jar&lt;/a&gt; library includes the io, net, beans, and hapax3 packages optimized for the lxl stream into jbxml and fv3.&lt;br /&gt;&lt;br /&gt;lxl-coder generates java source classes from Hapax3 templates and ODL schematics.&lt;br /&gt;&lt;br /&gt;An ODL schematic describes this &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package test;&lt;br /&gt;public class Test {&lt;br /&gt;    public int a;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;with &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package test;&lt;br /&gt;class Test {&lt;br /&gt; int a;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;which is very useful as the output source text gets complex and continues to evolve over a large collection.&lt;br /&gt;&lt;br /&gt;In building Fv3, the simple first target for this work is the description and programming package.&lt;br /&gt;&lt;br /&gt;And then in extending Fv3, we have use of many more DOM like packages from sound to collada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-1697988571338247950?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/1697988571338247950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=1697988571338247950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1697988571338247950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1697988571338247950'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/12/lxl-103-begin.html' title='LXL 1.0.3 begin'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-5730484055539725166</id><published>2009-11-29T21:28:00.000-05:00</published><updated>2009-11-29T21:42:43.625-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><category scheme='http://www.blogger.com/atom/ns#' term='tag clouds'/><title type='text'>Tag Clouds</title><content type='html'>The working tag cloud.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/hosting/search?q=label:syntelos-G"&gt;Syntelos-G&lt;/a&gt; is current in graphics, toward an initial version of &lt;a href="http://fv3.googlecode.com/"&gt;Fv3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/hosting/search?q=label:syntelos-A"&gt;Syntelos-A&lt;/a&gt; work is in &lt;a href="http://appengine.google.com/"&gt;appengine&lt;/a&gt;.  A possible goal for this group is a short reader + editor version of &lt;a href="http://gap-data.googlecode.com/"&gt;Gap Data&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/hosting/search?q=label:syntelos-R"&gt;Syntelos-R&lt;/a&gt; is sleeping with the slim resemblance between &lt;a href="http://jnlp-loader.googlecode.com/"&gt;jnpl-loader&lt;/a&gt; and &lt;a href="http://fractionalcloud.googlecode.com/"&gt;fractionalcloud&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/hosting/search?q=label:syntelos-X"&gt;Syntelos-X&lt;/a&gt; includes &lt;a href="http://jbxml.googlecode.com/"&gt;jbxml&lt;/a&gt; which features in &lt;a href="http://code.google.com/hosting/search?q=label:syntelos-G"&gt;Syntelos-G&lt;/a&gt; in the &lt;a href="http://jnlp-loader.googlecode.com/"&gt;jnlp-loader&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-5730484055539725166?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/5730484055539725166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=5730484055539725166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5730484055539725166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5730484055539725166'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/11/tag-clouds.html' title='Tag Clouds'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-1178414997861254062</id><published>2009-11-28T04:47:00.000-05:00</published><updated>2009-11-28T04:54:13.327-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jnlp'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='java.io'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><title type='text'>Web Loader Test</title><content type='html'>The &lt;a href="http://code.google.com/p/jnlp-loader/wiki/AntTest"&gt;JNLP Web Loader Test&lt;/a&gt; verifies the &lt;a href="http://code.google.com/p/jnlp-loader/issues/detail?id=6"&gt;sandbox&lt;/a&gt; class loader restricted access policy.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://code.google.com/p/jnlp-loader/issues/detail?id=6"&gt;sandbox&lt;/a&gt; / &lt;a href="http://code.google.com/p/jnlp-loader/source/browse/trunk/src/loader/sandbox/WebLoader.java"&gt;Web Loader&lt;/a&gt; successfully drops the &lt;a href="http://code.google.com/p/jnlp-loader/source/browse/trunk/webloader/test/TestMain.java"&gt;Test Main&lt;/a&gt; class after unpacking the &lt;a href="http://code.google.com/p/jnlp-loader/source/browse/trunk/webloader/test/TestMain.jnlp"&gt;Test JNLP&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-1178414997861254062?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/1178414997861254062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=1178414997861254062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1178414997861254062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1178414997861254062'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/11/web-loader-test.html' title='Web Loader Test'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2566291226252224965</id><published>2009-11-27T18:14:00.000-05:00</published><updated>2009-11-27T19:32:06.050-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jnlp'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='java.io'/><category scheme='http://www.blogger.com/atom/ns#' term='java.net'/><title type='text'>JNLP Web Loader</title><content type='html'>The &lt;a href="http://code.google.com/p/jnlp-loader"&gt;jnlp-loader&lt;/a&gt; project takes a step forward in &lt;a href="http://code.google.com/p/jnlp-loader/issues/detail?id=6"&gt;opening the sandbox&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://code.google.com/p/jnlp-loader/source/browse/trunk/src/loader/sandbox/WebLoader.java"&gt;sandbox.WebLoader&lt;/a&gt; enforces an executable code policy on java code.&lt;br /&gt;&lt;br /&gt;The sandbox silently drops nativelib resources and jvm class files that violate its policy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This policy permits a desktop program to be run without loading native code or performing unsafe operations against its class loader and jnlp services.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In this policy, all jnlp resources loading native code are dropped.  And unpacked byte code classes performing reflection &lt;span style="font-style:italic;"&gt;(java.lang.reflect)&lt;/span&gt;, or binding &lt;span style="font-style:italic;"&gt;(java.lang.Class.forName)&lt;/span&gt;; acting on  &lt;span style="font-style:italic;"&gt;java.lang.Runtime&lt;/span&gt; or &lt;span style="font-style:italic;"&gt;java.lang.File&lt;/span&gt;; or subclassing &lt;span style="font-style:italic;"&gt;java.lang.ClassLoader&lt;/span&gt; are deleted after the loader unpacks (before application main).&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://code.google.com/p/jnlp-loader/source/browse/trunk/src/loader/sandbox/"&gt;sandbox package&lt;/a&gt; can provide &lt;a href="http://code.google.com/p/jnlp-loader/source/browse/trunk/#trunk/lib/jnlp/src/javax/jnlp"&gt;JNLP services&lt;/a&gt; &lt;a jref="http://hg.openjdk.java.net/jdk7/deploy/"&gt;*&lt;/a&gt; for performing downloads and file operations.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://code.google.com/p/jnlp-loader/source/browse/trunk/src/loader/sandbox/WebLoader.java"&gt;sandbox.WebLoader&lt;/a&gt; main function can create a sandbox in which file and runtime access should only occur through the &lt;a href="http://code.google.com/p/jnlp-loader/source/browse/trunk/#trunk/lib/jnlp/src/javax/jnlp"&gt;JNLP services&lt;/a&gt; provided by &lt;a href="http://code.google.com/p/jnlp-loader/source/browse/trunk/src/loader/sandbox/"&gt;the sandbox package&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2566291226252224965?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2566291226252224965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2566291226252224965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2566291226252224965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2566291226252224965'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/11/jnlp-web-loader.html' title='JNLP Web Loader'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-4336246580704106319</id><published>2009-11-27T07:06:00.000-05:00</published><updated>2009-11-27T07:15:17.731-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java.awt'/><category scheme='http://www.blogger.com/atom/ns#' term='llg'/><title type='text'>LLG version zero zero three</title><content type='html'>&lt;a href="http://code.google.com/p/llg/downloads/detail?name=llg-0.0.3.jar"&gt;LLG version 0.0.3&lt;/a&gt; hit a wall with j2d graphics.  The game saturates the graphics pipeline.  This could be improved with a &lt;a href="http://wtkx.googlecode.com/"&gt;WTKX&lt;/a&gt; style partial repainting -- but updating instruments and flight and changing the camera motion to make it work is more than I'm interested in doing.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.kenai.com/projects/jogl/"&gt;jogl&lt;/a&gt; approach shows three orders of magnitude graphics performance improvement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-4336246580704106319?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/4336246580704106319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=4336246580704106319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4336246580704106319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4336246580704106319'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/11/llg-version-zero-zero-three.html' title='LLG version zero zero three'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-5892350397766427893</id><published>2009-11-23T16:56:00.000-05:00</published><updated>2009-11-23T17:05:40.440-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jnlp'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><title type='text'>jnlp-loader</title><content type='html'>Recently I've made initial releases of the &lt;a href="http://code.google.com/p/jnlp-loader/"&gt;JNLP Loader&lt;/a&gt; (&lt;a href="http://www.google.com/search?q=java+webstart"&gt;WebStart&lt;/a&gt;) that I wrote as part of the &lt;a href="http://code.google.com/hosting/search?q=label:fv3"&gt;FV3&lt;/a&gt; user interface project.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://code.google.com/p/jnlp-loader/"&gt;jnlp-loader&lt;/a&gt; project adds a stage to the tail of JNLP project's build process for another product after the principal application archive and JNLP descriptor.  The application loader is an executable jar file containing only the code of the &lt;a href="http://code.google.com/p/jnlp-loader/"&gt;jnlp-loader&lt;/a&gt; with the JNLP descriptor for the application.  &lt;br /&gt;&lt;br /&gt;A typical loader program (jar file) is a 20 or 30 KB download.  It unpacks the platform specific resources and runs the application (main) via a deletable and updateable temporary directory.  Most interesting for JNLP / WebStart application developers is the simple java main runtime of the insecure jnlp-loader in comparison with the secure javaws.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-5892350397766427893?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/5892350397766427893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=5892350397766427893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5892350397766427893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5892350397766427893'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/11/jnlp-loader.html' title='jnlp-loader'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-7065814656179456611</id><published>2009-11-19T18:28:00.000-05:00</published><updated>2009-11-19T18:46:18.974-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogl'/><category scheme='http://www.blogger.com/atom/ns#' term='fv3'/><category scheme='http://www.blogger.com/atom/ns#' term='llg'/><title type='text'>FV3</title><content type='html'>Working on &lt;a href="http://code.google.com/p/llg"&gt;LLG&lt;/a&gt;, I found that the very simple game was able to saturate the Java2D graphics pipeline.  So much time was spent rendering that too little remained for adding more interesting game features.&lt;br /&gt;&lt;br /&gt;As a result, I started &lt;a href="http://code.google.com/p/fv3ds"&gt;FV3DS&lt;/a&gt; and &lt;a href="http://code.google.com/p/fv3tk"&gt;FV3TK&lt;/a&gt; as a launch into the &lt;a href="http://kenai.com/project/jogl"&gt;JOGL-2/NEWT&lt;/a&gt; graphics.&lt;br /&gt;&lt;br /&gt;JOGL-2/NEWT is very interesting.  NEWT is a complete replacement for the AWT!  For me, that's hot.  To see what I know about JOGL-2/NEWT, have a read through &lt;a href="http://code.google.com/p/fv3tk"&gt;FV3TK&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-7065814656179456611?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/7065814656179456611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=7065814656179456611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7065814656179456611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7065814656179456611'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/11/fv3.html' title='FV3'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2181710226844511923</id><published>2009-11-09T12:17:00.000-05:00</published><updated>2009-11-09T12:33:14.466-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wtkx'/><category scheme='http://www.blogger.com/atom/ns#' term='llg'/><title type='text'>LLG</title><content type='html'>Taking a break from the rigors, I'm developing a game -- one of my favorites -- &lt;a href="http://code.google.com/p/llg"&gt;Lunar Lander version "G"&lt;/a&gt;.  It's a work in progress, but here's a link to a &lt;a href="http://llg.googlecode.com/svn/web/index.html"&gt;full frame version&lt;/a&gt; -- the current development snapshot.&lt;br /&gt;&lt;br /&gt;I like this project most of all because it gives me a convenient and fun way to develop some practical software engineering in web based visualization.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://code.google.com/p/wtkx"&gt;WTKX project&lt;/a&gt; has been consolidating methods for the client side, and LLG starts again fresh in the neighborhood to complete that work.  The LLG codebase pulled in the principals from TKX including &lt;a href="http://code.google.com/p/llg/source/browse/trunk/src/llg/Screen.java"&gt;Screen&lt;/a&gt;, &lt;a href="http://code.google.com/p/llg/source/browse/trunk/src/llg/BackingStore.java"&gt;BackingStore&lt;/a&gt;, and &lt;a href="http://code.google.com/p/llg/source/browse/trunk/src/llg/Animator.java"&gt;Animator&lt;/a&gt;.  And then developed a solution to the J2D graphics pipeline / AWT Lock problems (for us multi- threaders) through the careful application of &lt;a href="http://code.google.com/p/llg/source/browse/trunk/src/llg/Aut.java"&gt;Aut&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The way forward for LLG is a big story.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2181710226844511923?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2181710226844511923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2181710226844511923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2181710226844511923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2181710226844511923'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/11/llg.html' title='LLG'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-6084881418953690644</id><published>2009-10-07T18:55:00.000-04:00</published><updated>2009-10-08T01:00:28.626-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><category scheme='http://www.blogger.com/atom/ns#' term='gap-data'/><title type='text'>And Syntelos begat Gap Data</title><content type='html'>Syntelos is the fifteen year development of methods and techniques for web based application programming, network data structures, and user interfaces.  Most recently the essential ideas are being applied to &lt;a href="http://appengine.google.com/"&gt;Google Appengine&lt;/a&gt; in a project named &lt;a href="http://gap-data.appspot.com/"&gt;Gap Data&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-6084881418953690644?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/6084881418953690644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=6084881418953690644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/6084881418953690644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/6084881418953690644'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/10/and-syntelos-begat-gap-data.html' title='And Syntelos begat Gap Data'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-8336246799544495854</id><published>2009-09-30T18:21:00.000-04:00</published><updated>2009-09-30T18:36:58.875-04:00</updated><title type='text'>Leadership</title><content type='html'>In my experience, good leadership is extremely rare in the civilian world.  The U.S. professional military has very good professional leadership training, but when these folks transition into business they tend to get caught up in the awesome spectacle of the politics of business.  Which is unfortunate, because following the politics of business is like listening to the devil.  It's really not necessary.  Business is about economics, and if they don't follow the economics then hanging on in a political existence is a choice.  And then again, separating the social from the political in business is another rare skill.&lt;br /&gt;&lt;br /&gt;From my own knowledge of professional leadership training it's very easy to say that the first most common mistake among the uninitiated concerns ego.  Ego has no place in leadership, for a number of reasons left as an exercise for the reader.  A classic cartoon in the military world of professional leadership is the characterization of a leader "as he sees himself", "as his superiors see him" and "as his followers see him".  A great leader might have one of those on his or her office wall, or on the mind's wall.  For perception and its estimation on behalf of others is a part of this human life, recognizing and shaping ones reaching is always important.&lt;br /&gt;&lt;br /&gt;So, yes, life is messy.  Philosophical distinction is the most important skill of all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-8336246799544495854?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/8336246799544495854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=8336246799544495854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8336246799544495854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8336246799544495854'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/09/leadership.html' title='Leadership'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-5496743178697584631</id><published>2009-08-18T19:30:00.000-04:00</published><updated>2009-08-18T19:45:25.961-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sx'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><title type='text'>Spidering</title><content type='html'>The design of syntelos incorporates many ideas, one of which is spider based applications.  &lt;br /&gt;&lt;br /&gt;A spider is an automaton running in process or out of process with the server, to read one content collection for the production of another.  A first class of examples would be in alternative views of a collection.&lt;br /&gt;&lt;br /&gt;In this example, a primary web document collection may present a content hierarchy according to main subject, while secondary views of the collection may present alternative hierarchies according to document tags, or relations embedded within the collection.&lt;br /&gt;&lt;br /&gt;This approach to application architecture differs from dynamic content delivery in being more RESTful.  In the RESTful web architecture, the server delivers static resources in response to the HTTP GET request.  Spidering creates these static resources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-5496743178697584631?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/5496743178697584631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=5496743178697584631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5496743178697584631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5496743178697584631'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/08/spidering.html' title='Spidering'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-3893679876719511375</id><published>2009-08-13T19:41:00.000-04:00</published><updated>2009-08-13T20:14:25.490-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jela'/><category scheme='http://www.blogger.com/atom/ns#' term='wtkx'/><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><category scheme='http://www.blogger.com/atom/ns#' term='jbxml'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction'/><category scheme='http://www.blogger.com/atom/ns#' term='web tools'/><title type='text'>Web tools</title><content type='html'>A proper web tool reads and writes one or more data formats.  Data formats may be purpose built XML, or common interoperating formats, or a hybrid mixture as for example XML with multiple namespaces.  The read and write operations are in HTTP. &lt;br /&gt;&lt;br /&gt;Web tools are Web APIs.  One example is the Atom Publishing Protocol.  Another example is the variety of GData applications.&lt;br /&gt;&lt;br /&gt;More complex web tools may employ XMPP or Wave Protocol.  While not HTTP, they're friends of ours, too.&lt;br /&gt;&lt;br /&gt;The syntelos server is a web content repository.  Content includes data sets, records, an individual datum like the cell of a spreadsheet, as well as more traditional software code, descriptions, etc.. &lt;br /&gt;&lt;br /&gt;Of course the first example of using web data from a web repository is using HTML in a browser as a graphical user interface. &lt;br /&gt;&lt;br /&gt;The client side and server side software in a tool or tool set present the user and the web at large with the data and user interfaces for automated and manual work on the data.&lt;br /&gt;&lt;br /&gt;The syntelos web tools framework has many layers of software as data.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; The server is programmed in plain java source code which is uploaded, compiled and installed via HTTP, "in the browser".  The server side application programming will be able to employ jbxml / jela configuration modeling and programming. &lt;/li&gt;&lt;br /&gt;&lt;li&gt; Client side application programming will be able to employ the same kind of jbxml / jela modeling and programming via WTKX -- which loads its jbxml / jela applications into reloadable windows like a web browser.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; And from each of these points, additional layers of modeling and programming are possible as additional jbxml / jela layers. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;This is a complete domain for dynamic web development from plain java to model- augmented java.  It is web extensible in every dimension.  And of course it is secure.&lt;br /&gt;&lt;br /&gt;In conventional plain java, a program works in the context of its embedding system and libraries.  In model- augmented java, a program is an operation in the scope of an object model or graph configured in XML.  The XML model is particularly good for reasoning about a subsystem, and may be represented in an independent graphical user interface.&lt;br /&gt;&lt;br /&gt;These frameworks intend to maximize end user productivity by putting all web development into the browser, and then separating various related web user efforts.&lt;br /&gt;&lt;br /&gt;For example in UI Design and Content Editing.  In a typical wiki, Content Editing is still tied into UI Design as in creating tables, leading to a degradation of productivity.  When the formatting of all elements including tables is determined by the application, the productivity of Content Editing is raised by not needing to be concerned with visual design issues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-3893679876719511375?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/3893679876719511375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=3893679876719511375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3893679876719511375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3893679876719511375'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/08/web-tools.html' title='Web tools'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-8764825884406338353</id><published>2009-02-04T08:50:00.000-05:00</published><updated>2009-02-04T09:20:51.542-05:00</updated><title type='text'>Light lock</title><content type='html'>&lt;b&gt;Request for comments&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.syntelos.org/src/org/syntelos/sys/lock/Light.java"&gt;Light lock&lt;/a&gt; is a reentrant CAS lock.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class Light&lt;br /&gt;    extends java.util.concurrent.atomic.AtomicBoolean&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    private volatile java.lang.Thread writer;&lt;br /&gt;&lt;br /&gt;    private int enterRead, enterWrite;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public Light(){&lt;br /&gt;        super();&lt;br /&gt;        this.set(true);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public final void lockReadEnter(){&lt;br /&gt;        if (this.compareAndSet(true,true)){&lt;br /&gt;            synchronized(this){&lt;br /&gt;                this.enterRead += 1;&lt;br /&gt;            }&lt;br /&gt;            return;&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;            java.lang.Thread T = java.lang.Thread.currentThread();&lt;br /&gt;            if (T == this.writer){&lt;br /&gt;                synchronized(this){&lt;br /&gt;                    this.enterRead += 1;&lt;br /&gt;                }&lt;br /&gt;                return;&lt;br /&gt;            }&lt;br /&gt;            else {&lt;br /&gt;                try {&lt;br /&gt;                    while (true){&lt;br /&gt;                        synchronized(this){&lt;br /&gt;                            if (this.compareAndSet(true,true)){&lt;br /&gt;                                this.enterRead += 1;&lt;br /&gt;                                return ;&lt;br /&gt;                            }&lt;br /&gt;                            else&lt;br /&gt;                                this.wait();&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                catch (java.lang.InterruptedException exc){&lt;br /&gt;                    throw new java.lang.RuntimeException(exc);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    public final synchronized void lockReadExit(){&lt;br /&gt;        this.enterRead -= 1;&lt;br /&gt;        this.notify();&lt;br /&gt;    }&lt;br /&gt;    public final boolean lockWriteEnterTry(){&lt;br /&gt;        java.lang.Thread T = java.lang.Thread.currentThread();&lt;br /&gt;        if (T == this.writer){&lt;br /&gt;            synchronized(this){&lt;br /&gt;                this.enterWrite += 1;&lt;br /&gt;            }&lt;br /&gt;            return true;&lt;br /&gt;        }&lt;br /&gt;        else if (this.compareAndSet(true,false)){&lt;br /&gt;            /*&lt;br /&gt;             * exclude others, and then wait for readers to exit&lt;br /&gt;             */&lt;br /&gt;            try {&lt;br /&gt;                synchronized(this){&lt;br /&gt;                    while (true){&lt;br /&gt;                        if (0 == this.enterRead){&lt;br /&gt;                            this.writer = T;&lt;br /&gt;                            this.enterWrite += 1;&lt;br /&gt;                            return true;&lt;br /&gt;                        }&lt;br /&gt;                        else {&lt;br /&gt;                            this.wait();&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            catch (java.lang.InterruptedException exc){&lt;br /&gt;                throw new java.lang.RuntimeException(exc);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;            return false;&lt;br /&gt;    }&lt;br /&gt;    public final void lockWriteEnter(){&lt;br /&gt;        if (this.lockWriteEnterTry())&lt;br /&gt;            return;&lt;br /&gt;        else {&lt;br /&gt;            try {&lt;br /&gt;                while (true){&lt;br /&gt;                    synchronized(this){&lt;br /&gt;                        if (this.lockWriteEnterTry())&lt;br /&gt;                            return;&lt;br /&gt;                        else&lt;br /&gt;                            this.wait();&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            catch (java.lang.InterruptedException exc){&lt;br /&gt;                throw new java.lang.RuntimeException(exc);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    public final synchronized void lockWriteExit(){&lt;br /&gt;        java.lang.Thread W = this.writer;&lt;br /&gt;        java.lang.Thread T = java.lang.Thread.currentThread();&lt;br /&gt;        if (T == W){&lt;br /&gt;            this.enterWrite -= 1;&lt;br /&gt;            if (0 == this.enterWrite){&lt;br /&gt;                if (this.compareAndSet(false,true)){&lt;br /&gt;                    this.writer = null;&lt;br /&gt;                    this.notify();&lt;br /&gt;                }&lt;br /&gt;                else&lt;br /&gt;                    throw new java.lang.IllegalStateException();&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;                return;&lt;br /&gt;        }&lt;br /&gt;        else if (null == W)&lt;br /&gt;            throw new java.lang.IllegalStateException();&lt;br /&gt;        else&lt;br /&gt;            throw new java.lang.IllegalStateException();&lt;br /&gt;    }&lt;br /&gt;    public final boolean isWriteLocked(){&lt;br /&gt;        return (!this.get());&lt;br /&gt;    }&lt;br /&gt;    public final boolean isNotWriteLocked(){&lt;br /&gt;        return this.get();&lt;br /&gt;    }&lt;br /&gt;    public final boolean isWriteLocker(){&lt;br /&gt;        java.lang.Thread T = java.lang.Thread.currentThread();&lt;br /&gt;        return (T == this.writer);&lt;br /&gt;    }&lt;br /&gt;    public final boolean isNotWriteLocker(){&lt;br /&gt;        java.lang.Thread T = java.lang.Thread.currentThread();&lt;br /&gt;        return (T != this.writer);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-8764825884406338353?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/8764825884406338353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=8764825884406338353' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8764825884406338353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8764825884406338353'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/02/light-lock.html' title='Light lock'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-1966956668014849373</id><published>2009-01-28T13:33:00.000-05:00</published><updated>2009-01-28T13:39:39.149-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='executable web'/><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><category scheme='http://www.blogger.com/atom/ns#' term='online app creation'/><title type='text'>SAuth 1.0</title><content type='html'>An HTTP request signing scheme using RSA, &lt;a href="http://www.syntelos.org/SAuth10.txt"&gt;SAuth&lt;/a&gt; (&lt;a href="http://www.syntelos.org/SAuth10.pdf"&gt;pdf&lt;/a&gt;).&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;     SAuth is an HTTP request signing scheme for User Agent&lt;br /&gt;     authentication.  It applies RSA, SHA-1 and MD5 to HTTP request&lt;br /&gt;     signing.&lt;br /&gt;&lt;br /&gt;     The User Agent is authenticated and the content of the HTTP&lt;br /&gt;     request are protected from tampering (middle man).&lt;br /&gt;&lt;br /&gt;     It has been designed for a system with shared RSA keys on client&lt;br /&gt;     and server, substantial key sizes (e.g., 1024), and for the very&lt;br /&gt;     frequent use of those Key Pairs.  It compromises cost and benefit&lt;br /&gt;     in favor of long term security.  (RSA signing is expensive).&lt;br /&gt;&lt;br /&gt;     Other request signing authentication schemes include for example&lt;br /&gt;     the Amazon S3 authentication scheme.  One of the design&lt;br /&gt;     objectives in request signing schemes is the avoidance of the&lt;br /&gt;     overhead of challenge- response protocols.  A request is&lt;br /&gt;     statelessly verified with a shared key in a single transaction.&lt;br /&gt;&lt;br /&gt;     SAuth is not asymmetric in the verification of request&lt;br /&gt;     signatures.  It transmits a reduced form of the signature that is&lt;br /&gt;     unable to support asymmetric signature verification.  The reduced&lt;br /&gt;     form of the signature enhances the security of the Key Pair at&lt;br /&gt;     the expense of the cost of verification.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-1966956668014849373?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/1966956668014849373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=1966956668014849373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1966956668014849373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1966956668014849373'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2009/01/sauth-10.html' title='SAuth 1.0'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2183163204690374234</id><published>2008-12-30T00:09:00.000-05:00</published><updated>2008-12-30T12:43:45.213-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='info economic machinery'/><category scheme='http://www.blogger.com/atom/ns#' term='software engineering management'/><category scheme='http://www.blogger.com/atom/ns#' term='software economics'/><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><title type='text'>Engineering design for business value</title><content type='html'>We can observe that the economic cost of the use of the product or service of a technology business exists or has effect in terms of the client's time, money, choice, convenience, or effort. &lt;br /&gt;&lt;br /&gt;Likewise we can observe that a change to the product or service of a technology company has (at least) qualifiable economic costs.&lt;br /&gt;&lt;br /&gt;And so this is how we know the economic relation between design and value.  &lt;br /&gt;&lt;br /&gt;Constraints are an element of design.  Some constraints are selected as precursors to the process of the development of a design, these are design requirements.  Some constraints are selected during the design process as necessary to the implementation of a design.  And then some constraints are implied by or effects of design or development choices.&lt;br /&gt;&lt;br /&gt;Generally constraints restrict degrees of freedom for the future use or development of a product or service. Positive constraints contribute to the client's benefit from using the product or service.  Negative constraints contribute to the client's economic cost of using the product or service, and are a debt to value.&lt;br /&gt;&lt;br /&gt;One of the murkiest sources of negative constraints is design or development complexity.  A failure to realize the simplest possible solution (to a design or development problem) is to install known or implied negative constraints, present or future economic costs to the use of the product or service.&lt;br /&gt;&lt;br /&gt;Negative constraints are debits to the fundamental multipliers of business growth and sustenance.  We know this to be true because we know the client's economic costs of use are the determinants of acceptance and productivity.&lt;br /&gt;&lt;br /&gt;Minimizing design complexity is maximizing business value.&lt;br /&gt;&lt;br /&gt;The process of Qualifying engineering design complexity is like the process of Quantifying computational complexity.  First we need abstractions to capture significance.  More explicit expressions of complexity are available at the small end of the domain, while comparative complexity is practical throughout most of the domain.  &lt;br /&gt;&lt;br /&gt;We also need to identify internal and external elements of technical design complexity, implementation versus interface, how they are distinct and how they are not.  Internal issues may be independent of external ones, and thereby not immediately relevant.&lt;br /&gt;&lt;br /&gt;When we master these processes for the recognition, identification and clarification of design constraints we master the processes for delivering technological growth and sustenance to the business.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2183163204690374234?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2183163204690374234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2183163204690374234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2183163204690374234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2183163204690374234'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/12/engineering-design-for-business-value.html' title='Engineering design for business value'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-6473052019455013713</id><published>2008-12-27T13:03:00.000-05:00</published><updated>2008-12-27T13:55:02.447-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='info economic machinery'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction computing'/><category scheme='http://www.blogger.com/atom/ns#' term='synthesis and representation'/><title type='text'>An algebra of HTTP</title><content type='html'>A description of HTTP in an integral algebra serves as yet another tool for reasoning about principles.  &lt;br /&gt;&lt;br /&gt;The response is a point in the domain that is HTTP.  A GET request is an identity relation on that point.  A function from the domain of the request into the domain of the response exists, whether explicit or implied.  The function is implied when a resource is created but not returned in the response.&lt;br /&gt;&lt;br /&gt;Therefore the expression &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  GET /index.html&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;identifies a point in the domain of HTTP.  And likewise the expressions&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  PUT /index.html&lt;br /&gt;  DELETE /index.html&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;are operations on the same point.&lt;br /&gt;&lt;br /&gt;Compare this to arithmetic.  The identity expression is &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  1 = 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and operational expressions include&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  1 + 1&lt;br /&gt;  1 - 1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;.&lt;br /&gt;&lt;br /&gt;The equivalent algebraic identity expression would read as &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  "GET /index.html" = "response entity body data"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;.&lt;br /&gt;&lt;br /&gt;When we can see this algebra, then we have new eyes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-6473052019455013713?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/6473052019455013713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=6473052019455013713' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/6473052019455013713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/6473052019455013713'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/12/algebra-of-http.html' title='An algebra of HTTP'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-337063507968714845</id><published>2008-12-24T00:13:00.000-05:00</published><updated>2008-12-24T04:08:54.192-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='info economic machinery'/><category scheme='http://www.blogger.com/atom/ns#' term='web architectural principles'/><category scheme='http://www.blogger.com/atom/ns#' term='semantic web'/><category scheme='http://www.blogger.com/atom/ns#' term='interface architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='resp'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction machine theory'/><title type='text'>On the science of computing</title><content type='html'>Is there science among the following bytes?&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  GET /index.html HTTP/1.0&lt;br /&gt;  Host: www.syntelos.com&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Syntax and semantics are perhaps the principle areas of science in computing, at least from the perspective that dominates my world.  They invent and describe the tools we employ for manipulating bits, bytes and words into increasingly more interesting interactions.&lt;br /&gt;&lt;br /&gt;The more subtle the work, whether science or art, the more invisible or transparent it can be.  Larger purposes are elusive until illuminated.  And greater profundity can have more power.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;From here...&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Take for example one of the first issues in the latter day web network interface.  What's the difference between the following.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  PUT / HTTP/1.0&lt;br /&gt;  PUT /index.html HTTP/1.0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And should &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  GET / HTTP/1.0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;always respond with &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  HTTP/1.0 301 Moved Permanently&lt;br /&gt;  Location: http://www.syntelos.com/index.html&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;?&lt;br /&gt;&lt;br /&gt;Should the server permit &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  PUT / HTTP/1.0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;is the classic question that recognizes a&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  GET / HTTP/1.0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;that returns a&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  HTTP/1.0 200 OK&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;as a vanity hack with the cost of implying &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  PUT / HTTP/1.0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;to the tool that used it on behalf of the user who wanted to edit her home page.&lt;br /&gt;&lt;br /&gt;If we make the null PUT work, how will the server deal with content types and file names.  What does the null get return when the file was created by the null put?  &lt;br /&gt;&lt;br /&gt;When the system becomes defined in code where it could have been defined in user data, everyone looses.  &lt;br /&gt;&lt;br /&gt;What do I need to do to such a system to change the file name returned by or redirected to by a null get?&lt;br /&gt;&lt;br /&gt;How do I represent multiple choices for the selection of the product of a null get?  Check your terms closely for application to all cases.&lt;br /&gt;&lt;br /&gt;Solving for all variables, when we work this little problem, we discover that the null get should redirect to a file name, and the null put should be a bad request.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;To there...&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Where is the science in the art of delivering more interesting interactions?  Is it in the server side software architecture?  Is it in the server side systems architecture?  Or is it in the server network interface?  &lt;br /&gt;&lt;br /&gt;It's in the server network interface where all of these issues and more fall onto one simple, clean edge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-337063507968714845?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/337063507968714845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=337063507968714845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/337063507968714845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/337063507968714845'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/12/on-science-of-computing.html' title='On the science of computing'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-895136118225537122</id><published>2008-12-08T05:00:00.000-05:00</published><updated>2008-12-08T05:07:50.203-05:00</updated><title type='text'>java.lang.MemberOf</title><content type='html'>Wouldn't it be cool if there existed an annotation named &lt;code&gt;java.lang.MemberOf&lt;/code&gt; that could tell the compiler that the marked interface is always implemented by a subclass of a described class.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package pkg.io;&lt;br /&gt;&lt;br /&gt;@MemberOf(java.io.OutputStream)&lt;br /&gt;public interface OutputStreamInterface {&lt;br /&gt;&lt;br /&gt;    public void write(int uint8)&lt;br /&gt;        throws java.io.IOException;&lt;br /&gt;&lt;br /&gt;    public void write(byte[] buf, int ofs, int len)&lt;br /&gt;        throws java.io.IOException;&lt;br /&gt;&lt;br /&gt;    public void flush()&lt;br /&gt;        throws java.io.IOException;&lt;br /&gt;&lt;br /&gt;    public void close()&lt;br /&gt;        throws java.io.IOException;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So that the name &lt;code&gt;pkg.io.OutputStreamInterface&lt;/code&gt; could then be used in any way that the name &lt;code&gt;java.io.OutputStream&lt;/code&gt; can be used?&lt;br /&gt;&lt;br /&gt;Any implementor of an interface marked MemberOf would derive from the described class, in the example &lt;code&gt;java.io.OutputStream&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Aside from creating a syntactic meta class, the compiler would need to inject CAST instructions in support of the MemberOf annotation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-895136118225537122?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/895136118225537122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=895136118225537122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/895136118225537122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/895136118225537122'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/12/javalangmemberof.html' title='java.lang.MemberOf'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-6760366633937748400</id><published>2008-08-23T19:04:00.000-04:00</published><updated>2008-08-24T22:59:50.630-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='java classes'/><category scheme='http://www.blogger.com/atom/ns#' term='web api'/><category scheme='http://www.blogger.com/atom/ns#' term='resp'/><category scheme='http://www.blogger.com/atom/ns#' term='open service'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction mechanics'/><category scheme='http://www.blogger.com/atom/ns#' term='syntelos speculative'/><category scheme='http://www.blogger.com/atom/ns#' term='java class libraries'/><title type='text'>RESP COMPILE</title><content type='html'>An HTTP method named "COMPILE" is planned to produce JVM Class files from JPL source files.&lt;br /&gt;&lt;br /&gt;The COMPILE package is a light and open layer, sapping as few resources as possible for its purpose: any to any COMPILE transactions from HTTP.&lt;br /&gt;&lt;br /&gt;Using no transformer, the compiler is a Pretty Printer.  Left to its own devices, the compiler will write the Source to the Target using the first available DOM reader and writer pair. &lt;br /&gt;&lt;br /&gt;It wants to be like a Mac, where everything just works.  And it wants to be always flawlessly reliable, and then as fast as possible.&lt;br /&gt;&lt;br /&gt;Firstly, we can write Java to Class files, and XML to Java, and back again.  We can build programs, and websites about programs and programming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-6760366633937748400?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/6760366633937748400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=6760366633937748400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/6760366633937748400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/6760366633937748400'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/08/resp-compile.html' title='RESP COMPILE'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-7575778119235604109</id><published>2008-08-10T16:03:00.000-04:00</published><updated>2008-08-10T17:59:29.961-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='web architectural principles'/><category scheme='http://www.blogger.com/atom/ns#' term='network virtual machine'/><category scheme='http://www.blogger.com/atom/ns#' term='interface architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction computing'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction mechanics'/><title type='text'>HTTP/NVM Systems &amp; Interfaces</title><content type='html'>The Unix [&lt;a href="http://www.bell-labs.com/history/unix/"&gt;1&lt;/a&gt; &lt;a href="http://cm.bell-labs.com/cm/cs/"&gt;2&lt;/a&gt; &lt;a href="http://cm.bell-labs.com/who/dmr/index.html"&gt;3&lt;/a&gt; &lt;a href="http://plan9.bell-labs.com/who/bwk/"&gt;4&lt;/a&gt;] device model circa 1967 is an eternal landmark.  A path space name like &lt;code&gt;"/dev/audio"&lt;/code&gt; is accessible in the universe of the system calls "read" and "write".  The model has been evolved in major increments in Plan9 [&lt;a href="http://plan9.bell-labs.com/plan9/"&gt;1&lt;/a&gt; &lt;a href="http://plan9.bell-labs.com/sys/doc/names.html"&gt;2&lt;/a&gt;] and Inferno [&lt;a href="http://inferno.bell-labs.com/"&gt;1&lt;/a&gt; &lt;a href="http://www.vitanuova.com/inferno/papers/limbo.html"&gt;2&lt;/a&gt;].  In these latter interations, Plan9 and Inferno, devices are distributed on a protocol named "9P" or "Styx"  [&lt;a href="http://www.vitanuova.com/inferno/papers/styx.html"&gt;1&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;It's plainly obvious to look at HTTP from the same perspective, on another level of abstraction.  Not "open", "read" and "write", but "get", "put" and "delete".  An HTTP host is a server, a Styx host is a peer.  Styx can export &lt;code&gt;"/dev/mouse"&lt;/code&gt;, while HTTP clearly won't.&lt;br /&gt;&lt;br /&gt;But that's the limit of the "system" (Unix) perspective.  Its streaming devices are unlike HTTP transactions.  A Styx host is not intended for handling large numbers of users, but HTTP is (let's say).  HTTP is stateless, Styx is not.&lt;br /&gt;&lt;br /&gt;That said, let's return to the idea.  The HTTP methods "get", "put" and "post" may work on systemic devices in some sense.  Consider a small XML or JSON file, "/sys/state".  The operations "get", "put" and "delete" use and manage some system state.  The term system takes on a more abstract meaning from the Unix case.  &lt;br /&gt;&lt;br /&gt;The system is a cloud of producers and consumers interoperating via HTTP.  Host names scope application spaces, and authentication controls access.  Relatively more Styx- like devices can be constructed with a "post" operator, as in the case of the open social / atompub media "device" [&lt;a href="http://atompub-mulitpart-spec.googlecode.com/svn/trunk/draft-gregorio-atompub-multipart-02.txt"&gt;2&lt;/a&gt;].  In this case, a post to an abstract device creates a new resource in a device controlled location.&lt;br /&gt;&lt;br /&gt;Following the thought, an HTTP device accepts "post", while a resource accepts "get", "put" and "delete".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-7575778119235604109?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/7575778119235604109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=7575778119235604109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7575778119235604109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7575778119235604109'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/08/httpnvm-systems-interfaces.html' title='HTTP/NVM Systems &amp; Interfaces'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-5508578205703129916</id><published>2008-07-16T08:19:00.000-04:00</published><updated>2008-07-16T12:54:47.145-04:00</updated><title type='text'>Will the real sandbox please stand up</title><content type='html'>The world is increasingly populated by sandboxes -- I'm reminded of it this morning.  The Facebook app sandbox, and many others including Java and Flash.  Many ways to deliver web application programming.  The Java Applet was the original "sandbox" in this web, safe client side programming.  It remains an interesting platform, albeit challenging.&lt;br /&gt;&lt;br /&gt;Many tout the failure of Java in the browser.  From my perspective, which includes a success with the Datek Streamer in 1997 when the story was first building, this is blaming the tool.  It should be accepted that running code across the web and over so many layers (JVM, browser, and the windowing and operating systems) is a challenge.  And then of course Java is not perfect.  Nothing is.&lt;br /&gt;&lt;br /&gt;It's come to the point where using Java in the browser is broadly perceived as a risk.  There is the fact that Java does not have the installed base -- the virtual ubiquity -- of Flash.  But if this "risk to install" is not a killer, then there is no risk aside from producer capacities.&lt;br /&gt;&lt;br /&gt;Perhaps the principal technical challenge with Java in the browser relates to the widget set.  Swing and AWT are broken (tedious), and their visual products are not as "creatively free" as in Flash.  And alternative widget sets are typically messy, like AWT.  &lt;br /&gt;&lt;br /&gt;For my part, I always begin my own projects with yet another new widget set.  Perhaps the latest one will make it.  Named "wiz", the previous generations were most often named "viz", and 'w' equals 'v' plus one. &lt;br /&gt;&lt;br /&gt;A recent challenge to the serious Java client side is in Video.  Flash has it and Java remains a minefield on the subject.  JMF is not in JDK6, but reportedly its successor will be in the JDK/JRE 7.  JMF works on WebStart, although that's a fairly special solution.&lt;br /&gt;&lt;br /&gt;Nonetheless, I'm proceeding into a Java client side for a Webtop for Syntelos.  Generally Syntelos is a WebAPI, so the choice of clients is wide open.  I want to use Syntelos myself in different ways than are reasonably available to me through any alternative to Java.  I'll be publishing Applet and WebStart applications through Syntelos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-5508578205703129916?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/5508578205703129916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=5508578205703129916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5508578205703129916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5508578205703129916'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/07/will-real-sandbox-please-stand-up.html' title='Will the real sandbox please stand up'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-7514779061700534004</id><published>2008-07-15T15:30:00.000-04:00</published><updated>2008-07-15T16:17:10.812-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foucault graph'/><category scheme='http://www.blogger.com/atom/ns#' term='cognitive structure'/><category scheme='http://www.blogger.com/atom/ns#' term='foucault'/><category scheme='http://www.blogger.com/atom/ns#' term='ena'/><category scheme='http://www.blogger.com/atom/ns#' term='deleuze'/><title type='text'>a Foucault Graph (ena)</title><content type='html'>Once upon a time, many years ago, ena was discussed as a text handling structure.  Ena uses Michel Foucault's graph [&lt;a href="http://books.google.com/books?id=7z0nXi4R8m4C"&gt;Foucault&lt;/a&gt;]: stem, word and phrase level distances "within the space of rarity" [&lt;a href="http://books.google.com/books?id=ywgy9PAoVS4C"&gt;Deleuze  pp11&lt;/a&gt;].  &lt;br /&gt;&lt;br /&gt;A node in this graph is a stem, word or phrase.  It is linked in a large number of arbitrarily defined dimensions.  The graph is dynamic, evolving continuously in its links and dimensions according to purpose.&lt;br /&gt;&lt;br /&gt;A token is a long stem -- a word without suffix modifiers like the plural 's'.  The most frequent tokens are ignored while tokens of two or more are linked in a list.  The text is the base list, and these others are labeled for their tokens and the attributes of their tokens.  For example, the probability of a token being a noun (stem) is an important token list attribute.  &lt;br /&gt;&lt;br /&gt;The most general starting point is to construct token lists in decreasing order of noun probability, and then subsequent lists of surrounding tokens are consolidated into related (token) phrases.&lt;br /&gt;&lt;br /&gt;Each list token or phrase is an entry point into this graph.  &lt;br /&gt;&lt;br /&gt;The graph is a kind of knowledge of the text that invokes the idea of understanding the text,  perhaps "cognitive structure".&lt;br /&gt;&lt;br /&gt;Ena is an interesting problem to solve from a software perspective.  Some immediate applications include an ena editor, good at "replace all" operations.  An ena VR interface would be interesting over a collection of many texts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-7514779061700534004?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/7514779061700534004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=7514779061700534004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7514779061700534004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7514779061700534004'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/07/foucault-graph-ena.html' title='a Foucault Graph (ena)'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-3470798412145782955</id><published>2008-07-09T23:14:00.000-04:00</published><updated>2008-07-10T02:27:03.724-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='web architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='network virtual machine'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction mechanics'/><title type='text'>Why network virtual machine</title><content type='html'>As a counter point to the Web Services Architecture and REST perspectives on modeling HTTP interfaces [&lt;a href="http://blog.syntelos.com/2007/12/reviewing-rest-architectural-style.html"&gt;1&lt;/a&gt;, &lt;a href="http://blog.syntelos.com/2008/01/interface-architecture.html"&gt;2&lt;/a&gt;, &lt;a href="http://blog.syntelos.com/2008/01/references-for-web-architecture.html"&gt;3&lt;/a&gt;], the perspective of the Network Virtual Machine [&lt;a href="http://blog.syntelos.com/2008/02/modeling-http-in-mechanics-of.html"&gt;1&lt;/a&gt;] emphasizes the atomicity of REST and works in the space of Interaction [&lt;a href="http://blog.syntelos.com/2008/01/interaction-mechanics.html"&gt;1&lt;/a&gt;] to look at HTTP as a "web of peers" protocol.&lt;br /&gt;&lt;br /&gt;Generally, peering protocols may push or pull messages.  The IRC [&lt;a href="http://tools.ietf.org/html/rfc1459#section-3"&gt;1#Concepts&lt;/a&gt;] protocol demonstrates how servers can peer in a "web" by pulling channels from each other.  However, unlike web HTTP, IRC channels are bidirectional command or instruction streams.  HTTP can do this with a protocol upgrade [&lt;a href="http://tools.ietf.org/html/rfc2616#section-14.42"&gt;1#Upgrade&lt;/a&gt;], as in the case of TLS [&lt;a href="http://tools.ietf.org/html/rfc4346"&gt;1&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;Current work on Interaction [&lt;a href="http://www.cs.brown.edu/people/dqg/papers/#interaction"&gt;1&lt;/a&gt;] includes work on multi node processes in terms of process algebras.  Building up to processes in a more discrete way is a  mechanical approach.  Maybe it's not unlike looking at the subject of statistics in terms of counting. &lt;br /&gt;&lt;br /&gt;The objective is to understand (comprehend) these processes with layers of theory founded in practical terms.  The work on classes of process algebras for known behavior is important to representing relatively complex application protocols.  While scalable internet services are best designed and implemented with much simpler interfaces.  &lt;br /&gt;&lt;br /&gt;Multi node processes over these network interfaces are more effective over simple protocols.  Simpler interfaces are better Web APIs.  And simpler interfaces perform better in the hosting system, for a better experience and lower cost.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-3470798412145782955?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/3470798412145782955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=3470798412145782955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3470798412145782955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3470798412145782955'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/07/why-network-virtual-machine.html' title='Why network virtual machine'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-9205044018088050983</id><published>2008-02-22T12:22:00.001-05:00</published><updated>2008-07-10T00:00:17.936-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='network virtual machine'/><category scheme='http://www.blogger.com/atom/ns#' term='interface architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction computing'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction mechanics'/><title type='text'>Modeling HTTP in the mechanics of interaction</title><content type='html'>HTTP is a rich domain for modeling &lt;a href="http://blog.syntelos.com/2008/01/interaction-mechanics.html"&gt;interaction mechanics&lt;/a&gt; because it is both mechanical and interactive.&amp;nbsp; We can study and learn about both HTTP and Interaction when we regard HTTP as a Network Virtual Machine.&amp;nbsp; This machine is a Turing Machine in the first case, and an Interaction Machine in the second.&lt;br&gt;&lt;br&gt;In the first case, maintaining Fielding&amp;#39;s REST principles for conventional use, the HTTP methods GET, PUT and DELETE are atomic operations evaluating within the machine as a closed system, making it a Tape Machine.&amp;nbsp; &lt;br&gt; &lt;br&gt;In the second case, we can define the HTTP method POST as interacting with another network virtual machine when it makes a GET request to another service.&lt;br&gt;&lt;br&gt;This model is counter- intuitive for practitioners because the instruction stream originates in the network space and the HTTP context that associate strongly with interaction.&amp;nbsp; We make distinct the service and its users as individual machines -- and in fact these are individual network hosts, HTTP clients and servers.  &lt;br&gt; &lt;br&gt;Within a service, HTTP&amp;#39;s GET, PUT and DELETE methods are (conventionally) elements of a Tape Machine, and only POST is possibly interactive.&amp;nbsp; Within its user clients, each is interactive when the user employs the service.&lt;br&gt; &lt;br&gt;Just as within POST as the user of another service, another network virtual machine.&lt;br&gt;&lt;br&gt;When we follow Fielding&amp;#39;s principles for web architecture, GET, PUT and DELETE execute in time appropriate to atomic operations in our network virtual machine.&amp;nbsp; The user of POST that implies a remote GET intends to maintain the atomicity of the POST, engaging the REST principles as properties of network atomicity.&lt;br&gt; &lt;br&gt;The elapsed time of execution on a network virtual machine includes time reading the request and writing the response.&amp;nbsp; The frequency of the network virtual machine is Ten Hertz (cycles per second) when the average elapsed execution time is 100 ms.&amp;nbsp; And 100Hz when the average execution time is 10 ms.&amp;nbsp; A network virtual machine perspective reinforces the significance of the REST principles for scalability.&lt;br&gt; &lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-9205044018088050983?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/9205044018088050983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=9205044018088050983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/9205044018088050983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/9205044018088050983'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/02/modeling-http-in-mechanics-of.html' title='Modeling HTTP in the mechanics of interaction'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-3828297375256722575</id><published>2008-02-16T16:22:00.001-05:00</published><updated>2008-02-16T16:24:11.510-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='ipr'/><category scheme='http://www.blogger.com/atom/ns#' term='ustr'/><category scheme='http://www.blogger.com/atom/ns#' term='priority watch list'/><title type='text'>What is the USTR Intellectual Property Rights Priority Watch List?</title><content type='html'>Sun&amp;#39;s &lt;a href="http://download.java.net/openjdk/jdk6/"&gt;Open JDK download site&lt;/a&gt; is tagged...&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;&lt;b&gt;&lt;span style="font-weight: bold;"&gt;&lt;br&gt;&lt;/span&gt;International Use Restrictions&lt;/b&gt;&lt;br&gt; Due to limited intellectual property protection and enforcement in certain countries, the JDK source code may only be distributed to an authorized list of countries. You will not be able to access the source code if you are downloading from a country that is not on this list. We are continuously reviewing this list for addition of other countries.&lt;br&gt;&lt;/div&gt;&lt;br&gt;...which made me wonder.&amp;nbsp; Who are these countries?&lt;br&gt;&lt;br&gt;Well, according to the United States Trade Representative (USTR) report &lt;a href="http://www.ustr.gov/Document_Library/Reports_Publications/2006/2006_Special_301_Review/Section_Index.html"&gt;&amp;quot;2006 Special 301&amp;quot;&lt;/a&gt;, these countries would be&lt;br&gt; &lt;div style="margin-left: 40px;"&gt;&lt;br&gt;China&lt;br&gt;Russia&lt;br&gt;Argentina&lt;br&gt;Belize&lt;br&gt;Brazil&lt;br&gt;Egypt&lt;br&gt;India&lt;br&gt;Indonesia&lt;br&gt;Israel&lt;br&gt;Lebanon&lt;br&gt;Turkey&lt;br&gt;Ukraine&lt;br&gt;Venezuela&lt;br&gt;&lt;/div&gt;&lt;br&gt;Certainly is unfriendly to disallow open source downloads to countries tagged like this.&lt;br&gt; &lt;br&gt;Food for thought.&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-3828297375256722575?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/3828297375256722575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=3828297375256722575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3828297375256722575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3828297375256722575'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/02/what-is-ustr-intellectual-property.html' title='What is the USTR Intellectual Property Rights Priority Watch List?'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-5744077614182021975</id><published>2008-01-31T09:14:00.001-05:00</published><updated>2008-01-31T09:22:07.285-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='web architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='web architectural principles'/><title type='text'>References for Web Architecture</title><content type='html'>One of the most important principles for web architecture is in the identification of location.&amp;nbsp; &lt;a href="http://www.w3.org/TR/webarch/"&gt;Web architecture&lt;/a&gt; is often violated when &lt;span style="font-style: italic;"&gt;index expressions&lt;/span&gt; are employed where &lt;span style="font-style: italic;"&gt;address expressions&lt;/span&gt; are appropriate.&amp;nbsp; &lt;br&gt; &lt;br&gt;&lt;div style="margin-left: 40px;"&gt;A browser getting a web page employs an &lt;span style="font-style: italic;"&gt;address expression&lt;/span&gt; when it&amp;#39;s not employing a dynamic view in a resource collection scheme.&lt;br&gt;&lt;br&gt;An &lt;span style="font-style: italic;"&gt;address expression&lt;/span&gt; is more commonly known as a resource location.&lt;br&gt; &lt;/div&gt;&lt;br&gt;A URL (for HTTP GET) has a query expression employing indeces and possibly describing ranges within collections when it employs the query parameters syntax.&amp;nbsp; As in &lt;span style="font-family: courier new,monospace;"&gt;&amp;quot;/path?id=0&amp;quot;&lt;/span&gt;.&amp;nbsp; This example is an index into a collection.&amp;nbsp; &lt;br&gt; &lt;br&gt;&lt;div style="margin-left: 40px;"&gt;An index is a component of a query expression.&amp;nbsp; An index may be a part of a range expression.&amp;nbsp; &lt;br&gt;&lt;br&gt;A query expression in an HTTP GET request expresses a view or perspective on a resource collection.&amp;nbsp; &lt;br&gt; &lt;/div&gt;&lt;br&gt;A URL (for HTTP GET) is an &lt;span style="font-style: italic;"&gt;address expression&lt;/span&gt; (location) when it does not employ the query parameters syntax.&amp;nbsp; As in &lt;span style="font-family: courier new,monospace;"&gt;&amp;quot;path/0&amp;quot;&lt;/span&gt;.&amp;nbsp; This example is the address or location of a web resource.&lt;br&gt; &lt;br&gt;The difference between an index and an address can be illuminated in the context of resource editing.&amp;nbsp; A view is not employed for resource editing.&amp;nbsp; The incorrect HTTP statements &lt;span style="font-family: courier new,monospace;"&gt;&amp;quot;DELETE /path?id=0&amp;quot;&lt;/span&gt; or &lt;span style="font-family: courier new,monospace;"&gt;&amp;quot;PUT /path?id=0&amp;quot;&lt;/span&gt; violate web architecture because the URI components of these statements are not locations.&amp;nbsp; The URI employed here expresses a view on a collection of resources rather than a resource location.&lt;br&gt; &lt;br&gt;The distinction resolves compatibility with many issues, both internal and external to a domain&amp;#39;s web services.&amp;nbsp; Edge devices external to web services can readily resolve this distinction.&amp;nbsp; Client user agents, editors, and automated web services can readily resolve this distinction.&amp;nbsp; &lt;br&gt; &lt;br&gt;But most importantly, a web architecture lacking collection- scheme- independent resource locations precludes the long term survivability of its own links, as well as alternative views.&amp;nbsp; It lacks a structure for its own evolution.&amp;nbsp; Its links will become broken when its view scheme changes.  It is fragile.&lt;br&gt; &lt;br&gt;An index expression for a single resource should redirect to an address expression (a location).&amp;nbsp; A collection view containing single resource references should point to address (location) expressions, or of course alternatively, to index expressions that will redirect to locations.&lt;br&gt; &lt;br&gt;A web architecture should make a best effort to create survivable resource locations, and independent view query schemes, to avoid application silo effects in its choices.&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-5744077614182021975?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/5744077614182021975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=5744077614182021975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5744077614182021975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5744077614182021975'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/01/references-for-web-architecture.html' title='References for Web Architecture'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2055425993733206820</id><published>2008-01-31T07:37:00.001-05:00</published><updated>2008-01-31T08:06:52.104-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interaction computing'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction mechanics'/><category scheme='http://www.blogger.com/atom/ns#' term='interaction machine theory'/><title type='text'>Interaction mechanics</title><content type='html'>Process algebras are not very useful to me as a Software Engineer working in the interactive server side.&amp;nbsp; They describe the systemic composition of interaction machines from the remote distance required for a mathematical view of computing.&amp;nbsp; Unfortunately, current work in the field of Interaction Machine Theory seems to have gone back to the bad old days of new process algebras.&amp;nbsp; Those funky little scripts that create oh so much prestige.&lt;br&gt; &lt;br&gt;Illuminating the principles of Interaction Machines requires &lt;span style="font-style: italic;"&gt;inspection&lt;/span&gt; of the idea, much more than &lt;span style="font-style: italic;"&gt;constructions&lt;/span&gt; of the idea.&amp;nbsp; Constructions prove and explore the models proposed for inspection.&amp;nbsp; Inspection is the thing needed by the world.&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2055425993733206820?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2055425993733206820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2055425993733206820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2055425993733206820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2055425993733206820'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/01/interaction-mechanics.html' title='Interaction mechanics'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2492708305425654271</id><published>2008-01-30T14:08:00.001-05:00</published><updated>2008-01-30T14:10:07.978-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='design patterns'/><title type='text'>Design patterns</title><content type='html'>The benefit of design patterns is in a facility to communicate a complete idea without changing the course of the conversation to dive into a tangent.&amp;nbsp; They&amp;#39;re touch stones.&lt;br&gt;&lt;br&gt;One problem with design patterns is in their naming.&amp;nbsp; We use different names and we forget their names.&amp;nbsp; It&amp;#39;s easy to do.&lt;br&gt;&lt;br&gt;However, the main problem with design patterns is getting locked into their specification before the correctness of the choice can be validated.&amp;nbsp; Sometimes the problem and solution are simple enough that the question of applicability can be answered mentally.&amp;nbsp; &lt;br&gt;  &lt;br&gt;However in most cases, the subject and its containing system are complex enough that some consideration is in order for the benefit of minimizing project risk.&lt;br&gt;&lt;br&gt;An analysis reviews an interface or library to consider the essential attributes of its fit value.&amp;nbsp; &lt;br&gt;  &lt;br&gt;An experiment goes down the road of using an interface and library to discover its actual fit value.&amp;nbsp; &lt;br&gt;&lt;br&gt; The speed with which the analysis or experiment can be performed, and the quality of their predictions with respect to project success and risk, are elements of experience.&amp;nbsp; Experience knows that an interface or library that overtly fits the problem may have broader implications for the success or maintainability or interoperability of the system.&lt;br&gt; &lt;br&gt;It&amp;#39;s not because we want to be able to reason about and compose systems in a singular thought process that we can make it so by using the patterns and APIs in mind.&amp;nbsp; Building software systems simply remains harder work than that these days.&lt;br&gt;  &lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2492708305425654271?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2492708305425654271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2492708305425654271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2492708305425654271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2492708305425654271'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/01/design-patterns.html' title='Design patterns'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-270239531515861093</id><published>2008-01-19T16:18:00.001-05:00</published><updated>2008-01-19T16:23:22.383-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='web architectural principles'/><category scheme='http://www.blogger.com/atom/ns#' term='programmable web api'/><category scheme='http://www.blogger.com/atom/ns#' term='software engineering management'/><category scheme='http://www.blogger.com/atom/ns#' term='interface architecture'/><title type='text'>Interface Architecture</title><content type='html'>An architectural process centered on interfaces has important capabilities and benefits.&amp;nbsp; The term interfaces relates to one or all of the graphical user interface, the network interface, and the application programming interface in the design and development of interactive network applications.&amp;nbsp; The graphical user interface is primarily in the domain of Interactive Design (IxD), except to remain aware that it is an integral component of an interactive system. &lt;br&gt;&lt;br&gt;Design and development focused on network interfaces more than software frameworks and their architecture has the advantage of a crisp computational problem definition and solution.&amp;nbsp; It has the benefit of implementation independence and in this way it has both broad interoperability and long term durability.&amp;nbsp; The computational problems of network systems, including the issues of interactive applications as well as the subjects of integration, performance, and data distribution.&amp;nbsp; The analysis and development in these subjects is traditionally performed in terms of the interfaces inherent in both network services and data (payload / transfer / representation) formats.&amp;nbsp; For example this is the work of the IETF and W3C, as well as many other organizations. &lt;br&gt;&lt;br&gt;Design and development focused on application programming interfaces defines a software system as a collection of interfaces. &amp;nbsp; This process is not so different from that of the network interface.&amp;nbsp; It has the same capabilities and advantages, translated from the network interaction domain to the host interaction domain.&amp;nbsp; Analysis, design and development in terms of these interfaces provides crisp problem definition and solution, broad interoperability and long term durability.&amp;nbsp; For example in multithreading, locking under each interface will not deadlock unless and then certainly when the implementation of one interface employs another interface. &lt;br&gt;&lt;br&gt;Interface Architecture is a logical razor that cuts problems into solvable units.&amp;nbsp; In working on interfaces rather than components, the parties to a project have an efficient and effective subject for communication and interoperability.&amp;nbsp; The discipline of Interface Architecture demands of its participants a simple (and singular) logical view of the interface as the first class citizen of the world of the project, and its various implementations as relatively second class replications or adaptations of the design of the interface.&amp;nbsp; An interface has a singular purpose that must be rationalized among all participants before design work may commence.&amp;nbsp; An interface may begin simply and include technically implicit or explicit avenues for its own extension in order to serve its own subsequent evolution.  &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-270239531515861093?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/270239531515861093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=270239531515861093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/270239531515861093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/270239531515861093'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/01/interface-architecture.html' title='Interface Architecture'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-8961831113597119872</id><published>2008-01-10T15:19:00.001-05:00</published><updated>2008-01-10T15:23:34.467-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development contracting'/><category scheme='http://www.blogger.com/atom/ns#' term='software engineering management'/><category scheme='http://www.blogger.com/atom/ns#' term='fixed price contracting'/><category scheme='http://www.blogger.com/atom/ns#' term='cyclic project management'/><title type='text'>Fixed price contract management</title><content type='html'>Fixed price software development is a complex subject.&amp;nbsp; Because software development is a complex subject.&amp;nbsp; A general conception of the market for software applications has interest in fixed price development, but &lt;a href="http://www.washingtontechnology.com/print/22_02/30105-1.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;  the history of fixed price contracting is littered&lt;/a&gt; with exemplary failures. &lt;br&gt;&lt;br&gt;Fixed price contracting refers to a contract for a single project cost, in contrast to forms of flexible development contracts that permit cycles of evolution in the development of the project.&amp;nbsp; Flexible or cyclic development contracts are necessary to monolithic projects that encompass broad scope, and projects that involve an element of novelty (not well known).&amp;nbsp; The contractor&amp;#39;s ability to predict the future of a development project is inversely proportional to the complexity and novelty of the deliverable product. &lt;br&gt; &lt;br&gt;The region for success with fixed pricing is in products that are unambitiously sized to, and well known to the contractor.&amp;nbsp; In this case, the development work to be done requires only a few build, test, release cycles in the scope of project -- and these cycles may be opaque to the terms of the agreement.&amp;nbsp; This is a small region in the world of software development, but it exists.&amp;nbsp;  &lt;br&gt;&lt;br&gt;In the abstract, success in fixed pricing depends on technical project management, first  contractor selection and second the definition of work.&amp;nbsp; A &amp;quot;successful failure&amp;quot; is a delivered software product that performs poorly, is hard to maintain, is awkward in use, or is inflexible.&amp;nbsp; It is this scenario of the overt success but practical failure that is the principal opposition to fixed price contracts.&amp;nbsp; With evolutionary development cycles, issues in performance and usability can be ironed out subsequent to an initial delivery. &lt;br&gt;&lt;br&gt;There is always an argument in favor of fixed pricing.&amp;nbsp; It should be possible to arrive at a market place wherein contractor technical capabilities are better known than not.&amp;nbsp; And it should be possible to manage large projects as a set of smaller ones, sized for their most practical development.&amp;nbsp;&amp;nbsp; The allure of this possibility has resonance, because software projects are best organized as a composition of parts, and the ultimate product qualities of usability and flexibility are proportional to the technical independence of a product&amp;#39;s component parts. &lt;br&gt;&lt;br&gt;Unfortunately the subject of software project management is a messy one, principally described for its difficulties, and the tactics and strategies for dealing with and managing these problems.&amp;nbsp; A problem with a solution is no longer a risk to success.&amp;nbsp; The solution is to employ an evolutionary development process, as there&amp;#39;s always an element of the unknown, including the necessity for competitive business evolution.&amp;nbsp;  &lt;br&gt;&lt;br&gt;If project management were cyclic, development units could be fixed.&amp;nbsp; This would work if the contractor could be rehired in a predictable and suitable way, and this contracting scheme becomes an open subject for a solution.&amp;nbsp; Perhaps the contract is an open cycle of fixed units. &lt;br&gt; &lt;br&gt;Generally, however, practical contracting will tend toward the cyclic.&amp;nbsp; Each role, manager and developer, has limits to its capacity, and effective repeatable annual results depend on a practical work flow.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-8961831113597119872?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/8961831113597119872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=8961831113597119872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8961831113597119872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8961831113597119872'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/01/fixed-price-contract-management.html' title='Fixed price contract management'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-5126074386826618164</id><published>2008-01-09T05:11:00.001-05:00</published><updated>2008-01-09T05:14:25.838-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><category scheme='http://www.blogger.com/atom/ns#' term='open service'/><category scheme='http://www.blogger.com/atom/ns#' term='open partnership'/><category scheme='http://www.blogger.com/atom/ns#' term='open commerce'/><title type='text'>Open Commerce for Syntelos</title><content type='html'>The Syntelos business model is based on the principle of open commerce.&lt;br&gt;&lt;ul&gt;&lt;li&gt;Open partnership&lt;/li&gt;&lt;li&gt;Open source&lt;/li&gt;&lt;li&gt;Open service&lt;/li&gt;&lt;/ul&gt;This is open commerce.&amp;nbsp; An open company includes as partners all contributors, both product and marketing.&amp;nbsp; Likewise an open business provides an open set of alternatives with competitive market value for its consumers.&amp;nbsp; It is an open facility with fair economic cost and rent that competes in the whole market among all producers.&amp;nbsp; Strictly minimizing economic costs and rents is critical to whole market competition.   &lt;br&gt;&lt;br&gt;A competitive market puts pressure against producer margins, while a competitive producer pursues differentiation to support positive margins in its effort to maximize profit.&amp;nbsp; An open commercial producer works no differently.&amp;nbsp;  &lt;br&gt;&lt;br&gt;A company founded on open commercial principles is organized differently from a volunteer open source community like Mozilla.&amp;nbsp; It is chartered commercially, and the contributions of its participants are recognized as economic and commercial.&amp;nbsp; The free open source product is there, and the commercial product is there. &lt;br&gt;&lt;br&gt;These are founding constraints from which a variety of open problems require solutions.&amp;nbsp; The solutions in this case are not entirely decided.&lt;br&gt;&lt;br&gt;&lt;br&gt;Knock on wood.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-5126074386826618164?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/5126074386826618164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=5126074386826618164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5126074386826618164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/5126074386826618164'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/01/open-commerce-for-syntelos.html' title='Open Commerce for Syntelos'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-1062937558614523577</id><published>2008-01-08T13:43:00.001-05:00</published><updated>2008-01-08T13:52:00.833-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='java.awt'/><category scheme='http://www.blogger.com/atom/ns#' term='java.nio'/><category scheme='http://www.blogger.com/atom/ns#' term='java classes'/><category scheme='http://www.blogger.com/atom/ns#' term='slashdot'/><category scheme='http://www.blogger.com/atom/ns#' term='java.io'/><category scheme='http://www.blogger.com/atom/ns#' term='java interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='computer science education'/><category scheme='http://www.blogger.com/atom/ns#' term='java class libraries'/><title type='text'>Is Java Dumb?</title><content type='html'>&lt;a href="http://developers.slashdot.org/article.pl?sid=08/01/08/0348239&amp;amp;from=rss" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;Slashdot reported&lt;/a&gt; &lt;a href="http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; an essay&lt;/a&gt; on Computer Science education that bemoans the average quality of their graduates.&amp;nbsp; Of course the first most obvious points are not in tools.&amp;nbsp; But is there something wrong with Java?&amp;nbsp; Well, actually, yes there is.&amp;nbsp; It&amp;#39;s not in the syntax of the Java Programming Language, and it&amp;#39;s not in the Java Virtual Machine, it&amp;#39;s in the style of the design and implementation of the class libraries.&amp;nbsp;  &lt;br&gt;&lt;br&gt;The syntax of the &lt;a href="http://java.sun.com/docs/books/javaprog/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;Java Programming Language&lt;/a&gt; provides a high level, systemic or architectural layer for reasoning about the organization of application systems.&amp;nbsp;   &lt;br&gt;&lt;br&gt;The &lt;a href="http://java.sun.com/docs/books/jvms/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;Java Virtual Machine&lt;/a&gt; delivers a general, high performance facility which in recent years has seen the performance of its runtime outstrip the performance of source equivalent applications written in C and C++.&amp;nbsp;&amp;nbsp; This fact alone is the first best honor for the JVM.&amp;nbsp;&amp;nbsp; As a machine interface or Instruction Set Architecture (ISA), one can compare the JVM to other machine abstractions like the more recent development of the Dis virtual machine.&amp;nbsp; The JVM is pretty good.&amp;nbsp; Its weaknesses are best illustrated by the difficulty that&amp;#39;s been had in a handful of cases implementing the  &lt;a href="http://www.ajile.com/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;JVM in hardware&lt;/a&gt;.&amp;nbsp; These efforts require pointers, machine addresses for memory and devices, and in this and other issues the JVM has been proved to be at crossed purposes -- unlike remarks circa 1995 that the JVM was designed to be compatible with its implementation in hardware.&amp;nbsp; This idea is proved correct in the syntax and semantics of its ISA, but not in a very precise sense including the implications of its ISA.&amp;nbsp;  The JVM is great because it has been and remains an independent and reasonable Instruction Set Architecture (no bad, messy or unpredictable instructions).&amp;nbsp; It is independent from the kind of issues prevalent in the Java class libraries. &lt;br&gt;&lt;br&gt;The general style of programming in the class libraries, on the other hand, has been what it is since the first alpha source dump.&amp;nbsp; In having classes where there could have been interfaces, the java class libraries obviously espouse a singular usage pattern -- a vision of Java programming as beany scripting.&amp;nbsp; When the java core APIs don&amp;#39;t make an example of good style in using interfaces where applicable, the example is poor by any standard.&amp;nbsp; Evidently there exists an argument in favor of document driven, code generating IDEs.&amp;nbsp;&amp;nbsp; The Java platform is many things to many people, and would have been best served in 1995 with an independent script language in which the beany platform was realized.&amp;nbsp; Everyone was too busy to realize the best possible future for us all,  &lt;a href="http://www.oreillynet.com/pub/a/javascript/2001/04/06/js_history.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;and JavaScript emerged&lt;/a&gt; as altogether something else.&lt;br&gt;&lt;br&gt; The Java 1.0 classes &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/OutputStream.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;java.io.OutputStream&lt;/a&gt; and &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; java.io.InputStream &lt;/a&gt; are classes that should have been interfaces.&amp;nbsp; The classes do nothing an implementor wouldn&amp;#39;t just assume doing anyway -- implementing &lt;span style="font-family: courier new,monospace;"&gt;skip(int)&lt;/span&gt; bytes in the input stream, or throwing an exception for a bad call to &lt;span style="font-family: courier new,monospace;"&gt;  write(byte[],int,int)&lt;/span&gt; in the output stream.&amp;nbsp; Their reason for existance isn&amp;#39;t providing functionality, or at least the benefit of that functionality is far outweighed by the benefit of their being interfaces.&amp;nbsp; Arguments in favor of their being classes aren&amp;#39;t in the domain of their best engineering.&amp;nbsp; One can imagine that they&amp;#39;re classes in the beany argument, so that programmers working from documentation can subclass in the singular usage model.&amp;nbsp; And one can imagine that if as much of the core classes were interfaces as would have been best in terms of their own engineering, then that core could be perceived as an open invitation to alternative implementations.&amp;nbsp;&amp;nbsp; If Input Stream and Output Stream were interfaces, then implementors like my own  &lt;a href="http://cvs.savannah.nongnu.org/viewvc/*checkout*/iou/gnu/iou/bbi.java?root=iou&amp;amp;revision=1.8&amp;amp;content-type=text%252Fplain" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;bbi&lt;/a&gt; and  &lt;a href="http://cvs.savannah.nongnu.org/viewvc/*checkout*/iou/gnu/iou/bbo.java?root=iou&amp;amp;revision=1.8&amp;amp;content-type=text%252Fplain" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; bbo&lt;/a&gt; would instantiate one class instead of two at runtime.&lt;br&gt;&lt;br&gt;What if the 1.0 AWT classes had been interfaces?&amp;nbsp;&amp;nbsp; The AWT is a well known problem child, with more quirks to hack around than predictable behavior.&amp;nbsp; The class based implementation as it stands writes these problems into compatibility cement.&amp;nbsp; As intended, in that the point of the Java platform is to have identical (write once run anywhere) behavior everywhere.&amp;nbsp;  But for Sun&amp;#39;s internal engineering, had the AWT been interfaces, they would have been in a better place to solve their problems as bugs rather than cement them into the history of the platform. &lt;br&gt;&lt;br&gt;There are many problem cases among the Java class libraries, including my own most recent favorite, &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/ByteBuffer.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; java.nio.ByteBuffer&lt;/a&gt;, which should have been an interface.&amp;nbsp; Like all good examples of classes that should have been interfaces, the class implementation is shallow  &lt;span style="font-style: italic;"&gt;and&lt;/span&gt; poor.&amp;nbsp; (Shallow but good has the favor of formalizing particular semantics, for example with respect to what exceptions are thrown and in which cases).&amp;nbsp; The NIO Byte Buffer has three fields, implementing an in- memory readable and writeable byte buffer.&amp;nbsp; My own  &lt;a href="http://cvs.savannah.nongnu.org/viewvc/*checkout*/iou/gnu/iou/bbuf.java?root=iou&amp;amp;revision=1.8&amp;amp;content-type=text%252Fplain" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;gnu.iou.bbuf &lt;/a&gt; is more interesting (in counterpoint here), implementing following read writeable and following write readable semantics.&amp;nbsp; This read/write buffer is illustrated in the bbuf streams,  &lt;a href="http://cvs.savannah.nongnu.org/viewvc/*checkout*/iou/gnu/iou/bbi.java?root=iou&amp;amp;revision=1.8&amp;amp;content-type=text%252Fplain" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;bbi&lt;/a&gt; and  &lt;a href="http://cvs.savannah.nongnu.org/viewvc/*checkout*/iou/gnu/iou/bbi.java?root=iou&amp;amp;revision=1.8&amp;amp;content-type=text%252Fplain" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; bbo&lt;/a&gt;.&amp;nbsp; Plainly the author of the NIO Byte Buffer was not interested in diving into writing a read/write byte buffer.&amp;nbsp; And rightly so, the package is for exposing the kernel primitive &amp;quot;sendfile&amp;quot; operator present in most operating system kernels for five years or more.&amp;nbsp; And that&amp;#39;s where an interface would have been A Good Thing.&amp;nbsp; Or at least a class that could be subclassed.&amp;nbsp;  &lt;br&gt;&lt;br&gt;The aggressive possessiveness inherent in the definition of the NIO package makes in inutile.&amp;nbsp; And here&amp;#39;s why.&amp;nbsp; To expose native I/O primitives in an extensible way, the author of NIO has constructed an extensive framework for reading and writing files and bytes.&amp;nbsp; Most of the architecture of the NIO framework is oriented to reading and writing individual data values like numbers, for example the following list of classes. &lt;br&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;&lt;font size="1"&gt;&lt;span style="font-family: courier new,monospace;"&gt;java.nio.ByteBufferAsDoubleBufferB&lt;br&gt;java.nio.ByteBufferAsDoubleBufferL&lt;br&gt;java.nio.ByteBufferAsDoubleBufferRB&lt;br&gt; java.nio.ByteBufferAsDoubleBufferRL &lt;br&gt;java.nio.DirectDoubleBufferRS&lt;br&gt;java.nio.DirectDoubleBufferRU&lt;br&gt;java.nio.DirectDoubleBufferS&lt;br&gt;java.nio.DirectDoubleBufferU&lt;br&gt;java.nio.DoubleBuffer&lt;br&gt;java.nio.HeapDoubleBuffer&lt;br&gt;java.nio.HeapDoubleBufferR&lt;br&gt;&lt;/span&gt;  &lt;/font&gt;&lt;br&gt;&lt;/div&gt;These classes are representations of the 64bit IEEE754 &amp;quot;double&amp;quot; floating point value in the NIO framework.&amp;nbsp; The NIO package requires the creation of new objects containing new buffers for the I/O of each individual data value.&amp;nbsp; Any operation between NIO an in- memory data requires a new NIO buffer to interface to the NIO package.&amp;nbsp;  This is not A Good Thing, because the objective of a high performance system is to cut the number of buffers in the total process pipeline.&amp;nbsp; Ideally to one.&amp;nbsp; Using NIO, achieving one in memory data buffer is not possible -- except possibly in the case of copying files to sockets. &lt;br&gt;&lt;br&gt;So NIO is yet another problem case in the Java class libraries.&amp;nbsp; Not because it&amp;#39;s not good at copying files to sockets, it excels at that.&amp;nbsp; But because an &amp;quot;SE&amp;quot; core framework was released that no one but a JRE/JDK can reach into.&amp;nbsp; There are many, many cases among the large number of Java APIs of a strange separation between abstraction for APIs and implementation (for API Vendors).&amp;nbsp; Which makes  &lt;span style="text-decoration: underline;"&gt;too little&lt;/span&gt; sense, as generally useful API implementations become commodities anyway.&lt;br&gt;&lt;br&gt;For reasons like these and so many more of the same, this writer would say that there&amp;#39;s a distinct lack of serious engineering discipline in the development of the JDK.&amp;nbsp; Everything&amp;#39;s personal, and far too little is rational.&amp;nbsp; Discussion of the further implications of the example made by &amp;quot;Java&amp;quot; in its libraries are beyond the scope of this essay.&amp;nbsp; But certainly alternative languages and libraries have emerged and continue to emerge to redress the subject.   &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-1062937558614523577?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/1062937558614523577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=1062937558614523577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1062937558614523577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/1062937558614523577'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/01/is-java-dumb.html' title='Is Java Dumb?'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2020108096719568912</id><published>2008-01-01T16:28:00.001-05:00</published><updated>2008-01-01T16:32:55.087-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='web architectural principles'/><title type='text'>A new medium for the study of REST &amp; HTTP</title><content type='html'>I&amp;#39;ve started &lt;a href="http://groups.google.com/group/comp-protocols-http"&gt;a Google group named &amp;quot;comp-protocols-http&amp;quot;&lt;/a&gt; as an experimental medium for exploring REST and HTTP.&amp;nbsp; &lt;br&gt;&lt;br&gt;It&amp;#39;s RESTful in more ways than one. &lt;br&gt;&lt;br&gt;&lt;br&gt;Happy new year&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2020108096719568912?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2020108096719568912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2020108096719568912' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2020108096719568912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2020108096719568912'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2008/01/new-medium-for-study-of-rest-http.html' title='A new medium for the study of REST &amp; HTTP'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-4952096512782938202</id><published>2007-12-27T19:34:00.000-05:00</published><updated>2007-12-27T21:30:16.201-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='amazon s3'/><title type='text'>Reviewing the REST architectural style</title><content type='html'>These simple principles are easy to forget, so I&amp;#39;m reviewing them again.&amp;nbsp; A little midweek book report.&lt;br&gt;&lt;br&gt;Fielding&amp;#39;s &lt;a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;REST architectural style&lt;/a&gt; formalizes the first best well known, scalable use of HTTP.&amp;nbsp; Fielding&amp;#39;s context is the web in its greatest expanse, including all manner of edge devices, caches and other proxies that lend considerably to scalable infrastructure at critical points.&amp;nbsp; The global infrastructure benefits from the maintenance of its essential principles. &lt;br&gt;&lt;ul&gt;&lt;li&gt;An HTTP resource is representated by a content object location (URL), for example &amp;quot;&lt;span style="font-family: courier new,monospace;"&gt;/path/file.html&lt;/span&gt;&amp;quot;.&amp;nbsp; Technically, not redirecting &amp;quot;&lt;span style="font-family: courier new,monospace;"&gt;GET /&lt;/span&gt;&amp;quot; to &amp;quot;&lt;span style="font-family: courier new,monospace;"&gt;GET /index.html&lt;/span&gt;&amp;quot; is bad (vanity) practice.  The reference &amp;quot;&lt;span style="font-family: courier new,monospace;"&gt;/&lt;/span&gt;&amp;quot; should not have content.  The corresponding &amp;quot;&lt;span style="font-family: courier new,monospace;"&gt;PUT /&lt;/span&gt;&amp;quot; or &amp;quot;&lt;span style="font-family: courier new,monospace;"&gt;DELETE /&lt;/span&gt;&amp;quot; would be ambiguous, and (hopefully) undefined.&amp;nbsp;   &amp;nbsp;  &lt;br&gt;&lt;/li&gt;&lt;li&gt;The performance of the HTTP operators (GET, PUT and DELETE) on an applicable resource should be bounded by the network.  This seems implicit.  &lt;/li&gt;&lt;/ul&gt; &lt;br&gt;In REST, Fielding emphasizes the (HTTP) Response Entity Body as a sequence of bytes identified by the combination of the (HTTP) Request Line and the (HTTP) Response Headers (metadata). &lt;br&gt;&lt;br&gt;The Amazon S3 store has an interesting familiarity with Fielding&amp;#39;s principles for REST.&amp;nbsp; The S3 PUT request defines metadata headers for the subsequent GET response. &lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-4952096512782938202?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/4952096512782938202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=4952096512782938202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4952096512782938202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4952096512782938202'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/12/reviewing-rest-architectural-style.html' title='Reviewing the REST architectural style'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-7203929305581214166</id><published>2007-12-21T12:02:00.001-05:00</published><updated>2007-12-21T12:04:08.477-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='executable web'/><category scheme='http://www.blogger.com/atom/ns#' term='web architectural principles'/><category scheme='http://www.blogger.com/atom/ns#' term='programmable web api'/><category scheme='http://www.blogger.com/atom/ns#' term='web api'/><title type='text'>Some architectural principles for the web</title><content type='html'>Web applications have a specific architecture, and this context has specific needs.&amp;nbsp; How Fielding&amp;#39;s &amp;quot;REST&amp;quot; came to be applied to application specific (non SOAP) XML formats is beyond me, but what Fielding actually wrote is the first best example of architectural principles for web applications.&amp;nbsp; Beyond my own work on  &lt;a href="http://www.john-pritchard.com/resp"&gt;&amp;quot;RESP&amp;quot;&lt;/a&gt;,&amp;nbsp; there are more principles that I need to enumerate for myself as I consider or work on commercial projects. &lt;br&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;&lt;span style="font-weight: bold;"&gt; Avoid application silos&lt;/span&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;The extensibility of web service based applications will depend on a variety of small services that expose the data store independently from application processing.&amp;nbsp; This separation permits the various views on the data and its applications to be represented cleanly, and allows for necessary evolution of these views as independent entities.&amp;nbsp; The converse is a singular conception of the Web API, which evolution will get messy.&amp;nbsp; A nice point of conversation is comparing the open RDBMS to one exposed only through Stored Proceedures.&amp;nbsp; Each Stored Proceedure is another Web API, excepting the capacity of a Web API for some &amp;quot;varargs&amp;quot; style capacities in comparison with Stored Proceedures. &lt;br&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;How dynamic is dynamic?&lt;/span&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;If it&amp;#39;s static, serve it staticly.&amp;nbsp; Avoid implementing the world dynamically just because it&amp;#39;s easy to do -- that&amp;#39;s intranet, not internet.&amp;nbsp; Use AJAX, Flash or Applets for the dynamic components of a Web UI.&amp;nbsp; Evaluate alternatives in the context of an interchangeable server side. &lt;br&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Don&amp;#39;t be afraid of a thick client&lt;/span&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;The only problem with a &amp;quot;thick&amp;quot; Flash or Java client side is that the rest of the web is obscured from reusing or mashing the best parts of your wwweb.&amp;nbsp; When the thick client uses documented Web APIs, then there&amp;#39;s no issue.&amp;nbsp; Frankly, browser space is hell -- even SVG is getting messy despite the most serious and dedicated efforts of its developers.&amp;nbsp; For this writer the only thing that&amp;#39;s sticking after all these years is the Java Applet.&amp;nbsp; But even that subject is complicated, Java&amp;#39;s accidents can be severe (final  java.lang.String, class ByteBuffer, final class HeapByteBuffer, and the list goes on). &lt;br&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Less is more&lt;/span&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;If there is no one size fits all universe (client or server side), its solution is really simple interfaces that can be picked up in a minute.&amp;nbsp; That&amp;#39;s what will survive your evolutionary forces and processes.&amp;nbsp; Everyone in the game is making big mistakes: my own is not releasing anything for a decade, Amazon&amp;#39;s is having a different authentication scheme for each service, Google&amp;#39;s is having too few published APIs and not being API centric, Sun&amp;#39;s is thinking that $1/cpu-hr is a business and generally having too little serious engineering discipline in the development of Java.&amp;nbsp; The smaller the release, the smaller the mistake. &lt;br&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Use XML&lt;/span&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;This one makes me laugh, in a &amp;quot;lol&amp;quot; sort of way, but it&amp;#39;s true.&amp;nbsp; It&amp;#39;s the only way.&amp;nbsp; JSON has too little structure, no attributes.&amp;nbsp; It&amp;#39;s a very good alternative format alongside an XML service -- serialize a DOM for XML or JSON.&amp;nbsp; But XML is the canonical format, the best set of constraints for information service architects.&amp;nbsp; The best Art recognizes its external constraints, then establishes project constraints, and then gets creative. &lt;br&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Think Universal Space&lt;/span&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;If it&amp;#39;s all XML, data and processing, then there&amp;#39;s a web universal space that we&amp;#39;re all building an economy into.&amp;nbsp; Forget discovery, let the search folks work on discovery.&amp;nbsp; Drop design time at run time: SOAP.&amp;nbsp; It doesn&amp;#39;t scale.&amp;nbsp; Use Schema, keep design time in it&amp;#39;s place.&amp;nbsp;  &lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;In summary, don&amp;#39;t get aggressive on Requirements, get aggressive on Constraints, and then on getting creative and powerful within them.&amp;nbsp; Work the problem.&amp;nbsp; Save the World.&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-7203929305581214166?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/7203929305581214166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=7203929305581214166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7203929305581214166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7203929305581214166'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/12/some-architectural-principles-for-web.html' title='Some architectural principles for the web'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-3009992151554286291</id><published>2007-12-13T10:45:00.000-05:00</published><updated>2008-07-09T23:37:11.173-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='executable web'/><category scheme='http://www.blogger.com/atom/ns#' term='semantic web'/><title type='text'>Boxes White and Black</title><content type='html'>&lt;br&gt;The classic &amp;quot;black box is closed, white box is open&amp;quot; differentiates Web APIs as it differentiated Host APIs.&lt;br&gt;&lt;br&gt;An API, Framework or Programming Language presents a &lt;span style="font-style: italic;"&gt;domain &lt;/span&gt; for a &lt;span style="font-style: italic;"&gt;range&lt;/span&gt; of products.&amp;nbsp; An API or Tool domain differentiates itself in terms of its strengths, weaknesses, facilities and incapabilities.&amp;nbsp; This is only more true for Web APIs and Programming Languages exposed the open network. &lt;br&gt;&lt;br&gt;When the domain is something most excellent, like the &lt;a href="http://code.google.com/p/ken-cc/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;C programming language&lt;/a&gt; for example, it is a transparent facility or convenience over its intermediary tool chain and the target programming of the machine.&amp;nbsp; But when the work domain is &lt;a href="http://code.google.com/p/gwt-unclutter/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;too thick&lt;/a&gt;, its intermediary tool chain and target programming become obscured subjects for the programmer and the range of products ultimately suffer (at least on average over the long term).&amp;nbsp;  &lt;br&gt;&lt;br&gt;This kind of triage can be applied to answering the question, How flexible is it?&amp;nbsp; What are its first class objects for ready manipulation in this domain, and what would we want to be able to manipulate in this domain but cannot?&amp;nbsp;  It can be applied to Web User Interfaces as well as Web APIs and Programming Languages. &amp;nbsp; And should be a very good predictor of utility and success.&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-3009992151554286291?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/3009992151554286291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=3009992151554286291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3009992151554286291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/3009992151554286291'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/12/boxes-white-and-black.html' title='Boxes White and Black'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-8499116009217643779</id><published>2007-12-12T13:30:00.000-05:00</published><updated>2007-12-12T10:44:05.704-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='appjet'/><category scheme='http://www.blogger.com/atom/ns#' term='executable web'/><category scheme='http://www.blogger.com/atom/ns#' term='online app creation'/><title type='text'>Online app creation company: AppJet</title><content type='html'>Thanks to &lt;a href="http://www.techcrunch.com/2007/12/12/appjet-makes-simple-web-apps-a-breeze/"&gt;Nick Gonzalez at TechCrunch for covering AppJet&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://appjet.com/"&gt;AppJet&lt;/a&gt; is really nice, the first thing I've seen in the space for the server side online that I really like.  Maybe just because the site hits you with what it is.  Or because AppJet &lt;i&gt;as a whole&lt;/i&gt; is an essay in simple effectiveness. &lt;br /&gt;&lt;br /&gt;I really like the &lt;pre&gt;print(HTML{name:"value"})&lt;/pre&gt; sticky &lt;i&gt;(as in glue)&lt;/i&gt; sugar &lt;i&gt;(as in syntactic)&lt;/i&gt; -- fairly transcendent little one.  Not crazy about &lt;pre&gt;print("&amp;lt;html&amp;gt;");&lt;/pre&gt; though.  Taglibs, anyone?  &lt;br /&gt;&lt;br /&gt;AppJet is web script.  No one tool is right for all jobs -- especially not for everyone.  &lt;a href="http://bijansabet.com/post/20956222"&gt;Bijan likes Pipes&lt;/a&gt;, and a million HTML folks can like AppJet (knock on wood).  Like "shell" in host programming, it's the right tool for the job when it's the right tool for the job -- script is script.  &lt;br /&gt;&lt;br /&gt;And web programming -- we can be sure -- will be all about lots of systems doing lots of different things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-8499116009217643779?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/8499116009217643779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=8499116009217643779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8499116009217643779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/8499116009217643779'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/12/online-app-creation-company-appjet.html' title='Online app creation company: AppJet'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-4880333585762228724</id><published>2007-12-12T07:09:00.000-05:00</published><updated>2008-07-09T23:35:11.930-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dans le monde'/><title type='text'>Online app creation techno: CXF</title><content type='html'>An apache incubator project, &lt;a href="http://incubator.apache.org/projects/cxf.html"&gt;CXF&lt;/a&gt; is a framework for creating enterprise services in JAX-WS, POJO and JavaScript (on the server side).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-4880333585762228724?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/4880333585762228724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=4880333585762228724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4880333585762228724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4880333585762228724'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/12/online-app-creation-techno-cxf.html' title='Online app creation techno: CXF'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2672083748820276643</id><published>2007-12-11T13:46:00.001-05:00</published><updated>2008-07-09T23:35:11.931-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dans le monde'/><title type='text'>Review of "online app creation"</title><content type='html'>&lt;p&gt; Finally some good info on the shape of the world, a &lt;a href="http://www.techcrunch.com/2007/12/11/coghead-pursues-platform-strategy-with-launch-of-affiliates-program/"&gt;post by Erik Schonfeld at Techcrunch&lt;/a&gt; lists the following.&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;&lt;a href="http://coghead.com/"&gt;Coghead&lt;/a&gt;&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt; Configurable application templates for traditional business apps.&lt;br /&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;&lt;a href="http://www.salesforce.com/developer/"&gt;Salesforce&lt;/a&gt;&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt; SOAP data objects for synchronous data operations.  Data object operations include query, create, update and delete.  Workflow process programming in Java or C#.&lt;br /&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;&lt;a href="http://creator.zoho.com/"&gt;Zoho Creator&lt;/a&gt;&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt; Deluge Script produces state machines over database tables.&lt;br /&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;&lt;a href="http://dabbledb.com/"&gt;Dabble DB&lt;/a&gt;&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt; RDBMS building with app API in JSON.&lt;br /&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;&lt;a href="http://www.wyaworks.com/"&gt;WyaWorks&lt;/a&gt;&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt; Looks like data forms.  SOAP API.&lt;br /&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;&lt;a href="http://longjump.com/"&gt;LongJump&lt;/a&gt;&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt; An RDBMS shape with events.  App data REST API.  SOAP Events.  Configure existing apps.&lt;br /&gt;&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2672083748820276643?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2672083748820276643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2672083748820276643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2672083748820276643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2672083748820276643'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/12/review-of-online-app-creation.html' title='Review of &quot;online app creation&quot;'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-6442674087453374348</id><published>2007-12-10T11:40:00.001-05:00</published><updated>2007-12-10T11:42:47.005-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http streaming'/><title type='text'>Essential streaming over HTTP</title><content type='html'>&lt;br&gt;Added a page to my personal site to cover some &lt;a href="http://www.john-pritchard.com/http-streaming"&gt;HTTP techniques for streaming&lt;/a&gt;, and general content delivery optimization.&amp;nbsp; &lt;br&gt;&lt;br&gt;In short, HTTP/1.0 does streaming (across Proxies) when the &amp;quot;Content-Length&amp;quot; header is not included.&amp;nbsp; Really nice to know.&amp;nbsp;  &lt;br&gt;&lt;br&gt;Unfortunately, most Java Servlet Containers don&amp;#39;t implement the &amp;#39;no buffering&amp;#39; option permitted in the Servlet Spec.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-6442674087453374348?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/6442674087453374348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=6442674087453374348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/6442674087453374348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/6442674087453374348'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/12/essential-streaming-over-http.html' title='Essential streaming over HTTP'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-6688285120616776891</id><published>2007-12-08T03:04:00.001-05:00</published><updated>2008-07-09T23:35:11.931-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dans le monde'/><title type='text'>Review: online server side web application development</title><content type='html'>&lt;br&gt;&lt;br&gt;&lt;a style="font-weight: bold;" href="http://pipes.yahoo.com/"&gt;Yahoo Pipes&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;&amp;quot;An interactive feed aggregator and manipulator&amp;quot;.&amp;nbsp; A very gooey GUI, but it&amp;#39;s popular, ultra easy to use, and it&amp;#39;s free.&amp;nbsp;  &lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;a style="font-weight: bold;" href="http://www.salesforce.com/developer/"&gt;Salesforce.com&lt;/a&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;&lt;br&gt;&amp;quot;Force.com is a platform&amp;quot;.&amp;nbsp; Marketeers aside, they&amp;#39;re working hard to get the enterprise market to take another look at the services model.&amp;nbsp; Techno enterprise.&amp;nbsp; Sounds expensive in more ways than one. &lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;a style="font-weight: bold;" href="http://commons.apache.org/jelly/"&gt;Jelly&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div style="margin-left: 40px;"&gt;A bean &amp;quot;glue&amp;quot; language.&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-6688285120616776891?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/6688285120616776891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=6688285120616776891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/6688285120616776891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/6688285120616776891'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/12/review-online-server-side-web.html' title='Review: online server side web application development'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-7267042001802309094</id><published>2007-12-04T08:30:00.000-05:00</published><updated>2008-07-09T23:34:26.387-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='client side'/><title type='text'>Rich and Thick and Thin</title><content type='html'>&lt;br&gt;An online editor user interface needs a thick client, and a thin server.&amp;nbsp; If a thin web client is HTML or AJAX, a thick web client is Flash or Java.&amp;nbsp; The thick web client provides stateful user interaction which it mediates in complex ways to produce minimized server side operations.&amp;nbsp;&amp;nbsp; In this way a rich user experience can be delivered with a high volume, scalable server side. &lt;br&gt;&lt;br&gt;A thin AJAX client is useful when there is a direct (one to one) relationship between user interface operations and server side operations.&amp;nbsp;  The reason being that JavaScript gets stretched thin when it&amp;#39;s not simple.&amp;nbsp; I&amp;#39;m writing this using Gmail, which could be held up as evidence to the contrary.&amp;nbsp; However I&amp;#39;ll submit that Google have rather shown what it takes to deal with as much complexity in JavaScript, inventing GWT as an engineering organization framework and hack repository.  &lt;br&gt;&lt;br&gt;The choice I&amp;#39;ve made for the Syntelos client side is the Java Applet.&amp;nbsp; While Flash has great graphics, the platform is more than a bit tricky from an engineering perspective.&amp;nbsp; The open source Batik based Flex toolset is too inflexible with respect to generated code version, and too large a footprint for application to the internet scale server side.&amp;nbsp;  &lt;br&gt;&lt;br&gt;The Java choice permits fairly massive code reuse between the SX Server and the Viz Applet. In comparison with Flash, the Java client side is extensible -- if subject to the vagaries of the Java Applet Plugin World.&amp;nbsp; If there&amp;#39;s one thing I know about Javaland, it&amp;#39;s that everything changes, year by year.&amp;nbsp; Here&amp;#39;s looking for native threads,&amp;nbsp; Java3d and JMF in the Java Applet Plugin World.&amp;nbsp; Anyway, I can live with The Applet Plugin Situation, preferring MacOSX, and reusing code from the server side in the client side.&amp;nbsp;&amp;nbsp; It only needs to be the first option, my first option -- since the server side is completely independent.&lt;br&gt;&lt;br&gt;The rest of the world tends to call it a Rich client.&amp;nbsp; With the state of the JAPW graphics rendering in Solaris and Windows and Linux  (no native threads), I can&amp;#39;t call it Rich.&amp;nbsp; I&amp;#39;ll just call it Thick. &lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-7267042001802309094?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/7267042001802309094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=7267042001802309094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7267042001802309094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/7267042001802309094'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/12/rich-and-thick-and-thin.html' title='Rich and Thick and Thin'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-2332228284349607048</id><published>2007-12-02T14:05:00.000-05:00</published><updated>2008-07-09T23:36:06.882-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><title type='text'>Blogger template</title><content type='html'>This is really boring, but &lt;a href="http://www.john-pritchard.com/blogger-template-jdp.xml"&gt;here's my blogger template&lt;/a&gt; to replicate the &lt;a href="http://www.john-pritchard.com/"&gt;Google apps "Micro Ghost" template&lt;/a&gt; in Blogger.&lt;br /&gt;&lt;br /&gt;To use it, upload this into &lt;code&gt;Blogger &gt; Template &gt; Edit HTML&lt;/code&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-2332228284349607048?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/2332228284349607048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=2332228284349607048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2332228284349607048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/2332228284349607048'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/12/blogger-template.html' title='Blogger template'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7633380562260343802.post-4570638757673516385</id><published>2007-11-28T21:07:00.000-05:00</published><updated>2007-11-28T18:15:46.086-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='executable web'/><category scheme='http://www.blogger.com/atom/ns#' term='syntelos'/><category scheme='http://www.blogger.com/atom/ns#' term='server side programming web api'/><category scheme='http://www.blogger.com/atom/ns#' term='programmable web api'/><category scheme='http://www.blogger.com/atom/ns#' term='web tools for the server side'/><category scheme='http://www.blogger.com/atom/ns#' term='web api'/><category scheme='http://www.blogger.com/atom/ns#' term='server side web programming'/><title type='text'>Syntelos is a project in development</title><content type='html'>The goal of the Syntelos project is to deliver server side programming in a web api for the public internet.  See &lt;a href="http://www.john-pritchard.com/resp"&gt;RESP&lt;/a&gt; for some info on the web api model for internet scale.&lt;br /&gt;&lt;br /&gt;The service presents tools for web media construction, with application ownership and privacy under personal control.&lt;br /&gt;&lt;br /&gt;Syntelos is a commercial service with two service pricing models.  These models present some choices from the public market for processing and storage.  Your own server is completely private and completely under your control.  A Desktop will be free in beta. &lt;br /&gt;&lt;br /&gt;Syntelos is open source.  The full source code to the Syntelos client and server software will become available as their online toolsets become available. &lt;br /&gt;&lt;br /&gt;The Syntelos Commercial business model intends to offer service with value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7633380562260343802-4570638757673516385?l=blog.syntelos.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.syntelos.com/feeds/4570638757673516385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7633380562260343802&amp;postID=4570638757673516385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4570638757673516385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7633380562260343802/posts/default/4570638757673516385'/><link rel='alternate' type='text/html' href='http://blog.syntelos.com/2007/11/syntelos-is-project-in-development.html' title='Syntelos is a project in development'/><author><name>John Douglas Pritchard</name><uri>http://www.blogger.com/profile/10586956045169096792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_uquxO9ckDu0/S9KMDdBs6dI/AAAAAAAAA1A/j8rEb56A8pg/S220/EarthDay40-370x370.jpg'/></author><thr:total>0</thr:total></entry></feed>
