<?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>JoshSweeney &#187; WapSnap</title>
	<atom:link href="http://joshsweeney.com/category/wapsnap/feed/" rel="self" type="application/rss+xml" />
	<link>http://joshsweeney.com</link>
	<description>The Business Side of CRM</description>
	<lastBuildDate>Thu, 14 Jul 2011 15:58:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>SugarCRM: Where Are Global Email Settings Stored?</title>
		<link>http://joshsweeney.com/2009/03/sugarcrm-where-are-global-email-settings-stored/</link>
		<comments>http://joshsweeney.com/2009/03/sugarcrm-where-are-global-email-settings-stored/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 15:18:23 +0000</pubDate>
		<dc:creator>Josh Sweeney</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SugarCRM]]></category>
		<category><![CDATA[WapSnap]]></category>
		<category><![CDATA[global settings]]></category>

		<guid isPermaLink="false">http://joshsweeney.com/?p=371</guid>
		<description><![CDATA[While working on the GetSocial Twitter Pro module I had to add settings in the admin area that were stored in the database. The problem was that I didn&#8217;t know where the settings were getting stored. The module that I was modeling my section after in the first iteration was the EmailMan module which stored [...]]]></description>
			<content:encoded><![CDATA[<p>While working on the <a href="http://alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=22:getsocial-twitter-pro-for-sugarcrm&amp;catid=7:software&amp;Itemid=9">GetSocial Twitter Pro module</a> I had to <a href="http://joshsweeney.com/2009/03/sugarcrm-adding-custom-settings-to-the-admin-area/">add settings in the admin area that were stored in the database</a>. The problem was that I didn&#8217;t know where the settings were getting stored. The module that I was modeling my section after in the first iteration was the EmailMan module which stored most of its data in the emailman table.</p>
<p>I new that the global email settings were not stored in the emailman table based on the data that I entered and what I viewed in the table at the time. I also knew that I could have started debugging but it would have taken a while to comb through all the lines of code or to even pick a good breakpoint. Instead, again, <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> came to my rescue. I did a snapshot, changed the email settings, did a snapshot and then compared.</p>
<p>This immediately showed that the only thing that changed in my SugarCRM instance was the config table in the database. I opened up phpMyAdmin, looked at the config table and found where many of the global settings were stored.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshsweeney.com/2009/03/sugarcrm-where-are-global-email-settings-stored/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SugarCRM: A Deeper Look into Module Builder</title>
		<link>http://joshsweeney.com/2009/03/sugarcrm-a-deeper-look-into-module-builder/</link>
		<comments>http://joshsweeney.com/2009/03/sugarcrm-a-deeper-look-into-module-builder/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 19:58:12 +0000</pubDate>
		<dc:creator>Josh Sweeney</dc:creator>
				<category><![CDATA[SugarCRM]]></category>
		<category><![CDATA[WapSnap]]></category>
		<category><![CDATA[module builder]]></category>

		<guid isPermaLink="false">http://joshsweeney.com/?p=367</guid>
		<description><![CDATA[For many standard SugarCRM users Module Builder is  a black box that pops out custom modules as needed. But behind the scenes it is a complex code generator that builds every file and database that SugarCRM requires to create additional functionality. For those standard users it is a helpful tool that requires no PHP or [...]]]></description>
			<content:encoded><![CDATA[<p>For many standard SugarCRM users Module Builder is  a black box that pops out custom modules as needed. But behind the scenes it is a complex code generator that builds every file and database that SugarCRM requires to create additional functionality. For those standard users it is a helpful tool that requires no PHP or SugarCRM architecture knowledge. For the SugarCRM developer, Module Builder just leads to more questions. The core question be, what all does it change and create?</p>
<p>SugarCRM Module Builder is part of the reason that I started building <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a>. I needed an easier way to analyze what happens behind the scenes from a higher level than a debugger. Today with the <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> prototype I was able to take my first steps into easily detecting what Module Builder was doing when I hit the deploy button. Lets take a look at the first set of results.</p>
<p>For this analysis I created a package called test and a within that package a module called Books.</p>
<p><strong>The Files</strong></p>
<p><a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> detected that only 1 file was changed from before the deployment. That file was understandably the sugarcrm.log file.</p>
<p>Most of the work that Module Builder did was to create 56 new files, most of which fell into the custom/modulebuilder directory. A list of these files can be found at the end of this post.</p>
<p>A quick glance at the list of files will also show that most of the files in custom/modulebuilder are further broken down into two more core folders which are packages and builds. I plan to do further analysis but my first guess is that everything in packages is what will be used if a user chooses to Export or Publish the module. The builds folder is probably what is use by SugarCRM when the new module is deployed and used. But that info is yet to be verified.</p>
<p><strong>The Database</strong></p>
<p>Although most of the changes where made in the file structure, SugarCRM still depends heavily on information from the database. With the creation of this new module, <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> detected changes to 6 database tables and the creation of two new tables.</p>
<p>The tables that were changed where as follows:</p>
<p>acl_actions</p>
<p>config</p>
<p>relationships</p>
<p>upgrade_history</p>
<p>tracker</p>
<p>versions</p>
<p>The two new tables was, predictably, a table for the Books data and a table for the books audit trail which were as follows:</p>
<p>test_books</p>
<p>test_books_audit</p>
<p>The two table changes that I found interesting from the list are config and relationships. Mainly because I would like to see what config data gets added/changed/removed and because we didn&#8217;t add any relationships.</p>
<p>Once <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> moves into Beta we hope to be able to give you more in depth information about quickly detecting line by line files changes and filed by field database changes. Until then, feel free to deploy a module and use this file list for further analysis.</p>
<p><strong>Files Created</strong></p>
<p>/custom/themes/default/images/test_Books.gif</p>
<p>/custom/themes/default/images/icon_test_Books_32.gif</p>
<p>/custom/themes/default/images/icon_Test_Books.gif</p>
<p>/custom/themes/default/images/Createtest_Books.gif</p>
<p>/custom/modulebuilder/packages/test/modules/Books/vardefs.php  /custom/modulebuilder/packages/test/modules/Books/metadata/subpanels/default.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/relationships.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/metadata/SearchFields.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/metadata/sidecreateviewdefs.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/metadata/searchdefs.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/metadata/popupdefs.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/metadata/metafiles.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/metadata/listviewdefs.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/metadata/editviewdefs.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/metadata/detailviewdefs.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/metadata/dashletviewdefs.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/language/en_us.lang.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/Dashlets/test_BooksDashlet/test_BooksDashlet.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/Dashlets/test_BooksDashlet/test_BooksDashlet.meta.php</p>
<p>/custom/modulebuilder/packages/test/modules/Books/config.php  /custom/modulebuilder/packages/test/manifest.php</p>
<p>/custom/modulebuilder/packages/test/language/application/en_us.lang.php  /custom/modulebuilder/packages/test/icons/icon_test_Books_32.gif</p>
<p>/custom/modulebuilder/packages/test/icons/test_Books.gif</p>
<p>/custom/modulebuilder/packages/test/icons/Createtest_Books.gif  /custom/modulebuilder/packages/test/icons/icon_Test_Books.gif /custom/modulebuilder/builds/test/SugarModules/modules/test_Books/vardefs.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/test_Books_sugar.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/test_Books.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/subpanels/default.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/studio.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/sidecreateviewdefs.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/SearchFields.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/searchdefs.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/popupdefs.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/metafiles.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/listviewdefs.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/editviewdefs.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/detailviewdefs.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/metadata/dashletviewdefs.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/language/en_us.lang.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/Forms.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/Dashlets/test_BooksDashlet/test_BooksDashlet.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/modules/test_Books/Dashlets/test_BooksDashlet/test_BooksDashlet.meta.php</p>
<p>/custom/modulebuilder/builds/test/manifest.php</p>
<p>/custom/modulebuilder/builds/test/SugarModules/language/application/en_us.lang.php</p>
<p>/custom/modulebuilder/builds/test/LICENSE.txt</p>
<p>/custom/modulebuilder/builds/test/icons/default/images/test_Books.gif</p>
<p>/custom/modulebuilder/builds/test/icons/default/images/icon_test_Books_32.gif</p>
<p>/custom/modulebuilder/builds/test/icons/default/images/icon_Test_Books.gif</p>
<p>/custom/modulebuilder/builds/test/icons/default/images/Createtest_Books.gif</p>
<p>/custom/history/modulebuilder/packages/test/modules/Books/metadata/editviewdefs.php_1238005625</p>
<p>/custom/Extension/application/Ext/Language/en_us.test.php</p>
<p>/custom/Extension/application/Ext/Include/test.php</p>
<p>/custom/application/Ext/Include/modules.ext.php</p>
<p>/custom/application/Ext/Language/en_us.lang.ext.php</p>
]]></content:encoded>
			<wfw:commentRss>http://joshsweeney.com/2009/03/sugarcrm-a-deeper-look-into-module-builder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WapSnap: Snapshots and SugarCRM Tools</title>
		<link>http://joshsweeney.com/2009/03/wapsnap-snapshots-and-sugarcrm-tools/</link>
		<comments>http://joshsweeney.com/2009/03/wapsnap-snapshots-and-sugarcrm-tools/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 15:46:34 +0000</pubDate>
		<dc:creator>Josh Sweeney</dc:creator>
				<category><![CDATA[WapSnap]]></category>
		<category><![CDATA[snapshot]]></category>
		<category><![CDATA[sugarcrm wsdl]]></category>
		<category><![CDATA[wsdl browser]]></category>

		<guid isPermaLink="false">http://joshsweeney.com/?p=360</guid>
		<description><![CDATA[Since writing An Introduction to WapSnap the ALT-Invest team has made good progress in the current prototype. Once a few more areas get solidified and the application is installable it will be moving to the Alpha phase and made available to developers interested in providing thoughts and feature requests. For this installment I wanted to [...]]]></description>
			<content:encoded><![CDATA[<p>Since writing <a title="An Introduction To WapSnap" href="http://joshsweeney.com/2009/03/an-introduction-to-wapsnap/">An Introduction to WapSnap</a> the ALT-Invest team has made good progress in the current prototype. Once a few more areas get solidified and the application is installable it will be moving to the Alpha phase and made available to developers interested in providing thoughts and feature requests.</p>
<p>For this installment I wanted to highlight two sections of the product. The first being the snapshot options and the second being the built in SugarCRM tools area.</p>
<p>Snapshot Options</p>
<p>The image below is a row from the Instances section of the product that shows what application instances have been added to <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a>. The first three columns from left to right are Instance Name, Instance File Path, and Instance Database. These column show the data that is used by <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> in order to know where to pull data from when executing a snapshot.</p>
<p>The 5 images are where the functionality of <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> starts. In the application you can hover above any button and get a bubble with a description. The buttons from left to right are Snapshot files and database, Snapshot Database,  Snapshot Files, List Instances, and Delete. By browsing to list instances you can select the instances and start the comparison.</p>
<p><a href="http://joshsweeney.com/wp-content/uploads/2009/03/snapshot-options.jpg"><img class="aligncenter size-full wp-image-361" title="snapshot-options" src="http://joshsweeney.com/wp-content/uploads/2009/03/snapshot-options.jpg" alt="snapshot-options" width="534" height="38" /></a>Snapshoting the filesystem will make a full backup of the files and hash them for later comparison. Taking a snapshot of the database provides a table by table backup of the database along with table hashes for comparison. The table by table breakdown will allow <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> to quickly detect changes in and compare single tables including there structure and or the data within.</p>
<p>SugarCRM Tools</p>
<p>One new section that was very recently added was the tools section. Most developers that work with specific software packages often end up writing tools and scripts that are used daily to speed up development, troubleshooting, or other tasks. In the future we would like to give them the ability to add in their own tools but for now the <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> team will be providing them. The first tool is the SugarCRM SOAP Browser.</p>
<div id="attachment_362" class="wp-caption aligncenter" style="width: 783px"><a href="http://joshsweeney.com/wp-content/uploads/2009/03/sugar-wsdl-browser.jpg"><img class="size-full wp-image-362" title="WapSnap SugarCRM WSDL Browser" src="http://joshsweeney.com/wp-content/uploads/2009/03/sugar-wsdl-browser.jpg" alt="WapSnap SugarCRM WSDL Browser" width="773" height="146" /></a><p class="wp-caption-text">WapSnap SugarCRM WSDL Browser</p></div>
<p>With the WSDL browser you can quickly connect to a SugarCRM instance and get the modules available for integration via SOAP. Once you click Get WSDL you will be provided the list of modules. When a module is clicked you are provided the available fields for that module. We have found that the WSDL browser makes it easier to identify available sections in SugarCRM to integrate with and we hope that you discover the same.</p>
<p>We plan on adding more tools as we find things that are helpful to other developers. So please comment and let us know what features or tools can help streamline your efforts.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshsweeney.com/2009/03/wapsnap-snapshots-and-sugarcrm-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Introduction to WapSnap</title>
		<link>http://joshsweeney.com/2009/03/an-introduction-to-wapsnap/</link>
		<comments>http://joshsweeney.com/2009/03/an-introduction-to-wapsnap/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 19:16:34 +0000</pubDate>
		<dc:creator>Josh Sweeney</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SugarCRM]]></category>
		<category><![CDATA[WapSnap]]></category>
		<category><![CDATA[dev tools]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[snapshot]]></category>

		<guid isPermaLink="false">http://joshsweeney.com/?p=310</guid>
		<description><![CDATA[I have been actively Tweeting about WapSnap and speaking to various individuals about what it does. Today I determined that it was time for a proper introduction. WapSnap meet world, world meet WapSnap. Many of the intricacies about  WapSnap&#8216;s product positioning are still in limbo. For now all that I can say is that it [...]]]></description>
			<content:encoded><![CDATA[<p>I have been actively <a title="Twitter WapSnap" href="http://search.twitter.com/search?q=wapsnap">Tweeting about WapSnap</a> and speaking to various individuals about what it does. Today I determined that it was time for a proper introduction.</p>
<p><a title="WapSnap" href="http://www.alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=15:wapsnap&amp;catid=7:software&amp;Itemid=9">WapSnap</a> meet world, world meet <a title="WapSnap" href="http://www.alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=15:wapsnap&amp;catid=7:software&amp;Itemid=9">WapSnap</a>.</p>
<p>Many of the intricacies about  <a title="WapSnap" href="http://www.alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=15:wapsnap&amp;catid=7:software&amp;Itemid=9">WapSnap</a>&#8216;s product positioning are still in limbo. For now all that I can say is that it is a web based snaphsot and comparison utility that will compare both files, and databases to detect changes. Most peoples first response has been,  &#8220;doesn&#8217;t Git and SVN do that already?&#8221; My answer is, yes but only for the files.</p>
<p>The file comparison will be similar to a WinMerge and other comparison utilities like those built into Git. Where I would really like to differentiate is in the database comparison and manipulation area.   <a title="WapSnap" href="http://www.alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=15:wapsnap&amp;catid=7:software&amp;Itemid=9">WapSnap</a> will be able to compare databases all the way down to the field level in order to detect changes in applications. This leads to why I started building <a title="WapSnap" href="http://www.alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=15:wapsnap&amp;catid=7:software&amp;Itemid=9">WapSnap</a>.</p>
<p>Although others and myself attempt to use best practices when developing applications, sometimes developers end up working on the production box instead of doing an update from their favorite repository. This increases the risk of error and possibility of breaking production applications. The first response to this is to restore backups and risk losing data entered since the last backup. The alternative to backups is to track down the issue and try to fix it as quickly as possible. If you try to fix it the question will become, what all was changed? This is where <a title="WapSnap" href="http://www.alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=15:wapsnap&amp;catid=7:software&amp;Itemid=9">WapSnap</a> comes in. If you snapshot both the files and database before the changes are implemented then you narrow the search area to check for errors.</p>
<p>This becomes even more helpful for those using open source applications like <a href="http://www.joomla.org/" >Joomla</a> and SugarCRM. Through many discussions I have found that users of open source applications commonly work on production instances because it is easier, cheaper, faster, and the applications take plugins or modules that most think work out of the box and won&#8217;t break their system. Yet another example of <a title="WapSnap" href="http://www.alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=15:wapsnap&amp;catid=7:software&amp;Itemid=9">WapSnap</a>&#8216;s handiness is when someone installs a module, it breaks their app, then they uninstall and the app is still broken. <a title="WapSnap" href="http://www.alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=15:wapsnap&amp;catid=7:software&amp;Itemid=9">WapSnap</a> will easily let you detect the crumbs left behind in the file system and database so that they can be removed in less time that of what is needed to do a large restoration from backup.</p>
<p>Another huge benefit is that you learn more about the application. Take SugarCRM for instance, does anyone really know everything that happens behind the the scene we you use the Module Builder to build and deploy a custom module? Most people on the SugarCRM forums don&#8217;t and neither do I, most just speculate and build on past knowledge to guess what it is doing. The same goes for deploying 3rd party modules in any application.</p>
<p>Last but not least, where in the world does <a title="WapSnap" href="http://www.alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=15:wapsnap&amp;catid=7:software&amp;Itemid=9">WapSnap</a> comes from. I needed a name for a project that I was working on that took snapshots of web applications so I decided on W-Web, AP-Application, SNAP &#8211; Snapshot. Nothing special but it is staying until I come up with something better or decide to stick with it.</p>
<p>If you know of other tools that are helpful that have similar functionality please comment and let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshsweeney.com/2009/03/an-introduction-to-wapsnap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ease of WordPress, Documentation of CodeIgniter, and Support of NuSphere</title>
		<link>http://joshsweeney.com/2009/03/ease-of-wordpress-documentation-of-codeigniter-and-support-of-nusphere/</link>
		<comments>http://joshsweeney.com/2009/03/ease-of-wordpress-documentation-of-codeigniter-and-support-of-nusphere/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 11:29:57 +0000</pubDate>
		<dc:creator>Josh Sweeney</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[The Software Business]]></category>
		<category><![CDATA[WapSnap]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[ease of use]]></category>
		<category><![CDATA[Nusphere]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://joshsweeney.com/?p=291</guid>
		<description><![CDATA[Although I have yet to formally introduce WapSnap and release a Beta version, I have been thinking fairly in depth about how I would like a software company to be run if I decided to push WapSnap or any other project into the main stream. I have worked for multiple software companies and used enough [...]]]></description>
			<content:encoded><![CDATA[<p>Although I have yet to formally introduce <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> and release a Beta version, I have been thinking fairly in depth about how I would like a software company to be run if I decided to push <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> or any other project into the main stream. I have worked for multiple software companies and used enough products to believe that I can at a minimum spot what should and shouldn&#8217;t be done. Anything I miss will be an educational ride.</p>
<p><strong>Ease of Use</strong></p>
<p>When it comes to web based applications I do not know of any application that is as easy to use as WordPress. WordPress has always been well known for a straight forward installation that can get you blogging quickly. Although I cannot speak for myself, I have friends that have switched from developing websites and applications in <a href="http://www.joomla.org/" >Joomla</a> and Drupal over to WordPress because it is said to be very logical and easy to customize. With the introduction of the one click upgrade I can see how that would be so. One of the biggest problems I have seen in using open source solutions is that the script kiddies get the security updates when you do and usually they can write an exploit script before you can upgrade and test an application along with all of it&#8217;s 3rd party components.</p>
<p>With this information in hand I have decided that when my application rolls out that I would like it to have the ease of use of WordPress.</p>
<p><strong>Documentation</strong></p>
<p>Having to work on a poorly documented project or application has to be one of the biggest time waisters. When something isn&#8217;t documented well you spend most of your time debugging and chasing down answers in a forum instead of moving forward with what needs to get completed.</p>
<p>This is why I want <a title="CodeIgniter User Guide" href="http://codeigniter.com/user_guide/">documentation like CodeIgniter</a>. When I started searching for a PHP framework to pick up, I started by looking in the documentation section of each. First stop, the getting started guide, then to the full docs, and then to the forums to see the amount of threads that go without a response. When I got to <a href="http://www.codeigniter.com" >CodeIgniter</a> I started with the first <a title="CodeIgniter Video tutorials" href="http://codeigniter.com/tutorials/">video tutorial</a> which actually worked and was easy to follow. Wow what a concept, I say this sarcastically because this was not the case with many other frameworks that I tried.</p>
<p>Another positive of the <a href="http://www.codeigniter.com" >CodeIgniter</a> documentation is that it is easy to follow. Everything is separated out and named logically, this way if you do a search you are likely to find what you are looking for. I also enjoy that it doesn&#8217;t read like a 500 page manual and it isn&#8217;t a huge PDF that has to be churned through page by page. The <a href="http://www.codeigniter.com" >CodeIgniter</a> guide makes use of simple elements like line separators, code boxing, and bolding that makes the entire guide easy to read and follow.</p>
<p>With this information in hand I have decided that when my application rolls out that I would like it to have the documentation of <a href="http://www.codeigniter.com" >CodeIgniter</a>.</p>
<p><strong>Support</strong></p>
<p>I think that anyone who has been in the IT arena for any length of time understands what I mean by poor support.</p>
<p>This is when every time to call with a problem you only get a message machine.</p>
<p>This is when your SLA&#8217;s are never met and nobody seems to care.</p>
<p>This is when you post to a forum and nobody answers.</p>
<p>These all constitute poor support.</p>
<p><a href="http://www.nusphere.com/" >Nusphere</a> is one company that I have dealt with recently that has fantastic support. To start with, even before I bought <a href="http://www.nusphere.com/products/index.htm" >PHPed</a> I posted to the forum and quickly had a response. This has been the case for every forum post that I have added to the <a href="http://www.nusphere.com/" >Nusphere</a> site. Nobody ever asked if I was a customer,how many licenses I had, or did the tiered support two step. Another honorable mention from a recent voyage is <a href="http://www.slicehost.com/" >Slicehost</a>. <a href="http://www.slicehost.com/" >Slicehost</a> provided multiple support routes where I didn&#8217;t even need to open a ticket. I went to their chat channel and had a solution within minutes.</p>
<p>With this information in hand I have decided that when my application rolls out that I would like it to have support like <a href="http://www.nusphere.com/" >NuSphere</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshsweeney.com/2009/03/ease-of-wordpress-documentation-of-codeigniter-and-support-of-nusphere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SugarCRM Atlanta Meetup &#8211; Tips, Tricks, and Tools</title>
		<link>http://joshsweeney.com/2009/03/sugarcrm-atlanta-meetup-tips-tricks-and-tools/</link>
		<comments>http://joshsweeney.com/2009/03/sugarcrm-atlanta-meetup-tips-tricks-and-tools/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 21:06:03 +0000</pubDate>
		<dc:creator>Josh Sweeney</dc:creator>
				<category><![CDATA[Local Events]]></category>
		<category><![CDATA[SugarCRM]]></category>
		<category><![CDATA[WapSnap]]></category>
		<category><![CDATA[crm]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://joshsweeney.com/?p=305</guid>
		<description><![CDATA[At the February 20th SugarCRM Atlanta Meetup hosted by Dave Gearhart and myself, we discussed tips, tricks, and tools around SugarCRM. The presentation was mostly a compilation of a few recent blog posts that I have done including SugarCRM: Import Wizard Tips and SugarCRM: New User Tips. The tools section was made up of the [...]]]></description>
			<content:encoded><![CDATA[<p>At the February 20th SugarCRM Atlanta Meetup hosted by <a title="Dave Gearhart LinkedIn" href="http://www.linkedin.com/in/davidgearhart">Dave Gearhart</a> and myself, we discussed tips, tricks, and tools around SugarCRM. The presentation was mostly a compilation of a few recent blog posts that I have done including <a title="SugarCRM Import Wizard Tips" href="http://joshsweeney.com/2008/12/sugarcrm-import-wizard-tips/">SugarCRM: Import Wizard Tips</a> and <a title="SugarCRM New User Tips" href="http://joshsweeney.com/2008/12/sugarcrm-new-user-tips/">SugarCRM: New User Tips</a>. The tools section was made up of the typical who&#8217;s who of Firefox developer plugins with an additional plug for a recent project of mine called <a title="WapSnap" href="http://alt-invest.net/index.php?option=com_content&amp;view=article&amp;id=15:wapsnap&amp;catid=7:software&amp;Itemid=9">WapSnap</a>. The plug was mostly because the utility was started specifically to alleviate some pains in SugarCRM development that I and others seem to be having. Event Slides:</p>
<div id="__ss_1055790" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="SugarCRM: Tips Tricks And Tools" href="http://www.slideshare.net/altinvest/sugarcrm-tips-tricks-and-tools?type=powerpoint">SugarCRM: Tips Tricks And Tools</a><object width="425" height="355" data="http://static.slideshare.net/swf/ssplayer2.swf?doc=SugarCRMTipsTricksandTools-090221214452-phpapp02&amp;stripped_title=sugarcrm-tips-tricks-and-tools" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=SugarCRMTipsTricksandTools-090221214452-phpapp02&amp;stripped_title=sugarcrm-tips-tricks-and-tools" /><param name="allowfullscreen" value="true" /></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/altinvest">altinvest</a>. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/sugarcrmwapsnaptipstricks">sugarcrmwapsnaptipstricks</a>)</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://joshsweeney.com/2009/03/sugarcrm-atlanta-meetup-tips-tricks-and-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Steps with CodeIgniter and JQuery</title>
		<link>http://joshsweeney.com/2009/03/first-steps-with-codeigniter-and-jquery/</link>
		<comments>http://joshsweeney.com/2009/03/first-steps-with-codeigniter-and-jquery/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 20:52:40 +0000</pubDate>
		<dc:creator>Josh Sweeney</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[WapSnap]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[funkatron]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://joshsweeney.com/?p=292</guid>
		<description><![CDATA[When it came time to start adding some required AJAX functionality to WapSnap, I knew that hunting down and learning an AJAX/Javascript framework was going to be one of my most daunting tasks. I had played with YUI in the past with little success, likely due to my limited Javascript experience. After speaking with a [...]]]></description>
			<content:encoded><![CDATA[<p>When it came time to start adding some required AJAX functionality to <a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a>, I knew that hunting down and learning an AJAX/Javascript framework was going to be one of my most daunting tasks. I had played with YUI in the past with little success, likely due to my limited Javascript experience. After speaking with a few friends that are javascript experts I decided to start with <a href="http://www.jquery.com" >JQuery</a>.</p>
<p>To start with all I needed was callback functionality. Since the only tutorial on the <a href="http://www.jquery.com" >JQuery</a> tutorials page with callback in the title was <a title="AJAX Callbacks with JQuery" href="http://www.dreamdealer.nl/?action=viewTutorial&amp;id=67">AJAX Callbacks with JQuery</a>, naturally that is where I started. In this tutorial there is a get method that looks like this:</p>
<ol>
<li class="li1">
<div class="de1">$.<span class="me1">get</span><span class="br0">(</span><span class="st0">&#8220;giveMeSomething.php&#8221;</span>, <span class="br0">{</span> number1: number1, number2: number2 <span class="br0">}</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span><span class="br0">(</span>data<span class="br0">)</span><span class="br0">{</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">(</span><span class="st0">&#8220;Data Loaded: &#8220;</span> + data<span class="br0">)</span>;</div>
</li>
</ol>
<p>The problem with the way this is written is that like the page the tutorial is hosted on, it generates ugly URLs.</p>
<p><a href="http://alt-invest.net/index.php?option=com_content&view=article&id=15:wapsnap&catid=7:software&Itemid=9" >WapSnap</a> is built on the <a href="http://www.codeigniter.com" >CodeIgniter</a> framework which in the default installation means that you do not use hideously formatted parameters in the URL such as ?id=1&amp;type=2. In CI ( <a href="http://www.codeigniter.com" >CodeIgniter</a> ) the example just given could look like /1/2 or /id/1/type/2. This structure which I find more enjoyble and visually appealing became my first problem with the mentioned article.</p>
<p>The code snippet shown automatically adds a question mark after the GET url and then formats and appends the data in the second parameter. This instantly caused a problem which lead me to a good bit of searching. After Google didn&#8217;t return enough entry level help for my searches I turned to the <a href="http://www.jquery.com" >JQuery</a> IRC channel which resulted in a solution.</p>
<p>For anyone else that may be looking for a solution to searches like &#8220;remove ? from get request in <a href="http://www.jquery.com" >JQuery</a>&#8221; or &#8220;remove question mark from get request in <a href="http://www.jquery.com" >JQuery</a>&#8221; The solution for me was to append the variable in the first parameter and leave out the second parameter. Which resulted in the following:</p>
<p>var db_id = $(&#8216;#db_server&#8217;).attr(&#8216;value&#8217;);</p>
<p>$.get(&#8220;ajax/getdatabases/&#8221; + db_id, function(data)<br />
{</p>
<p>Now that the URL was being requested correctly I needed to parse the data returned. More searching lead to a <a href="http://www.funkatron.com" >funkatron</a> article: <a title="Safely Parsing JSON in Javascript" href="http://funkatron.com/site/comments/safely-parsing-json-in-javascript/">Safely Parsing JSON In Javascript</a>. For those of you who don&#8217;t know <a href="http://www.funkatron.com" >Funkatron</a>, he is a well know PHP speaker, creator of Spaz the open source Twitter client, and a hilarious and helpful guy. He actually gave me my first <a href="http://www.codeigniter.com" >CodeIgniter</a> lesson on the floor at PHP | Works 08. With this article I was able to quickly and easily parse the JSON data sent back from my PHP page, something that wasn&#8217;t so easy when I first tried YUI a few months ago.</p>
<p>While I was debugging with Firebug I noticed that as a Javascript noob the errors weren&#8217;t as helpful as they could have been so I searched for a Javascript syntax checker. I immediately found <a title="JSLint" href="http://www.jslint.com">JSLint</a> which gave a little more in depth errors.</p>
]]></content:encoded>
			<wfw:commentRss>http://joshsweeney.com/2009/03/first-steps-with-codeigniter-and-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

