<?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>Redink Design</title>
	<atom:link href="http://redinkdesign.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://redinkdesign.net</link>
	<description>Good code is its own best documentation</description>
	<lastBuildDate>Mon, 07 Jun 2010 13:48:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Remove (Hide) a SugarCRM Subpanel</title>
		<link>http://redinkdesign.net/open-source/remove-hide-a-sugarcrm-subpanel/</link>
		<comments>http://redinkdesign.net/open-source/remove-hide-a-sugarcrm-subpanel/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 11:11:43 +0000</pubDate>
		<dc:creator>Ashwin Surajbali</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SugarCRM]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[You can hide a SubPanel in an upgrade safe way but unsetting the subpanel via PHP. 

Example:

You can hid the Leads SubPanel into Accounts module by customizing the custom/modules/Accounts/Ext/Layoutdefs/layoutdefs.ext.php, which is a upgrade safe customization. Add the following to the end of the file, before the closing PHP tag.

<code>
unset($layout_defs['Accounts']['subpanel_setup']['leads']);
</code]]></description>
			<content:encoded><![CDATA[<p>You can hide a SubPanel in an upgrade safe way but unsetting the subpanel via PHP.</p>
<p>Example:</p>
<p>You can hid the Leads SubPanel into Accounts module by customizing the custom/modules/Accounts/Ext/Layoutdefs/layoutdefs.ext.php, which is a upgrade safe customization. Add the following to the end of the file, before the closing PHP tag.</p>
<pre class="brush: php;">
unset($layout_defs['Accounts']['subpanel_setup']['leads']);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://redinkdesign.net/open-source/remove-hide-a-sugarcrm-subpanel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remove SugarCRM Custom Relationship</title>
		<link>http://redinkdesign.net/open-source/remove-sugarcrm-custom-relationship/</link>
		<comments>http://redinkdesign.net/open-source/remove-sugarcrm-custom-relationship/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 11:01:21 +0000</pubDate>
		<dc:creator>Ashwin Surajbali</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SugarCRM]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[After searching for a while, I finally found out how to manually delete or remove a sugar crm relationship that was created in studio.  I tested this on Sugar 5.2 Professional and it seems to work just fine. Use at your own risk.

When you create a new relationship through Admin -&#62; Studio -&#62;  -&#62; Relationships, Sugar create several files at custom folders:

Left Side Hand Relationship (module from which you created the relationship):
custom/Extension/modules//Ext/Vardefs/.php
]]></description>
			<content:encoded><![CDATA[<p>After searching for a while, I finally found out how to manually delete or remove a sugar crm relationship that was created in studio.  I tested this on Sugar 5.2 Professional and it seems to work just fine. Use at your own risk.</p>
<p>When you create a new relationship through Admin -&gt; Studio -&gt;  -&gt; Relationships, Sugar create several files at custom folders:<br />
<strong><br />
Left Side Hand Relationship (module from which you created the relationship):</strong><br />
custom/Extension/modules/{moduleName}/Ext/Vardefs/{relationshipName}.php<br />
custom/Extension/modules/{moduleName}/Ext/Layoutdefs/{relationshipName}.php<br />
custom/Extension/modules/{moduleName}/Ext/Language/{relationshipName}.php</p>
<p><strong>Right Side Hand Relationship:</strong><br />
custom/Extension/modules/{moduleName}/Ext/Vardefs/{relationshipName}.php<br />
custom/Extension/modules/{moduleName}/Ext/Language/{relationshipName}.php</p>
<p><strong>Relationship itself:</strong><br />
custom/metadata/{relationshipName}Meta.php</p>
<p><strong>Table Dictionary:</strong><br />
custom/Extension/application/Ext/TableDictionary/{relationshipName}.php</p>
<p><strong>Edit</strong> custom/application/Ext/TableDictionary/tabledictionary.ext.php file and delete include(&#8216;custom/metadata/{relationshipName}.php&#8217;);</p>
<p>To remove the relationship, you need to delete these files. After removing all these files you should need to go to <strong>Admin -&gt; Repair -&gt; Quick Repair and Rebuild</strong></p>
<p>Original post:</p>
<p>http://www.sugarcrm.com/forums/showthread.php?t=37781</p>
]]></content:encoded>
			<wfw:commentRss>http://redinkdesign.net/open-source/remove-sugarcrm-custom-relationship/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vBulletin Social Group Icons in Postbit</title>
		<link>http://redinkdesign.net/open-source/vbulletin/vbulletin-social-group-icons-in-postbit/</link>
		<comments>http://redinkdesign.net/open-source/vbulletin/vbulletin-social-group-icons-in-postbit/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 12:54:13 +0000</pubDate>
		<dc:creator>Ashwin Surajbali</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SugarCRM]]></category>
		<category><![CDATA[vBulletin]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Here's a quick plugin I wrote for vBulletin to display social group icons on the postbit. The social group icon for each public social group the user belongs to will be displayed. Please see attachment.

To install, just import the plugin via the admin panel.

This plugin was only tested on vBulletin 3.8 on http://www.b15u.com. Please use at your own risk]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a quick plugin I wrote for vBulletin to display social group icons on the postbit. The social group icon for each public social group the user belongs to will be displayed. Please see attachment.</p>
<p>To install, just import the plugin via the admin panel.</p>
<p>This plugin was only tested on vBulletin 3.8 on http://www.b15u.com. Please use at your own risk.</p>
<p><a href="http://redinkdesign.net/files/2009/12/redinkdesign-socialgroupicons-plugin.xml">Click here to download the Social Group Icons Plugin</a></p>
<p><a href="http://redinkdesign.net/files/2009/12/icons.jpg"><img class="alignnone size-full wp-image-82" title="icons" src="http://redinkdesign.net/files/2009/12/icons.jpg" alt="" width="108" height="352" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://redinkdesign.net/open-source/vbulletin/vbulletin-social-group-icons-in-postbit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WTFUX.net</title>
		<link>http://redinkdesign.net/clients-projects/wtfux-net/</link>
		<comments>http://redinkdesign.net/clients-projects/wtfux-net/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 15:02:22 +0000</pubDate>
		<dc:creator>Ashwin Surajbali</dc:creator>
				<category><![CDATA[Clients & Projects]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[http://www.wtfux.net

<a href="http://www.wtfux.net.net"><img src="/images/wtfux.jpg" /></a]]></description>
			<content:encoded><![CDATA[<p>http://www.wtfux.net</p>
<p><a href="http://www.wtfux.net"><img src="/images/wtfux.jpg" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://redinkdesign.net/clients-projects/wtfux-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>B15U.com</title>
		<link>http://redinkdesign.net/clients-projects/b15u-com/</link>
		<comments>http://redinkdesign.net/clients-projects/b15u-com/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 15:01:50 +0000</pubDate>
		<dc:creator>Ashwin Surajbali</dc:creator>
				<category><![CDATA[Clients & Projects]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[http://www.b15u.com

<a href="http://www.b15u.met"><img src="/images/b15u.jpg" /></a]]></description>
			<content:encoded><![CDATA[<p>http://www.b15u.com</p>
<p><a href="http://www.b15u.com"><img src="/images/b15u.jpg" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://redinkdesign.net/clients-projects/b15u-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reggae Torrents</title>
		<link>http://redinkdesign.net/clients-projects/reggae-torrents/</link>
		<comments>http://redinkdesign.net/clients-projects/reggae-torrents/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 14:59:41 +0000</pubDate>
		<dc:creator>Ashwin Surajbali</dc:creator>
				<category><![CDATA[Clients & Projects]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[http://www.reggaetorrents.net

<a href="http://www.reggaetorrents.net"><img src="/images/reggaetorrents.jpg" /></a]]></description>
			<content:encoded><![CDATA[<p>http://www.reggaetorrents.net</p>
<p><a href="http://www.reggaetorrents.net"><img src="/images/reggaetorrents.jpg" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://redinkdesign.net/clients-projects/reggae-torrents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP MSSQL Class</title>
		<link>http://redinkdesign.net/programming/ms-sql-class/</link>
		<comments>http://redinkdesign.net/programming/ms-sql-class/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 16:03:19 +0000</pubDate>
		<dc:creator>Ashwin Surajbali</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[This code is still beta, use at your own risk.

<code>

__db_host = $host;
			$this-&#62;__db_username = $username;
			$this-&#62;__db_password = $password;
			$this-&#62;__db_name = $db_name;

			$this-&#62;connect();
		}

		/**
		 * Initialize our table object
]]></description>
			<content:encoded><![CDATA[<p>This code is still beta, use at your own risk.</p>
<pre class="brush: php;">
&lt;?php
/**
	All code is Copyright 2009 by Ashwin Surajbali (http://www.redinkdesign.net).

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation.

	This program is distributed in the hope that it will be useful, but
	WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
	or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
	for more details.

	You can view a copy of the GNU General Public Licsense at

http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.

**/

	class redDB {

		private $__db_host;
		private $__db_username;
		private $__db_password;
		private $__db_name;
		private $__db_handle;

		private $__sql;
		private $__table_name;
		private $__result;

		function __construct($host, $username, $password, $db_name, $db_handle = ''){

			if (empty($db_handle)){
				$this-&gt;__db_host = $host;
				$this-&gt;__db_username = $username;
				$this-&gt;__db_password = $password;
				$this-&gt;__db_name = $db_name;
				$this-&gt;connect();
			}else{
				$this-&gt;__db_handle = $db_handle;
			}
		}

		/**
		 * Initialize our table object
		 *
		 * @example $this-&gt;init('users_table');
		 *
		 * @param string $table
		 * @return object
		 */
		public function init($table = ''){
			if(empty($table)){
				$this-&gt;throw_error(__METHOD__, __LINE__, 'No table name specified.');
			}

			$this-&gt;__table_name = $table;

			$ar_fields = $this-&gt;get_table_fields();

			if (!is_array($ar_fields)) {
				$this-&gt;throw_error(__METHOD__, __LINE__, &quot;ERROR: Table '{$this-&gt;__table_name}' has no fields.&quot;);
			}

			foreach ($ar_fields as $field){

				switch ($field-&gt;type){
					case &quot;INTEGER&quot;:
					case &quot;TINYINT&quot;:
					case &quot;SMALLINT&quot;:
					case &quot;MEDIUMINT&quot;:
						$this-&gt;{$field-&gt;name} = 0;
						break;
					case &quot;NUMERIC&quot;:
					case &quot;FLOAT&quot;:
					case &quot;DECIMAL&quot;:
						$this-&gt;{$field-&gt;name} = 0.00;
						break;
					default:
						$this-&gt;{$field-&gt;name} = '';
						break;
				}

				if (!empty($field-&gt;def)) {
					$this-&gt;{$field-&gt;name} = $field-&gt;def;
				}

			}

			return $this;
		}

		/**
		 * Alias for @link init
		 *
		 * @param string $table
		 * @return object
		 */
		public function init_table($table){
			return $this-&gt;init($table);
		}

		/**
		 * Returns a single record as a table object depending on
		 * constraint passed in
		 *
		 * @example $this-&gt;get_single_record(&quot;id = 22&quot;);
		 *
		 * @param string $constraint
		 * @return object
		 */
		public function get_single_record($constraint = ''){
			if (empty($this-&gt;__table_name)){
				$this-&gt;throw_error(__METHOD__, __LINE__,  &quot;You must initialize a table before retrieving a record.&quot;);
			}

			if (empty($constraint)){
				$this-&gt;throw_error(__METHOD__, __LINE__,  &quot;No constraint entered.&quot;);
			}

			$this-&gt;__sql = &quot;select top 1 * from {$this-&gt;__table_name} where {$constraint}&quot;;
			return $this-&gt;get_single_result();

		}

		/**
		 * Alias for @link get_single_record
		 *
		 * @param string $constraint
		 * @return object
		 */
		public function get($constraint){
			return $this-&gt;get_single_record($constraint);
		}

		/**
		 * Inserts a new record or updates if it already exists
		 * Use this for quick updates/inserts
		 *
		 * For custom updates, use @link update
		 *
		 * @return boolean
		 */
		public function save(){

			$duplicate_sql = '';
			$this-&gt;__sql = &quot;insert into {$this-&gt;__table_name} values (&quot;;
			foreach ($this as $key =&gt; $val){
				if (substr($key, 0, 2) == '__'){
					continue;
				}
				$this-&gt;__sql .= &quot;'{$this-&gt;escape($val)}'&quot; . ',';
			}
			$this-&gt;__sql = trim($this-&gt;__sql, ',');
			$this-&gt;__sql .= &quot;)&quot;;

			return $this-&gt;execute_query($this-&gt;__sql);
		}

		public function insert(){
			return $this-&gt;save();
		}

		/**
		 * Updates an existing record depending on custom constraints
		 * Use this for complex updates instead of @link save
		 *
		 * @param string $where_constraint
		 * @return boolean
		 */
		public function update($where_constraint = ''){
			if (empty($where_constraint)){
				$this-&gt;throw_error(__METHOD__, __LINE__, 'Missing WHERE constraint. eg. ID = 222');
			}

			$this-&gt;__sql = &quot;update {$this-&gt;__table_name} set &quot;;
			foreach ($this as $key =&gt; $val){
				if (substr($key, 0, 2) == '__'){
					continue;
				}
				$this-&gt;__sql .= &quot;{$key} = '{$this-&gt;escape($val)}'&quot; . ',';
			}
			$this-&gt;__sql = trim($this-&gt;__sql, ',');
			$this-&gt;__sql .= ' where ' . $where_constraint;

			return $this-&gt;execute_query($this-&gt;__sql);
		}

		/**
		 * Executes a query
		 *
		 * @param string $query
		 * @return boolean
		 */
		public function execute_query($query){
			$this-&gt;__sql = $query;
			if(!$this-&gt;query($this-&gt;__sql)){
				$this-&gt;throw_error(__METHOD__, __LINE__);
			}
			return true;
		}

		/**
		 * Send out a query and return the first field of the first result row
		 * eg. select count(*) as count from blah; only the value of count will be returned
		 *
		 * @param string $query
		 * @return string return value of query
		 */
		public function get_query_value($query){
			if (empty($query)) $this-&gt;throw_error(__METHOD__, __LINE__, 'Query missing.');

			$this-&gt;__sql = $query;
			$this-&gt;__result = $this-&gt;query($this-&gt;__sql);
			if (!$this-&gt;__result){
				$this-&gt;throw_error(__METHOD__, __LINE__);
			}

			$ar_result = mssql_fetch_array($this-&gt;__result);
			if (!empty($ar_result[0])){
				return $ar_result[0];
			}else{
				return false;
			}
		}

		/**
		 * Get data from the initialized table depending on constraint, limit and order
		 * Returns results in an array of objects
		 *
		 * @param string $constraint - optional
		 * @param string $limit - optional
		 * @param string $order_by - optional
		 * @return array of objects
		 */
		public function get_data($constraint = '', $limit = '', $order_by = ''){
			if (empty($this-&gt;__table_name)) $this-&gt;throw_error(__METHOD__, __LINE__, 'Table missing.');

			$this-&gt;__sql = &quot;select &quot; . (!empty($limit)? &quot; top {$this-&gt;escape($limit)}&quot; : '') . &quot; * from {$this-&gt;__table_name}&quot; . (!empty($constraint)? &quot; where {$constraint}&quot; : '') . (!empty($order_by)? &quot; order by {$this-&gt;escape($order_by)}&quot; : '');
			$this-&gt;__result = $this-&gt;query($this-&gt;__sql);
			if (!$this-&gt;__result){
				$this-&gt;throw_error(__METHOD__, __LINE__);
			}

			$ar_results = array();
			while($obj = mssql_fetch_object($this-&gt;__result)){
				$ar_results[] = $obj;
			}

			if (is_array($ar_results)){
				return $ar_results;
			}else{
				return false;
			}
		}

		/**
		 * Runs a query and returns results in an array of objects
		 *
		 * @param string $query
		 * @return array
		 */
		public function get_query_data($query){
			if (empty($query)) $this-&gt;throw_error(__METHOD__, __LINE__, &quot;Query missing.&quot;);

			$this-&gt;__sql = $query;
			$this-&gt;__result = $this-&gt;query($this-&gt;__sql);
			if(!$this-&gt;__result){
				$this-&gt;throw_error(__METHOD__, __LINE__);
			}

			$ar_results = array();
			while ($obj = mssql_fetch_object($this-&gt;__result)){
				$ar_results[] = $obj;
			}

			if (is_array($ar_results)){
				return $ar_results;
			}else{
				return false;
			}
		}

		/**
		 * Escapes special characters in a string for use in a SQL statement
		 *
		 * @param string $string
		 * @return string
		 */
		public function escape($string){
			return str_replace(&quot;'&quot;, &quot;''&quot;, $string);
		}

		/**
		 * Gets the sql statement that was executed
		 *
		 * @return string
		 */
		public function get_sql(){
			return $this-&gt;__sql;
		}

		/**
		 * Gets the number of rows in a result
		 *
		 * @return int
		 */
		public function get_num_rows(){
			return mssql_num_rows($this-&gt;__result);
		}

		/**
		 * Gets the number of affected rows in a previous MySQL operation
		 * Returns an integer greater than zero which indicated the number of rows affected or retrieved.
		 * Zero indicates that no records where updated for an UPDATE statement,
		 * no rows matched the WHERE clause in the query or that no query has yet been executed.
		 * -1 indicates that the query returned an error.
		 *
		 * @return int
		 */
		public function get_affected_rows(){
			return mssql_rows_affected($this-&gt;__db_handle);
		}

		private function connect(){
			if (!$this-&gt;__db_handle = mssql_connect($this-&gt;__db_host, $this-&gt;__db_username, $this-&gt;__db_password)){
				$this-&gt;throw_error(__METHOD__, __LINE__, 'Could not connect to SQL server.');
			}

			if (!mssql_select_db($this-&gt;__db_name, $this-&gt;__db_handle)){
				$this-&gt;throw_error(__METHOD__, __LINE__, 'Could not select database ' . $this-&gt;__db_name);
			}
		}

		private function get_single_result(){
			$this-&gt;__result = $this-&gt;query($this-&gt;__sql);
			if (!$this-&gt;__result){
				$this-&gt;throw_error(__METHOD__, __LINE__);
			}

			$ob_record = mssql_fetch_object($this-&gt;__result);
			if (is_object($ob_record)){
				foreach($ob_record as $key =&gt; $value){
					$this-&gt;{$key} = $value;
				}
				return $this;
			}else{
				return false;
			}
		}

		private function get_table_fields(){
			$this-&gt;__sql = &quot;select top 1 * from {$this-&gt;escape($this-&gt;__table_name)}&quot;;

			$this-&gt;__result = mssql_query($this-&gt;__sql, $this-&gt;__db_handle);

			if (!$this-&gt;__result){
				$this-&gt;throw_error(__METHOD__, __LINE__,'Could not fetch table fields.');
			}

			for ($i = 0; $i &lt; mssql_num_fields($this-&gt;__result); $i++){
				$field = mssql_fetch_field($this-&gt;__result, $i);
				$ar_fields[$field-&gt;name]-&gt;name = $field-&gt;name;
				$ar_fields[$field-&gt;name]-&gt;type = strtoupper($field-&gt;type);
				$ar_fields[$field-&gt;name]-&gt;max_length = $field-&gt;max_length;
				$ar_fields[$field-&gt;name]-&gt;column_source = $field-&gt;column_source;
				$ar_fields[$field-&gt;name]-&gt;numeric = $field-&gt;numeric;
			}

			if (count($ar_fields) &gt; 0){
				return $ar_fields;
			}else{
				$this-&gt;throw_error(__METHOD__, __LINE__, &quot;No columns found for table {$this-&gt;__table_name}.&quot;);
			}

		}

		private function query($query){
			$this-&gt;__result = mssql_query($query, $this-&gt;__db_handle);
			return $this-&gt;__result;
		}

		private function throw_error($function_name, $line_number, $error_msg = ''){
			die('&lt;font style=&quot;color: red; font-weight: bold;&quot;&gt;-- Error --&lt;/font&gt;&lt;br /&gt;' . $function_name . ' at line ' . $line_number . '&lt;br /&gt;' . (!empty($error_msg)? &quot;&lt;br /&gt;Message: $error_msg&quot; : &quot;Invalid Query: {$this-&gt;__sql}&quot;));
		}

	}
?&gt;
</pre>
<p>All code is Copyright 2009 by Ashwin Surajbali (http://www.redinkdesign.net).</p>
<p>This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation.</p>
<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of ERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.</p>
<p>You can view a copy of the GNU General Public Licsense at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.</p>
]]></content:encoded>
			<wfw:commentRss>http://redinkdesign.net/programming/ms-sql-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wootley.com</title>
		<link>http://redinkdesign.net/clients-projects/wootley-com/</link>
		<comments>http://redinkdesign.net/clients-projects/wootley-com/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 17:10:52 +0000</pubDate>
		<dc:creator>Ashwin Surajbali</dc:creator>
				<category><![CDATA[Clients & Projects]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[http://www.wootley.com

<a href="http://www.wootley.com"><img src="/images/wootley.jpg" /></a]]></description>
			<content:encoded><![CDATA[<p>http://www.wootley.com</p>
<p><a href="http://www.wootley.com"><img src="/images/wootley.jpg" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://redinkdesign.net/clients-projects/wootley-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OnLively.com</title>
		<link>http://redinkdesign.net/clients-projects/onlively-com/</link>
		<comments>http://redinkdesign.net/clients-projects/onlively-com/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 13:50:01 +0000</pubDate>
		<dc:creator>Ashwin Surajbali</dc:creator>
				<category><![CDATA[Clients & Projects]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[A simple news aggregator for the OnLive gaming system. 

<a href="http://www.onlively.com"><img src="http://www.redinkdesign.net/images/onlively.jpg" /></a>

http://www.onlively.com]]></description>
			<content:encoded><![CDATA[<p>A simple news aggregator for the OnLive gaming system. </p>
<p><a href="http://www.onlively.com"><img src="http://www.redinkdesign.net/images/onlively.jpg" /></a></p>
<p>http://www.onlively.com</p>
]]></content:encoded>
			<wfw:commentRss>http://redinkdesign.net/clients-projects/onlively-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery vs. MooTools</title>
		<link>http://redinkdesign.net/programming/jquery-vs-mootools/</link>
		<comments>http://redinkdesign.net/programming/jquery-vs-mootools/#comments</comments>
		<pubDate>Wed, 20 May 2009 14:53:39 +0000</pubDate>
		<dc:creator>Ashwin Surajbali</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA["Most people getting started with JavaScript these days are faced with the challenging task of picking a library to use, or at least which one to learn first. If you're working for a company chances are they have already chosen a framework for you, in which case the point is somewhat moot. If this is the case and they've chosen MooTools and you're used to jQuery, then this article might still be of some use to you. "

Written by Aaron Newton

Article here:
http://jqueryvsmootools.com]]></description>
			<content:encoded><![CDATA[<p>&#8220;Most people getting started with JavaScript these days are faced with the challenging task of picking a library to use, or at least which one to learn first. If you&#8217;re working for a company chances are they have already chosen a framework for you, in which case the point is somewhat moot. If this is the case and they&#8217;ve chosen MooTools and you&#8217;re used to jQuery, then this article might still be of some use to you. &#8221;</p>
<p>Written by Aaron Newton</p>
<p>Article here:</p>
<p>http://jqueryvsmootools.com/</p>
]]></content:encoded>
			<wfw:commentRss>http://redinkdesign.net/programming/jquery-vs-mootools/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
