<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Fred Mikkelsen&apos;s Blog</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/" />
    <link rel="self" type="application/atom+xml" href="http://dev2dev.bea.com/blog/fmikkels/atom.xml" />
   <id>tag:dev2dev.bea.com,2008:/blog/fmikkels//254</id>
    <updated>2008-03-21T19:21:31Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.31</generator>
 
<entry>
    <title>Top K Queries ... some ideas</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/archive/2008/03/top_k_queries_s.html" />
    <id>http://dev2dev.bea.com/blog/fmikkels/archive/2008/03/top_k_queries_s.html</id>
    
    <published>2008-03-21T19:21:31Z</published>
    <updated>2008-03-21T19:21:31Z</updated>
    
    <summary>Top-K Queries are used by web query tools to return high-ranking results. Here are a few thoughts of queries made with inside information to the data, or completely opaque queries, which may want to be modified for resource and time constraints for a services-based appliation.</summary>
    <author>
        <name>fmikkels</name>
        
    </author>
            <category term="Technology: SOA Integration" />
    
    <content type="html" xml:lang="" xml:base="http://dev2dev.bea.com/blog/fmikkels/">
        <![CDATA[<p>Balancing maximal performance with the real-world issues of limited resources in computing are the driving thoughts behind this blog. For Top-K Queries, what can you do to restrict the possiblity that a query will consume more resources than you can reasonably allocate for a service call? If a query needs to be interrupted, how can you return partial results that are pretty good? </p>]]>
        <![CDATA[<div class=Section1>

<p class=MsoNormal>Top-K Queries limit a result set to a handful of records that
have the highest weighting factors. This is useful in decision support and in
web services queries where you want to have a controlled selection of data
returned, and you do not want to maintain query state, such as a cursor, in the service. </p>


<p class=MsoNormal>If you are in a setting where "weight" is an indexed value,
this can be a reasonably efficient query. If the intermediary set is small,
then this query may also be efficient. However, if either is not true, then the
query can be very inefficient.</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><b>SELECT TOP</b></p>


<p class=MsoNormal>In some SQL environments, the expression SELECT TOP k is
implemented. SQL Server, for example. </p>



<p class=MsoNormal>            SELECT TOP k url, weight FROM data ORDER BY
weight DESC</p>



<p class=MsoNormal>For other database systems, the canonical Top-K query looks
like:</p>

<p class=MsoNormal style='text-indent:.5in'>SELECT url, weight FROM </p>

<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'>(SELECT url,
weight FROM data ORDER BY weight DESC) </p>

<p class=MsoNormal style='text-indent:.5in'>WHERE rownum &lt; k;</p>



<p class=MsoNormal><b>Inside Knowledge - Mapping Example</b></p>



<p class=MsoNormal>In case of mapping, weight may be a distance calculation
such as with a mapping application finding coffee shops near an address. That
distance "weight" would certainly not be keyed because it would vary with each
query.</p>


<p class=MsoNormal>With added inside information, you can enhance the query.
Using the map example, if you have a table of grid coordinates and the states
that touch within that grid coordinate, you can first query which states touch
grid coordinates within your search circle, and then using the indexed value of
state to reduce the query, perform weight calculations on that reduced set. </p>

<p class=MsoNormal>That grid sub-query would work for mapping purposes works
because you have <i>inside information</i> on the data, knowing what is
queried, and how the weighting may be optimized with native field information. </p>


<p class=MsoNormal>The grid was used as an example. Other geo-location
information can be given by zip codes or latitude and longitude references
compared to the coverage of individual states.</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><b>Interruptible, Without Inside Knowledge</b></p>

<p class=MsoNormal>What if you do not have inside knowledge of the data being
queried? This approach may be useful to help conserve resources and produce a
query with acceptable results.</p>



<p class=MsoNormal>One thing to avoid is a large intermediary sub-query result
in a high-throughput web services engine. If many users are simultaneously
creating sorted multi-million record results to get a Top-100 list, then large
amounts of virtual memory are being used inefficiently.</p>



<p class=MsoNormal>In an iterative measure, perform the following (pseudo
Java-like procedural SQL):</p>



<p class=MsoNormal>First, get a base set of records: </p>



<p class=MsoNormal style='text-indent:.5in'>TopK = SELECT url, weight FROM data
WHERE rownum &lt;= k; </p>

<p class=MsoNormal style='text-indent:.5in'>&nbsp;</p>

<p class=MsoNormal style='text-indent:.5in'>TopKMax = SELECT MAXIMUM weight FROM
TopK;</p>

<p class=MsoNormal style='text-indent:.5in'>&nbsp;</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal>Then, iterate while the collection is being refined: </p>



<p class=MsoNormal>            while(true) {</p>

<p class=MsoNormal style='margin-left:.5in'>            TopKTemp = SELECT url,
weight FROM data </p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'>WHERE rownum
&lt;= k AND weight &gt; TopKMax; <span style='color:green'>// (A)</span></p>

<p class=MsoNormal style='margin-left:.5in'>&nbsp;</p>

<p class=MsoNormal style='margin-left:.5in'>            TopK = TopK + TopKMax <span
style='color:green'>;     // combine the records</span></p>

<p class=MsoNormal style='margin-left:.5in'>&nbsp;</p>

<p class=MsoNormal style='margin-left:.5in'>            if(count(SELECT * FROM TopKTemp)
= 0) {</p>

<p class=MsoNormal style='margin-left:.5in'>                        return
TopK;    <span style='color:green'>// (B)</span></p>

<p class=MsoNormal>                        }</p>

<p class=MsoNormal style='margin-left:.5in'>&nbsp;</p>

<p class=MsoNormal style='margin-left:.5in'>            if(timeForQueryExpired)<span
style='color:green'>           // (C) allow for time limits</span></p>

<p class=MsoNormal style='margin-left:.5in'>                        return
TopK;</p>

<p class=MsoNormal style='margin-left:.5in'>&nbsp;</p>

<p class=MsoNormal style='margin-left:1.0in'>TopK = SELECT * FROM </p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'>(SELECT UNIQUE url,
weight </p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in'> FROM TopK ORDER
BY weight DESC)</p>

<p class=MsoNormal style='margin-left:.5in;text-indent:.5in'>WHERE rownum &lt;=
k;</p>

<p class=MsoNormal>            }</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><b>Notes:</b></p>



<ul style='margin-top:0in' type=disc>
 <li class=MsoNormal>For services considerations, time limits (C) can be
     imposed to assure that a result will be produced within a timeout period. </li>
</ul>

<ul style='margin-top:0in' type=disc>
 <li class=MsoNormal>Because ORDER BY clause is not specified in the large
     query, the intermediary resources required to process the query for
     sorting are not needed. Database systems tend to optimize their queries to
     look in cached data first before retrieving more records from the disk.
     Multiple requests querying on the Top-K may grow their intermediary
     results together even if the queries between the clients are not
     identical. </li>
</ul>



<ul style='margin-top:0in' type=disc>
 <li class=MsoNormal>If a timeout occurs, then the highest ranking entries may
     not be returned because it may not have been discovered yet.</li>
</ul>



<ul style='margin-top:0in' type=disc>
 <li class=MsoNormal>Using the refining value "weight &gt; TopKMax", (A)
     duplicate values of high-scoring entries may not be gathered. At point (B),
     a back-fill approach to find intermediary values may be desired.</li>
</ul>



<p class=MsoNormal style='margin-left:1.5in;text-indent:-.25in'>1.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Find
k - 1 values where weight = TopKMax</p>

<p class=MsoNormal style='margin-left:1.5in;text-indent:-.25in'>2.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>If
fewer than (k - 1) are found, then look between the second highest value (Top2)
and TopKMax, "WHERE weight &gt;= Top2 and weight &lt; TopKMax)", and add those
in.</p>

<p class=MsoNormal style='margin-left:1.5in;text-indent:-.25in'>3.<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Continue
downward until all K in the set are the largest.</p>


</div>
<br/>
<table border="0" width="100%">
<tr height="5px">
  <td borderwidth="1px"><img src="/images/header_d2d.gif" height="5px" width="100%"/></td>
   <td bgcolor="white" width="5px"></td>
 <td bgcolor="red" width="5px"></td>
  <td bgcolor="white" width="5px"></td>
  <td bgcolor="black" width="5px"></td>
</tr>
</table>]]>
    </content>
