<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Well, at least we got the duck.</title>
	<atom:link href="http://ingol.nl/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://ingol.nl/blog</link>
	<description></description>
	<lastBuildDate>Mon, 08 Mar 2010 10:29:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dutch Public Transport Digital Payment System (OV Chipkaart) &#8211; An Epic Fail Story for Me (and in general imho)</title>
		<link>http://ingol.nl/blog/2010/02/11/dutch-public-transport-digital-payment-system-ov-chipkaart-an-epic-fail-story-for-me-and-in-general-imho/</link>
		<comments>http://ingol.nl/blog/2010/02/11/dutch-public-transport-digital-payment-system-ov-chipkaart-an-epic-fail-story-for-me-and-in-general-imho/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 09:30:59 +0000</pubDate>
		<dc:creator>Reboot</dc:creator>
				<category><![CDATA[Categorized]]></category>

		<guid isPermaLink="false">http://ingol.nl/blog/?p=353</guid>
		<description><![CDATA[My horrible encounters with the system:
- Today was a pretty darn nippy morning (COLD!!! BrrrrRrRrRrrRrrrr), it&#8217;s take me a couple of minutes to get to the station. Arriving there the train was already coming, so I had to pick up pace to get in. When I swiped my card the ******* machine rejected it, WTF. [...]]]></description>
			<content:encoded><![CDATA[<p>My horrible encounters with the system:<br />
- Today was a pretty darn nippy morning (COLD!!! BrrrrRrRrRrrRrrrr), it&#8217;s take me a couple of minutes to get to the station. Arriving there the train was already coming, so I had to pick up pace to get in. When I swiped my card the ******* machine rejected it, WTF. It seemed the card itself had expired with 12 euros of credit still on it. Annoyed by that fact I was confronted with another fail, there wasn&#8217;t the opportunity to buy a single way ticket or a new card, <strong>WTF! </strong>So I had to call my wife to bring me to work. I later discovered that to reimburse my 12 euro credit on the expired card, it COSTS me 2,5 euro administration cost. That would probably be on top of the 7,5 euro which costs a new card.</p>
<p>I quote (sorry Dutch only, no translation available, seems they are lacking in the customer service department):</p>
<blockquote><p>Defect?<br />
Is uw persoonlijke of anonieme OV-chipkaart defect? In dat geval kunt u vragen om restitutie (teruggave) van uw saldo.<br />
Bij een defecte persoonlijke OV-chipkaart, gebruikt u het formulier Beëindiging en restitutie van een persoonlijke OV-chipkaart.<br />
U ontvangt het bedrag op uw bank- of girorekening (na aftrek van € 2,50 administratiekosten).<br />
Restitutie is alleen mogelijk als er een saldo van minimaal € 5,00 op uw OV-chipkaart staat.</p></blockquote>
<p><a href="http://www.ret.nl/service-en-verkoop/ov-chipkaart-informatie/gestolen-verloren-defect.aspx">OV-chipkaart gestolen / verloren / defect / verlopen?</a></p>
<p>- Once I couldn&#8217;t check-out (a &#8220;wonderful&#8221; new feature, didn&#8217;t have to do that with the old paper card system) because the check-in/out device failed with a nice error message. Now my ride would cost 4 euros instead of 1,5. I had to wait in line for 20 minutes to get my money back.</p>
<p>- Some of the non-city stations have devices which allow both check-in and check-out. In the city area&#8217;s however, there are these small swinging doors you need to get through. One side is check-in, one is check-out. If you, by mistake, end up on the wrong side, you&#8217;re screwed! The first time that such a event happened to me my thought was: &#8220;no problem I&#8217;ll just swipe the card&#8221;, which would be OK for the non-city situation. The problem was however, I swiped against the check-out section, which costs me 4 euros, I thought I checked-in (yeah I didn&#8217;t look). When I exited from my ride I swiped to get out, for real this time, and again 4 euros disappeared from my card. Considering I don&#8217;t regularly use public transportation, I noticed it a couple of days later.</p>
<p>- I also accidentally carried two cards once and couldn&#8217;t remember which one I used to check-in. And there&#8217;s no way to find that out because the charging machines which show information about the card are behind the check-out. And yeah, I choose the wrong card &#8230; :(</p>
<p>- Another issue they experience is that people with a subscription of some sort (e.g. monthly) don&#8217;t check-in / check-out at all in trams. As long as they don&#8217;t enforce that they will miss out on a lot of valuable data which this system should have supplied.</p>
<p>- There are also issues because some of the transportation companies have different implementations, which for example means that using your subscription card at a specific buss  company would result in loss of credit (hence the card holds both subscription and credit information!) instead of just registering the trip. Plus every company would charge it&#8217;s own &#8220;administration&#8221; fee, thus using different types of public transportation  each being owned by a different company would create an additional cost.</p>
<p>- With this new system people are required to check-out. Checking-in rarely causes a queue, people simply don&#8217;t arrive all at the same time, getting out however causes everyone to queue up to get checked-out. Some stations have a limited supply of check-out machines or poorly placed ones. There&#8217;s also at least one person in the queue which is unable to check-out and tries repeatedly while holding up the queue, which might be incompetence or plain system failure.</p>
<p>I&#8217;m getting really annoyed by this system and even when it isn&#8217;t my fault it costs me time and money. Did we (poorly) re-invent the wheel here, I&#8217;ve seen much better systems abroad.</p>
]]></content:encoded>
			<wfw:commentRss>http://ingol.nl/blog/2010/02/11/dutch-public-transport-digital-payment-system-ov-chipkaart-an-epic-fail-story-for-me-and-in-general-imho/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle Tip: Ignoring case and diacritic differences in an Oracle search.</title>
		<link>http://ingol.nl/blog/2010/02/01/oracle-tip-ignoring-case-and-diacritic-differences-in-an-oracle-search/</link>
		<comments>http://ingol.nl/blog/2010/02/01/oracle-tip-ignoring-case-and-diacritic-differences-in-an-oracle-search/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 14:56:26 +0000</pubDate>
		<dc:creator>Reboot</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[diacritic]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[pl/sql]]></category>

		<guid isPermaLink="false">http://ingol.nl/blog/?p=348</guid>
		<description><![CDATA[http://forums.oracle.com/forums/thread.jspa?threadID=14970
Instead of using the SQL UPPER and LOWER functions to perform case-insensitive queries, an alternative approach is to utilize the linguistic sort GENERIC_BASELETTER. GENERIC_BASELETTER groups all characters together based on their base letter values, this is achieved by ignoring their case and the diacritic differences.
Here is an example of a GENERIC_BASELETTER query.

ALTER SESSION SET NLS_COMP=ANSI;
ALTER [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://forums.oracle.com/forums/thread.jspa?threadID=14970">http://forums.oracle.com/forums/thread.jspa?threadID=14970</a></p>
<blockquote><p>Instead of using the SQL UPPER and LOWER functions to perform case-insensitive queries, an alternative approach is to utilize the linguistic sort GENERIC_BASELETTER. GENERIC_BASELETTER groups all characters together based on their base letter values, this is achieved by ignoring their case and the diacritic differences.<br />
Here is an example of a GENERIC_BASELETTER query.</p></blockquote>
<pre class="brush: plain;">
ALTER SESSION SET NLS_COMP=ANSI;
ALTER SESSION SET NLS_SORT=GENERIC_BASELETTER;

SELECT * FROM PRODUCT
WHERE PRODUCT_NAME = database;
</pre>
<blockquote><p>All other operators, such as LIKE, perform comparisons in binary mode only. i.e. they do not honor the NLS_SORT value. This has now been be enhanced in 10gR2.</p></blockquote>
<p>See also:<br />
Diacritics in like clause, Globalization support<br />
<a href="http://dbaforums.org/oracle/index.php?showtopic=915">http://dbaforums.org/oracle/index.php?showtopic=915</a></p>
<p>Diacritics<br />
<a href="http://en.wikipedia.org/wiki/Diacritic">http://en.wikipedia.org/wiki/Diacritic</a></p>
<p>Oracle® Database Globalization Support Guide<br />
<a href="http://download.oracle.com/docs/cd/B14117_01/server.101/b10749/ch5lingsort.htm#i1006463">http://download.oracle.com/docs/cd/B14117_01/server.101/b10749/ch5lingsort.htm#i1006463</a></p>
<p>Oracle NLS_LOWER<br />
<a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions098.htm#i78373">http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions098.htm#i78373</a></p>
<p>Oracle Replace<br />
<a href="http://www.psoug.org/reference/translate_replace.html">http://www.psoug.org/reference/translate_replace.html</a></p>
<pre class="brush: plain;">
SELECT translate('árvíztűrőtükörfúrógép','áéíóöőúüű','aeiooouuu') without FROM dual
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ingol.nl/blog/2010/02/01/oracle-tip-ignoring-case-and-diacritic-differences-in-an-oracle-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bug: Doctrine Oracle ID-Triggers.</title>
		<link>http://ingol.nl/blog/2010/02/01/bug-doctrine-oracle-id-triggers/</link>
		<comments>http://ingol.nl/blog/2010/02/01/bug-doctrine-oracle-id-triggers/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 13:36:57 +0000</pubDate>
		<dc:creator>Reboot</dc:creator>
				<category><![CDATA[Categorized]]></category>

		<guid isPermaLink="false">http://ingol.nl/blog/?p=346</guid>
		<description><![CDATA[Doctrine&#8217;s YAML created the following trigger to allow the creation of IDs via a sequencer.
Notice that the trigger name is not entirely upper-cased: USER_seq which in our case caused an error of the type: OCI_NO_DATA

CREATE OR REPLACE TRIGGER USER_AI_PK
   BEFORE INSERT
   ON USER
   FOR EACH ROW
DECLARE
   last_Sequence [...]]]></description>
			<content:encoded><![CDATA[<p>Doctrine&#8217;s YAML created the following trigger to allow the creation of IDs via a sequencer.<br />
Notice that the trigger name is not entirely upper-cased: USER_<strong>seq</strong> which in our case caused an error of the type: OCI_NO_DATA</p>
<pre class="brush: plain;">
CREATE OR REPLACE TRIGGER USER_AI_PK
   BEFORE INSERT
   ON USER
   FOR EACH ROW
DECLARE
   last_Sequence NUMBER;
   last_InsertID NUMBER;
BEGIN
   IF (:NEW.id IS NULL OR :NEW.id = 0) THEN
      SELECT USER_seq.NEXTVAL INTO :NEW.id FROM DUAL;
   ELSE
      SELECT NVL(Last_Number, 0) INTO last_Sequence
        FROM User_Sequences
       WHERE Sequence_Name = 'USER_seq';
      SELECT :NEW.id INTO last_InsertID FROM DUAL;
      WHILE (last_InsertID &gt; last_Sequence) LOOP
         SELECT USER_seq.NEXTVAL INTO last_Sequence FROM DUAL;
      END LOOP;
   END IF;
END;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ingol.nl/blog/2010/02/01/bug-doctrine-oracle-id-triggers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle Tip: Apply RowNum after Order By</title>
		<link>http://ingol.nl/blog/2010/01/22/oracle-tip-apply-rownum-after-order-by/</link>
		<comments>http://ingol.nl/blog/2010/01/22/oracle-tip-apply-rownum-after-order-by/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 09:58:42 +0000</pubDate>
		<dc:creator>Reboot</dc:creator>
				<category><![CDATA[Categorized]]></category>

		<guid isPermaLink="false">http://ingol.nl/blog/?p=342</guid>
		<description><![CDATA[Ordering a resultset which contains a rownum statement will order the resultset which is return by the rownum.
e.g. the query:

select * from mytable where rownum &#60;= 10 order by id desc

does not have to return the last 10 records.
See also:
http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html
Think of it as being processed in this order:
1. The FROM/WHERE clause goes first.
2. ROWNUM is [...]]]></description>
			<content:encoded><![CDATA[<p>Ordering a resultset which contains a rownum statement will order the resultset which is return by the rownum.</p>
<p>e.g. the query:</p>
<pre class="brush: plain;">
select * from mytable where rownum &lt;= 10 order by id desc
</pre>
<p>does not have to return the last 10 records.</p>
<p>See also:<br />
<a href="http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html">http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html</a></p>
<blockquote><p>Think of it as being processed in this order:<br />
1. The FROM/WHERE clause goes first.<br />
2. ROWNUM is assigned and incremented to each output row from the FROM/WHERE clause.<br />
3. SELECT is applied.<br />
4. GROUP BY is applied.<br />
5. HAVING is applied.<br />
6. ORDER BY is applied.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ingol.nl/blog/2010/01/22/oracle-tip-apply-rownum-after-order-by/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>*sighs* Refactoring a RIA application (again) to make it work for IE.</title>
		<link>http://ingol.nl/blog/2010/01/15/sighs-refactoring-a-ria-application-again-to-make-it-work-for-ie/</link>
		<comments>http://ingol.nl/blog/2010/01/15/sighs-refactoring-a-ria-application-again-to-make-it-work-for-ie/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 19:18:24 +0000</pubDate>
		<dc:creator>Reboot</dc:creator>
				<category><![CDATA[Categorized]]></category>

		<guid isPermaLink="false">http://ingol.nl/blog/?p=337</guid>
		<description><![CDATA[Ran into this one for example:
&#8220;The onchange event can be attached (inline or as an event handler) to any form element. It fires whenever the value of the form field changes. Unfortunately, the behavior is a bit strange in IE, in that for a checkbox, or a radio button field, the event doesn&#8217;t fire when [...]]]></description>
			<content:encoded><![CDATA[<p>Ran into this one for example:</p>
<blockquote><p>&#8220;The onchange event can be attached (inline or as an event handler) to any form element. It fires whenever the value of the form field changes. Unfortunately, the behavior is a bit strange in IE, in that for a checkbox, or a radio button field, the event doesn&#8217;t fire when it is supposed to (right when you click the option you want to choose), but instead it only fires, when you click elsewhere on the page/form, or if you explicitly call blur(); on the field.&#8221;</p></blockquote>
<p><a href="http://norman.walsh.name/2009/03/24/jQueryIE">http://norman.walsh.name/2009/03/24/jQueryIE</a></p>
<p>Also got some styling issues with the jqGrid, and no, that&#8217;s NOT a **** up by jqGrid. It&#8217;s IE failing on proper CSS support, AGAIN.</p>
<p>Why do I even bother to make it fit for such a PATHETIC browser which is probably NEVER getting better.</p>
<p>I also yanked out the jQuery <a href="http://marcgrabanski.com/article/5-tips-for-better-jquery-code">LiveQuery</a> plug-in which should have increased performance instead of making it slower ?!?<br />
Didn&#8217;t notice that in other browsers.</p>
]]></content:encoded>
			<wfw:commentRss>http://ingol.nl/blog/2010/01/15/sighs-refactoring-a-ria-application-again-to-make-it-work-for-ie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Toggle visibility jqGrid from outside the grid.</title>
		<link>http://ingol.nl/blog/2010/01/15/toggle-visibility-jqgrid-from-outside-the-grid/</link>
		<comments>http://ingol.nl/blog/2010/01/15/toggle-visibility-jqgrid-from-outside-the-grid/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 12:13:52 +0000</pubDate>
		<dc:creator>Reboot</dc:creator>
				<category><![CDATA[Categorized]]></category>

		<guid isPermaLink="false">http://ingol.nl/blog/?p=335</guid>
		<description><![CDATA[The only way I found working:

// Hide the grid when it is visible.
if ( $('#yourtableid).getGridParam('gridstate') == 'visible') {
   $('#gview_yourtableid a.ui-jqgrid-titlebar-close.HeaderButton').trigger('click');
}

Any other thoughts on this are more than welcome!
Couldn&#8217;t find a jqGrid function to do it &#8220;properly&#8221; from outside the grid.
Setting the gridstate and refreshing didn&#8217;t work ?!?
]]></description>
			<content:encoded><![CDATA[<p>The only way I found working:</p>
<pre class="brush: plain;">
// Hide the grid when it is visible.
if ( $('#yourtableid).getGridParam('gridstate') == 'visible') {
   $('#gview_yourtableid a.ui-jqgrid-titlebar-close.HeaderButton').trigger('click');
}
</pre>
<p>Any other thoughts on this are more than welcome!</p>
<p>Couldn&#8217;t find a jqGrid function to do it &#8220;properly&#8221; from outside the grid.<br />
Setting the gridstate and refreshing didn&#8217;t work ?!?</p>
]]></content:encoded>
			<wfw:commentRss>http://ingol.nl/blog/2010/01/15/toggle-visibility-jqgrid-from-outside-the-grid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Having fun in Lazytown.</title>
		<link>http://ingol.nl/blog/2010/01/15/having-fun-in-lazytown/</link>
		<comments>http://ingol.nl/blog/2010/01/15/having-fun-in-lazytown/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 22:21:32 +0000</pubDate>
		<dc:creator>Reboot</dc:creator>
				<category><![CDATA[Categorized]]></category>

		<guid isPermaLink="false">http://ingol.nl/blog/?p=330</guid>
		<description><![CDATA[
My nickname is RebootGPF and no, that&#8217;s not my voice being frustrated :)
]]></description>
			<content:encoded><![CDATA[<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/u9TSAHsU1QE&#038;hl=en_US&#038;fs=1&#038;color1=0x3a3a3a&#038;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/u9TSAHsU1QE&#038;hl=en_US&#038;fs=1&#038;color1=0x3a3a3a&#038;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>My nickname is RebootGPF and no, that&#8217;s not my voice being frustrated :)</p>
]]></content:encoded>
			<wfw:commentRss>http://ingol.nl/blog/2010/01/15/having-fun-in-lazytown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bug: jQuery validation plug-in 1.6</title>
		<link>http://ingol.nl/blog/2010/01/14/bug-jquery-validation-plug-in-1-6/</link>
		<comments>http://ingol.nl/blog/2010/01/14/bug-jquery-validation-plug-in-1-6/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 21:44:49 +0000</pubDate>
		<dc:creator>Reboot</dc:creator>
				<category><![CDATA[Categorized]]></category>

		<guid isPermaLink="false">http://ingol.nl/blog/?p=326</guid>
		<description><![CDATA[Line 177 from the jQuery validation plug-in (1.6) contains:

   this.settings = $.extend( {}, $.validator.defaults, options );

This line will actually cause a bug if the page contains multiple forms of which input elements have the same name.
What happens is that the defaults are not copied deep enough which leaves (at least one) reference to [...]]]></description>
			<content:encoded><![CDATA[<p>Line 177 from the jQuery validation plug-in (1.6) contains:</p>
<pre class="brush: jscript;">
   this.settings = $.extend( {}, $.validator.defaults, options );
</pre>
<p>This line will actually cause a bug if the page contains multiple forms of which input elements have the same name.<br />
What happens is that the defaults are not copied deep enough which leaves (at least one) reference to the properties in the defaults property.<br />
The reference to the &#8220;rules&#8221; property will cause every created form validation to add rules to this &#8220;defaults.rules&#8221; property.<br />
Hence some forms get unnecessary or unwanted rules.Fix it by changing line 177 into:</p>
<pre class="brush: jscript;">
   this.settings = $.extend(true, {}, $.validator.defaults, options );
</pre>
<p>Which performs a deep copy.</p>
<p>The next javascript snippet shows how a reference like this might cause issues (unless that&#8217;s what you really want).</p>
<pre class="brush: jscript;">
$(document).ready(function() {
    options =  {
        property : 'normal prop',
        objectproperty : {prop1: 'prop1'}
    };

    var copy1 = $.extend({},options);
    var copy2 = $.extend({},options);

    //Adding to the objectproperty of the first copy will also alter the second :(
    copy1.objectproperty.prop2 = 'prop2';

    if (copy2.objectproperty.prop2) {
        alert('Without deepcopy there might possibly be unwanted object references!');
    }

    if (options.objectproperty.prop2) {
        alert('Hey look, also a new default option!');
    }
});

$(document).ready(function() {
    options =  {
        property : 'prop',
        objectproperty : {prop1: 'prop1'}
    };

    // target = $.extend(true,{}, source1 , source2, ..., sourceN)
    var copy1 = $.extend(true,{},options);
    var copy2 = $.extend(true,{},options);

    //alert('ready');
    copy1.objectproperty.prop2 = 'prop2';

    if (copy2.objectproperty.prop2) {
        alert('Not the place to be!');
    } else {
        alert('Now we got a nice deep copy without leftover object references!');
    }
});
</pre>
<p><a href="http://plugins.jquery.com/node/12411">http://plugins.jquery.com/node/12411</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ingol.nl/blog/2010/01/14/bug-jquery-validation-plug-in-1-6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HAPPY NEW YEAR</title>
		<link>http://ingol.nl/blog/2010/01/04/happy-new-year/</link>
		<comments>http://ingol.nl/blog/2010/01/04/happy-new-year/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 08:18:26 +0000</pubDate>
		<dc:creator>Reboot</dc:creator>
				<category><![CDATA[Categorized]]></category>

		<guid isPermaLink="false">http://ingol.nl/blog/2010/01/04/happy-new-year/</guid>
		<description><![CDATA[^_^
]]></description>
			<content:encoded><![CDATA[<p>^_^</p>
]]></content:encoded>
			<wfw:commentRss>http://ingol.nl/blog/2010/01/04/happy-new-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spotted: New version of the jquery-json plugin.</title>
		<link>http://ingol.nl/blog/2009/12/15/spotted-new-version-of-the-jquery-json-plugin/</link>
		<comments>http://ingol.nl/blog/2009/12/15/spotted-new-version-of-the-jquery-json-plugin/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 13:28:02 +0000</pubDate>
		<dc:creator>Reboot</dc:creator>
				<category><![CDATA[Categorized]]></category>

		<guid isPermaLink="false">http://ingol.nl/blog/?p=323</guid>
		<description><![CDATA[http://code.google.com/p/jquery-json/
Changes in Version 2.0

The code has been re-written. It is now easier to read and follow; less of a mish-mash.
Support for native JSON has been included. This means that if you are using a browser that supports JSON.stringify, it will be used. Also evalJSONand secureEvalJSON will use JSON.parse if available.
Changes were made in the JSON output to move in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/jquery-json/">http://code.google.com/p/jquery-json/</a></p>
<p><strong>Changes in Version 2.0</strong></p>
<ul style="max-width: 65em; padding-left: 40px;">
<li>The code has been re-written. It is now easier to read and follow; less of a mish-mash.</li>
<li>Support for native JSON has been included. This means that if you are using a browser that supports <tt>JSON.stringify</tt>, it will be used. Also <tt>evalJSON</tt>and <tt>secureEvalJSON</tt> will use <tt>JSON.parse</tt> if available.</li>
<li>Changes were made in the JSON output to move in line with the JSON object standard. This means 2.0 <em>is not backwards compatible</em> with the previous versions.</li>
<li><tt>toJSON</tt> now renders like <em>compactJSON</em> used to and <em>compactJSON</em> does not exist anymore. As per the JSON object standard, needless spaces are now removed. This makes it less readable; if someone wants to send me a <em>prettyJSON</em> patch, it will be welcome.</li>
<li>Differences between output when <tt>JSON.stringify</tt> is available and when it is not could exist. I am unable to test all strings. Be aware when testing your apps.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ingol.nl/blog/2009/12/15/spotted-new-version-of-the-jquery-json-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
