<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Javia blog</title>
	<link>http://blog.javia.org</link>
	<description>Mihai Preda on mobile applications</description>
	<pubDate>Wed, 28 May 2008 22:18:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3</generator>
	<language>en</language>
			<item>
		<title>Mobile Monday Warsaw</title>
		<link>http://blog.javia.org/mobile-monday-warsaw/</link>
		<comments>http://blog.javia.org/mobile-monday-warsaw/#comments</comments>
		<pubDate>Wed, 28 May 2008 22:16:20 +0000</pubDate>
		<dc:creator>mihai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.javia.org/mobile-monday-warsaw/</guid>
		<description><![CDATA[I just participated to the first MoMo event to take place in Poland, Mobile Monday Warsaw. There were about eight presentations, of which I most enjoyed the NFC talk by Florian Resatsch from Servtag, and the MRIA (Mobile Rich Internet Application) talk by Alex Nerst of fring (both are start-up companies). The event was well [...]]]></description>
			<content:encoded><![CDATA[<p>I just participated to the first MoMo event to take place in Poland, <a href='http://mobile-monday.pl/'>Mobile Monday Warsaw</a>. There were about eight presentations, of which I most enjoyed the NFC talk by Florian Resatsch from <a href='http://servtag.com/'>Servtag</a>, and the MRIA (Mobile Rich Internet Application) talk by Alex Nerst of <a href='http://fring.com/'>fring</a> (both are start-up companies). The event was well organized, and represented a great opportunity to introduce a new product or make some local industry contacts. It seems MoMo will happen again in Warsaw in the coming months, and hopefully it will also get adopted in other Polish cities (like Krakow).</p>
<p>Congratulations to the organizers!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.javia.org/mobile-monday-warsaw/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dynamically Adjusting Touch Buttons</title>
		<link>http://blog.javia.org/dynamically-adjusting-touch-buttons/</link>
		<comments>http://blog.javia.org/dynamically-adjusting-touch-buttons/#comments</comments>
		<pubDate>Tue, 20 May 2008 12:21:28 +0000</pubDate>
		<dc:creator>mihai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.javia.org/dynamically-adjusting-touch-buttons/</guid>
		<description><![CDATA[I describe here a simple technique that can be used by touch buttons (on a touch-screen interface) to improve, over time, the accuracy of the user touches.
Each button keeps track of the place where the user touch occurs. The touches which are close enough to the button centre are deemed sure touches, meaning that the [...]]]></description>
			<content:encoded><![CDATA[<p>I describe here a simple technique that can be used by touch buttons (on a touch-screen interface) to improve, over time, the accuracy of the user touches.</p>
<p>Each button keeps track of the place where the user touch occurs. The touches which are close enough to the button centre are deemed <em>sure touches</em>, meaning that the button is pretty sure that the user wanted to touch this particular button and not a neighbouring one. For example, the button can use an embedded smaller circle or ellipse, called the <em>sure area</em>, and all touch that occurs within the <em>sure area</em> is a <em>sure touch</em>.</p>
<p>Each button averages all its <em>sure touches</em> that occur over time. When a certain number of such sure touches is accumulated, their average is compared with the ideal button center. If a systematic bias is detected (e.g. let&#8217;s say that the user generally touches with 3 pixels above the button center), the button records the bias and corrects it in future touches. (alternatively this can be seen as the button <em>moving its center</em> to the actual place where the sure touches occur in average).</p>
<p>The adjustment also affects the definition of future <em>sure touches</em>, as a touch is first corrected before being checked for happening within the <em>sure area</em>.</p>
<p>After the adjustment, the button continues to keep track of new <em>sure touches</em> as they occur, and to make new adjustments as needed.</p>
<p>This technique is most effective when every button keeps track of its own correction parameters. For example, a button which is located at the top of the screen may have a different bias (and thus need a different correction) than a button located at the bottom of the screen (or buttons located left - right may need different correction, etc).</p>
<p>This technique allows the interface to &#8216;learn&#8217; over time the touch habits of a particular user (and to optimize itself for that user); but the interface is also able to adapt to a new user (if the device, for example, changes its owner).</p>
<p>For this technique to work, UI elements (such as buttons) must have access to touch events from outside their <em>visual area</em> on the screen. What the dynamic adaptation achieves is a separation and translation of the <em>touch area</em> of the button independently of its <em>visual area</em>. </p>
<p>The technique as described above supports the <em>translation</em> of the <em>touch area</em>, but can be easily extended to handle other transformations (such as dynamically growing the touch area of a button when the distribution of the touches shows too many touches close to its border, suggesting that the button is too small for the particular user).</p>
<p>When the <em>touch area</em> of buttons is segregated from their location (<em>visual area</em>) and is mobile (can move or grow/shrink), conflicts may appear between neighboring buttons. How to elegantly handle such &#8216;touch area conflicts&#8217; is left as a thinking exercise to the reader or implementer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.javia.org/dynamically-adjusting-touch-buttons/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Touch Buttons: the Optimal Shape and Size</title>
		<link>http://blog.javia.org/touch-buttons-the-optimal-shape-and-size/</link>
		<comments>http://blog.javia.org/touch-buttons-the-optimal-shape-and-size/#comments</comments>
		<pubDate>Tue, 20 May 2008 11:44:08 +0000</pubDate>
		<dc:creator>mihai</dc:creator>
		
		<category><![CDATA[JavaME]]></category>

		<category><![CDATA[midp]]></category>

		<guid isPermaLink="false">http://blog.javia.org/touch-buttons-the-optimal-shape-and-size/</guid>
		<description><![CDATA[While physical buttons were the standard for mobile phones in the past, it seems that the industry is gradually adopting touch-screen interfaces. The iPhone is the best example of a touch interface, but other manufacturers (e.g. Sony-Ericsson, Motorola) are also producing mobile phones with touch-screen interfaces (either exclusively touch-screen, or in addition to physical keys).
Talking [...]]]></description>
			<content:encoded><![CDATA[<p>While physical buttons were the standard for mobile phones in the past, it seems that the industry is gradually adopting touch-screen interfaces. The iPhone is the best example of a touch interface, but other manufacturers (e.g. Sony-Ericsson, Motorola) are also producing mobile phones with touch-screen interfaces (either exclusively touch-screen, or in addition to physical keys).</p>
<p>Talking about the physical keys, we can imagine that their design, shape and size was the result of elaborate ergonomic studies in order to make them as easy to use as possible (hoping that the trendy look of the device was not the only factor deciding the design of the keys).</p>
<p>Perhaps taking inspiration from the physical keys, the touch buttons usually have a rectangular shape (sometimes with rounded corners). But is the rectangular shape the best one? and if it is, which is the best width/height ration of the rectangle (e.g. a horizontal rectangle, a vertical one, a square, etc). Of course, the answer may depend to some degree of the particular device and the particular user, but perhaps there are also general characteristics of a good touch-screen button shape/size.</p>
<p>I describe below a simple experiment which allows to discover the optimal shape/size. Ask the user to touch a specific spot (&#8217;target spot&#8217;) on the screen, and record the place where the touch actually occurs. Repeat this many times. Afterwards, you can visualize the area where the actual touches occur, which likely is a shape around the target spot. </p>
<p>This area, the place where the actual touches occur when the user is trying to touch the target, describes the optimal shape of a touch button. It gives information about the size of the button &#8212; it should be large enough as to embed the area of the actual touches, and about its shape.</p>
<p>I expect that the touch area resulting from such an experiment describes an ellipse (a &#8216;flattened circle&#8217;). While this is not a big surprise (as it&#8217;s normal that the actual touch occur &#8216;around&#8217; the target, and the ellipse is the generalization of a circle), there is valuable information in the ratio of the ellipse (how flattened it is), and in its size. While the ellipse can be covered with a rectangular button, the rectangular ratio should follow the ratio of the ellipse. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.javia.org/touch-buttons-the-optimal-shape-and-size/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Arity has Complex Numbers</title>
		<link>http://blog.javia.org/arity-has-complex-numbers/</link>
		<comments>http://blog.javia.org/arity-has-complex-numbers/#comments</comments>
		<pubDate>Tue, 13 May 2008 21:59:09 +0000</pubDate>
		<dc:creator>mihai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.javia.org/arity-has-complex-numbers/</guid>
		<description><![CDATA[I just released version 1.3.0 of the Arity library, with a major addition: Complex Numbers. In addition to basic operators on complex numbers (like addition, multiplication, division), all the standard function are supported: trigonometric &#038; hyperbolic, logarithm, exponential &#038; power, factorial (Gamma), and even combinations, permutations and GCD. It is nice that many analytic functions [...]]]></description>
			<content:encoded><![CDATA[<p>I just released version 1.3.0 of the <a href="http://arity.googlecode.com/">Arity library</a>, with a major addition: <bold>Complex Numbers</bold>. In addition to basic operators on complex numbers (like addition, multiplication, division), all the standard function are supported: trigonometric &#038; hyperbolic, logarithm, exponential &#038; power, factorial (Gamma), and even combinations, permutations and GCD. It is nice that many analytic functions behave better on the complex domain than on the real domain: for example, the logarithm is defined for negative arguments, asin() can take arguments greater than 1, and a negative number can be raised to any power (which results in NaN on reals).</p>
<p>Ever wondered how much is: e^(i*pi), log(-1), i!, i^i, sinh(i*pi)? You can download the <a href='http://arity.googlecode.com/files/arity-1.3.0.jar'>arity-1.3.0.jar</a>, and evaluate any expression like this:</p>
<pre>
java -jar arity-1.3.0.jar "e^(i*pi)"
</pre>
<p>An essential trait of Arity is that it works on MIDP devices (mobile phones) which have limited RAM &#038; CPU. As such, it has a lightweight and efficient implementation. For example, the Complex class (implementing the complex operations) is done in a way that avoids new object creation, which is different from some other Complex Java libraries I&#8217;ve seen.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.javia.org/arity-has-complex-numbers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cracovia Marathon</title>
		<link>http://blog.javia.org/cracovia-marathon/</link>
		<comments>http://blog.javia.org/cracovia-marathon/#comments</comments>
		<pubDate>Tue, 13 May 2008 20:24:03 +0000</pubDate>
		<dc:creator>mihai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.javia.org/cracovia-marathon/</guid>
		<description><![CDATA[
I&#8217;ve just run my second marathon, this time in Krakow instead of Warsaw. In the 5 weeks before the marathon I have run a total of 4km, so I can say that I had zero training &#8212; I was wondering whether I&#8217;ll be able to finish the marathon at all.. and yes, I did it. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.javia.org/img/mc.jpg" alt="Mihai at Cracovia Marathon" /></p>
<p>I&#8217;ve just run my second marathon, this time in Krakow instead of Warsaw. In the 5 weeks before the marathon I have run a total of 4km, so I can say that I had <em>zero</em> training &#8212; I was wondering whether I&#8217;ll be able to finish the marathon at all.. and yes, I did it. I ran slowly, with a total time of 4:51 (half time 2:10). The weather was very cold, windy and rainy, I had to eat bananas all the time to keep up the body heat. It wasn&#8217;t easy, but I can say that the satisfaction of running it to the end (without training) was great.</p>
<p>Still, if you plan to run a marathon yourself, I recommend at least three 21km runs prior to the marathon &#8212; this can save you from a lot of pain and even injury during the real course.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.javia.org/cracovia-marathon/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Running Time</title>
		<link>http://blog.javia.org/running-time/</link>
		<comments>http://blog.javia.org/running-time/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 06:06:08 +0000</pubDate>
		<dc:creator>mihai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.javia.org/running-time/</guid>
		<description><![CDATA[Yesterday I ran the Warsaw Half-Marathon (21km) with time 2:00:58 (two hours and one minute). It was a very nice event, the weather was great (in fact I&#8217;ve got a bit sun-burnt during the run) and the running was not painful, quite the opposite. I improved my time from last year&#8217;s half-marathon with about 9 [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I ran the Warsaw Half-Marathon (21km) with time 2:00:58 (two hours and one minute). It was a very nice event, the weather was great (in fact I&#8217;ve got a bit sun-burnt during the run) and the running was not painful, quite the opposite. I improved my time from last year&#8217;s half-marathon with about 9 minutes.</p>
<p>What was particular this time was that I trained&#8230; almost not at all. All my training this year was one 10km run and one 9km run (the reason being that the weather was rather cold this spring, while I enjoy running above 10 Celsius; not to exclude pure laziness though).</p>
<p>Given my lack of training, I was afraid I won&#8217;t be able to even finish it &#8212; it&#8217;d be enough to run a bit too fast in the beginning, and I&#8217;d be dead at 15km. But everything went well, I could maintain an even rhythm all along, running with about 10km/h without any breaks. I didn&#8217;t notice the two hours going by, it seemed as if it were a mere 15minutes. And the weather was great.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.javia.org/running-time/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Modem is in Vogue, Again</title>
		<link>http://blog.javia.org/the-modem-is-in-vogue-again/</link>
		<comments>http://blog.javia.org/the-modem-is-in-vogue-again/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 21:16:21 +0000</pubDate>
		<dc:creator>mihai</dc:creator>
		
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://blog.javia.org/the-modem-is-in-vogue-again/</guid>
		<description><![CDATA[I am a big fun of having the web&#8217;s huge and rich information available on mobile phones &#8212; it is really useful for the user to be able to browse the web with the mobile phone&#8217;s browser.
Some time ago I was wondering how this &#8216;mobile browsing&#8217; experience can be improved, and at that point I [...]]]></description>
			<content:encoded><![CDATA[<p>I am a big fun of having the web&#8217;s huge and rich information available on mobile phones &#8212; it is really useful for the user to be able to browse the web with the mobile phone&#8217;s browser.</p>
<p>Some time ago I was wondering how this &#8216;mobile browsing&#8217; experience can be improved, and at that point I was thinking that server-side page adaptation is the answer. In this approach, the web application generating the pages uses techniques such as <em>User-Agent sniffing</em> to detect that the client is a mobile phone, and returns a page specially-tailored for a mobile browser.</p>
<p>But now I realize that this approach is fundamentally flawed. It puts the burden on the web application developer to generate <em>two</em> parallel sets of outputs (one for desktop, one for mobile), and the hard part is keeping these two in sync. The problem is that the mobile version will get behind the desktop version, and the mobile user may be put in the paradoxical situation of wanting to browse the desktop version rather than the mobile version.</p>
<p>And the technology advances: my old mobile phone had a 128&#215;128 screen, but now 240&#215;320 is the norm for feature-phones (a <em>feature-phone</em> is the phone that is not as smart as a <em>smart-phone</em>). And the IPhone has a large QVGA screen (320&#215;480). Such devices come closer and closer to displaying normal web pages, so the content-adaptation becomes less critical.</p>
<p>The solution that I see now is different: forget content-adaptation &#8212; instead design a single set of content, but take into consideration that a (growing) percentage of the users will be browsing from a mobile phone. So: keep the pages clean and streamlined, favour text instead of large graphics (text scales better), and <strong>keep the page size small</strong>.</p>
<p>Because the data connection on a mobile phone is slow, and often costs by amount of data transferred (not flat fee as on the desktop), it is important to keep the (total) page size small. This will greatly improve the browsing experience on the mobile phone.</p>
<p>In history there was a moment when most users were connected to the internet through a <em>modem</em>, with a maximum speed of about 5 KBytes/s. At that point, there was a lot of advice on the web on the lines of: keep the size of your web page under 10 KBytes &#8212; it would take so and so many seconds to download a web page of that size over the modem, etc.</p>
<p>I think it would be a good mind-set for present day web developers if they imagined that 20% of their users&#8230; <em>are connected to the internet through modems</em> again. So, forget the 1MByte (including images, ajax libraries, etc) web page, cause it takes 200 seconds to download it over the modem.</p>
<p>It&#8217;s true though, this new modem is getting faster&#8230;</p>
<p>Disclaimer: This blog expresses solely my own personal opinion &#8212; it is not endorsed by and does not represent the opinion of my employer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.javia.org/the-modem-is-in-vogue-again/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Arity Performance on Mobile Phone vs. Desktop Computer</title>
		<link>http://blog.javia.org/arity-performance-on-mobile-phone-vs-desktop-computer/</link>
		<comments>http://blog.javia.org/arity-performance-on-mobile-phone-vs-desktop-computer/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 20:06:06 +0000</pubDate>
		<dc:creator>mihai</dc:creator>
		
		<category><![CDATA[Arity]]></category>

		<category><![CDATA[JavaME]]></category>

		<category><![CDATA[Javia]]></category>

		<category><![CDATA[midp]]></category>

		<guid isPermaLink="false">http://blog.javia.org/arity-performance-on-mobile-phone-vs-desktop-computer/</guid>
		<description><![CDATA[I&#8217;m so happy I&#8217;m blogging again!
So, everybody knows already that I am the author of the Arity Arithmetic Engine,  a nice little open-source library for evaluating arithmetic expressions. In this library I put quite some attention on the elegant and minimal code, and on performance. The functionality is mainly split in two parts: compiling [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m so happy I&#8217;m blogging again!</p>
<p>So, everybody knows already that I am the author of the <a href='http://arity.googlecode.com/'>Arity Arithmetic Engine</a>,  a nice little open-source library for evaluating arithmetic expressions. In this library I put quite some attention on the elegant and minimal code, and on performance. The functionality is mainly split in two parts: compiling an expression (takes a string and returns a Function object), and evaluating the Function.</p>
<p>For example, compiling the string &#8220;g(x)=x^2&#8243; produces a Function instance. Calling eval(5) on this function returns 25. These two operations (compilation and evaluation) are separated because you typically compile an expression once, but evaluate it many times (for example when plotting the graph of a function).</p>
<p>On a desktop computer, Arity can do about 50,000 compilations/second, and about 1,000,000 evaluations/second. So the compilation is about 20 times slower than the evaluation.</p>
<p>Why is the compilation so slow? well, you may be surprised, but the bottleneck during compilation is the parsing of a double value from a string (using the java.lang.Double.parseDouble(String)).<br />
And Double.parseDouble() is not only slow, it also does quite some memory allocations (which again result in slowness when the GC is invoked to collect that memory).</p>
<p>One key advantage of the Arity library is that it compiles not only on JavaSE (desktop Java), but also on JavaME/MIDP (mobile Java). So last weekend I decided to measure its performance on my mobile phone (a modest Nokia 6300). I wrote a tiny midlet for the benchmark, and the result is:</p>
<p>On the mobile phone, Arity does about 500 compilations/second, and about 10,000 evaluations/second. So the <em>20 times</em> factor between compilation and evaluation speed is the same as on desktop. </p>
<p>And the key information, <strong>the mobile phone is about 100 times slower than the desktop computer</strong> (from Arity&#8217;s point of view).</p>
<p>Still, 10,000 evaluations/second on the mobile phone is not bad, I am quite happy with this performance.</p>
<p>PS: go check out Arity: <a href='http://arity.googlecode.com/'>http://arity.googlecode.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.javia.org/arity-performance-on-mobile-phone-vs-desktop-computer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Arity Engine released</title>
		<link>http://blog.javia.org/arity-engine-released/</link>
		<comments>http://blog.javia.org/arity-engine-released/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 23:47:17 +0000</pubDate>
		<dc:creator>mihai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.javia.org/arity-engine-released/</guid>
		<description><![CDATA[The blog was pretty dead lately, except for some really good comments I got on past posts on MIDlet signing &#8212; I was quite busy at the day job, and still am. But I thought I&#8217;d share the news in a tiny post:
I&#8217;ve taken out the arithmetic engine from Javia Calculator, re-written it, cleaned-up the [...]]]></description>
			<content:encoded><![CDATA[<p>The blog was pretty dead lately, except for some really good comments I got on past posts on MIDlet signing &#8212; I was quite busy at the day job, and still am. But I thought I&#8217;d share the news in a tiny post:</p>
<p>I&#8217;ve taken out the arithmetic engine from <a href='http://calculator.javia.org/'>Javia Calculator</a>, re-written it, cleaned-up the API, packaged and released it under Apache 2.0 (open source):</p>
<p><a href='http://arity.googlecode.com/'>Arity, the  Arithmetic Engine for Java</a>. Enjoy!</p>
<p>It works for both JavaME (MIDP) and normal Java (SE). I&#8217;m rather happy with the API and the code, it turned out elegant, compact and (as usual) very efficient. Hope you like it..</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.javia.org/arity-engine-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The new XML</title>
		<link>http://blog.javia.org/the-new-xml/</link>
		<comments>http://blog.javia.org/the-new-xml/#comments</comments>
		<pubDate>Fri, 05 Oct 2007 18:52:36 +0000</pubDate>
		<dc:creator>mihai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.javia.org/the-new-xml/</guid>
		<description><![CDATA[JSON is the new XML. 
JSON, the &#8220;JavaScript Object Notation&#8221;, is a very simple notation for representing hierarchical data. It achieves what XML was supposed to do, and in a very simple way. 
While the XML spec is hundreds (thousands?) of pages, the JSON spec fits comfortably on one page. Although the name suggest an [...]]]></description>
			<content:encoded><![CDATA[<p>JSON is the new XML. </p>
<p><a hrerf='http://json.org/'>JSON</a>, the &#8220;JavaScript Object Notation&#8221;, is a very simple notation for representing hierarchical data. It achieves what XML was supposed to do, and in a very simple way. </p>
<p>While the XML spec is hundreds (thousands?) of pages, the JSON spec fits comfortably on one page. Although the name suggest an association to JavaScript, JSON is in fact language-agnostic. There are JSON libraries for almost any language out there.</p>
<p>Sample JSON fragment:</p>
<pre>
{
"name":"John",
"tel":["+16051231234", "+48885003300"],
"address":{"street":"Dyamond 8", "city":"San Francisco"}
}
</pre>
<p>JSON has elementary values (strings, numbers; e.g. &#8220;foo&#8221;, 10), arrays marked by square brackets (e.g. [2, 4, 8]), and maps (also named &#8216;objects&#8217;) which contain key:value pairs between curly brackets (e.g. {&#8221;name&#8221;:&#8221;John&#8221;, &#8220;age&#8221;:&#8221;10&#8243;}).</p>
<p>Because of its simple and uniform structure, JSON is very simple to parse (this is a major advantage over XML). JSON is more compact then XML. JSON is more &#8216;pure&#8217;, more elegant than XML. And because of its ability of representing arbitrary complex hierarchical structures, JSON is just as powerful as XML.</p>
<p>While XML had all the hype, JSON is quietly getting the job done.</p>
<p>Follow-up: quite funny, only one day after I wrote this article, there was a similarly-themed post on CEO&#8217;s blog: <a href='http://weblog.cenriqueortiz.com/general/2007/10/06/json-for-data-exchange-vs-xml/'>JSON for data exchange (vs. XML)</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.javia.org/the-new-xml/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
