<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Bits, Bytes, and Beats</title>
	<atom:link href="http://teknophyl.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://teknophyl.wordpress.com</link>
	<description>on technology, development, and humanity.</description>
	<lastBuildDate>Fri, 29 Apr 2011 19:00:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='teknophyl.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Bits, Bytes, and Beats</title>
		<link>http://teknophyl.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://teknophyl.wordpress.com/osd.xml" title="Bits, Bytes, and Beats" />
	<atom:link rel='hub' href='http://teknophyl.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Windows Authorization and Custom URL Redirection in SalesLogix 7.5.2</title>
		<link>http://teknophyl.wordpress.com/2011/04/29/windows-authorization-and-custom-url-redirection-in-saleslogix-7-5-2/</link>
		<comments>http://teknophyl.wordpress.com/2011/04/29/windows-authorization-and-custom-url-redirection-in-saleslogix-7-5-2/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 18:59:18 +0000</pubDate>
		<dc:creator>Teknophyl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Sage]]></category>
		<category><![CDATA[SalesLogix]]></category>

		<guid isPermaLink="false">http://teknophyl.wordpress.com/?p=110</guid>
		<description><![CDATA[We have a custom quoting app that links to our SalesLogix application (Accounts and Opportunities) while still supporting Windows Authentication. Yet even though we have Windows Authentication enabled for SLX, direct links to entities were being redirected to the Login.aspx page. Apparently, Forms authentication prevailed on pretty much every request other than to Windows.aspx. So [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=110&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We have a custom quoting app that links to our SalesLogix application (Accounts and Opportunities) while still supporting Windows Authentication.</p>
<p>Yet even though we have Windows Authentication enabled for SLX, direct links to entities were being redirected to the Login.aspx page. Apparently, Forms authentication prevailed on pretty much every request other than to Windows.aspx.</p>
<p>So I did some digging around and after understanding exactly what the redirection methods were (Nicholas Galler&#8217;s <a href="http://blog.nicocrm.com/2007/11/22/slx-72-web-windows-authentication-explained/">explanation</a> shed a lot of light on how the HTTP requests are processed), I decided to roll something quickly (instead of implementing another MembershipProvider) with 1 new page and a modification to 2 files.</p>
<p>First, I created a standard page with a querystring at the end that contained the URL I wanted to redirect to, and added that to session. Next, I redirected to Windows.aspx &#8211; this redirecting allowed the 401/200 statuses mentioned in Nick&#8217;s blog to be generated. Without these, Forms auth would take over and we couldn&#8217;t capture Windows credentials (the user just gets redirected to Login.aspx again).</p>
<p>Next, I modified WinAuthLoad.aspx.cs like this:</p>
<blockquote><p>         if (Session["MyRedirectUrl"]  == null)<br />
{<br />
Response.Redirect(Request.Params["next_url"]);<br />
}<br />
else<br />
{<br />
string url = Session["MyRedirectUrl"].ToString();<br />
Session.Remove(&#8220;MyRedirectUrl&#8221;);<br />
Response.Redirect(url);<br />
}</p></blockquote>
<p>For the life of me, I couldn&#8217;t find where next_url was being defined. I searched the entire project and couldn&#8217;t find it. I got some odd XML parsing errors playing around with it; if anyone knows where this variable is, I&#8217;d love to know.</p>
<p>Anyway, we don&#8217;t want to mess with it, because normal requests to Windows.aspx (for example, if someone&#8217;s visiting the SLX site normally) wouldn&#8217;t be able to redirect users to their configured default page. Basically this says &#8220;if there&#8217;s no session variable, do what you were going to do in the first place&#8221;.</p>
<p>The last step was modifying web.config. If you drop this new page at the root, it would be protected by Forms auth &#8211; you have to add a new element to allow access to everyone:</p>
<blockquote><p>&lt;location path=&#8221;MyRedirectPage.aspx&#8221;&gt;<br />
&lt;system.web&gt;<br />
&lt;authorization&gt;<br />
&lt;allow users=&#8221;*&#8221; /&gt;<br />
&lt;/authorization&gt;<br />
&lt;/system.web&gt;<br />
&lt;/location&gt;</p></blockquote>
<p>And that&#8217;s it. Now applications that need direct entity access via URL will work just fine.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknophyl.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknophyl.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknophyl.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknophyl.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknophyl.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknophyl.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknophyl.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknophyl.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknophyl.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknophyl.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknophyl.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknophyl.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknophyl.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknophyl.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=110&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknophyl.wordpress.com/2011/04/29/windows-authorization-and-custom-url-redirection-in-saleslogix-7-5-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">codemunkee</media:title>
		</media:content>
	</item>
		<item>
		<title>Using External Data Tables as Entities In SalesLogix 7.5.2 Using Oracle</title>
		<link>http://teknophyl.wordpress.com/2011/02/15/using-external-data-tables-as-entities-in-saleslogix-7-5-2-using-oracle/</link>
		<comments>http://teknophyl.wordpress.com/2011/02/15/using-external-data-tables-as-entities-in-saleslogix-7-5-2-using-oracle/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 01:19:38 +0000</pubDate>
		<dc:creator>Teknophyl</dc:creator>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Sage]]></category>
		<category><![CDATA[SalesLogix]]></category>

		<guid isPermaLink="false">http://teknophyl.wordpress.com/?p=105</guid>
		<description><![CDATA[One of the requirements I have for a project that I&#8217;m currently working on involves displaying data in a read-only format to our SalesLogix web users. Normally this isn&#8217;t a big deal, except the data store was outside of the SLX database. So, that meant I didn&#8217;t have any means of designing QuickForms, or taking [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=105&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the requirements I have for a project that I&#8217;m currently working on involves displaying data in a read-only format to our SalesLogix web users. Normally this isn&#8217;t a big deal, except the data store was outside of the SLX database. So, that meant I didn&#8217;t have any means of designing QuickForms, or taking advantage of the more advanced features that come when presenting data in SalesLogix, like filters, sorting, or grouping.</p>
<p>So I went down the path of creating custom controls and importing them into my project through Application Architect. They were very basic List views, but they worked&#8230; and yet I was not satisfied. Not only were the advanced features unavailable, but it completely disrupted the user interface; controls available in every other List view were not available here. The inconsistency was bugging me.</p>
<p>I set out in search of any articles that described how to add outside data sources to SalesLogix. The only thing I found was a 7 year old article from <a href="http://www.slxdeveloper.com/page.aspx?action=viewarticle&amp;articleid=37">slxdeveloper.com</a> that actually describes the very problem I was trying to solve&#8230; but it described a fix with SQL Server as the database. We&#8217;re using Oracle 10g.</p>
<p>Another developer had the idea of using Oracle Synonyms to try to circumvent the problem. It almost worked right out of the box, but I had to spend some time tweaking the steps. The result is a pretty sturdy, reliable method of accessing these outside tables as normal SalesLogix entities.</p>
<p>You&#8217;ll need permissions to create views, synonyms, and a database link in your Oracle database. Without these, you won&#8217;t get very far. These steps assume you have these permissions already. And if you need to make updates on these &#8211; well, I haven&#8217;t gotten that far yet but I am pretty sure it will not work without true Standard Ids. But without further ado, let&#8217;s assume the following:</p>
<p>You have an external table called <strong>ORDERS</strong>. You want to present this table in SalesLogix in read-only format, and work with it like a regular entity.</p>
<p><strong>Step 1. Create a view.<br />
</strong>You&#8217;ll need to create a standard Oracle view, pointed to the external table, that contains all the fields you want to include in your entity. Give it a meaningful name. In our example, the view would be called <strong>ORDERS_VIEW.</strong></p>
<p><strong>Step 2. Create a table in Administrator or Application Architect.<br />
</strong>Create a table and give it the name of your desired entity. In our example, we&#8217;ll call the entity <strong>ORDERS_VIEW_ENTITY. </strong>Take note of the table&#8217;s ID field name &#8211; you will need this later.<strong><br />
</strong></p>
<p><strong>Step 3. Add fields to the table.<br />
</strong>Add fields like you normally would&#8230; except they must <strong>exactly match the column names in your view created in step 1. </strong>If they are not exact, they will NOT work.</p>
<p><strong>Step 4. Drop the table in Oracle.<br />
</strong>Go back to SQL Developer (or whatever IDE you&#8217;re using) and drop the table you created in Step 3 (DROP TABLE ORDERS_VIEW_ENTITY).</p>
<p><strong>Step 5. Create another view named after the table you just dropped.<br />
</strong>In your IDE, create a view with the exact same name as the table you dropped (<strong>CREATE VIEW ORDERS_VIEW_ENTITY)</strong>). You&#8217;ll basically write the exact same view statement as you did in Step 1, except you will add an extra field to account for the ID field that you noted in Step 2, and cast your original table&#8217;s Primary Key as it&#8217;s value. So, it might look like this -</p>
<p><strong>CREATE VIEW ORDERS_VIEW_ENTITY<br />
AS<br />
SELECT CAST(ORDER_ID AS CHAR(12)) AS ORDER_VIEW_ENTITYID, ORDER_ID,<br />
&#8230;<br />
FROM ORDERS_VIEW</strong></p>
<p>Just make sure the alias you give it matches the ID of the table you dropped.</p>
<p>Now you can go back to Application Architect and add your view, and if all went well, you should see your fields and everything will work normally after clicking Build Interfaces and Rebuild Web Platform.</p>
<p>You&#8217;ll know it didn&#8217;t work if the following occurs:<br />
- If during the Rebuild the Build Output window just outputs the same error message over and over (just delete the entity and start from Step 1) &#8211; this means your ID field probably doesn&#8217;t match what it was supposed to be<br />
- If when you expand your newly added entity you do not see the column alias for the ID.</p>
<p>That&#8217;s it! If you have any questions, post in the Comments and I&#8217;ll do my best to help.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknophyl.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknophyl.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknophyl.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknophyl.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknophyl.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknophyl.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknophyl.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknophyl.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknophyl.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknophyl.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknophyl.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknophyl.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknophyl.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknophyl.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=105&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknophyl.wordpress.com/2011/02/15/using-external-data-tables-as-entities-in-saleslogix-7-5-2-using-oracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">codemunkee</media:title>
		</media:content>
	</item>
		<item>
		<title>Motivating the Unmotivated (Follow Up)</title>
		<link>http://teknophyl.wordpress.com/2010/11/04/motivating-the-unmotivated-follow-up/</link>
		<comments>http://teknophyl.wordpress.com/2010/11/04/motivating-the-unmotivated-follow-up/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 16:42:15 +0000</pubDate>
		<dc:creator>Teknophyl</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://teknophyl.wordpress.com/?p=101</guid>
		<description><![CDATA[I wanted to share Michael Norton&#8217;s excellent follow up to my horror story concerning my inability to properly motivate team members during my first stint as a &#8220;manager&#8221;. http://www.docondev.com/2010/09/motivating-unmotivated.html Suffice it to say that I am very proud of how far I&#8217;ve come since then. And to do that I had to &#8220;get right&#8221; with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=101&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I wanted to share Michael Norton&#8217;s excellent follow up to my horror story concerning my inability to properly motivate team members during my first stint as a &#8220;manager&#8221;.</p>
<p><a href="http://www.docondev.com/2010/09/motivating-unmotivated.html">http://www.docondev.com/2010/09/motivating-unmotivated.html</a></p>
<p>Suffice it to say that I am very proud of how far I&#8217;ve come since then. And to do that I had to &#8220;get right&#8221; with myself first. Establishing respect for myself, for others, and our shared chosen profession has been critical to this self improvement.</p>
<p>Thanks, @<a href="http://www.twitter.com/docondev">docondev</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknophyl.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknophyl.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknophyl.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknophyl.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknophyl.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknophyl.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknophyl.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknophyl.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknophyl.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknophyl.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknophyl.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknophyl.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknophyl.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknophyl.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=101&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknophyl.wordpress.com/2010/11/04/motivating-the-unmotivated-follow-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">codemunkee</media:title>
		</media:content>
	</item>
		<item>
		<title>SalesLogix and Subversion</title>
		<link>http://teknophyl.wordpress.com/2010/11/04/saleslogix-and-subversion/</link>
		<comments>http://teknophyl.wordpress.com/2010/11/04/saleslogix-and-subversion/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 16:21:35 +0000</pubDate>
		<dc:creator>Teknophyl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Sage]]></category>
		<category><![CDATA[SalesLogix]]></category>

		<guid isPermaLink="false">http://teknophyl.wordpress.com/?p=93</guid>
		<description><![CDATA[I think in the course of software development that preventing entropy is a top priority. When developers get together and start introducing new tools to their local environments without team buy in, the chance for project failure naturally goes up. But I also think that there should be an opportunity for developers to justify their [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=93&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I think in the course of software development that preventing entropy is a top priority. When developers get together and start introducing new tools to their local environments without team buy in, the chance for project failure naturally goes up.</p>
<p>But I also think that there should be an opportunity for developers to justify their choice of tool. And if the team buys in, then ideally, the tool propagates itself by one person demonstrating how useful it is. The justification should never be based on personal convenience, but should include demonstrable productivity gains or in improved QA, to name just a couple of examples.</p>
<p>This happened to us when attempting to implement <a href="http://www.git-scm.com">Git </a>within our organization during SalesLogix development. We got hit hard. And while the details will be saved for another post, I wanted to provide some introductory context for this post &#8211; why we&#8217;re using Subversion now instead of Git for SalesLogix development.</p>
<p>So hold your thoughts on that. Here&#8217;s the good stuff. The process is, as far as I know, not documented very well, and I hope this changes that.</p>
<p>This assumes that you have the tools of the trade needed for this &#8211; Visual Studio, a valid Subversion repo, <a href="http://ankhsvn.open.collab.net/">AnkhSVN</a>, and <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>.</p>
<ol>
<li>In Application Architect, back up your VFS.</li>
<li>Create a new project workspace. <strong>Do NOT choose &#8220;Create Files on Export&#8221;.</strong></li>
<li>Restore your project using the ZIP file created in Step 1.</li>
<li>Build your project. <strong>Do NOT deploy it. </strong>Doing so will add a new Deployment directory, which you do not want to add to SVN.</li>
<li>Using TortoiseSVN (or tool of choice), modify your local Global Ignore file (you can copy and paste this right into the Global ignore pattern textbox in TortoiseSVN). This includes files recommended for ignoring using Git, as well as some other common .NET files that should be ignored.<br />
<blockquote><p>modelindex.xml *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc<br />
*.pyo *.rej *~ #*# .#* .*.swp .DS_Store *.BASE *.LOCAL *.REMOTE *.orig<br />
deployment *.suo *.ncb *.user *.ccscc *.cache *.bak  bin obj<br />
Generated_Code ClientBin Thumbs.db</p></blockquote>
</li>
<li>Check your code into your repository. You can do this from whatever folder level you wish, but to reduce confusion, keep Model as the top level folder.</li>
<li>You now need to create your working copy. Create another project in Application Architect, same as in step 2. Just point it to whatever folder you want to be your working copy. Remember not to export files.</li>
<li><strong>Check out </strong>the source from your SVN repo into your working copy. You should now have the latest source from the repository starting at the Model folder.</li>
<li>Build the project in Application Architect. This will be your &#8220;de facto&#8221; development directory.</li>
</ol>
<p>Now, for the nuances. If you do a local deployment,  you&#8217;ll notice that a new Deployment folder is created (under Model, and it should have the ignore overlay from SVN). In addition, if you check your target deployment web directory, you&#8217;ll see that a ton of _SVN folders are there too. This is because Application Architect is outputting the source it needs in order to get a working web version, and it&#8217;s including the SVN folders. <a href="http://customerfx.com/pages/crmdeveloper/2009/11/12/excluding-saleslogix-model-files-from-source-control.aspx">These web files, as a best practice according to Sage, should not be under source control</a>. This isn&#8217;t a problem with Git, because Git doesn&#8217;t keep files at every directory level.</p>
<p>So after deployment you&#8217;ll have to delete all the SVN folders in the target web directory. You can either do it with Windows search, which is easy, but we are working on adding it as a build step using NAnt. However you choose to do it, <strong>make sure you do it! </strong>If you don&#8217;t you will potentially ruin your check-in.</p>
<p>Next, this also assumes that you&#8217;re adding SmartParts the right way, through Application Architect. Sometimes I like to create SmartParts in a &#8220;quick and dirty&#8221; way to test some functionality. By this I mean I&#8217;ll create a control right in the web app using Visual Studio, then move it manually to a target server (usually development).</p>
<p>However, in order to preserve source control on these, these controls have to be properly created in Application Architect, or added as a custom SmartPart. To be sure, this is true for whatever VCS you use with SalesLogix, so just consider this a friendly reminder. Remember &#8211; never check anything in from Visual Studio.</p>
<p>Got a different/better way? I&#8217;d love to hear it. This process came about from a week or so of tinkering with the build process, but I have a great understanding now of how it works.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknophyl.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknophyl.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknophyl.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknophyl.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknophyl.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknophyl.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknophyl.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknophyl.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknophyl.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknophyl.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknophyl.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknophyl.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknophyl.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknophyl.wordpress.com/93/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=93&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknophyl.wordpress.com/2010/11/04/saleslogix-and-subversion/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">codemunkee</media:title>
		</media:content>
	</item>
		<item>
		<title>Sage SalesLogix Filter Issue</title>
		<link>http://teknophyl.wordpress.com/2010/10/11/sage-saleslogix-filter-issue/</link>
		<comments>http://teknophyl.wordpress.com/2010/10/11/sage-saleslogix-filter-issue/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 14:00:34 +0000</pubDate>
		<dc:creator>Teknophyl</dc:creator>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Sage]]></category>
		<category><![CDATA[SalesLogix]]></category>

		<guid isPermaLink="false">http://teknophyl.wordpress.com/?p=85</guid>
		<description><![CDATA[Nearly a month ago, I was trying to create a filter in Application Architect and noticed that my filters were being magically blown away. After some debugging and trial and error, I was able to replicate the error by doing the following: Create a new Filter (any Entity) Save the filter Build your project in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=85&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nearly a month ago, I was trying to create a filter in Application Architect and noticed that my filters were being magically blown away. After some debugging and trial and error, I was able to replicate the error by doing the following:</p>
<ol>
<li>Create a new Filter (any Entity)</li>
<li>Save the filter</li>
<li>Build your project in Application Architect</li>
<li>Deploy</li>
<li>Edit your Filter, then rebuild your project</li>
<li>Deploy your changes.</li>
</ol>
<p>You&#8217;ll get a nice error message that looks like this:</p>
<blockquote><p>ERROR &#8211; Unable to retrieve deployment items from deployment provider :  Sage.Platform.WebPortal.Design.EntityFilterDeploymentAction</p>
<p>ERROR &#8211; Object reference not set to an instance of an object.</p>
<p>ERROR &#8211; at  Sage.Platform.WebPortal.Design.EntityFilterDeploymentAction.&lt;GetDeployableItems&gt;b__3(OrmEntityFilter  filter)</p>
<p>at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()</p>
<p>at System.Linq.Buffer`1..ctor(IEnumerable`1 source)</p>
<p>at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)</p>
<p>at  Sage.Platform.WebPortal.Design.EntityFilterDeploymentAction.GetDeployableItems(PortalApplication  portal, BackgroundWorker worker)</p>
<p>at  Sage.Platform.Deployment.PortalDeploymentManager.&lt;&gt;c__DisplayClass7.&lt;GetPortalDeploymentItems&gt;b__5(IDeploymentActionProvider  provider)</p></blockquote>
<p>Now, go take a look at your Filters folder in your VFS. All your filters in your entities are gone. The only way to bring them back is to completely shut down Application Architect, reopen it, rebuild, then redeploy your project.</p>
<p>Turns out this is a bug in 7.5.2. According to Jason Boyce:</p>
<blockquote><p>The issue is changing the type on an existing (already persisted) filter in the  filter editor causes the filter&#8217;s associated FileInfo object to be nulled.  This  causes the deployment exception when trying to use that null FileInfo object as  a file source and explains the &#8220;Object reference not set to an instance of an  object.&#8221; error.  This error causes no filters to be deployed.<br />
One of the last  steps in a deployment is cleanup, which removes files not in the deployment  list, which are assumed to not belong on the target.  Since no files are  included in the deployment list in this case, all the existing filters on the  target get deleted.</p></blockquote>
<p>The original thread can be found here: http://community.sagesaleslogix.com/t5/Developer-Web-Discussions/Deployment-Issue-When-Creating-New-Filter/td-p/14541, but in the interest of disseminating helpful information I&#8217;m reposting the solution and <a href="http://screencast.com/t/ZTkwMmY1NjA">video replicating the issue</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknophyl.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknophyl.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknophyl.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknophyl.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknophyl.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknophyl.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknophyl.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknophyl.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknophyl.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknophyl.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknophyl.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknophyl.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknophyl.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknophyl.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=85&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknophyl.wordpress.com/2010/10/11/sage-saleslogix-filter-issue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">codemunkee</media:title>
		</media:content>
	</item>
		<item>
		<title>Is It Your Responsibility, or Mine?</title>
		<link>http://teknophyl.wordpress.com/2010/09/29/is-it-your-responsibility-or-mine/</link>
		<comments>http://teknophyl.wordpress.com/2010/09/29/is-it-your-responsibility-or-mine/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 16:59:03 +0000</pubDate>
		<dc:creator>Teknophyl</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://teknophyl.wordpress.com/?p=83</guid>
		<description><![CDATA[Just over a month ago, I found the following Tweet re-Tweeted by someone I follow [sic]: &#8220;We want to improve so we&#8217;ll start by hiring great people&#8221;. What makes you think the(y) will still be great *in your organisation*? I jumped on top of this. It was an early Wednesday, and I probably hadn&#8217;t had [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=83&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just over a month ago, I found the following Tweet re-Tweeted by someone I follow [sic]:</p>
<blockquote><p>&#8220;We want to improve so we&#8217;ll start by hiring great people&#8221;. What makes you think the(y) will still be great *in your organisation*?</p></blockquote>
<p>I jumped on top of this. It was an early Wednesday, and I probably hadn&#8217;t had enough coffee yet. But I was immediately put off by this statement. To me, it&#8217;s kind of a contrived statement. Those things that make people &#8220;great&#8221;, in my opinion, are attributes and characteristics that transcend industry, organization, and job. Caring about quality, your fellow co-workers, and your personal performance, among other things, are not things that are strictly limited to software development. My point is that it makes complete sense to use this as a starting point (although admittedly a nebulous one). Interviews are the beginning, of course &#8211; if you use good interviewing questions and techniques, you eventually begin to get to the bottom of whether the prospect shares your perspective.</p>
<p>Anyway, I retorted with:</p>
<blockquote><p>isnt that what thorough interview screening is for? For  the org and the prospect. This statement feels contrived.</p></blockquote>
<p>To which the original tweeter replied:</p>
<blockquote><p>Quite contrary &#8211; personal performance contributes to only 5% of org. performance, so improve the other 95% first</p></blockquote>
<p>And he tagged it with <a href="http://en.wikipedia.org/wiki/W._Edwards_Deming#Deming_philosophy_synopsis">Deming</a><strong>. </strong>Now, I don&#8217;t know where this measurement came from, but I find it hard to believe that the ratio of personal development to an organization&#8217;s responsibility to &#8220;make people great&#8221; sits at 5% to 95%. It&#8217;s not realistic. It&#8217;s outdated and doesn&#8217;t reflect today&#8217;s development needs at all.</p>
<p>Spolsky says it best in his <a href="http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html">Guerilla Guide to Interviewing</a> &#8211; and makes an important distinction between skills and aptitude. The Tweet of course misses this nuance &#8211; and I doubt it could be fit into 140 characters &#8211; but its an important point to make in my opinion. You can be a skilled [insert job title/industry here], but not have the aptitude for analysis, communication, or collaboration. Interviewers naturally look for these among a number of things; Spolsky mentions one in particular &#8211; between being &#8220;smart&#8221; and &#8220;getting the job done&#8221;.</p>
<p>To me, people who &#8220;get the job done&#8221; don&#8217;t have to rely on an organization for personal development. They are self-starters. They are the ones who own pet projects and are passionate about technology. They are the ones who are not intimidated by unfamiliar technology, but have the experience behind them to know the best way to approach problems. These are the people who, with proper management, are innovators and difference makers in an organization. As an interviewee, it is up to you to determine whether the management at the organization you&#8217;re interviewing at is going to support you with the flexibility and freedom needed to innovate. That&#8217;s how I know they will still be great in my organization. There&#8217;s a symbiosis that cannot be ignored here.</p>
<p>The bottom line is there&#8217;s a mutual responsibility, but the interview should be designed to determine just how willing the other party is to assume their fair share. As a leader in my organization, I should provide every reasonable opportunity for you to improve your skill set, your knowledge, and your career development. As an employee, I should be willing to ask for and take advantage of these rare opportunities as they present themselves. I am not entitled to anything, and I think developers today should be wary of this entitlement syndrome.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknophyl.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknophyl.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknophyl.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknophyl.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknophyl.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknophyl.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknophyl.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknophyl.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknophyl.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknophyl.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknophyl.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknophyl.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknophyl.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknophyl.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=83&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknophyl.wordpress.com/2010/09/29/is-it-your-responsibility-or-mine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">codemunkee</media:title>
		</media:content>
	</item>
		<item>
		<title>Fun with Build Breaking</title>
		<link>http://teknophyl.wordpress.com/2010/09/17/fun-with-build-breaking/</link>
		<comments>http://teknophyl.wordpress.com/2010/09/17/fun-with-build-breaking/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 13:15:47 +0000</pubDate>
		<dc:creator>Teknophyl</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://teknophyl.wordpress.com/?p=80</guid>
		<description><![CDATA[We gave up on Subversion for use with SalesLogix, and are now using Git. In Git Extensions, the Commit tab with details on the last commit has a spot for a Gravatar. I thought it would be a fun exercise to arrange an understanding among the team that if they break the build, the penalty [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=80&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We gave up on Subversion for use with SalesLogix, and are now using Git.</p>
<p>In Git Extensions, the Commit tab with details on the last commit has a spot for a <a href="http://www.gravatar.com">Gravatar</a>. I thought it would be a fun exercise to arrange an understanding among the team that if they break the build, the penalty has to be an embarrassing photo of some kind. Nothing like a shaming ritual for team-building.</p>
<p>With that in mind, I went surfing for some appropriate pictures. Here are some of my faves.</p>
<p><img class="alignnone" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/08/you_broke_the_build.jpg" alt="" width="451" height="600" /></p>
<p>I love this T-Shirt.</p>
<p><img class="alignnone" src="http://ih0.redbubble.net/work.4019382.3.fig,black,mens,fbfbfb.i-broke-the-build-v3.jpg" alt="" width="556" height="350" /></p>
<p><img class="alignnone" src="http://www.buildsonmymachine.com/images/Row2_2a.jpg" alt="" width="545" height="649" /></p>
<p>If you have other good ideas for fun finger pointing when the build breaks, share them with me.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknophyl.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknophyl.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknophyl.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknophyl.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknophyl.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknophyl.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknophyl.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknophyl.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknophyl.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknophyl.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknophyl.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknophyl.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknophyl.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknophyl.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=80&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknophyl.wordpress.com/2010/09/17/fun-with-build-breaking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">codemunkee</media:title>
		</media:content>

		<media:content url="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/08/you_broke_the_build.jpg" medium="image" />

		<media:content url="http://ih0.redbubble.net/work.4019382.3.fig,black,mens,fbfbfb.i-broke-the-build-v3.jpg" medium="image" />

		<media:content url="http://www.buildsonmymachine.com/images/Row2_2a.jpg" medium="image" />
	</item>
		<item>
		<title>Using Subversion For SalesLogix Web Development</title>
		<link>http://teknophyl.wordpress.com/2010/08/30/using-subversion-for-saleslogix-web-development/</link>
		<comments>http://teknophyl.wordpress.com/2010/08/30/using-subversion-for-saleslogix-web-development/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 20:42:25 +0000</pubDate>
		<dc:creator>Teknophyl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Sage SalesLogix]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://teknophyl.wordpress.com/?p=73</guid>
		<description><![CDATA[An article that describes a first-pass at source controlling SalesLogix Web application files using Subversion.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=73&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When I started working on a project at my company, I realized that there was no source control applied to one of it&#8217;s critical applications. The results were what you might expect: lost work, inconsistent releases, painful rollback procedures. I was within my <a href="http://www.codinghorror.com/blog/2006/08/the-programmers-bill-of-rights.html">rights as a programmer</a> to stand up and say something, so I did.</p>
<p>The result? I was given free reign to implement source control as I saw fit. As long as it was with Subversion. See, all of the other internal company projects use Subversion (every other project outside of this department&#8217;s projects is properly source controlled), even though  SalesLogix heavily supports using source control with <a href="http://www.github.com">GitHub</a>, complete with supported addins for Application Architect.</p>
<p>The main reasons I could not get approval for Git were:</p>
<p>1. <strong>GitHub for &#8220;real&#8221; development costs money. </strong>Sure, it is free, but in order to maintain any privacy or administrative supervision, you need to purchase a subscription. And it&#8217;s relatively inexpensive initially, but when added to the costs of managing a new tool and training others on using Git, ROI realization wouldn&#8217;t come quickly enough when compared to a free tool that we already know how to use.</p>
<p>2. <strong>What if we got hit by buses? </strong>If these specific developers left, the organization would be left looking for developers with Git experience, or take the time to break the source control rev cycle to re-apply it to Subversion. Not an option.</p>
<p>3. <strong>Saying &#8220;it&#8217;s secure&#8221; isn&#8217;t really meaningful. </strong>In other words, administrators get more warm and fuzzies knowing that their security practices are the only thing between developers and unauthorized users. Sure, Git says they are &#8220;secure, backed up, and always available&#8221;, but to the unreasonably paranoid, this isn&#8217;t enough. They want to hold the keys and control who gets to use them.</p>
<p>So we couldn&#8217;t use Git. I had to use Subversion. The problem here is that Subversion resources for SalesLogix are pretty much non-existent. Sure, source control is straight forward, but there are some subtle nuances with builds in Application Architect that need to be accounted for. So after a lot of trial and error, along with culling information from a few sources that focus on Git integration, I have cobbled together a first pass at using Subversion with SalesLogix web development. As of today, this works.</p>
<p><strong>If there&#8217;s something I missed, please let me know in the comments. </strong>I want to work hard to make this a living document for others who have a similar task ahead of them.</p>
<p>This assumes you have all the required tools, natch.</p>
<blockquote><p>1. In Application Architect, back up your current project workspace. This is your fail-safe for the moment if anything fails. Park this in a safe place.</p>
<p>2. Create a new project workspace. Give it a meaningful title. <strong>Do not choose the Export Files On Creation option.</strong></p>
<p>3. Perform a restore in this new project workspace that points to your backup.</p>
<p>4. Close Application Architect.</p>
<p>5. Navigate to the directory that contains the VFS model and copy it to a separate location. This may not be needed, but it&#8217;s just me being a <a href="http://discuss.joelonsoftware.com/default.asp?joel.3.214713.11">paranoid developer</a>. I make no apologies for this.</p>
<p>6. At your new separate location, add the folder to your Subversion repository.</p>
<p>7. We&#8217;ll now create a working copy directory, so create yet another blank folder somewhere.</p>
<p>8. Do a checkout of the code you added to the repo, and check it out to your working copy directory.</p>
<p>9. Create a new project workspace in Application Architect. Again, <strong>do not select Export Files On Creation. Point the folder to your working copy directory. </strong></p>
<p>10. In SVN, set Ignore on the <strong>Deployment</strong> directory, and modelindex.xml at the root of the project directory.</p></blockquote>
<p>What you&#8217;re left with is development out of your working copy, and once you check everything in, you or someone else can either bundle the changes to your target server, or you can copy the entire Subversion directory to your target server and bind it to your workspace (like you did for this exercise). For multiple developers, though, you will want to make heavy use of KDiff3 or some other diff and merge tool. This isn&#8217;t as daunting as it sounds.</p>
<p>I have noticed a few oddities that I&#8217;m not sure yet are really oddities. The most pronounced one is that source control is persisted to output files deployed to your local IIS instance. According to the official <a href="http://slxtraining.net/2009/09/using-saleslogix-web-in-a-multi-developer-environment/">SLX Training Blog</a>, Jason Huber ends his article with the following statement:</p>
<blockquote>
<div id="_mcePaste">&#8220;Do not place source control on the output files (C:\inetpub\wwwroot\slxclient). This makes no sense. If you want a copy of these files then use a deployment snapshot instead. This was also covered in boot camp and in the various classes offered at Sage.&#8221;</div>
</blockquote>
<p>I don&#8217;t know why, but Windows shows everything in SLXClient as under source control, even though the deployment folder is being ignored. But we are just now starting multiple developer efforts, so I suppose we will learn one way or the other whether this hoses anything.</p>
<p>Efforts to reach out to the SalesLogix development team and other resources for answers to these questions went unanswered. There&#8217;s a few postings over at the <a href="http://www.slxdeveloper.com">SLXDeveloper </a>forums that I left that have gone unanswered also.</p>
<p>Resources I used to assemble this article:</p>
<p>Ryan Farley&#8217;s blog over at <a href="http://customerfx.com/pages/crmdeveloper/2009/11/12/excluding-saleslogix-model-files-from-source-control.aspx">CustomerFX<br />
</a>The<a href="http://slxtraining.net/2009/09/using-saleslogix-web-in-a-multi-developer-environment/"> SalesLogix Training Blog</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknophyl.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknophyl.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknophyl.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknophyl.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknophyl.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknophyl.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknophyl.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknophyl.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknophyl.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknophyl.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknophyl.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknophyl.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknophyl.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknophyl.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=73&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknophyl.wordpress.com/2010/08/30/using-subversion-for-saleslogix-web-development/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">codemunkee</media:title>
		</media:content>
	</item>
		<item>
		<title>Motivating the Unmotivated</title>
		<link>http://teknophyl.wordpress.com/2010/08/24/motivating-the-unmotivated/</link>
		<comments>http://teknophyl.wordpress.com/2010/08/24/motivating-the-unmotivated/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 16:49:33 +0000</pubDate>
		<dc:creator>Teknophyl</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://teknophyl.wordpress.com/?p=69</guid>
		<description><![CDATA[Since I&#8217;ve had my head in Joel on Software, I have felt like I need to put pixels to screen and confess many of the mistakes I made as a developer turned manager. The following is my catharsis, and hopefully, the more experienced among you will help me find the answer to the question I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=69&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Since I&#8217;ve had my head in <a href="http://www.joelonsoftware.com/">Joel on Software</a>, I have felt like I need to put pixels to screen and confess many of the mistakes I made as a developer turned manager. The following is my catharsis, and hopefully, the more experienced among you will help me find the answer to the question I ask at the bottom (just scroll down if you don&#8217;t want to read the boring part).</p>
<p>When I was given the title of Technical Director at my last place of employment, part of my responsibilities involved managing people. Just one or two people&#8230; ok, just one (and I can&#8217;t imagine what the disaster would have been if there were more). The position I managed was a junior developer one, and for my five years there, the position had a lot of turnover.</p>
<p>Looking back it was easy to see why. We had to hire under schedule pressure. The <a href="http://www.digtriad.com">region</a> had a real dearth of technical talent (and upper management reluctant to support a telecommuter). Previous projects were not executed well, so the junior dev had to handle frustrated, angry tech support calls (hey, I&#8217;m too busy to take this call, and you&#8217;re Tier 1 anyway). At the risk of sounding emo, I felt like I had to pick the best of the worst. But I also felt I had a responsibility to bring out the best in them and help them become a better developer and a better employee.</p>
<p>So&#8230; meet John Doe, known as John for short.</p>
<p>We hired John in October 2008 when we were desperate to fill a void left by our previous developer (he got his MBA and &#8220;got out&#8221;). John had some experience, enough to justify a junior developer hire, but I knew I had my work cut out for me from a training perspective. He was new to .NET, but not to ASP or web development, so after telling him that he would need to learn .NET in order to complete his day to day job duties, we agreed to give him a shot. I decided I would take him under my wing and help him learn enough to stand on his own.</p>
<p>Here was my first out of a thousand mistakes. I assumed that John would have the same zeal for technology as I did. In my mind I&#8217;m thinking, &#8220;you are getting paid to train! How many people can say that? What a great opportunity for you!&#8221;. I provided him with short question and answer meetings, training materials, and offered company reimbursement for other materials or courses he wanted to take. But he didn&#8217;t really care, or so it seemed.</p>
<p>Anyway, John didn&#8217;t pick up on .NET quickly. But we muddled through projects. Soon his first &#8220;big&#8221; project came along for a major client. It was in C#, but he was primarily a VB.NET developer. We let him do it anyway. We didn&#8217;t have much of a choice, as I was on all the other &#8220;big&#8221; projects. Needless to say, it was only mildly successful.</p>
<p>An adjunct project arose for the same client and I grew frustrated as my workload increased exponentially because John required continuous handholding in his C# and .NET training. I was irritated that he didn&#8217;t pick it up &#8220;fast enough&#8221;. I watched as he &#8220;did his job&#8221; and did not, as I saw it, &#8220;go the extra mile&#8221;. For me this meant working longer hours to make up for the loss in productivity, mostly. Basically I wanted him to suffer like I was suffering (and I was, I was working 65+ hour weeks with a new baby at home). I was starting to harbor resentment towards him, and the working relationship started to turn sour.</p>
<p>So I started to look at how we were motivating John, and I realized we really weren&#8217;t motivating him at all. I decided to start motivating him. I kept thinking about Gunnery Sargent Hartment, the drill instructor from the movie <a href="http://www.youtube.com/watch?v=68Yv2NPAJ_w">Full Metal Jacket.</a></p>
<span style="text-align:center; display: block;"><a href="http://teknophyl.wordpress.com/2010/08/24/motivating-the-unmotivated/"><img src="http://img.youtube.com/vi/68Yv2NPAJ_w/2.jpg" alt="" /></a></span>
<p>It worked for him (well, almost). But for some reason I became fixated on exactly the wrong approach to motivating John.</p>
<p>The first thing I did was give him the &#8220;guilt trip&#8221;.</p>
<p>&#8220;John, you know, we are all working pretty hard here and you&#8217;re leaving right at 5pm. What gives?&#8221;</p>
<p>John just kind of shrugged his shoulders and didn&#8217;t really know what to say. After about 20 minutes of &#8220;you know we all have to work extra special hard to make this company work&#8221; nonsense I let the guy get back to work.</p>
<p>And he left right on time.</p>
<p>Since that didn&#8217;t work I decided try some &#8220;carrots&#8221;. We waved bonus money at him for any extra hours worked (we worked on hourly rates, so we had a target billable rate every week to make just to break even). And it sort of worked, until the billable work dried up, or projects were at a net loss (so no bonus was earned at all).</p>
<p>So John continued to leave right on time.</p>
<p>I was angry by now. Here I was, putting forth all this effort, and this other guy who can&#8217;t code his way out of a shoebox is just getting by&#8230; that by itself didn&#8217;t annoy me &#8211; it was that <em>he didn&#8217;t give a shit. </em></p>
<p>So I went on screwing up this guy&#8217;s development future by putting him on &#8220;probation&#8221; when bugs he claimed to fix kept recurring. When he &#8220;sicked out&#8221; of an important work day that was tied to a deadline for an important client, I put him on double secret probation.</p>
<p>When he came back from his sickness, he left at 5pm.</p>
<p>The last straw with John came when we needed extra hands to help with our company&#8217;s largest project ever. We communicated this to John, that it was big and important, and I tried to play up the &#8220;personal growth&#8221; angle. And since I was overworked I didn&#8217;t pay attention to John&#8217;s work in the &#8220;right way&#8221;. I managed by &#8220;walking around&#8221;, and that didn&#8217;t work with John for a number of reasons.</p>
<p>One day I walked around and found that John had billed almost six weeks worth of work to our client and no work was done. He claimed to have lost it in a tragic source control accident. Then when we tried to recover from older revisions, he claimed he never checked anything in (basically he left files open for six weeks). After another angry outburst, John was let go a week later. I left two months later.</p>
<p>Looking back I realized I&#8217;ll never behave that way to peers or colleagues ever again. But at the same time I can&#8217;t help but wonder what in the world would have motivated this person? Money didn&#8217;t work. Not punishment, not public acknowledgement of success, not training. I couldn&#8217;t elicit anything out of him that he was excited about (except college basketball). I took out my anger and frustration on him because I could not motivate him. And when he didn&#8217;t care that I was angry and frustrated, it kept the cycle going.</p>
<p>This is a short version of the story. There were other incidents that were serious but don&#8217;t change the overall point of the story.</p>
<p>So here&#8217;s the question &#8211; what do you do to motivate the person who is semingly unwilling to be motivated?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknophyl.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknophyl.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknophyl.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknophyl.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknophyl.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknophyl.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknophyl.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknophyl.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknophyl.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknophyl.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknophyl.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknophyl.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknophyl.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknophyl.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=69&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknophyl.wordpress.com/2010/08/24/motivating-the-unmotivated/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">codemunkee</media:title>
		</media:content>
	</item>
		<item>
		<title>Pragmatically Developing on an Island</title>
		<link>http://teknophyl.wordpress.com/2010/08/18/pragmatically-developing-on-an-island/</link>
		<comments>http://teknophyl.wordpress.com/2010/08/18/pragmatically-developing-on-an-island/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 17:22:39 +0000</pubDate>
		<dc:creator>Teknophyl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://teknophyl.wordpress.com/?p=58</guid>
		<description><![CDATA[While reading Joel On Software (yes, I am ashamed to say it is my first time reading it), specifically his 12 Steps to Better Code, I discovered that #8 REALLY resonated with me: Do programmers have quiet working conditions? It used to be that programmers and developers were perceived as the shy, almost anti-social type. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=58&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While reading <a href="http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898">Joel On Software</a> (yes, I am ashamed to say it is my first time reading it), specifically his <a href="http://www.joelonsoftware.com/articles/fog0000000043.html">12 Steps to Better Code</a>, I discovered that #8 REALLY resonated with me:</p>
<p><em>Do programmers have quiet working conditions?</em></p>
<p>It used to be that programmers and developers were perceived as the shy, almost anti-social type. This rule doesn&#8217;t help to debunk that stereotype, either, never mind that this kind of PERSON, let alone developer, does not have a high degree of career success (that&#8217;s up to you to define, I suppose). But Joel is right on &#8211; programmers need quiet working conditions. I didn&#8217;t have one starting out, and it was a tough gig.</p>
<p>His argument is in some ways &#8220;perfect world&#8221; &#8211; let&#8217;s be realistic, not every programmer can have an office door &#8211; but there are other options. Headphones are probably the most popular (although at a start-up I worked at, one guy taped garbage bags around his cube, making a roof and a curtain).  Some people have the opportunity to work from home, the ultimate in controlled working conditions.  I do both, and I&#8217;ve gotten good at establishing a quiet work environment. while still remaining accessible.</p>
<ul>
<li><strong>Instant Messenger statuses. </strong>My personal favorite. Create a friendly &#8220;busy&#8221; message that lets people know you are busy and should not be interrupted. Then, disable instant message windows in busy mode (this doesn&#8217;t make flashing windows a distraction). Finally, leave a phone number to reach you if the request is urgent. This forces people to truly consider whether they have a critical need. By the same token, turn it off and make yourself accessible when the timing is not critical.</li>
<li><strong>Scheduled email reviews. </strong>This doesn&#8217;t work for everyone, but I like to shut my email client down and only open it at certain intervals. If something came through that was critical, in my opinion, a phone call is warranted. It can&#8217;t be that urgent if it was sent over a comparably unreliable medium like email.</li>
<li><strong>Turn your phone on. </strong>These don&#8217;t work if you don&#8217;t have your phone on. You&#8217;ll only make enemies.</li>
<li><strong>Pre-planning goes a long way. </strong>If you have a planned flow session, go to the bathroom beforehand. Keep snacks and drinks nearby.  Have your to-do list at hand. Turn off Twitter, RSS, Facebook, etc. These can be incredibly distracting! They are to me, anyway.</li>
<li><strong>Get one of these &#8211; </strong>a <a href="http://www.thinkgeek.com/computing/accessories/2940/">monitor rear view mirror.</a> Or, you can just go to your local auto parts big box store and get a mirror for two bucks, then use the tape it comes with and attach it to your monitor. You can now work quietly, checking your rear view every now and then to see if anyone&#8217;s hovering. <a href="http://teknophyl.files.wordpress.com/2010/08/p_1600_1200_1c313857-6899-4c92-adfc-a97774696cb4.jpeg">This is what one looks like</a>.</li>
</ul>
<p>Remaining accessible, or giving the perception that you still are accessible, is critical. Development is almost always a collaborative effort, and you&#8217;ll never be able to shut people out entirely (if you do, consider a different gig!). But you can give people the illusion of accessibility and still work, for the most part, uninterrupted.</p>
<p>Got any other tips to share?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknophyl.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknophyl.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknophyl.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknophyl.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknophyl.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknophyl.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknophyl.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknophyl.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknophyl.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknophyl.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknophyl.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknophyl.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknophyl.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknophyl.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknophyl.wordpress.com&amp;blog=13720407&amp;post=58&amp;subd=teknophyl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknophyl.wordpress.com/2010/08/18/pragmatically-developing-on-an-island/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">codemunkee</media:title>
		</media:content>
	</item>
	</channel>
</rss>