</entry>
<entry>
    <title>SaaS! Virtualization! Surveys?</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/archive/2008/02/from_1_to_10_ho.html" />
    <id>http://dev2dev.bea.com/blog/fmikkels/archive/2008/02/from_1_to_10_ho.html</id>
    
    <published>2008-02-20T19:18:30Z</published>
    <updated>2008-02-20T19:18:30Z</updated>
    
    <summary>On a scale of 1 to 10, how useful are 1-to-10 scales to measure your specific satisfaction? ... read on ...</summary>
    <author>
        <name>fmikkels</name>
        
    </author>
    
    <content type="html" xml:lang="" xml:base="http://dev2dev.bea.com/blog/fmikkels/">
        <![CDATA[From 1 to 10, how are you computing today?
<br/>
<br/>
I have always had an issue with surveys. News media loves surveys. "8 out of 10 surveyed say they 'strongly disagree' with their car being towed, yet 9 out of 10 'strongly agree' that the city council should do something about cars parked at expired meters. How can we reconcile this polarization in America? ... news at 10" 
<br/>
<br/>
I find it interesting that Sociology Students could get Doctoral degrees by asking people how they felt about something, and publishing the results of what they said provided you did it in the presence of statistics. As I recall in Mathematics to get a Ph.D., you had to prove a theory, not just run some numbers. 
<br/>
<br/>
With the rise of relational databases, the Internet, even adopting Voice over IP (VoIP), I have seen the same cycle being repeated. CFOs, CEOs, and CTOs are quoted in analyst surveys outlining the relative level of activity in planning in these areas. Depending on the study, 80% may be 'considering', while 40% are 'actively pursuing' and 20% have 'implemented' some form of the technology. Now, we see the same surveys being implemented with SaaS and Virtualization. To this I borrow the catch phrase for a caffeine-laced ginseng  beverage ...
<br/>
<br/>
<strong>WAKE UP PEOPLE !!!</strong>
<br/>
<br/>
These surveys aren't random. The CEOs aren't asked questions like, "Does your company seek to incorporate an animal mascot in its advertising?" Or, "Are you planning to re-diversify into manufacturing buggy whips?"
<br/>
<br/>
The thing that I liked about the Sciences, (and I'll put Computer Science in as a science), is that there is a right answer, or at least a small number of right answers or options. If your sorting data and memory is tight, a heap sort is good, if the data overwhelms memory, then a hash-bucket key merge-sort is good. In highly parallel actions, believe it or not a multi-threaded bubble sort may work best. There is an answer. This is when I realized:
<br/>
<br/>
The surveys that are being made are not generally mere curiosities of the analyst firms. The people who put these together have an idea of how the industry should proceed. 
<br/>
<br/>
They analyze. Analysts are thinking when they first wake up, and right before bedtime, and sometimes even during the middle of the workday how companies would work better. A full-time job figuring out what is working and what will be working for people.
<br/>
<br/>
A story ...
<br/>
<br/>
Ten years ago, I was selling BPM solutions. I was the Systems Engineer. It was a relatively new technology. The V.P. of Sales was on the call. The CIO, the big cheese for the company's technology direction made a comment. "Nothing like BPM has ever been necessary to run our business." The V.P. replied, "That's because you're not innovative."
<br/>
<br/>
Long, pregnant pause.  Not quite nine months, but very long. You could hear a pin drop. The Sales Manager who worked for the V.P. of Sales nearly drooled because his jaw dropped so far. All that work, and his boss offended the customer, and would be a long, quiet flight home. You could hear each person's heartbeat around the table. All the employees were looking at each other pale and sweaty not knowing what to do or say. 
<br/>
<br/>
But the CIO took it in stride. "You're right. We're not innovative. In five years, everyone in this industry will be using BPM."
<br/>
<br/>
I'm pretty sure if this CIO had been surveyed, he would have been one of the lowest on the adoption curve. But, when presented with the reality of what can be done, he recognized that he needed to move. 
<br/>
<br/>
<strong>Virtualization</strong>
<br/>
<br/>
If you're not thinking about virtualization, why aren't you? Why do you want to run your businesses server farm with 25% to 75% more hardware than necessary? There may be good reasons, but understand them.
<br/>
<br/>
If you're a maker of software products, why are you not enabling your customers to get into a virtualized environment? Will the customer appreciate this decision? Your largest customers will Virtualize soon. Do you want them to move to a competitors product that for enhanced virtualization?
<br/>
<br/>
Supporting virtualization is in most cases a testing step. BEA provides additional virtualization capabilities and performance with WLS-VE (WebLogic Server - Virtual Edition) and other VE-enabled products. Even if you're not working with WLS-VE, you should test in a virtualized environment.
<br/>
<br/>
<strong>SaaS</strong>
<br/>
<br/>
The Software as a Service trend is picking up steam. There are a couple primary directions this is being initiated from ... the front-end, and the back-end. On the front-end, AJAX and smart client web applications are getting very good. The minority of computer users install their mail readers anymore. In the business world, especially if you consider BlackBerry devices and technologies like Microsoft Office Web Access, email is virtualized. Thin UIs are sufficiently good.
<br/>
<br/>
On the back-end, virtualization and consolidated hosting is making SaaS a reasonable paradigm to organize software. You can adjust the resources on an application basis. With a proper billing system, you can apply your best technical resources to maximize business value with configuration options. Add a billing system, ad revenue, usage models and fees, and you have a new venue.
<br/>
<br/>
If I ran a company, I would want all business services to be provided through SaaS. Why? Disaster recovery, ramping and scaling, field offices, moving expenses, and overall flexibility. In an office building in Newton, Mass several years ago, a small company was "wiped out" because the tenant on the floor above left the window open. The heating pipes froze and when the heating turned on, water gushed down to the company below. Operations crawled for a few weeks as they worked through insurance, bought new computers, on-and-on. Another CEO once told me that a move was one-third as expensive as a fire. His company had had three of each.
<br/>
<br/>
The odds of a disaster occurring for some or all of the operations of a company seem to be about 25% over the course of a decade. Factor in severe storms that do not actually cause a "disaster" to you but threaten a disaster, and it's closer to 100%.
<br/>
<br/>
Version 1.0 2008-02-20 2:02PM
<br/>
<br/>
<table border="0" width="100%">
<tr height="5px">
  <td borderwidth="1px"><img src="/images/header_d2d.gif" height="5px" width="100%"/></td>
   <td bgcolor="white" width="5px"></td>
 <td bgcolor="red" width="5px"></td>
  <td bgcolor="white" width="5px"></td>
  <td bgcolor="black" width="5px"></td>
</tr>
</table>

]]>
        
    </content>
</entry>
<entry>
    <title>Between iPhone and Air ! ...</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/archive/2008/01/apples_iphone.html" />
    <id>http://dev2dev.bea.com/blog/fmikkels/archive/2008/01/apples_iphone.html</id>
    
    <published>2008-01-25T08:00:02Z</published>
    <updated>2008-03-26T14:24:31Z</updated>
    
    <summary>Apple Air ... Where else have we heard &quot;Air&quot; recently? From Adobe. Their line of software to allow high-quality thin-client (e-hem) applications. In July 2007, I commented on the Apple iPhone as a next generation personal computation and communication device. Now, the Apple Air is making the reverse convergent evolution.</summary>
    <author>
        <name>fmikkels</name>
        
    </author>
            <category term="Role: Architect" />
    
    <content type="html" xml:lang="" xml:base="http://dev2dev.bea.com/blog/fmikkels/">
        <![CDATA[The iPhone, the iPod, the Apple Air ... convergence from three sides to a common place?
<br/>
<br/>
Apple Air ... Where else have we heard "Air" recently? From Adobe. Their line of software to allow high-quality thin-client (e-hem) applications. In July 2007, I commented on the Apple iPhone as a next generation personal computation and communication device. Now, the Apple Air is making the reverse convergent evolution.
</br></br>
What's in a Name ? ... remember <strong>Mackintosh Labs?</strong> Now remember <strong>Air</strong>?
</br>
</br>
Few may remember Mackintosh Stereos. Do you? They were a hardware device manufacturer of audio stereo equipment in the 1970s. A good portion of their income may have come from licensing the name "Macintosh" to Apple computers, which, years ago, Apple still gave credit to. Now, Apple now makes audio equipment in the form of the iPod family.
</br>
</br>
Where else have we heard "Air" recently? (hmmm) From Adobe. Their line of software to allow high-quality thin-client (e-hem) applications. Could the culture of Apple be to drop 10-year breadcrumbs? Daughter "Lisa" computer "Lisa". Mackintosh Stereos to Macintosh Music Players. Adobe Air to Apple Air to ...
</br>
</br>
I see evidence that the convergent track is continuing. Somewhere between the iPhone and Air is the future. An all-in-one, thin client personal computation, communication, and entertainment device.
</br>
</br>
<strong>The iPhone</strong>
</br>
</br>
I don't have to tell you what the iPhone is--but let's look at the ads. The early television ad in May 2007 ran something like this: "<i>Not the mobile internet, not a version of the internet, not something that's just like the internet. It's <u>the</u> Internet on your phone.</i>" As the deployment date came closer in July 2007, the ads focused on the coolness of the device as a consumer of video, music downloads, email, and again lastly, "as a phone." The impulse buyer probably is swayed with the message "<em>you were the last to get the cool iPod; don't make that mistake again!</em>". The campaign sold 500,000 units in less than a week has to be considered exceptionally well executed.
</br>
</br>
Being more technically focused, I'm focusing on the earlier message about the Internet. The message left out that the iPhone is an OS-X based computer with a 3.5" color touch panel and WiFi. It's a Mac in iPod's clothing. Add a little enterprise software, perhaps a SIP server and apply some proven algorithms. Wow! 
</br>
</br>
Here's what I was thinking about the iPhone in July, 2007:
</br>
</br>
All internet enabled applications will be accessible through the iPhone. It's the internet, after all. If you've standardized on Web 2.0 in your enterprise, then iPhone can be your mobile office. Add to this the capabilities of back-office imaging software. The 2 mega-pixel resolution is not a serious limitation because software can uprez two or three images to aggregate a virtual 4 megapixel image. Now you have faxing, OCR, and all single sheet document processing capabilities. An iPhone could be a platform for a point-of-sale device.
</br>
</br>
Now, the Air ...<strong>Convergent Evolution</strong>
</br>
</br>
In January 2008, the Apple Air was announced. It takes the Mac and diminishes its size to the thickness of the iPhone. (hmmm) The overall dimensions of the width and height are similar to a regular Mac laptop, but there is evolution.
</br>
</br>
It's tricky being a hardware manufacturer evolving towards a vision. You make money by selling hardware that is continually replaced by the next great thing. Small devices fetch smaller money than big devices, Manufacturing costs are highly related to the number of compents and the weight of those components. Margins are higher on small devices. People will pay $500 for something the size of an iPhone, but will pay $2500 for a laptop. And, if you can get them to buy both, you get $3200 (including $200 for connective cables and equipment).
</br>
</br>
Once, a small business person bought an individual fax machine ($300), a copier ($500), scanner ($200), and printer ($150), for a total of $1200,  you will have just one mobile device for your pocket for the cost of a phone. And, just as the printer vendors make money off the ink cartridges, the unified pocket device will make money off phone service, content downloads, and applications.
<br/>
<br/>
Hmmm ... "Air" .... where have I heard that name before?
</br>
</br>
Rev 3 : 2008-03-26 00:00:03
</br>
Rev 2 : 2008-01-25 00:00:02
</br>
Rev 1 : 2007-07-21 04:34:19
</br>
</br>
<table border="0" width="100%">
<tr height="5px">
  <td borderwidth="1px"><img src="/images/header_d2d.gif" height="5px" width="100%"/></td>
   <td bgcolor="white" width="5px"></td>
 <td bgcolor="red" width="5px"></td>
  <td bgcolor="white" width="5px"></td>
  <td bgcolor="black" width="5px"></td>
</tr>
</table>
]]>
        
    </content>
</entry>
<entry>
    <title>Web 2.0, SaaS and Portals</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/archive/2008/01/web_20_saas_and_portals.html" />
    <id>http://dev2dev.bea.com/blog/fmikkels/archive/2008/01/web_20_saas_and_portals.html</id>
    
    <published>2008-01-20T03:18:35Z</published>
    <updated>2008-01-21T21:17:57Z</updated>
    
    <summary>I have updated this popular blog first published in 7/2007 to include more migratory information about how to achieve Web 2.0 and SaaS architectures.</summary>
    <author>
        <name>fmikkels</name>
        
    </author>
    
    <content type="html" xml:lang="" xml:base="http://dev2dev.bea.com/blog/fmikkels/">
        <![CDATA[SOA, Portlet Servers, Web 2.0, AJAX, SaaS, and Social Computing, represent different views of a complete re-examination of application delivery. The sum represents the general vision of:

<blockquote>"With the least amount of investment, I want to maximize existing capabilities."</blockquote>


<strong>SOA</strong>, the Services Oriented Architecture, applies modular programming techniques to the back-end of enterprise application architectures. For the early adopters, they specifically want to reuse existing application logic--leveraging what is already there.
<p/>

Services like credit verification, order entry; catalog query, provisioning, and job status can be collected in a repository and used as needed. The web service infrastructure is specifically designed to allow directory access, authentication, and governance. Control, security, statistics and planning can be made based on a component level.
<p/>

<strong>Portal and Portlet Servers</strong> provide a means through techniques such as WSRP to provide functional front-ends to the SOA-enabled services. If you are presenting a means to interact with a service, you will want a collection of user interfaces ready to go. Having portlets for SOA-enabled resources assures quicker adoption to use it (quicker ROI).
<p/>

<strong>Web 2.0 </strong>describes an environment in which significant applications are delivered through the internet, and <strong>AJAX</strong>, is a means to organize software client code in an web browser. Using readily available JavaScript instead of more deployment sensitive Java applets or Flash help assure the universal deployment provided by the web is maintained.
<p/>

One means to organize code in Web 2.0 is in a Mash-up. This is where two different services are brought together to provide higher visibility. 
<p/>

<blockquote>House prices + maps = A new Real Estate application. </blockquote>
<blockquote>Song popularity ratings + song download = on-line radio station.</blockquote>

If you have a domain expertise, you can focus on making a high-powered domain-specific set of services and portlets, and use mashups and web authoring tools as your means of application deployment.
<p/>

<strong>SaaS </strong> (Software as a Service) describes the economic model where you can make money selling Browser-enabled services over the internet. Where SOA describes the technical organization of services, SaaS describes the outward-facing presence. Facing the public, SaaS requires greater level of governance and control. The directory and governance services to manage SOA will be expanded to assist with fraud protection, virus detection, and billing.
<p/>

These techniques, SOA, Portlets, Web 2.0, AJAX, and SaaS encompass the means to deliver any enterprise-quality application over the internet. The motivations to do so involve disaster recovery, simplified development, and much easier administration. In short, lower risk and cost. 
<p/>

<strong>Social Computing</strong> removes an additional layer from the overall application development cost, and provides a means to leverage your domain expertise without needing to "reinvent the wheel" in each new application.
<p/>

All organizations have existing collection of knowledge ... procedures and processes to complete the task, or escalate a case. Knowledge of web sites to perform shipping, or provide maps. Pointers to other applications that are related to the application you're in.
<p/>

Social Computing provides the means to capture the organizational knowledge and make it part of your application. Through usage, the most relevant, most useful tools as selected by the people who are most like you become available.
<p/>

By using the patterns of the user's applications, you can maintain and improve services, identify new mashup opportunities, and improve the overall application experience. For the ISV, they can adapt quickly to their customers changing and requirements. For the enterprise, they can maximize their application investment and leverage their employees' knowledge.
<p/>
<p/>
<strong>"How do I achieve this migration?"</strong>
<p/>
<p/>
Your organization is more ready for SOA modularization than you probably realize. Using Web Service abstractions, you can front-end your database and applications to expose the functionality you deserve. For the green-screen applications, this type of interfacing was called "Screen Scraping". As bemoaned as this approach was, it was shown to not only work, but to also perform reasonably well. It was branded non-elegant, but it worked. -- especially when you consider that it was the integration of minimal intensity. All technologies since the 1970s have been far more flexible than screen scraping. Socket protocols, middleware, database APIs, Java RMI, HTML/HTTP, RPC, Web Services, ... these are all better technologies than screen scraping. 
<p/>
<p/>
<strong>How to Proceed towards Web 2.0 and SaaS</strong>
<p/>
<p/>
Regardless of the way to get your services exposed, do so. "Screen scraping", the most brute force of service presentation techniques seemed doomed to fail, but it has proven to be good enough. Since the 1980s, integration technologies have been developed to make integration even better. It is unlikely that any integration solution you choose will not be sufficiently good enough to get started. 
There are two primary interfaces to make: One is a programmatic web services interface, and the other is a portlet interface. Try to reflect the web services interface through the portlet interface. The portlet will be adopted quicker and this will enforce testability.
<p/>
<p/>
And employ a governance solution for development time governance and runtime governance so you can accurately track costs, interactions, and user patterns. From this beachhead of tangible knowledge of your integration usage, better plans can be made in preparation for future projects.
<p/>
<p/>

rev 1.1 - 1/20/2008
<table border="0" width="100%">
<tr height="5px">
  <td borderwidth="1px"><img src="/images/header_d2d.gif" height="5px" width="100%"/></td>
   <td bgcolor="white" width="5px"></td>
 <td bgcolor="red" width="5px"></td>
  <td bgcolor="white" width="5px"></td>
  <td bgcolor="black" width="5px"></td>
</tr>
</table>
]]>
        
    </content>
</entry>
<entry>
    <title>ALER brings REAL value</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/archive/2008/01/aler_brings_rea.html" />
    <id>http://dev2dev.bea.com/blog/fmikkels/archive/2008/01/aler_brings_rea.html</id>
    
    <published>2008-01-17T21:17:39Z</published>
    <updated>2008-01-17T21:17:39Z</updated>
    
    <summary>ALER helps you extract value from your software, and help you fulfill your software process vision for TQM, SaaS, 508-compiance, ISO-9000, thin-client migration . . . .</summary>
    <author>
        <name>fmikkels</name>
        
    </author>
            <category term="Product: AquaLogic Enterprise Repository" />
            <category term="Role: Architect" />
            <category term="Role: Platform Admin" />
    
    <content type="html" xml:lang="" xml:base="http://dev2dev.bea.com/blog/fmikkels/">
        <![CDATA[<a href="http://www.bea.com/framework.jsp?CNT=index.jsp&FP=/content/products/aqualogic/registry_repository/">AquaLogic Enterprise Repository</a> (bundled today with AquaLogic Service Registry in the AquaLogic Registry and Repository) provides a level for business semantic content, and can build upon the source code repository you use today (CVS, SVN, ... ). But rather than discuss the features of ALER, let's look at problem domains that people are trying to solve.
<br/>
<br/>
<strong>UML </strong> - Program modeling in UML and other tools starts with diagrams, and evolves to software. How do you track the ROI of UML modeling? How do you assure the process of updating UML diagrams as the software changes? ALER can help with those issues.
<br/>
<br/>
<strong>ISO-9000</strong> - To be compliant, you need to be able to produce documentation and software lineage to substantiate that the testing and process have been followed properly. Asset values on testing, documentation, training coverage, inspection, and other ISO-artifacts can be related to your software. ALER can help you do that and to assure that your ISO-9000 compliance tools are being applied as they should.
<br/>
<br/>
<strong>Financial Due Diligence</strong> - we've all heard the story. "<em>We have 3 man millennia invested in our product. When we IPO, it will be impossible for the competition to catch up</em>." How could you substantiate that? How could you follow the software development ROI more closely to get figures on not only how much effort is put into a software project, but the effective effort and <em>saved </em>effort? How could you substantiate your off-shoring strategy's success? Code per unit cost? What is the <a href="http://glossary.reuters.com/index.php/Net_Asset_Value">Net Asset Value</a> of your software? Resulting bugs per product? Returns per unit sale? ALER can be configured to work with your metrics to determine the asset value of your software as it pertains to your business.
<br/>
<br/>
<strong>508 mobility compliance</strong> - when working with the Federal Government, it is important to be able to provide handicapped accessibility to your software products. How do you coordinate and estimate the cost of, and scheduling of, <a href="http://www.section508.gov/">mobility compliance</a>? For example, if you use old DOJO widgets in your software, that may not be compliant. However, a new UI toolkit can be selected to be compliant. What is the impact of changing that? How would you coordinate the visibility into your project to accomplish that? ALER's flexible schema allows you to track time, cost, trouble tickets, earnings, compliance, customer satisfaction figures, and any other enumerable values.
<br/>
<br/>
<strong>Total Quality Management (TQM)</strong> -- in total quality management,  you will want to be able to investigate the error rate by component software contribution and overall test coverage. By integrating your automated tests and testing strategy into ALER, you can produce lifecycle charts of how software is proceeding towards acceptance levels.
<br/>
<br/>
ALER is a very exciting product because it can produce value for development, finance, professional services, and support. It is the knowledge base of how your software projects are doing. 
<br/>
<br/>
Unlike many other enterprise software products like Struts or JSF, ALER does not need to be designed into the base of the project. In fact, some of the highest ROI is seen by customers who have an existing product deployed in numerous places, and it needs to be changed. COBOL -to- Java. Stand-alone -to- hosted.  Locally-clustered -to- Geographic failover. 
<br/>
<br/>
<table border="0" width="100%">
<tr height="5px">
  <td borderwidth="1px"><img src="/images/header_d2d.gif" height="5px" width="100%"/></td>
   <td bgcolor="white" width="5px"></td>
 <td bgcolor="red" width="5px"></td>
  <td bgcolor="white" width="5px"></td>
  <td bgcolor="black" width="5px"></td>
</tr>
</table>]]>
        
    </content>
</entry>
<entry>
    <title>Queriable Binary XML Encoding</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/archive/2008/01/queriable_binar.html" />
    <id>http://dev2dev.bea.com/blog/fmikkels/archive/2008/01/queriable_binar.html</id>
    
    <published>2008-01-14T19:06:49Z</published>
    <updated>2008-01-14T19:06:49Z</updated>
    
    <summary>I blogged about how I ran into polymorphism issues when pursuing my holiday project of a binary XML, but more people were interested in the binary XML format. Attached are my notes on this format.</summary>
    <author>
        <name>fmikkels</name>
        
    </author>
            <category term="Role: Architect" />
    
    <content type="html" xml:lang="" xml:base="http://dev2dev.bea.com/blog/fmikkels/">
        <![CDATA[<h1>Format Discussion</h1>

The format for binary XML is an extension of UTF-8 encoding. Starting with how UTF-8 is encoded, additional shadow formats are inserted to allow encoding primarily of integers and XML tag structure.<br/><br/>
The UTF-8-OB formats are integer formats. In the UTF-8 standard encoding, continuation bytes are prefixed with the bits "10", and by reading backwards in the stream up to six bytes, usually less, you can find the initial byte prefixed by 11...0..., n introductary 1 bits, one 0 bit, and the first segment of data content. The number of introductary bits indicates the overall length of the UTF-8 encoding. If a byte beginning with "10" is discovered intra-stream, the limits of the encoding can be interpreted.
<br/><br/>
If a byte beginning with "0" is found, thenby reading backwards in the stream up to seven bytes, much like the previous case, then it can be determined if it is a UTF-8 1-byte character, or a final byte of the UTF-8-OB format. 
<br/><br/>
Reading from the beginning, or dropping into the middle of a buffered stream allows for the lexical-reorientation of the position in the stream. This may be valuable in a multi-threaded environment that is reading a minimally-hierarchical document in parallel, for example, client identification records.
<br/><br/>
UTF-8-OB can extend to any length to support any positive integer. Roughly speaking, two decimal characters can be replaced by one byte of UTF-8-OB encoding. With the format, a number (or any value) that is represented in multiple attribute or child values can be further reduced by creating an overlay mapping.

<br/><br/>

<h2>Individual UTF-8 Character and Extensions</h2>

<p class=MsoNormal>The standard UTF-8 format describes how characters are
encoded. These are noted in the rows that display the form "UTF-8".</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
 style='margin-left:5.05pt;border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
 <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
  <td nowrap valign=bottom style='background:silver;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  style='font-size:9.0pt;font-family:Arial;color:#333399'>Bytes<o:p></o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='background:silver;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  style='font-size:9.0pt;font-family:Arial;color:#333399'>Codes<o:p></o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='background:silver;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  style='font-size:9.0pt;font-family:Arial;color:#333399'>Form<o:p></o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='background:silver;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  style='font-size:9.0pt;font-family:Arial;color:#333399'>Bits<o:p></o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='background:silver;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  style='font-size:9.0pt;font-family:Arial;color:#333399'>Digits<o:p></o:p></span></b></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:1'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>1<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>0zzzzzzz<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>7<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>2.11<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:2'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>2<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>110yyyyy 10zzzzzz<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>11<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>3.31<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:3'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>2<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>10aaaaaa
  0bbbbbbb<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-OB<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>13<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>4.02<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:4'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>3<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>1110xxxx
  10yyyyyy 10zzzzzz<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>16<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>4.88<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:5'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>3<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>10aaaaaa
  0bbbbbbb 0ccccccc<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-OB<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>20<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>6.05<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:6'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>4<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>11110www
  10xxxxxx 10yyyyyy 10zzzzzz<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>21<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>6.51<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:7'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>4<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>10aaaaaa
  0bbbbbbb 0ccccccc 0ddddddd<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-OB<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>27<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>8.14<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:8'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>5<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>111110uu
  10wwwwww 10xxxxxx 10yyyyyy 10zzzzzz<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-EX<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>26<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>8.31<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:9'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>5<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>10aaaaaa
  0bbbbbbb 0ccccccc 0ddddddd 0eeeeeee<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-OB<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>34<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>10.24<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:10'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>6<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>1111110t
  10uuuuuu 10wwwwww 10xxxxxx 10yyyyyy 10zzzzzz<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-EX<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>31<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>10.29<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:11'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>6<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>10aaaaaa ...
  0fffffff<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-OB<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>41<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>12.35<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:12'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>7<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>10aaaaaa ...
  0fffffff<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-OB<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>48<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>14.45<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:13'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>8<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>10aaaaaa ...
  0fffffff<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-OB<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>55<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>16.56<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:14'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>9<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>10aaaaaa ...
  0fffffff<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-OB<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>62<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>18.67<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:15'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>10<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>10aaaaaa ...
  0fffffff<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-OB<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>69<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>20.77<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:16'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>11<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>10aaaaaa ...
  0fffffff<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-8-OB<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>76<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>22.88<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:17'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>12<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>... UTF-8-OB
  can extend to any length<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:18'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:19;mso-yfti-lastrow:yes'>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal align=right style='text-align:right'><span
  style='font-size:9.0pt;font-family:Arial'>1<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>11111111
  (FF)<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>UTF-END<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>--<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='font-size:9.0pt;font-family:Arial'>--<o:p></o:p></span></p>
  </td>
 </tr>
</table>

<p class=MsoNormal><span style='font-size:9.0pt'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal>Extending the UTF-8 encoding to encodings that are hinted at
by the format <span class=GramE>are</span> represented by "UTF-8-EX", UTF-8
extensions. These show five- and six-byte representations. These are by default
ways to encode integers up to 10 decimal digits long.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>UTF-8-OB encodings show how the out-of-band encodings can
occur. These formats allow for non-character encodings of arbitrarily long
form. The minimum length of these forms is two bytes.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>UTF-END, coded by 11111111 (FF) is special in the above
encoding. At no time, will the byte <span class=SpellE>oxff</span> be used for
anything other than UTF-END, and cannot occur within any other encoding.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>The complete list of encodings above is called UTF-8-XX. All
encodings that <span class=GramE>except</span> the UTF-END code together form
the set of the UTF-8-FF characters, or x-FF for short.</p>

<h2>Overall Document Format</h2>

<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
 style='margin-left:5.05pt;border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
 <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:12.75pt'>
  <td valign=top style='background:silver;padding:0in 5.4pt 0in 5.4pt;
  height:12.75pt'>
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  style='font-size:10.0pt;font-family:Arial;color:#333399'>Part<o:p></o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='background:silver;padding:0in 5.4pt 0in 5.4pt;
  height:12.75pt'>
  <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
  style='font-size:10.0pt;font-family:Arial;color:#333399'>tag(format) ...<o:p></o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='background:silver;padding:0in 5.4pt 0in 5.4pt;
  height:12.75pt'>
  <p class=MsoNormal><span class=SpellE><b style='mso-bidi-font-weight:normal'><span
  style='font-size:10.0pt;font-family:Arial;color:#333399'>Arg</span></b></span><b
  style='mso-bidi-font-weight:normal'><span style='font-size:10.0pt;font-family:
  Arial;color:#333399'>(format) ...<o:p></o:p></span></b></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:1;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>VERSION<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>(version)<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>(no tag)
  id(x-FF)<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:2;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><b><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:3;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'>PROMOTE<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><b><span style='font-size:10.0pt;font-family:Arial'>section<o:p></o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'>section(x-FF)<span style='mso-spacerun:yes'> 
  </span>// this defines &lt;section&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:4;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'>char(x-8), len(x-OB)<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:5;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'>char(x-8), len(x-OB)<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:6;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'>char(x-8), len(x-OB)<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:7;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:8;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=DE style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:DE;mso-bidi-font-weight:bold'>METATAG<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><b><span style='font-size:10.0pt;font-family:Arial'>section<o:p></o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'>&lt;section&gt;<span style='mso-spacerun:yes'> 
  </span>// now in definitions<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:9;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>FORMAT<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>format<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>fmt</span>&gt; format(x-FF) value(x-FF)<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:10;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>SPACES<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>switch-spaces<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>sws</span>&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:11;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>relocate<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>rel</span>&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:12;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>tag<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span lang=SV style='font-size:10.0pt;font-family:Arial;
  mso-ansi-language:SV'>&lt;tag&gt; name(x-FF)<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:13;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>tag-ns<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>tns</span>&gt; name(x-FF) namespace(x-FF)<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:14;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;
  font-family:Arial'>xmlns</span></span><span style='font-size:10.0pt;
  font-family:Arial'><o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>xns</span>&gt; name(x-FF) namespace(x-FF)<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:15;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>atr</span>&gt; name(x-FF) value(x-FF)<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:16;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute-multi<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>atm</span>&gt; name(x-FF) value[x-FF]&lt;FF&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:17;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute-multi-spaces<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>ats</span>&gt; name(x-FF) value[x-FF]&lt;FF&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:18;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute-ns<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>atn</span>&gt; name(x-FF) ns(x-FF) value[x-FF]&lt;FF&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:19;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute-ns-multi<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>anm</span>&gt; name(x-FF) ns(x-FF) value[x-FF]&lt;FF&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:20;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute-ns-multi-spaces<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>ans</span>&gt; name(x-FF) ns(x-FF) value[x-FF]&lt;FF&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:21;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>child<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>chd</span>&gt; value(x-FF)<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:22;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>child-multi<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>chm</span>&gt; value[x-FF]&lt;FF&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:23;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>child-multi-spaces<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>cms</span>&gt; value[x-FF]&lt;FF&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:24;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>comment<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>kom</span>&gt; value(x-FF)<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:25;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>comment-multi<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>kmm</span>&gt; value[x-FF]&lt;FF&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:26;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>comment-multi-spaces<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>kms</span>&gt; value[x-FF]&lt;FF&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:27;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><b><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:28;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'>LEXICAL<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><b><span style='font-size:10.0pt;font-family:Arial'>section<o:p></o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'>&lt;section&gt; // now in lexical compression<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:29;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>rel</span>&gt; n<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:30;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;c&gt;&lt;c&gt;&lt;c&gt;
  ... &lt;FF&gt;<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:31;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;c&gt;&lt;<span
  class=SpellE>sws</span>&gt;&lt;n&gt;&lt;c&gt;&lt;<span class=SpellE>sws</span>&gt;&lt;FF&gt;<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:32;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>rel</span>&gt;&lt;n&gt;<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:33;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>char <span
  class=SpellE>int</span> char <span class=SpellE>int</span> &lt;FF&gt;<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:34;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>&lt;<span
  class=SpellE>fmt</span>&gt;&lt;"<span class=SpellE>fmt</span>"&gt;&lt;n&gt;&lt;FF&gt;<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:35;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>char <span
  class=SpellE>char</span> ... &lt;FF&gt;<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:36;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:37;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'>BODY<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><b><span style='font-size:10.0pt;font-family:Arial'>section<o:p></o:p></span></b></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'>XINT<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:38;mso-yfti-lastrow:yes;height:12.75pt'>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>... nested
  content ...<o:p></o:p></span></p>
  </td>
  <td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
</table>

<p class=MsoNormal><span style='font-size:9.0pt'><o:p>&nbsp;</o:p></span></p>
]]>
        <![CDATA[<h2>Details of Format</h2>

<h3>VERSION</h3>

<p class=MsoNormal>Version is the first field in the payload. </p>

<p class=MsoNormal>The version field contains one UTF-8 Extended Character. </p>

<h3>PROMOTE</h3>

<ul style='margin-top:0in' type=disc>
 <li class=MsoNormal style='mso-list:l1 level1 lfo2;tab-stops:list .5in'>UTF-8
     characters define a numeric code for characters which may be represented
     by 1-, 2-, 3-, or 4-byte encryptions. If a character is not used
     frequently, with this scheme, the UTF-8 representation for that character
     can be replaced with a numeric representation. For example:</li>
</ul>

<p class=MsoNormal style='margin-left:1.0in'>00000010 is a one-byte UTF-8
encoding.</p>

<p class=MsoNormal style='margin-left:1.0in'>11000000 10000010 is the same
character in two-byte encodings, thereby freeing the value 00000010 to be used
for another, more common value.</p>

<ul style='margin-top:0in' type=disc>
 <li class=MsoNormal style='mso-list:l1 level1 lfo2;tab-stops:list .5in'>When a
     character is promoted, it allows the character value to be used for
     another form. If it is promoted but not allocated in the lexical section,
     it is an integer. Otherwise, it is a tag, or a lexical value.</li>
</ul>

<h3>METATAG</h3>

<p class=MsoNormal><span class=SpellE>Metatags</span> provide the structure for
a document. Since each character represents uniquely a <span class=SpellE>metatag</span>,
lexical constant, or integer, the <span class=SpellE>metatags</span> can be
identified to reintroduce structure. If the &lt;section&gt; <span class=SpellE>metatag</span>
is met before the remaining <span class=SpellE>metatags</span>, then that means
the constructs aren't used. The <span class=SpellE>metatags</span> used are:</p>

<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
 style='margin-left:.5in;border-collapse:collapse;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
 <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'>section<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial;
  mso-bidi-font-weight:bold'>High-level section in the document. Since it
  occurs exactly four times in a document, it may have a longer representation
  than other <span class=SpellE>metatags</span> and lexical values which may be
  used more often.<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:1;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>format<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Allows
  numeric values to be presented in the form of a format to simplify <span
  class=SpellE>SSNs</span>, phone numbers, date/time representations, and so
  on. More discussion later.<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:2;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>switch-spaces<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Changes
  the manner in which data is concatenated. More discussion later.<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:3;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>relocate<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>When
  allocating lexical tags, they are done in increasing numeric order from the
  previous tag, OR, starting with the relocate value provided.<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:4;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>tag<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Identifies
  an open tag for an xml tag expression, e.g. &lt;tag&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:5;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>tag-ns<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Identifies
  a tag with a namespace qualifier, e.g. &lt;<span class=SpellE>f:tag</span>&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:6;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span class=SpellE><span style='font-size:10.0pt;
  font-family:Arial'>xmlns</span></span><span style='font-size:10.0pt;
  font-family:Arial'><o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Specifies
  the <span class=SpellE>xmlns</span> attribute, e.g. <span class=SpellE>xmlns:foo</span>="http://foo.com"
  would be &lt;<span class=SpellE>xns</span>&gt;&lt;'<span class=SpellE>foo</span>"&gt;&lt;"http://foo.com"&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:7;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Specifies
  the simple form of an attribute assignment, e.g. color="0xffffff" would be
  &lt;<span class=SpellE>atr</span>&gt;&lt;"color"&gt;&lt;"<span class=SpellE>oxffffff</span>"&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:8;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute-multi<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Specifies
  the simple form of an attribute assignment, e.g. site="http://www.bea.com" might
  be &lt;<span class=SpellE>atm</span>&gt;&lt;"<span class=GramE>http:</span>//"&gt;&lt;"www.bea.com"&gt;FF
  or &lt;<span class=SpellE>atm</span>&gt;&lt;"http://"&gt;&lt;"w"&gt;&lt;"w"&gt;&lt;"w"&gt;&lt;".
  "&gt;&lt;"b"&gt;&lt;"e"&gt;&lt;"a"&gt;&lt;".
  "&gt;&lt;"c"&gt;&lt;"o"&gt;&lt;"m"&gt;FF<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:9;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute-multi-spaces<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:10;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute-ns<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>A
  namespace is provided with the attribute. e.g. <span class=SpellE>bob:color</span>="0xffffff"
  would be &lt;<span class=SpellE>atr</span>&gt;&lt;"color"&gt;&lt;"bob"&gt;&lt;"<span
  class=SpellE>oxffffff</span>"&gt;<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:11;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute-ns-multi<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:12;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>attribute-ns-multi-spaces<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:13;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>child<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Child
  components have similar literal and concatenation-construction forms of
  attributes, but not namespaces.<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:14;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>child-multi<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:15;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>child-multi-spaces<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:16;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>comment<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>Comment
  components have similar literal and concatenation-construction forms of child.<o:p></o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:17;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>comment-multi<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
 <tr style='mso-yfti-irow:18;mso-yfti-lastrow:yes;height:12.75pt'>
  <td nowrap valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'>comment-multi-spaces<o:p></o:p></span></p>
  </td>
  <td valign=top style='padding:0in 5.4pt 0in 5.4pt;height:12.75pt'>
  <p class=MsoNormal><span style='font-size:10.0pt;font-family:Arial'><o:p>&nbsp;</o:p></span></p>
  </td>
 </tr>
</table>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<h3>FORMAT</h3>

<ul style='margin-top:0in' type=disc>
 <li class=MsoNormal style='mso-list:l0 level1 lfo1;tab-stops:list .5in'>Much
     information in XML is related to numerical values. Format provides a way
     to separate the format of a number from a numeric value which can be
     easily represented. For example:</li>
</ul>

<p class=MsoNormal style='margin-left:1.0in'>123-45-6789 and 234-45-3456 are
both <span class=SpellE>SSNs</span>. They have a format "9&#8209;99&#8209;9999"
and two values: 123456789 and 234453456. A nine-digit number can be represented
by with 5 byte UTF-8-OB number. The format "9&#8209;99&#8209;9999" may be
entered into a lexical dictionary with a short code if it is commonly used. The
overall usage is more compressed.</p>

<ul style='margin-top:0in' type=disc>
 <li class=MsoNormal style='mso-list:l0 level1 lfo1;tab-stops:list .5in'>Formats
     have three format values. These are "9", "a", and "A". "<span class=GramE>a</span>"
     and "A" define whether a hexadecimal value should be reported in upper or
     lower case. The leftmost format value identifies that it should be
     repeated for the remainder of the integer. "$999" would be the same as
     "$9". A format of "9" is the implied format when reproducing a number"</li>
 <li class=MsoNormal style='mso-list:l0 level1 lfo1;tab-stops:list .5in'>Negative
     numbers are represented through the formatting process "-9" is the
     standard representation for a negative number. "(9)" may be an alternate
     representation.</li>
 <li class=MsoNormal style='mso-list:l0 level1 lfo1;tab-stops:list .5in'>Time
     may represented as "9:99am", and "9:99pm" and 5:52pm would be:</li>
</ul>

<p class=MsoNormal style='margin-left:1.0in'>&lt;<span class=SpellE><span
class=GramE>fmt</span></span>&gt; &lt;"9:99pm"&gt; &lt;552&gt;.</p>

<ul style='margin-top:0in' type=disc>
 <li class=MsoNormal style='mso-list:l0 level1 lfo1;tab-stops:list .5in'>Since
     the format identifies whether the value is a hexadecimal value or a
     decimal value, for hexadecimal values, they are calculated (mod 5), a ==
     0, f == 4. Thus, hexadecimal values are numerically smaller though there
     may be more formats. Having the format and the integer in hand, the
     representational value will be deterministic.</li>
</ul>

<p class=MsoNormal style='margin-left:1.0in'>Examples:</p>

<p class=MsoNormal style='margin-left:1.5in'>&lt;<span class=SpellE>fmt</span>&gt;
&lt;"a9"&gt; &lt;"11"&gt; <span style='font-family:Wingdings;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman";mso-char-type:symbol;
mso-symbol-font-family:Wingdings'><span style='mso-char-type:symbol;mso-symbol-font-family:
Wingdings'>à</span></span> "b01"</p>

<p class=MsoNormal style='margin-left:1.5in'>&lt;<span class=SpellE>fmt</span>&gt;&lt;"<span
class=SpellE>aa</span>"&gt;&lt;"11"&gt; <span style='font-family:Wingdings;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman";
mso-char-type:symbol;mso-symbol-font-family:Wingdings'><span style='mso-char-type:
symbol;mso-symbol-font-family:Wingdings'>à</span></span> &lt;"<span
class=SpellE>cb</span>"&gt;</p>

<p class=MsoNormal style='margin-left:1.0in'>Simulations of both forms showed
this to be more compressed. As a result, there may be more formats for
hexadecimal numbers. If all combinations of a six-digit hexadecimal number are
used, then there will be 64 formats</p>

<h3>SPACES</h3>

<p class=MsoNormal>In the concatenation of values, the differentiation between
values concatenated directly and those that are separated by an intermediate
space character are recognized. The overall <span class=SpellE>metatag</span>
can identify if the spaces should be included as part of the tag, and when the
x-terms are concatenated, the whitespace will be inserted between them
automatically. The code supports the &lt;<span class=SpellE>sws</span>&gt; <span
class=SpellE>metatag</span> to switch that mode.</p>

<p class=MsoNormal>When a format is used within a concatenation expression, the
format is expanded, and then put into the concatenation.</p>

<h3>LEXICAL</h3>

<p class=MsoNormal>Within an XML document, the same phrase may be repeated many
times. For example, attribute names, tag names, namespace tags, "blue", and so
on. Numbers that are used many times may be placed here and given a more
concise numeric code. </p>

<h3>BODY</h3>

<p class=MsoNormal>The body is an implicit concatenation field, without
automatic spaces, and continues for the remainder of the document. For an XML
document, it may begin with something like:</p>

<p class=MsoNormal><span class=GramE><span style='font-family:"Courier New"'>&lt;?xml</span></span><span
style='font-family:"Courier New"'> version=&quot;1.0&quot;
encoding=&quot;ISO-8859-1&quot;?&gt;<o:p></o:p></span></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>For this, the XML format will be understood so tag "<span
class=GramE>?xml</span>" will have an end tag "?". Encoding will appear as
follows:</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><span style='font-family:"Courier New"'>&lt;<span
class=GramE>tag</span>&gt; &lt;&quot;?xml&quot;&gt; &lt;<span class=SpellE>atr</span>&gt;
&lt;&quot;version&quot;&gt; &lt;<span class=SpellE>fmt</span>&gt; &lt;&quot;9.9&quot;&gt;
&lt;10&gt; &lt;<span class=SpellE>atr</span>&gt; &lt;&quot;encoding&quot;&gt; &lt;<span
class=SpellE>fmt</span>&gt; &lt;&quot;ISO-9-9&quot;&gt; &lt;88591&gt; &lt;FF&gt;<o:p></o:p></span></p>

<h3>Duality of Numbers</h3>

<p class=MsoNormal>When overridden, a character can represent a number that has
two forms. For example, UTF-8 character 01100001 10000000 can represent 128, as
can UTF-8-OB encoding 10000001 00000000.<span style='mso-spacerun:yes'> 
</span>When a range is specified in the PROMOTE section of the document, either
character codes or numbers can be promoted. The range specified after the
promotion will always be in the UTF-8-OB format, and the range will always stay
within the sequence of UTF-8 characters or UTF-8-OB encodings.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>UTF-8-OB numbers cannot be overridden, however, just with
UTF-8 <span class=GramE>characters,</span> they may be remapped in the lexical
overlay section.</p>

<h2>Process of Encoding</h2>

<p class=MsoNormal>The following is a simple encoding:</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 1</b>: traverse
the document and make a lexical encoding for each unique tag, each unique attribute
name, and each namespace reference. For document transparency, these values
cannot be distilled further. No tag or attribute name can be represented in a
concatenated form. This is a requirement of the representation to ease
introspection.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 2</b>: factor
all attribute values, child data, and comments with numeric formats. The rules:</p>

<p class=MsoNormal style='margin-left:.5in'>Numbers must have two digits within
a span of not more than twice as many characters. For this purpose, "a" through
"f" and "A" through "F" are non-alphabetic.</p>

<p class=MsoNormal style='margin-left:.5in'><o:p>&nbsp;</o:p></p>

<p class=MsoNormal style='margin-left:.5in'>Inventory the different formats and
the value that is applied to the format.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 3</b>: construct
a distribution of the factored values and the distribution of the factors. The
highest occurring tags, integers, characters, formats, etc. will have the shortest
representations possible.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 4:</b> For the
first 128 most common values, select whether it should be promoted. Are there
1-byte characters that should not be characters? Often, 0 through 10 <span
class=GramE>hex</span> are not used, so they will be promoted automatically.
Select those that should be promoted and map the most common values to them. If
there's a natural integer form, e.g. 100 <span class=GramE>is</span> in the
collection and character 100 is promoted, then assign the natural mapping. If
the natural mapping is used, then there will not need to be a mapping for "100"
in the lexical mapping section of the document.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 5</b>: Repeat
for the two-byte and three-byte UTF-8 characters. For standard US and European
documents, all of these may be promoted (since they are not used), and the
character codes can be reused. </p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal style='margin-left:.5in'><b style='mso-bidi-font-weight:
normal'>Note:</b> Reserve enough space in the two-byte formats to hold all the
meta-tag definitions. Later, when a firm estimate of <span class=SpellE>metatag</span>
requirements is known, then it will require less juggling to promote 1-byte
characters or select a 3-byte or 4-byte representation for the <span
class=SpellE>metatags</span>.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 6</b>: The <span
class=GramE>mappings of <span class=SpellE>metatags</span>, tags, attributes</span>,
comments, and values is reasonably complete. Look at all the lexical mappings which
have an occurrence of one, and are not tags. These are not to be put into the
lexical mappings. Instead, the characters will be put out in the multi- forms
of the value expressions.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal style='margin-left:.5in'>Note: We're looking at the weighted
average of declarations versus instantiations. "10" 300 times will require 600
bytes in natural literal form (as characters), 600 bytes in the UTF-8-OB form,
and 303 bytes if 10 is mapped to character 10. </p>

<p class=MsoNormal style='margin-left:.5in'><o:p>&nbsp;</o:p></p>

<p class=MsoNormal style='margin-left:.5in'>The number 65600 200 times will
require 1000 bytes in natural form, 600 bytes in UTF-8-OB form, and 304 bytes
if 65600 is mapped to a one-byte character such as 10. (The size of the
representational form) * (the frequency) + (encoding overhead) = representation
cost. </p>

<p class=MsoNormal style='margin-left:.5in'><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 7:</b> readjust
the values for the <span class=SpellE>metatags</span> to accurately reflect how
commonly they are used.</p>

<p class=MsoNormal style='margin-left:.5in'>Simulations have shown that <span
class=SpellE>metatags</span>, if used, will nearly always be one-byte,
two-bytes, or three since the document size to span more than but 20 three-byte
characters and three-byte UTF-8-OB integers would be so large that the <span
class=SpellE>metatags</span>, if used, would either be more frequent than the
average token, or not used at all. To that end, any <span class=SpellE>metatag</span>
that is used more frequently than the least frequently-used of the 128
most-used codes will be swapped for that code.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 8</b>: Output
the form.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<h2>Process of Decoding</h2>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 1</b>: Read the
first code. This will reveal the version code. </p>

<p class=MsoNormal>Reading the first code is done by reading the first byte, if
it starts with "10", <span class=GramE>then</span> continue reading bytes in
the UTF-8-OB format until, and including, the byte beginning with "0" is found.
If the a character begins with something other than "10", read it as if it were
a UTF-8 or UTF-8-EX character using the leading number of 1s to identify how
many bytes long it is.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 2</b>: Read in
the second code. This will reveal the <b style='mso-bidi-font-weight:normal'>section
code</b> to separate the sections.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 3</b>: Read
codes until the next <b style='mso-bidi-font-weight:normal'>section code</b> is
found. With each code read, assign to the next in the sequence of <span
class=SpellE>metatags</span>. If the section code is found before the list of <span
class=SpellE>metatags</span> has exhausted, then those <span class=SpellE>metatags</span>
are not used in the encoding.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b style='mso-bidi-font-weight:normal'>Part 4</b>: Read
pairs of UTF-8-FF, and UTF-8-OB to determine which encodings are replaced by
lexical representations or numeric <span class=SpellE>overcodings</span>.</p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

<br/>
<br/>
rev 1.1
<table border="0" width="100%">
<tr height="5px">
  <td borderwidth="1px"><img src="/images/header_d2d.gif" height="5px" width="100%"/></td>
   <td bgcolor="white" width="5px"></td>
 <td bgcolor="red" width="5px"></td>
  <td bgcolor="white" width="5px"></td>
  <td bgcolor="black" width="5px"></td>
</tr>
</table>]]>
    </content>
</entry>
<entry>
    <title>Polymorphism, Java : Sets and Maps ... any ideas?</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/12/polymorphism_ja.html" />
    <id>http://dev2dev.bea.com/blog/fmikkels/archive/2007/12/polymorphism_ja.html</id>
    
    <published>2007-12-31T04:42:47Z</published>
    <updated>2007-12-31T19:20:33Z</updated>
    
    <summary>I have been working on a seemingly simple class in Java ... one that is almost entirely like a Set, but on rare occasions, will contain an entry that is mapped ... and, mapping it into a Java hierarchy is annoying.</summary>
    <author>
        <name>fmikkels</name>
        
    </author>
            <category term="Technology: Persistence" />
    
    <content type="html" xml:lang="" xml:base="http://dev2dev.bea.com/blog/fmikkels/">
        <![CDATA[<strong>Background </strong>... Over the holidays, I have been working on a binary representation for XML that is queryable and compressed. This doesn't particuarly clarify the set-up, but it's a start !!
<br/>
<br/>
In the organization of the XML, text, meta tags, attributes, and all the other parts of XML would be represented by a unique number. Text that is repeated would have a smaller number. Meta tags could provide mapping for concatenated values, and each of the constituent parts would be mapped to a unique integer. Integers are mapped to integers automatically, the mapping for these would not need to be provided. However, if a 12-digit number occurred 100 times in one XML document, it would be more compressed to map a 2-digit number to it.
<br/>
<br/>
Numbers would ideally map to numbers, and Strings would ideally map to their hash values, and in most cases, the specifics of what is mapped can be worked out by these simple rules. For the data gathering phase, I envisioned using Set operations to note that a value was seen and how it was mapped. For this I would like my class to implement the java.util.Set interface. Then, the caller of the class does not need to determine what the value will map to and can perform a set "add()" operation.
<br/>
<br/>
When the value is dropped into my java.util.Set-enabled class, there is a small chance that the ideal form cannot be selected. When rendering the value later, I would need to determine what it was really mapped to. For that, I would also like my class to implement the java.util.Map interface.
<br/>
<br/>
I had never used this aspect of the API, and it hadn't occured to me, but the "remove" method defined on these two classes has a different signature. java.util.Set.remove(Object) returns "true" if the element was in the set, and java.util.Map.remove(Object) returns the value Object was mapped to, null if otherwise. Due to the rules of Java which do not allowing return types to be different with the other aspects of the signature the same on inherited methods, I could not make a class that implements something that behaves both a Map, and as a Set because of that one signature.
<br/>
<br/>
The approach I'm taking is to construct a class "SetMap" that implements the union of all methods in the Set and Map interfaces, choosing the favored form for remove() to be the Map signature. Then, I created two other classes, "SetMapAsSet" and "SetMapAsMap" to provide an identity mask to allow the data to be viewed with the proper polymorphic prism. 
<br/>
<br/>
<strong>Ultimately</strong> ... I may just use the Map signature and require the user of the class to know during the tag and data gathering phase that they need to map to values explicitly. However, it did bring an interesting thought experiment to bear about how to implement polymorphism in situations where things line up logically (like an Airplane that is also an Asset) but not exactly at the technical level of the signature.
<br/>
<br/>
<strong>Addendum A:</strong>
<a href="http://en.wikipedia.org/wiki/Liskov_substitution_principle">Wikipedia's Reference</a> to the Liskov substitution principle, is an interesting discussion point. I'm not sure how it applies to multiple inheritence or multiple interface inheritenace as supported in java in general where you're explicitly desiring to present two object personalities.</br></br>Having stepped through every method of each interface, everything was aligned with my unified definition except "remove()". Which then got me wondering, if you were in a situation where you had to present two different interfaces, and a minor technical conflict on a return type (that you never used) was the only thing preventing it, what would you do?
<br/>
<br/>
rev 1.1
<table border="0" width="100%">
<tr height="5px">
  <td borderwidth="1px"><img src="/images/header_d2d.gif" height="5px" width="100%"/></td>
   <td bgcolor="white" width="5px"></td>
 <td bgcolor="red" width="5px"></td>
  <td bgcolor="white" width="5px"></td>
  <td bgcolor="black" width="5px"></td>
</tr>
</table>]]>
        
    </content>
</entry>
<entry>
    <title>Artificial Intelligence! Software&apos;s Corvair and Cold Fusion all in one.</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/12/artificial_inte.html" />
    <id>http://dev2dev.bea.com/blog/fmikkels/archive/2007/12/artificial_inte.html</id>
    
    <published>2007-12-09T06:16:37Z</published>
    <updated>2007-12-17T19:44:02Z</updated>
    
    <summary>Artificial Intelligence shaped modern computing. Like many &apos;60s inventions, it still is looked on unfairly like Cold Fusion (and I&apos;m talking the Dixie Cup cold fusion not the software package).</summary>
    <author>
        <name>fmikkels</name>
        
    </author>
            <category term="Role: Architect" />
    
    <content type="html" xml:lang="" xml:base="http://dev2dev.bea.com/blog/fmikkels/">
        <![CDATA[Science pretends to be open-minded and look beyond the Public Relations and the Hype to the essence, but it doesn't. I recall the story of John Newland's discovery in the mid-nineteenth century that elements followed the rules of music, and elements, just like notes, have similar tonal er, um, chemical properties every eight notes, um, ... elements.
<br/>
<br/>
Laughed at? You bet. The scientists tore him apart so badly that when Dmitri Mendeleev codified the Periodic Table of the Elements, it is said that particular steps had to be made to assure any similarities to that (ha! ha! ha!) Theory of Octaves wouldn't be too obvious.
<br/>
<br/>
And, having read this story of Nerd History from long ago, I wondered if this episode set up schools of scientific thought that later would have difficulty accepting spectral analysis, DeBrauligh's theory, relativity, and string theory. Each of these subsequent theories dealves into the wave-like or harmonic properties of matter.
<br/>
<br/>
In software, we have the history of Artificial Intelligence. I must disclose right now that my pre-roots are in A.I. My first programming language was LISP. My older brother, Carl, weened me onto software when I was 10 or 11 and to keep me busy when I would visit him at Project MAC, he'd put me up at the card punch machine to write programs, and occasionally, he'd stop hacking (it was a good term then) long enough to run some cards for me and let me debug more.
<br/>
<br/>
Along the way, I came to know the giants--Stahlman and Greenblat--though they may not remember me . But A.I. was where I started my trek down computer lane. Quickly, though, I noticed that "A.I." and "Rocket Science" were somehow bad things in the industry. "A.I was hard", and "A.I. 'failed' because there wasn't a killer application that used it."
<br/>
<br/>
With programming paradigms based on registries and configuration files, and multi-versioned complex packages, things will proceed more slowly than they could if the industry could re-capture the promise that was A.I. Like the "Theory of Octaves", I know it won't be called "A.I."
<br/>
<br/>
I think it will be called Governance.
<br/>
<br/>
Governance is the means by which application composition, behavior, and operation are modified by the "environment" in which it is running. As the environment becomes more complex, users will find themselves standing in the Library of Congress with no card catalog staring down stacks and stacks of components and decisions and not knowing which one to take.
<br/>
<br/>
Users will want suggestions. Which service provider should I hook up with? Should it be deployed on a VM? or on a remote server? I see A.I. as being key for allowing the Web 2.0 notion of an Ad-Hoc application to be developed without the programmer knowing the nuance of every component API level and component configuration file.
<br/>
<br/>
<table border="0" width="100%">
<tr height="5px">
  <td borderwidth="1px"><img src="/images/header_d2d.gif" height="5px" width="100%"/></td>
   <td bgcolor="white" width="5px"></td>
 <td bgcolor="red" width="5px"></td>
  <td bgcolor="white" width="5px"></td>
  <td bgcolor="black" width="5px"></td>
</tr>
</table>]]>
        
    </content>
</entry>
<entry>
    <title>Linear Programming! Index of Activity!</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/11/index_of_activi.html" />
    <id>http://dev2dev.bea.com/blog/fmikkels/archive/2007/11/index_of_activi.html</id>
    
    <published>2007-11-07T22:15:10Z</published>
    <updated>2007-11-08T17:48:43Z</updated>
    
    <summary>After four months of blogging, what have I seen? An application of linear programming gone awry. But, where is linear programming today?</summary>
    <author>
        <name>fmikkels</name>
        
    </author>
    
    <content type="html" xml:lang="" xml:base="http://dev2dev.bea.com/blog/fmikkels/">
        <![CDATA[I'm looking over my <a href="http://dev2dev.bea.com/pub/q/stats?au=248">STATS</a> to pick up any information that may be valuable in tuning my blog for my market -- enterprise application developers. Here are the hit rates on my blogs so far:
<br/>
<br/>
<table border="0" cellpadding="20" cellspacing="0" width="660">
<tbody><tr>
<td><h2>Weblog Stats for <a href="/blog/fmikkels">Fred  Mikkelsen</a>
</h2><table width="100%" border="1" cellspacing="0" cellpadding="3">
<tr>
<td bgcolor="#eeeeee">
<b>Title</b></a></td>
<td bgcolor="#eeeeee">
<b>Created</b></td>
<td bgcolor="#eeeeee">
<b>Page Hits</b></td>
</tr>

<tr>
<td><a href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/11/bea_guardian_is.html">BEA Guardian Rocks!</a></td>
<td>2007-11-02 13:31:47&nbsp;</td>
<td>106&nbsp;</td>
</tr>

<tr>
<td><a href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/10/rethinking_algo_1.html">Rethinking Algorithms</a></td>
<td>2007-10-01 09:18:48&nbsp;</td>
<td>125&nbsp;</td>
</tr>

<tr>
<td><a href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/08/why_isnt_everyt.html">Why Isn't Everything a Portal?</a></td>
<td>2007-08-16 21:48:32&nbsp;</td>
<td>133&nbsp;</td>
</tr>

<tr>
<td><a href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/08/start_with_draganddrop_in_mind.html">Start with Drag-and-Drop in Mind</a></td>
<td>2007-08-03 11:52:03&nbsp;</td>
<td>98&nbsp;</td>
</tr>

<tr>
<td><a href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/07/semantics_is_back.html">Semantics is Back</a></td>
<td>2007-07-26 21:11:09&nbsp;</td>
<td>115&nbsp;</td>
</tr>

<tr>
<td><a href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/07/apples_iphone.html">Apple's iPhone</td></a>
<td>2007-07-21 04:34:19&nbsp;</td>
<td>154&nbsp;</td>
</tr>

<tr>
<td><a href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/07/web_20_saas_and_portals.html">Web 2.0, SaaS and Portals</a></td>
<td>2007-07-11 19:18:35&nbsp;</td>
<td>210&nbsp;</td>
</tr></table>
</td></tr></table>
<br/>
<br/>
To make sense of this data, I employed linear programming and solved for simultaneous linear equations. Accounting for the number of hits over the time an entry has been published, I find the correlation of hits related to the punctuation involved in title. <b>-</b> has negative value,  <b>!</b> gets the most attention, follwed by <b>?</b> and finally an apostrophy has the value of a letter.
<br/>
<br/>
This is a silly case of applying these algebraic techniques, but real-world examples of applying linear programming occur all the time.
<br/>
<br/>
I remember in high school learning linear programming where you would solve for variables and unknowns based on complex information that is given to you. Statisticians would use it to calculate the prediction of income of a household based on the number of appliances and chairs around the dinner table and things like that. 
<br/>
<br/>
A more common form would allow you to make decisions based on the ROI and cost of different commodities. <br/><br/><b> Example: mixing spices in a factory to maximize yield</b><br/><br/>You want to mix the most profitable batch of a spice, and you have a few product sources to choose from. The Law requires that 97% of a spice would be free from weeds. The law prohibits you from purposely mixing contaminates into a spice, but you can mix batches of varying purity provided no sticks and stems and weeds are added directly.<br/><br/>You have a source of spice that is 99.5% pure for $1000 a ton, and another that is 93% pure in the same spice for $550 per ton, and you have a previous batch that is 98% pure and not selling in the warehouse, but it would cost $100 to transport back to the mixing plant per shipment of 1000 pounds. You must also adjust the mixture of two preservatives of up to 1% of volume that cost $30/pound and $50/pound provided the first is not used in a proportion less than 2:1 to the second. If your spice is 99% pure or more, you can use as little as 0.25% preservative. However, if it is 99% or less pure, you must use 0.5% preservative or more.<b>Given</b> these restrictions, what is the cheapest cost per pound?
<br/>
<br/>
I remember in High School, circa TRS-80-days, solving this type of problem is what computers were expected to be able to do. <b><i>This</i></b> was decision support. Where has this gone?
<br/>
<br/>
I've been searching around the internet looking for good implementations of linear programming and solving linear equations, and haven't found any. I find it interesting that software had not been developed to solve the problems in the way we were taught in high school to solve problems.
<br/>
<br/>
Two questions (or three). Do you know of a good linear programming package? Would you use a package like this? 
<br/>
<br/>Did you come to this blog entry because the title had extra punctuation?
<br/>
<br/>
version: 1.1
<br/>
<br/>
<table border="0" width="100%">
<tr height="5px">
  <td borderwidth="1px"><img src="/images/header_d2d.gif" height="5px" width="100%"/></td>
   <td bgcolor="white" width="5px"></td>
 <td bgcolor="red" width="5px"></td>
  <td bgcolor="white" width="5px"></td>
  <td bgcolor="black" width="5px"></td>
</tr>
</table>
]]>
        
    </content>
</entry>
<entry>
    <title>BEA Guardian Rocks!</title>
    <link rel="alternate" type="text/html" href="http://dev2dev.bea.com/blog/fmikkels/archive/2007/11/bea_guardian_is.html" />
    <id>http://dev2dev.bea.com/blog/fmikkels/archive/2007/11/bea_guardian_is.html</id>
    
    <published>2007-11-02T21:31:47Z</published>
    <updated>2008-01-15T14:30:11Z</updated>
    
    <summary>Showed BEA Guardian to one customer, and they loved it. Told about BEA Guardian to a second customer, and they loved it. The only thing that keeps Guardian from flying off the shelves is letting people know where the shelf is -- and now, it&apos;s free to many.</summary>
    <author>
        <name>fmikkels</name>
        
    </author>
            <category term="Product: BEA Guardian" />
            <category term="Product: WebLogic Server" />
            <category term="Role: Platform Admin" />
            <category term="Technology: Service-oriented Architecture" />
    
    <content type="html" xml:lang="" xml:base="http://dev2dev.bea.com/blog/fmikkels/">
        <![CDATA[BEA Guardian is not magic, but it replaces magic. Sometimes, there's a rare IT professional that has that sixth sense that A and B are not in alignment, and knows to fix it <i>before</i> there is a problem. Usually that IT magician doesn't exist. But BEA Guardian does exist.
<br/>
<br/>
One bit of exciting news from BEA World in Beijing ("Peking" to many Europeans) is that BEA Guardian is now free to most BEA customers. This means that most BEA customers can use Guaridan to solve issues before they occur and respond quicker if a problem does occur.
<br/>
<br/>
In IT, there are three tasks to be avoided. Guardian helps with all of them.
<br/>
<br/>
<b>Task 1: Combing through release notes and configurations to solve a problem:</b> Your application is complex and contains products from numerous vendors and open source communities. Some versions work better together than others. Guardian identifies configurations that do not work together well.
<br/>
<br/>
<b>Task 2: Submitting a support ticket:</b> When you experience a problem or have a question, you may want to contact BEA Support. The first thing support needs is usually a complete inventory of the software you're using, the configuration files, and log files. From Guardian, you can submit a ticket to BEA Support, and the proforma information will be automatically submitted for you. If you're bumble-fingered like me, this could save you ten minutes on each ticket.
<br/>
<br/>
<b>Task 3: Responding to a crisis:</b>Your application is complex, and there are many resources that need to be allocated between application servers, web servers, database systems, open-source frameworks, and your application. Guardian can be used to periodically check your system for the signs of problems. Sometimes, a situation can creep up over an extended period (e.g. a JDBC memory leak) and sometimes, a fix may have been made before you've even encountered the issue. Guardian handles both those types of cases. Consider this. If there were a way to avoid one unplanned outage this year, what would that mean to you?  
<br/>
<br/>
Guardian is an extensible framework of pattern matching. BEA Support maintains and provides THOUSANDS of pattern signatures for you to use, and you can make your own. It hooks into WebLogic Server and other products using various technologies. (You can read about those).
<br/>
<br/>
Look up Guardian at the
<a href="http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/support/guardian/">Guardian Homepage</a>. The is also a 
<a href="http://www.bea.com/content/news_events/white_papers/bea_guardian_wp.pdf">whitepaper</a>  with a nice Q & A at the end. The <a href="http://www.bea.com/content/news_events/white_papers/bea_guardian_brochure_wp.pdf">brochure</a> is also interesting place to start.  


<br/>
<br/>
rev 2.0
<br/>
<br/>
<table border="0" width="100%">
<tr height="5px">
  <td borderwidth="1px"><img src="/images/header_d2d.gif" height="5px" width="100%"/></td>
   <td bgcolor="white" width="5px"></td>
 <td bgcolor="red" width="5p