<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.0.4" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Kyle Tuskey</title>
	<link>http://www.ktuskey.com</link>
	<description>`cat /dev/urandom &gt; /dev/dsp`</description>
	<pubDate>Wed, 14 Nov 2007 08:38:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ktuskey" type="application/rss+xml" /><item>
		<title>Free Rice</title>
		<link>http://feeds.feedburner.com/~r/ktuskey/~3/184552665/</link>
		<comments>http://www.ktuskey.com/2007/11/14/free-rice/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 08:38:39 +0000</pubDate>
		<dc:creator>ktuskey</dc:creator>
		
	<category>All</category>
		<guid isPermaLink="false">http://www.ktuskey.com/2007/11/14/free-rice/</guid>
		<description><![CDATA[This seems like a worthy cause.  For every vocabulary question you get right, 10 grains of rice is donated to end world hunger via the UN.  I&#8217;m pretty sure it&#8217;s ad driven. Take a little time out and play the game.  For those of you with a competitive spirit, I got to [...]]]></description>
			<content:encoded><![CDATA[<p>This seems like a worthy cause.  For every vocabulary question you get right, 10 grains of rice is donated to end world hunger via the UN.  I&#8217;m pretty sure it&#8217;s ad driven. Take a little time out and play the game.  For those of you with a competitive spirit, I got to a vocab level of 37 before calling it quits.</p>
<p><a href="http://www.freerice.com/">http://www.freerice.com</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ktuskey?a=CyyXxhB"><img src="http://feeds.feedburner.com/~f/ktuskey?i=CyyXxhB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=t3TRUmb"><img src="http://feeds.feedburner.com/~f/ktuskey?i=t3TRUmb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=nQx0P8b"><img src="http://feeds.feedburner.com/~f/ktuskey?i=nQx0P8b" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=btz8nMB"><img src="http://feeds.feedburner.com/~f/ktuskey?i=btz8nMB" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ktuskey/~4/184552665" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://www.ktuskey.com/2007/11/14/free-rice/feed/</wfw:commentRSS>
		<feedburner:origLink>http://www.ktuskey.com/2007/11/14/free-rice/</feedburner:origLink></item>
		<item>
		<title>Rethinking the Internet</title>
		<link>http://feeds.feedburner.com/~r/ktuskey/~3/178947597/</link>
		<comments>http://www.ktuskey.com/2007/11/02/rethinking-the-internet/#comments</comments>
		<pubDate>Fri, 02 Nov 2007 22:12:20 +0000</pubDate>
		<dc:creator>ktuskey</dc:creator>
		
	<category>All</category>
	<category>Industry</category>
	<category>System Architecture</category>
	<category>Performance</category>
		<guid isPermaLink="false">http://www.ktuskey.com/2007/11/02/rethinking-the-internet/</guid>
		<description><![CDATA[Many of us subscribe to the Internet religion, and rightfully so.  If it&#8217;s not the most disruptive technology to date, it definitely has a place towards the top of the list.  So it is with all due respect that I say it may be time for some changes.
For all intents and purposes, the [...]]]></description>
			<content:encoded><![CDATA[<p>Many of us subscribe to the Internet religion, and rightfully so.  If it&#8217;s not the most disruptive technology to date, it definitely has a place towards the top of the list.  So it is with all due respect that I say it may be time for some changes.</p>
<p>For all intents and purposes, the Internet is a unicast (one to one) environment.  Which brings me to my first grievance&#8230; it&#8217;s missing true multicast.  Yes, some <a href="http://www.multicast-isp-list.com">ISPs support multicast</a> and the <a href="http://en.wikipedia.org/wiki/Mbone">MBONE project</a> is in existence, but neither really solve the problem.  I&#8217;m certainly not the first one to touch on this, but it&#8217;s worth repeating because it is currently the most obvious and important deficiency of the Internet.  It can be a serious drain on bandwidth and creates awkward architecture decisions for both large and small applications.</p>
<p>This has presented a particularly difficult problem for video distributors.  It&#8217;s no secret that the major television networks are having a difficult time monetizing video distribution on the internet.  Cost is at least partly to blame.  Up until recently, television broadcasts were just that&#8230; broadcasts.  As I understand it, cable or satellite companies send out one signal that that everyone taps into.  Not one signal for every subscriber.  Paying for an infrastructure for all subscribers once has a very different value proposition than having to pay for a scalable infrastructure with greater incremental costs for adding new subscribers.</p>
<p>My next grievance is a protocol related one.  HTTP is a great technology, but it is intended to support polling for a single user.  You open a TCP/IP connection, send in an HTTP request for specific information, receive the information, and close the connection.  This was great when the web was a group of html documents, images, and other assorted downloads.  Times have changed and we have more interaction on our web sites and web applications.  It&#8217;s time to adopt new protocols and stop using existing ones inappropriately.</p>
<p>There are two good examples of this.  I&#8217;ll start with Soap / Web Services.   The idea of <a href="http://en.wikipedia.org/wiki/Service-oriented_architecture">SOA (Service Oriented Architecture)</a> on the Internet is great.  To have access to a variety of free and commercial services on a public network presents many great possibilities and encourages innovation.  Unfortunately the reality is less satisfying than the dream.  SOAP, aside from being bulky as described <a href="http://www.ktuskey.com/2007/10/19/the-reality-of-xml/">here</a>, suffers from HTTP limitations.  This means that without really hacking it, you are stuck with a system that at it&#8217;s best can do remote method calls, but at it&#8217;s worst is required to poll for updates.  For some applications this is ok, but for many applications realtime interchange of data would decrease latency for users and simultaneously decrease load on machines that previously had to handle polling.</p>
<p>RSS suffers from similar problems.  In this case I feel XML is less of an issue due it&#8217;s purpose, but polling remains a problem.  It&#8217;s time for a standard <a href="http://en.wikipedia.org/wiki/Publish/subscribe">publish / subscribe</a> protocol.  RSS is not the only technology that could benefit from this type of protocol, but it makes for a compelling case.  Let&#8217;s pretend for a moment this protocol exists and RSS has it&#8217;s basis in it.  You immediately reduce all the issues of RSS readers polling often and downloading stale data.  From a user perspective you see new entries more immediately.  Let&#8217;s pretend one more time and say multicast is widely available.  Feeds could then be broadcast which would also save bandwidth.  So we&#8217;ve gone from every user downloading the same stale data over and over again to a system where one broadcast is made to active interested parties and offline parties can sync when they come online.  In my eyes this seems like a huge improvement.</p>
<p>Ok, now for the coup de grâce.  BitTorrent.  If you were to tap any Internet backbone, it&#8217;s safe to say you&#8217;d see a lot of BitTorrent traffic.  Here&#8217;s where it gets interesting.  I think you can apply the changes above to increase BitTorrent performance.  What if each BitTorrent client broadcast packets instead of sending them multiple times to different parties.  I&#8217;m sure with some algorithm finagling, you could see some serious improvements in download times and bandwidth utilization.  The hardest part would be bridging the gap between different sized connections, but this could surely be solved by partitioning data broadcasts in similar ways to what BitTorrent does now.  With the standard publish / subscribe protocol there would be an obvious technology to manage the packet distribution and reduce the barrier for application developers to create new clients.  Who knows, maybe with some commercial modifications this could even be a way to distribute videos in a cost effective way.</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Internet" rel="tag">Internet</a>, <a href="http://technorati.com/tag/Performance" rel="tag"> Performance</a>, <a href="http://technorati.com/tag/Unicast" rel="tag"> Unicast</a>, <a href="http://technorati.com/tag/Multicast" rel="tag"> Multicast</a>, <a href="http://technorati.com/tag/Publish" rel="tag"> Publish</a>, <a href="http://technorati.com/tag/Subscribe" rel="tag"> Subscribe</a>, <a href="http://technorati.com/tag/RSS" rel="tag"> RSS</a>, <a href="http://technorati.com/tag/HTTP" rel="tag"> HTTP</a>, <a href="http://technorati.com/tag/SOAP" rel="tag"> SOAP</a>, <a href="http://technorati.com/tag/Bandwidth" rel="tag"> Bandwidth</a>, <a href="http://technorati.com/tag/BitTorrent" rel="tag"> BitTorrent</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ktuskey?a=cY0u24B"><img src="http://feeds.feedburner.com/~f/ktuskey?i=cY0u24B" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=RaXwSQb"><img src="http://feeds.feedburner.com/~f/ktuskey?i=RaXwSQb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=y1W66Ib"><img src="http://feeds.feedburner.com/~f/ktuskey?i=y1W66Ib" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=tQzydsB"><img src="http://feeds.feedburner.com/~f/ktuskey?i=tQzydsB" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ktuskey/~4/178947597" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://www.ktuskey.com/2007/11/02/rethinking-the-internet/feed/</wfw:commentRSS>
		<feedburner:origLink>http://www.ktuskey.com/2007/11/02/rethinking-the-internet/</feedburner:origLink></item>
		<item>
		<title>The Reality of XML</title>
		<link>http://feeds.feedburner.com/~r/ktuskey/~3/171938053/</link>
		<comments>http://www.ktuskey.com/2007/10/19/the-reality-of-xml/#comments</comments>
		<pubDate>Fri, 19 Oct 2007 06:34:02 +0000</pubDate>
		<dc:creator>ktuskey</dc:creator>
		
	<category>All</category>
	<category>System Architecture</category>
	<category>Performance</category>
		<guid isPermaLink="false">http://www.ktuskey.com/2007/10/19/the-reality-of-xml/</guid>
		<description><![CDATA[XML was built as an extension to SGML to create a generalized interchangeable format that supports Unicode. Inherent in extending SGML, you get separation of meta data and raw data, self description, hierarchical structures, and a well laid out human readable format.  All very nice. It even comes with tools to perform transformation, queries, [...]]]></description>
			<content:encoded><![CDATA[<p>XML was built as an extension to SGML to create a generalized interchangeable format that supports Unicode. Inherent in extending SGML, you get separation of meta data and raw data, self description, hierarchical structures, and a well laid out human readable format.  All very nice. It even comes with tools to perform transformation, queries, etc.  It has several excellent uses like standard interchange formats for office documents, configuration files, data exports, situations  where legibility is paramount, etc.</p>
<p>With the above in mind, it&#8217;s easy to see why the world adopted XML as a primary form of data exchange.  To many it seemed like a panacea.  Any time I want to exchange information, XML must be the right answer because that&#8217;s what it&#8217;s built for.  The problem with XML is that the community doesn&#8217;t seem as aware of it&#8217;s shortcomings as it&#8217;s benefits.  There in lies the rub.  It&#8217;s now being used in situations that it is not appropriate for.  What if you don&#8217;t need data tools, self described data, hierarchical structures, and human readable formats.  Each of those features comes at a serious cost to performance and resource utilization.</p>
<p>The reality of XML is that it&#8217;s a drain on performance and doesn&#8217;t scale well as a transport.  Every XML message comes with a degree of bloat that is taxing on message encoding, message transmission / storage, and message decoding.  Let&#8217;s take a normal XML message and compare it to some alternatives.  The examples below are of a simple stock quote.  I know the first three can be compressed further, but they exist to make a general point.</p>
<pre>
<b>Standard XML - 98 Bytes w/ Tabs &#038; UTF 8</b>

&lt;?xml version=&#8221;1.0&#8243;?&gt;
&lt;quote&gt;
    &lt;symbol>MSFT&lt;/symbol&gt;
    &lt;side>B&lt;/side&gt;
    &lt;price>10.00&lt;/price&gt;
&lt;/quote>
</pre>
<pre>
<b>Compressed XML  - 84 Bytes w/ Tabs &#038; UTF 8</b>

&lt;?xml version=&#8221;1.0&#8243;?&gt;
&lt;quote&gt;
    &lt;data symbol=&#8221;MSFT&#8221; side=&#8221;B&#8221; price=&#8221;10.00&#8243;/&gt;
&lt;/quote&gt;
</pre>
<pre>
<b>Tag Based - 30 Bytes</b>

symbol=MSFT&#038;side=B&#038;price=10.00
</pre>
<pre>
<b>Binary - 10 Bytes</b>

A = ASCII | F = Float | B = Boolean  (Each Character Represents a Byte)

AAAAABFFFF
<small>Note there are 5 ASCII bytes for &#8220;MSFT&#8221; because strings are variable length and require a delimiter.</small>
</pre>
<p>So what does the above mean for real world applications.  Let&#8217;s use an equities trading platform as our example application. To give you an idea of scale, message rates for market data can exceed 100,000 messages a second.  Lets be conservative and say real world quotes (more complex than above) are 100 bytes each in XML, and that we have an average rate of 20,000 messages a second.  Again being conservative, let&#8217;s say we can achieve a 50% reduction in message size by using an alternative format.  This equates to a savings of 1,000,000 bytes a second&#8230; 58,583.75KB a minute&#8230; and 3,433.23MB an hour.</p>
<p>This savings in message size means reduced latency caused by message processing, reduced risk of network packet collision / retransmission, better utilization of user / kernel buffers, increased limits for services that queue unprocessed messages, and less garbage collection in Java.  If you were recording incoming messages to disk, it would also decrease the amount of disk IO. Two other items to keep in mind are XML messages are hierarchical and require more complex and cpu intensive parsing and validation.  This also leads to increased response latency.</p>
<p>Obviously not all applications are equities trading platforms, but everyone wants their application to be faster, more scalable, and cheaper.  XML standards like SOAP and RSS are becoming more ubiquitous on the web and internal networks. The implications are a slower user experience, increased probability of outages, increased hardware budgets, and higher saturation of the internet and internal networks. Some companies will try to solve this problem with band aids like XML processing appliances, but I think it&#8217;s time to recognize it&#8217;s benefits and shortcomings and design our applications accordingly.</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/XML" rel="tag">XML</a>, <a href="http://technorati.com/tag/Performance" rel="tag"> Performance</a>, <a href="http://technorati.com/tag/Web+Services" rel="tag"> Web Services</a>, <a href="http://technorati.com/tag/SOAP" rel="tag"> SOAP</a>, <a href="http://technorati.com/tag/Protocol" rel="tag"> Protocol</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ktuskey?a=u2GOSUA"><img src="http://feeds.feedburner.com/~f/ktuskey?i=u2GOSUA" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=ruKjwqa"><img src="http://feeds.feedburner.com/~f/ktuskey?i=ruKjwqa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=jIWJ9Fa"><img src="http://feeds.feedburner.com/~f/ktuskey?i=jIWJ9Fa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=yICB8qA"><img src="http://feeds.feedburner.com/~f/ktuskey?i=yICB8qA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ktuskey/~4/171938053" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://www.ktuskey.com/2007/10/19/the-reality-of-xml/feed/</wfw:commentRSS>
		<feedburner:origLink>http://www.ktuskey.com/2007/10/19/the-reality-of-xml/</feedburner:origLink></item>
		<item>
		<title>Üdvözöljük</title>
		<link>http://feeds.feedburner.com/~r/ktuskey/~3/169109524/</link>
		<comments>http://www.ktuskey.com/2007/10/12/udvozoljuk/#comments</comments>
		<pubDate>Fri, 12 Oct 2007 20:38:41 +0000</pubDate>
		<dc:creator>ktuskey</dc:creator>
		
	<category>All</category>
		<guid isPermaLink="false">http://www.ktuskey.com/2007/10/12/udvozoljuk/</guid>
		<description><![CDATA[I know what you are thinking. What is a &#8220;Üdvözöljük&#8221;? My test to see if this blog software has unicode support? Maybe. My expression of love for the umlaut? Definitely.  Those two aside, it also means welcome in Hungarian. This is my first post and I wanted to welcome all of my adoring fans. [...]]]></description>
			<content:encoded><![CDATA[<p>I know what you are thinking. What is a &#8220;Üdvözöljük&#8221;? My test to see if this blog software has unicode support? Maybe. My expression of love for the umlaut? Definitely.  Those two aside, it also means welcome in Hungarian. This is my first post and I wanted to welcome all of my adoring fans.  Yes. I know. Adoring is a bit strong, and at this point I&#8217;m guessing my subscribership is hovering around 0, but hopefully that number will change.</p>
<p>For the few of you wondering who I am, I&#8217;ll give you a brief run down.  I started in technology at a relatively young age (around 9) with a focus on web and graphic design.  I eventually moved to engineering which is where I currently spend most of my time.  I&#8217;ve been a partner in two companies, one being web hosting / web development company and the other algorithmic trading in currency and equities.  The rest of my time has been spent consulting or working in an engineer or business role for other companies.</p>
<p>I started this blog (after some peer pressure) to share some ideas on system architecture and a bit of industry commentary.  I&#8217;ll do my best to keep the posts fresh and substantive.  Thanks for tuning in. Good luck, good health, and Üdvözöljük.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/ktuskey?a=6QU6CDA"><img src="http://feeds.feedburner.com/~f/ktuskey?i=6QU6CDA" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=V9i3AZa"><img src="http://feeds.feedburner.com/~f/ktuskey?i=V9i3AZa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=369Bvxa"><img src="http://feeds.feedburner.com/~f/ktuskey?i=369Bvxa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ktuskey?a=vfOjf6A"><img src="http://feeds.feedburner.com/~f/ktuskey?i=vfOjf6A" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ktuskey/~4/169109524" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRSS>http://www.ktuskey.com/2007/10/12/udvozoljuk/feed/</wfw:commentRSS>
		<feedburner:origLink>http://www.ktuskey.com/2007/10/12/udvozoljuk/</feedburner:origLink></item>
	</channel>
</rss>
