<?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>SuddenDevelopment</title>
	<atom:link href="http://SuddenDevelopment.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://SuddenDevelopment.com</link>
	<description>Breathing Life Into Technology</description>
	<lastBuildDate>Fri, 31 Jul 2009 15:38:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Flot + Pie updates: donut, border labels, hover in IE</title>
		<link>http://SuddenDevelopment.com/?p=59</link>
		<comments>http://SuddenDevelopment.com/?p=59#comments</comments>
		<pubDate>Fri, 31 Jul 2009 15:38:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://SuddenDevelopment.com/?p=59</guid>
		<description><![CDATA[I have been using javascript libraries for charting lately. I find it works well wil ajax / jQuery pages very well instead of flash because they share variables and functions.The best Open Source one I could find was Flot: http://code.google.com/p/flot/ The most obvious thing missing from it is a Pie chart which was added and [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using javascript libraries for charting lately. I find it works well wil ajax / jQuery pages very well instead of flash because they share variables and functions.The best Open Source one I could find was Flot: <a href="http://code.google.com/p/flot/">http://code.google.com/p/flot/ </a> The most obvious thing missing from it is a Pie chart which was added and updated in the forums of the project. The forums can be confusing, the files have been branched changed etc so many times and the thread style of the subject makes it very difficult. so here are the latest files I could gather that include pie, and my updates.</p>
<p><a href="http://anthong.com/examples/flot.pie.zip">http://anthong.com/examples/flot.pie.zip</a></p>
<p>Updates include:</p>
<p>Border Layout for labels: The labels are optionally on the outside of the cart square with lines pointing to the respective slice.</p>
<p>Donut Hole: Optionally set an inner radius for a hollow center.</p>
<p>Hover in IE: IE support for flot requires excanvas: <a href="http://excanvas.sourceforge.net/">http://excanvas.sourceforge.net/</a> but excanvas does not support a function that makes the hover easy (isPointInPath) so I added a workaround.</p>
<p>I hope this helps, I may make a full project page out of ALL of the flot updates + examples.</p>
<p>enjoy,</p>
<p>Anthony</p>
]]></content:encoded>
			<wfw:commentRss>http://SuddenDevelopment.com/?feed=rss2&amp;p=59</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Love / Hate of console.log</title>
		<link>http://SuddenDevelopment.com/?p=58</link>
		<comments>http://SuddenDevelopment.com/?p=58#comments</comments>
		<pubDate>Wed, 27 May 2009 15:44:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://SuddenDevelopment.com/?p=58</guid>
		<description><![CDATA[console.log is the most necessary debug tool for javascript ever, but it only works in FireFox with FireBug. Otherwise it gives you an error, could sabotage all of your other javascript. You could just comment them all out before releasing code. OR you can add a condition around it so that it only shows if [...]]]></description>
			<content:encoded><![CDATA[<p>console.log is the most necessary debug tool for javascript ever, but it only works in FireFox with FireBug. Otherwise it gives you an error, could sabotage all of your other javascript. You could just comment them all out before releasing code. OR you can add a condition around it so that it only shows if it won&#8217;t error. </p>
<p>For security reasons you may want to comment out the console.logs anyways, but it doesnt hurt to apply this method to make sure it never produces an error.</p>
<p>if(typeof console.log == &#8216;function&#8217;){ console.log(&#8216;your log string or object here&#8217;); }</p>
]]></content:encoded>
			<wfw:commentRss>http://SuddenDevelopment.com/?feed=rss2&amp;p=58</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Query Result to Hierarchial Array, almost too simple to post.</title>
		<link>http://SuddenDevelopment.com/?p=56</link>
		<comments>http://SuddenDevelopment.com/?p=56#comments</comments>
		<pubDate>Mon, 18 May 2009 18:10:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://SuddenDevelopment.com/?p=56</guid>
		<description><![CDATA[I thought I&#8217;d be spending a few hours creating a nice reusable way to turn a flat query result into a hierarchial array so I could use it on things like trees or HTML or whatever. When I wrote it out on paper though I felt stupid because the solution was extremely simple. Assume you [...]]]></description>
			<content:encoded><![CDATA[<p>I thought I&#8217;d be spending a few hours creating a nice reusable way to turn a flat query result into a hierarchial array so I could use it on things like trees or HTML or whatever. When I wrote it out on paper though I felt stupid because the solution was extremely simple.</p>
<p>Assume you have a query result or data like this:<br />
container1 parentA child11<br />
container1 parentA child12<br />
container1 parentB child13<br />
container2 parentC child14<br />
container2 parentC child15<br />
and so on.</p>
<p>every column represents a parent of the column to its right. Duplicates in the columsn let you know which things get grouped together. The solution to turn this into a hierarchy is:</p>
<p>$arrTree[container][parent][child]</p>
<p>you can follow the same pattern indefinately, change the values and the keys as needed. The simplicity in the solution is that by using the columns as the keys it automatically creates them as unique and puts the children under them correctly. I hope this save someone else the paper epiphany <img src='http://SuddenDevelopment.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://SuddenDevelopment.com/?feed=rss2&amp;p=56</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery CheckTree Update: start expanded or collapsed.</title>
		<link>http://SuddenDevelopment.com/?p=54</link>
		<comments>http://SuddenDevelopment.com/?p=54#comments</comments>
		<pubDate>Tue, 12 May 2009 19:26:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://SuddenDevelopment.com/?p=54</guid>
		<description><![CDATA[I&#8217;m having good success with the jQuery Checktree plugin which can be found here: http://static.geewax.org/checktree/ I added a config option that allows the tree to start collapsed or expanded. It defaults to the current behavior (Collapsed). In order to start with the checktree expanded define it like this: jQuery&#40;&#34;div#formMedia .checkTree&#34;&#41;.checkTree&#40;&#123; &#160; &#160; &#160; collapsedarrow: &#34;../collapsed.gif&#34;, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m having good success with the jQuery Checktree plugin which can be found here: http://static.geewax.org/checktree/</p>
<p>I added a config option that allows the tree to start collapsed or expanded. It defaults to the current behavior (Collapsed).</p>
<p>In order to start with the checktree expanded define it like this:</p>
<div class="dean_ch" style="white-space: wrap;">
jQuery<span class="br0">&#40;</span><span class="st0">&quot;div#formMedia .checkTree&quot;</span><span class="br0">&#41;</span>.<span class="me1">checkTree</span><span class="br0">&#40;</span><span class="br0">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; collapsedarrow: <span class="st0">&quot;../collapsed.gif&quot;</span>, &nbsp;<br />
&nbsp; &nbsp; expandedarrow: <span class="st0">&quot;../expanded.gif&quot;</span>, &nbsp;<br />
&nbsp; &nbsp; blankarrow: <span class="st0">&quot;../check0.gif&quot;</span> ,<br />
&nbsp; &nbsp; collapseOnInit: <span class="kw2">false</span><br />
<span class="br0">&#125;</span><span class="br0">&#41;</span> &nbsp;<br />
&nbsp;</div>
<p>The updated code can be found <a href="http://anthong.com/examples/jquery.checktree.zip">*here*</a></p>
]]></content:encoded>
			<wfw:commentRss>http://SuddenDevelopment.com/?feed=rss2&amp;p=54</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Config Defaults with OverRides pattern</title>
		<link>http://SuddenDevelopment.com/?p=48</link>
		<comments>http://SuddenDevelopment.com/?p=48#comments</comments>
		<pubDate>Fri, 27 Mar 2009 15:29:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://SuddenDevelopment.com/?p=48</guid>
		<description><![CDATA[This may be obvious to some, but I have approached the same problem in many different ways without thinking too much about it over the years. In an effort to write cleaner easier code to read I settled n a pattern I am happy with, so I&#8217;d like to share. The typical problem: You have [...]]]></description>
			<content:encoded><![CDATA[<p>This may be obvious to some, but I have approached the same problem in many different ways without thinking too much about it over the years. In an effort to write cleaner easier code to read I settled n a pattern I am happy with, so I&#8217;d like to share.</p>
<p>The typical problem: You have code (Language doesn&#8217;t matter much) that accepts a number parameters / inputs. You can;t always rely on those inputs being there, so you need to have defaults. There are several things to check for before going to your default settings. Might be check if the input exists, if it matches certain values, and if it&#8217;s a certain variable type.</p>
<p>you could end up writing it like this:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw2">&lt;?php</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&#8216;display&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&#8216;display&#8217;</span><span class="br0">&#93;</span> == <span class="st0">&#8216;[]&#8216;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$display</span> = <span class="st0">&#8216;default&#8217;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$display</span> = json_decode<span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&#8216;display&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="re0">$display</span> = <span class="st0">&#8216;default&#8217;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="kw2">?&gt;</span><br />
&nbsp;</div>
<p>it&#8217;s not THAT bad, but it definitely has more conditional branches than necessary, and when you have several variables to do that sort of thing to, it gets ugly fast.</p>
<p>the alternative I like is to set your default, run your check on the input, and only override the default if it passes all the checks. Like so:</p>
<div class="dean_ch" style="white-space: wrap;">
$display = <span class="st0">&#8216;default&#8217;</span>;<br />
<span class="kw1">if</span><span class="br0">&#40;</span>isset<span class="br0">&#40;</span>$_POST<span class="br0">&#91;</span><span class="st0">&#8216;display&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>$_POST<span class="br0">&#91;</span><span class="st0">&#8216;display&#8217;</span><span class="br0">&#93;</span> != <span class="st0">&#8216;[]&#8216;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $display = json_decode<span class="br0">&#40;</span>$_POST<span class="br0">&#91;</span><span class="st0">&#8216;display&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Then when you have several variables / inputs you can define all the defaults first and together in a &#8220;Configuration Defaults&#8221; section then have all of the input override check after.</p>
<p>Hopefully the process of writing this post will prevent me from ever using the much uglier method. Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://SuddenDevelopment.com/?feed=rss2&amp;p=48</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>more jqGrid patterns</title>
		<link>http://SuddenDevelopment.com/?p=45</link>
		<comments>http://SuddenDevelopment.com/?p=45#comments</comments>
		<pubDate>Fri, 20 Feb 2009 13:08:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://SuddenDevelopment.com/?p=45</guid>
		<description><![CDATA[I have been using jqGrid a lot, and thought I&#8217;d post a few of the solutions / hacks I came up with that were useful: /* replace grid values */ &#160; &#160; ,loadComplete: function&#40;&#41;&#123; &#160; &#160; &#160; &#160; var ids = jQuery&#40;&#34;#grid&#34;&#41;.getDataIDs&#40;&#41;; &#160; &#160; &#160; &#160; /* for each row loaded */ &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using jqGrid a lot, and thought I&#8217;d post a few of the solutions / hacks I came up with that were useful:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="coMULTI">/* replace grid values */</span><br />
&nbsp; &nbsp; ,loadComplete: <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> ids = jQuery<span class="br0">&#40;</span><span class="st0">&quot;#grid&quot;</span><span class="br0">&#41;</span>.<span class="me1">getDataIDs</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* for each row loaded */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw2">var</span> i=<span class="nu0">0</span>;i&lt;ids.<span class="me1">length</span>;i++<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> cl = ids<span class="br0">&#91;</span>i<span class="br0">&#93;</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* get the row data, this works best when you have to do this for multiple columns, otherwise you might use getCell &nbsp;*/</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> objRowData = jQuery<span class="br0">&#40;</span><span class="st0">&quot;#grid&quot;</span><span class="br0">&#41;</span>.<span class="me1">getRowData</span><span class="br0">&#40;</span>cl<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* for each column, give it a replacement or function that modifies the value */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jQuery<span class="br0">&#40;</span><span class="st0">&quot;#grid&quot;</span><span class="br0">&#41;</span>.<span class="me1">setRowData</span><span class="br0">&#40;</span>cl,<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ntlm:renderCheckmark<span class="br0">&#40;</span>objRowData.<span class="me1">ntlmHidden</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>
<span class="coMULTI">/* Allow resort of rows. */</span>&nbsp;&nbsp; &nbsp; <br />
&nbsp; &nbsp; ,loadComplete: <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; jQuery<span class="br0">&#40;</span><span class="st0">&quot;#grid&quot;</span><span class="br0">&#41;</span>.<span class="me1">tableDnD</span><span class="br0">&#40;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onDrop:<span class="kw2">function</span><span class="br0">&#40;</span>objTable,objRow<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* get the resulting order */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> rows = jQuery<span class="br0">&#40;</span><span class="st0">&#8216;#grid&#8217;</span><span class="br0">&#41;</span>.<span class="me1">getDataIDs</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
<span class="coMULTI">/* Add something in the middle of the navbar where the inserted position is relative to the &quot;eq(1)&quot; */</span><br />
jQuery<span class="br0">&#40;</span><span class="st0">&#8216;#gridPager td.nav-button:eq(1)&#8217;</span><span class="br0">&#41;</span>.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">&#8216;html stuff to add in&#8217;</span><span class="br0">&#41;</span>;</p>
<p><span class="coMULTI">/* Use the nav bar for buttons but hide the pager. CSS */</span><br />
#grid &nbsp;#first, #grid &nbsp;#prev, #grid &nbsp;input.<span class="me1">selbox</span>, #grid &nbsp;#sp_1, #grid &nbsp;#sp_2, #grid &nbsp;#next, #grid &nbsp;#last<span class="br0">&#123;</span>display:none;<span class="br0">&#125;</span><br />
&nbsp;</div>
<p>Only show the pager when there are enough rows to use it.</p>
<div class="dean_ch" style="white-space: wrap;">
,loadComplete: <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* Dynamically show the pager if it&#8217;s needed */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>jQuery<span class="br0">&#40;</span><span class="st0">&quot;#tableGroup&quot;</span><span class="br0">&#41;</span>.<span class="me1">getGridParam</span><span class="br0">&#40;</span><span class="st0">&quot;records&quot;</span><span class="br0">&#41;</span> &gt; jQuery<span class="br0">&#40;</span><span class="st0">&quot;#tableGroup&quot;</span><span class="br0">&#41;</span>.<span class="me1">getGridParam</span><span class="br0">&#40;</span><span class="st0">&quot;rowNum&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jQuery<span class="br0">&#40;</span><span class="st0">&#8216;#tableGroupPager&#8217;</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&#8216;#first, #prev, input.selbox, #sp_1, #sp_2, #next, #last&#8217;</span><span class="br0">&#41;</span>.<span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jQuery<span class="br0">&#40;</span><span class="st0">&#8216;#tableGroupPager&#8217;</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&#8216;#first, #prev, input.selbox, #sp_1, #sp_2, #next, #last&#8217;</span><span class="br0">&#41;</span>.<span class="me1">hide</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://SuddenDevelopment.com/?feed=rss2&amp;p=45</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP CRUD template for jqGrid</title>
		<link>http://SuddenDevelopment.com/?p=38</link>
		<comments>http://SuddenDevelopment.com/?p=38#comments</comments>
		<pubDate>Mon, 24 Nov 2008 19:50:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://SuddenDevelopment.com/?p=38</guid>
		<description><![CDATA[I have been using the JQuery for quite a while. JQuery does not have an official plugin for grids, there are several of them out there. I tried out a few and settled on jqGrid   I am very pleased with it in every way. I&#8217;ve used it in several projects and it&#8217;s always been [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using the JQuery for quite a while. JQuery does not have an official plugin for grids, there are several of them out there. I tried out a few and settled on <a href="http://www.trirand.com/blog/">jqGrid</a>   I am very pleased with it in every way. I&#8217;ve used it in several projects and it&#8217;s always been very flexible and extendable for my needs. I&#8217;ve been able to easily add after effects like color sorting, drag and drop reorder etc. with ease. Writing the PHP for the typical CRUD (Create Read Update Delete) functions is very easy but is so boring that I had to do SOMETHING that would both give me a bit of fun and give me smoething to make this part of the process faster for me in the future. So I have a .php template <a href="http://anthong.com/examples/jqGridCrud.zip">here</a>  with it, I can change a few variables around and apply it to any MySQL operation that interacts with jqGrid.</p>
<p>define</p>
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$crudColumns</span> = &nbsp;<a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; <span class="st0">&#8216;id&#8217;</span>=&gt;<span class="st0">&#8216;id&#8217;</span><br />
&nbsp; &nbsp; ,<span class="st0">&#8216;title&#8217;</span>=&gt;<span class="st0">&#8216;title&#8217;</span><br />
&nbsp; &nbsp; ,<span class="st0">&#8216;icon&#8217;</span>=&gt;<span class="st0">&#8216;icon&#8217;</span><br />
&nbsp; &nbsp; ,<span class="st0">&#8216;description&#8217;</span>=&gt;<span class="st0">&#8216;description&#8217;</span><br />
&nbsp; &nbsp; ,<span class="st0">&#8216;parent&#8217;</span>=&gt;<span class="st0">&#8216;parent_list_id&#8217;</span><br />
<span class="br0">&#41;</span>;<br />
<span class="re0">$crudTableName</span> = <span class="st0">&#8216;list&#8217;</span>;<br />
<span class="re0">$postConfig</span><span class="br0">&#91;</span><span class="st0">&#8216;id&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&#8216;id&#8217;</span>;</div>
<p>and it&#8217;ll create the select, search, paging, insert, update, delete interactions for jqGrid for you.<br />
it also has some convenient spots to edit the sql for additional column / query manipulation. At a minimum it should serve as a good starting point for working with jqGrid beyond the examples they provide (Which are very good and helpful already). If you have any updates or suggestions for this please let me know.<br />
-enjoy</p>
]]></content:encoded>
			<wfw:commentRss>http://SuddenDevelopment.com/?feed=rss2&amp;p=38</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>SimplePie RSS Feed library</title>
		<link>http://SuddenDevelopment.com/?p=33</link>
		<comments>http://SuddenDevelopment.com/?p=33#comments</comments>
		<pubDate>Wed, 12 Nov 2008 15:48:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://SuddenDevelopment.com/?p=33</guid>
		<description><![CDATA[SimplePie is a PHP development library for reading RSS. It&#8217;s amazingly simple, well documented and full featured. I have written 4 RSS readers for portals and virtual desktops using it, and it&#8217;s alsways been a pleasure to work with. Here is the link: http://simplepie.org/ When would you use this? Anytime you want to pull an [...]]]></description>
			<content:encoded><![CDATA[<p>SimplePie is a PHP development library for reading RSS. It&#8217;s amazingly simple, well documented and full featured. I have written 4 RSS readers for portals and virtual desktops using it, and it&#8217;s alsways been a pleasure to work with. Here is the link:</p>
<p>http://simplepie.org/</p>
<p>When would you use this? Anytime you want to pull an RSS feed into a page for a decision or display. Almost everything has an RSS feed. You can pull in multiple feeds, have them automatically cached and aggregated, and choose a sort method. It will also automatically find RSS feed URLs if you give it a URL to any site. Combine this with something like Dapper: http://www.dapper.net/ and there&#8217;s no limit to what you can integrate into your project!</p>
<p>Here&#8217;s some sample code to show how easy SimplePie is:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="kw2">&lt;?php</span><br />
<span class="kw1">require_once</span><span class="br0">&#40;</span><span class="st0">&#8216;SimplePie/simplepie.inc&#8217;</span><span class="br0">&#41;</span>;</p>
<p><span class="re0">$feed</span> = <span class="kw2">new</span> SimplePie<span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;http://suddendevelopment.com/?feed=rss2&#8242;</span>,<span class="st0">&#8216;http://LegalizeThought.com/?feed=rss2&#8242;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
<span class="re0">$feed</span>-&gt;<span class="me1">handle_content_type</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p><span class="re0">$htmlOut</span> = <span class="st0">&#8221;</span>;<br />
<span class="co1">//====|| Get RSS items for feed||====\\</span><br />
<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$feed</span>-&gt;<span class="me1">get_items</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">as</span> <span class="re0">$item</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
<span class="re0">$htmlOut</span> .= <span class="st0">&#8216;&lt;div class=&quot;rssItem&quot;&gt;&#8217;</span>;<br />
<span class="re0">$htmlOut</span> .=    <span class="st0">&#8216;&lt;div class=&quot;rssTitle&quot;&gt;&lt;a href=&quot;&#8217;</span>.<span class="re0">$item</span>-&gt;<span class="me1">get_permalink</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="st0">&#8216;&quot;&gt;&#8217;</span>.<span class="re0">$item</span>-&gt;<span class="me1">get_title</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="st0">&#8216;&lt;/a&gt;&lt;/div&gt;&#8217;</span>;<br />
<span class="re0">$htmlOut</span> .=    <span class="st0">&#8216;&lt;span class=&quot;rssDescription&quot;&gt;&#8217;</span>.<span class="re0">$item</span>-&gt;<span class="me1">get_description</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="st0">&#8216;&lt;br&gt;&lt;/span&gt;&#8217;</span>;<br />
<span class="re0">$htmlOut</span> .=    <span class="st0">&#8216;&lt;span class=&quot;rssDate&quot;&gt;&#8217;</span>.<span class="re0">$item</span>-&gt;<span class="me1">get_date</span><span class="br0">&#40;</span><span class="st0">&#8216;j F Y | g:i a&#8217;</span><span class="br0">&#41;</span>.<span class="st0">&#8216;&lt;/span&gt;&#8217;</span>;<br />
<span class="re0">$htmlOut</span> .= <span class="st0">&#8216;&lt;/div&gt;&#8217;</span>;<br />
<span class="br0">&#125;</span><br />
<a href="http://www.php.net/print"><span class="kw3">print</span></a> <span class="re0">$htmlOut</span>;</p>
<p><span class="kw2">?&gt;</span><br />
&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://SuddenDevelopment.com/?feed=rss2&amp;p=33</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrolling a large table with Fixed Horizontal and Vertical Headers</title>
		<link>http://SuddenDevelopment.com/?p=30</link>
		<comments>http://SuddenDevelopment.com/?p=30#comments</comments>
		<pubDate>Mon, 22 Sep 2008 14:34:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://SuddenDevelopment.com/?p=35</guid>
		<description><![CDATA[This was a fun little solution I thought was worthy of sharing. The Problem: You have a  very large grid. you need to display it on one page, but when you scroll you loose sight of the headers. The solutions: Create separate tables for the headers, put them in containers that hide the overflow, and [...]]]></description>
			<content:encoded><![CDATA[<p>This was a fun little solution I thought was worthy of sharing.</p>
<p>The Problem: You have a  very large grid. you need to display it on one page, but when you scroll you loose sight of the headers.</p>
<p>The solutions: Create separate tables for the headers, put them in containers that hide the overflow, and use slidersto control the scrolling.</p>
<p>Demo: http://anthong.com/examples/scrollxy/</p>
<p>References: http://demos.flesler.com/jquery/scrollTo/  http://docs.jquery.com/UI/Slider</p>
<p>Enjoy,</p>
<p>-Anthony</p>
]]></content:encoded>
			<wfw:commentRss>http://SuddenDevelopment.com/?feed=rss2&amp;p=30</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Build, Buy or Retrofit</title>
		<link>http://SuddenDevelopment.com/?p=29</link>
		<comments>http://SuddenDevelopment.com/?p=29#comments</comments>
		<pubDate>Sat, 28 Jun 2008 16:20:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://SuddenDevelopment.com/?p=34</guid>
		<description><![CDATA[Build vs. Buy is an old dilemma. I find the answer to be rather simple. If you find a product that: Meets all of your criteria Will not require modification to meet the criteria Is within your budget Then the choice is clear. Get that product and feel good about it. The obvious time to [...]]]></description>
			<content:encoded><![CDATA[<p>Build vs. Buy is an old dilemma. I find the answer to be rather simple. If you find a product that:</p>
<ol>
<li>Meets all of your criteria</li>
<li>Will not require modification to meet the criteria</li>
<li>Is within your budget</li>
</ol>
<p>Then the choice is clear. Get that product and feel good about it.</p>
<p>The obvious time to build is even more simple. If you can&#8217;t find anything that comes close to what you need, put your construction hat on.</p>
<p>The 3rd option is more complicated.  You will often not find any exact matches for your requirements, but you&#8217;ll find a few that are close. Then it will take some evaluation into how deep the changes will go into the original product. In general I advise AGAINST getting a product that you cannot use right away as intended. For many commercial products, you have much more leverage as a potential customer than a supported one. Present your issues to a sales engineer and make them come up with how their product will support your requirements, in writing.</p>
<p>If you decide to get a product and retrofit it to your needs, you are running some pretty high risks. The risks are:</p>
<ol>
<li>You will no longer be supported by the owners of that product.</li>
<li>You won&#8217;t be able to take advantage of future releases without retrofitting them as well.</li>
<li>Any published user extensions will not be compatible with your version with some added effort.</li>
<li>Over time you version is cannot be recognized or reconciled with the original.</li>
</ol>
<p>This can be an option if you want to jump start your development and have an appropriately sized full time development staff to maintain it for the rest of the products lifespan.</p>
<p>If you have a development team and a little more lead time to get your product ready, I suggest another approach.  Build your product from components that you don&#8217;t need to change. Evaluate several lower level applications and development frameworks to assemble exactly what you nee. This will allow you to still take advantage of upgrades and extensions for the various components while still meeting your very specific needs.</p>
<p>This advice comes from analyzing a lot of past experiences, I hope that it can be beneficail to someone else.</p>
]]></content:encoded>
			<wfw:commentRss>http://SuddenDevelopment.com/?feed=rss2&amp;p=29</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
