<?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/"
	>

<channel>
	<title>Dev Sanctum</title>
	<atom:link href="http://devsanctum.com/blog/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://devsanctum.com/blog</link>
	<description>Technology architecture, web programming and Internet</description>
	<pubDate>Thu, 01 Oct 2009 14:00:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Build It and the will not come</title>
		<link>http://devsanctum.com/blog/index.php/2009/10/build-it-and-the-will-not-come/</link>
		<comments>http://devsanctum.com/blog/index.php/2009/10/build-it-and-the-will-not-come/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 13:59:49 +0000</pubDate>
		<dc:creator>RyanTxr</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Tech]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://devsanctum.com/blog/?p=144</guid>
		<description><![CDATA[
Build it and they will come. That’s what they say. Or so I heard. And what if they don’t? That’s the question in today’s business world. That movie from an age gone by put forth flawed advice. Are you really telling me that if I build the world’s largest ball of string, I will be [...]]]></description>
			<content:encoded><![CDATA[<p><!--[endif]--></p>
<p class="MsoNormal">Build it and they will come.<span> </span>That’s what they say.<span> </span>Or so I heard.<span> </span>And what if they don’t?<span> </span>That’s the question in today’s business world.<span> </span>That movie from an age gone by put forth flawed advice.<span> </span>Are you really telling me that if I build the world’s largest ball of string, I will be overwhelmed with visitors? Build it and they probably won’t come and you will waste your time and money.<span> </span>That’s the more likely scenario.<span> </span>The real truth is to research if they will come before building anything.<span> </span>And even then, that does not mean they really will flock to your door.</p>
<p class="MsoNormal">Don’t build everything you can imagine.<span> </span>Build what you need today and try not to make it too difficult to expand later.<span> </span>The minute you find yourself agonizing over how to arrange all the molecules in your universe so you might save yourself 2 days in the future, stop.<span> </span>Find the fastest path to the finish line and deploy.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsanctum.com/blog/index.php/2009/10/build-it-and-the-will-not-come/feed/</wfw:commentRss>
		</item>
		<item>
		<title>They Sit And Wait</title>
		<link>http://devsanctum.com/blog/index.php/2009/09/they-sit-and-wait/</link>
		<comments>http://devsanctum.com/blog/index.php/2009/09/they-sit-and-wait/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 18:39:08 +0000</pubDate>
		<dc:creator>RyanTxr</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<category><![CDATA[programming architecture agile]]></category>

		<guid isPermaLink="false">http://devsanctum.com/blog/index.php/2009/09/they-sit-and-wait/</guid>
		<description><![CDATA[How many times have I seen it?  Many.  In a design session, someone comes up with an idea. Someone else comes up with a way to make that idea even more flexible.  That way, sometime in the future when someone wants a variation on the idea, all that is needed is to [...]]]></description>
			<content:encoded><![CDATA[<p>How many times have I seen it?  Many.  In a design session, someone comes up with an idea. Someone else comes up with a way to make that idea even more flexible.  That way, sometime in the future when someone wants a variation on the idea, all that is needed is to make a few configuration changes and voila, there we have it.<br />
Then they sit and wait for that glorious day when someone comes along with a request to match what they built.  Very often, it never comes.  Sometimes it does but it is years later.  Sometimes the developer moved on and no one can make any sense of the configuration options.  Other developers have different approaches and undo what a previous developer did.<br />
Predict no further into the future than a few months.  It is enough.  Be prepared at that point to adjust your approach then.  Not now.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsanctum.com/blog/index.php/2009/09/they-sit-and-wait/feed/</wfw:commentRss>
		</item>
		<item>
		<title>6 Commandments for developers</title>
		<link>http://devsanctum.com/blog/index.php/2009/08/6-commandments-for-developers/</link>
		<comments>http://devsanctum.com/blog/index.php/2009/08/6-commandments-for-developers/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 16:49:49 +0000</pubDate>
		<dc:creator>RyanTxr</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Tech]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[developer]]></category>

		<guid isPermaLink="false">http://devsanctum.com/blog/?p=141</guid>
		<description><![CDATA[6 commandments for developers]]></description>
			<content:encoded><![CDATA[<h1>6 Commandments for Developers</h1>
<p>As developers, our work will often last a long time.  Much more time is spent modifying code later than is spent initially creating the code.  Starting off on a good foot sets the stage for what comes later.  Often, it becomes impossible or really difficult to change some things later.</p>
<p>These are some small guidelines that will pay big in the long run.</p>
<h1>Name boolean variables in the positive</h1>
<p>If you need a boolean variable to enable of disable something, name it in the positive.</p>
<h2>Good</h2>
<pre><span style="color: #0000ff;">boolean</span> gardenHoseEnabled;</pre>
<pre><span style="color: #0000ff;">if</span> ( gardenHoseEnabled <span style="color: #800080;">)</span> <span style="color: #339966;">{</span></pre>
<pre>   waterGarden<span style="color: #800080;">()</span>;</pre>
<pre><span style="color: #339966;">}</span></pre>
<h2>Bad</h2>
<pre><span style="color: #0000ff;">boolean</span> gardenHoseDisabled</pre>
<pre><span style="color: #0000ff;">if</span> <span style="color: #800080;">(</span> ! gardenHoseDisabled <span style="color: #800080;">)</span> {</pre>
<pre>   waterGarden<span style="color: #800080;">()</span>;</pre>
<pre>}</pre>
<p>The double negative in the if statement leads to unnecessary confusion.  Throw this into a mix of other complicated logic and it becomes just that much harder to decipher.</p>
<p>Expressing the variable in its negative form in an if statement is still more readable.</p>
<p>I can still read this pretty well:</p>
<pre><span style="color: #3366ff;">if</span> <span style="color: #800080;">(</span> ! gardenHoseEnabled <span style="color: #800080;">)</span></pre>
<h1>Always Use A Source Code Control System</h1>
<p>Do this even if you are just playing with code for yourself.  You will thank yourself later.</p>
<h1>Remove Obsolete Code, Don&#8217;t Comment It</h1>
<p>If you are using a source code control system, you can always go back to your old code.  Don&#8217;t leave the old crap hanging around.</p>
<p>Use Natural Keys In Your Database Tables</p>
<p>Some people will disagree with me.  Oh well.  If you have a table that is to contain data and there is a natural primary key for the table, use that as the key.  Do not make an ID column as your key all the time.</p>
<p>Avoid surrogate keys as much as possible.</p>
<p>a)      It is a waste.</p>
<p>b)      Queries get more complex.</p>
<p>c)       You will almost always want to search by the real key. Yes you can add another index, but an index is not free.</p>
<h1>Build What You Need At The Time</h1>
<p>It is important to anticipate what will be needed in the future.  However, I&#8217;ve seen developers design and build components that they thought might one day be needed only to have the component never be used.  It would have been better to build something simpler then rework it later even if that meant more work over the entire life of the project.  Being efficient is only good if you can truly predict the future.  If you are wrong, then you waste time creating features that no one uses.</p>
<p>Think about some applications like Microsoft Word.  How many people really use all the features in that thing?  What percentage of the features do you think get really used?  I don&#8217;t have any statistics.  But I bet that it is very low.</p>
<h1>Write A Little Documentation</h1>
<p>I&#8217;m not saying to document every nook and cranny of what you did.  But a short one page highlight would be nice.  This is especially true if the process is complicated or the solution particularly challenging.  Give the next guy a chance to work with the code without having to walk through every line of code and needing a series of campfire stories to understand it.</p>
<p>If you have access to a Wiki, this is even easier.  Write the most minimal stuff you can think of in 30 mins.  Then as others have a few minutes, they can add to it.</p>
<h1>Do Code Reviews</h1>
<p>When doing a code review, remember that it is not YOUR code or HIS code or HER code.  It is THE code.  It is the team&#8217;s responsibility as a unit to get the best code possible.  I&#8217;ve fought with code reviewers in the past over the naming of a variable.  In retrospect, I was wrong.  Why did I fight?  I was taking it personally.  It is easy to do that.  Don&#8217;t!</p>
<p>Instead, see yourself as someone who has brought the code to this point.  The team is helping to bring it further along.  It is not an attack on you.  It is not a judgement on you.</p>
<p>These are the items I will leave you with today.  I hope it helps you create better applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsanctum.com/blog/index.php/2009/08/6-commandments-for-developers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Making a drupal module</title>
		<link>http://devsanctum.com/blog/index.php/2009/07/making-a-drupal-module/</link>
		<comments>http://devsanctum.com/blog/index.php/2009/07/making-a-drupal-module/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 01:15:24 +0000</pubDate>
		<dc:creator>RyanTxr</dc:creator>
		
		<category><![CDATA[Drupal]]></category>

		<category><![CDATA[Internet]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devsanctum.com/blog/?p=136</guid>
		<description><![CDATA[I spent a day making a module for Drupal.  I simply went through the tutorial on the drupal site. This makes a simple block module that displays articles entered into a drupal installation within the last week.  Even though the example is simple, going through this tutorial is an excellent way to get an idea [...]]]></description>
			<content:encoded><![CDATA[<p>I spent a day making a module for Drupal.  I simply went through the tutorial on the drupal site. This makes a simple block module that displays articles entered into a drupal installation within the last week.  Even though the example is simple, going through this tutorial is an excellent way to get an idea about how to make a module for Drupal.  I was able to use this tutorial to make a module to get and display messages from Twitter.</p>
<p>Drupal provides an excellent infrastructure for building applications.  Developers can focus on making the application or module work and take advantage of all Drupal&#8217;s super structure.</p>
<p>Drupal can control who has access to each module.  All that is necessary to take advantage of this is to create a module function that describes what permissions a module wants to offer.  For example, modules often control access to a module and access to admin for a module.</p>
<p>Download and install the <a href="http://ryantxr.com/download/searchtwit.zip">SearchTwit module</a> if you wish.</p>
<p>The form API lets a module present data entry forms.  All the module has to do is create an array describing what fields to offer.  Drupal generates the HTML form elements and all the controls.</p>
<p>Drupal has a storage area for configuration values.  All modules can access this area to read or write information.  Therefore, there is no need to write or maintain configuration files.</p>
<p>I intend to expand my module and add some more features.  I&#8217;m not sure why someone would build a web application from the ground up anymore.</p>
<p><img class="alignright size-medium wp-image-137" title="search-twitter-admin" src="http://devsanctum.com/blog/wp-content/uploads/2009/07/search-twitter-admin-300x282.jpg" alt="search-twitter-admin" width="300" height="282" />This shows the admin for the module. It has three settings.  The search term defines what term the module will search for on Twitter.</p>
<p>The debug setting turns on some debug output.  It will write the number of messages it got from Twitter and it outputs the Atom XML to a file.  While you can use the module on any site, do not turn on the debug.  At least, go into the module and change the location of the file name.</p>
<p>The last setting defines how many messages it will display.</p>
<p>SearchTwit currently outputs its list as an HTML &lt;ul&gt;&lt;li&gt; list.</p>
<p>Making this module was very easy.  I&#8217;m looking forward to doing more.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsanctum.com/blog/index.php/2009/07/making-a-drupal-module/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Terms Of Service Agreements</title>
		<link>http://devsanctum.com/blog/index.php/2009/07/terms-of-service-agreements/</link>
		<comments>http://devsanctum.com/blog/index.php/2009/07/terms-of-service-agreements/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 03:30:50 +0000</pubDate>
		<dc:creator>RyanTxr</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devsanctum.com/blog/?p=134</guid>
		<description><![CDATA[It is time for me to rant.  What&#8217;s the deal with Terms of Service agreements?  Does anyone read these things?  Can they?  I barely can.
Who has the balls to put in a contract that you waive all rights to a jury trial.  That won&#8217;t hold up in any court.  There are some rights you cannot [...]]]></description>
			<content:encoded><![CDATA[<p>It is time for me to rant.  What&#8217;s the deal with Terms of Service agreements?  Does anyone read these things?  Can they?  I barely can.</p>
<p>Who has the balls to put in a contract that you waive all rights to a jury trial.  That won&#8217;t hold up in any court.  There are some rights you cannot sign away.</p>
<p>I have had enough with these contacts that state that one party may amend the contract any time it wants and the other party just has to suck it up.  So I have to agree to something that is in the future and hasn&#8217;t even been thought of yet?</p>
<p>Are they insane?</p>
<p>You are probably wondering who I am talking about.  I don&#8217;t blame you.  This is one of the worst I have seen.  Worse I think than credit card agreements.  And those are pretty bad.</p>
<p>I am referring to ClickBank.  They are an an affiliate service like Commission Junction and Shareasale.  There are others.  I always try to read these agreements.  Most of the time I make it through.  This one makes me want to puke.</p>
<p>I guess the lawyer who wrote this was sued a million times and decided to make the mother of all agreements.  Hey, Mr. Lawyer, why not just say:</p>
<blockquote><p>this agreement will be whatever I feel it should be on any given day and you agree to abide by that.  I will change it whenever the fuck I want.</p></blockquote>
<p>You would have saved ClickBank the fees you charged and saved us the utter aggravation of having to read that putrid vomitous mass. (vomitous isn&#8217;t even a word)</p>
<p>Let&#8217;s start with this one.</p>
<blockquote><p>ClickBank, in its sole discretion, may suspend Your account(s) or hold any or all funds in Your                     ClickBank account if ClickBank suspects or has reason to believe and/or if a Person otherwise claims                     that You have been involved with any of the following:</p>
<ol style="list-style-type: lower-roman;">
<li> Illegal activity, including but not limited to, [blah blah blah]</li>
<li> Violation or infringement of any Person&#8217;s rights, including without limitation, any IP Rights;</li>
<li><em>and it goes on and on</em></li>
</ol>
</blockquote>
<p>So any asshole can call them up claiming that you are involved in something illegal and ClickBank can withhold your money. Just great.  What country are they living in?  We do live in a country that has a presumption of innocence.</p>
<p>I now bring you yet another gem.</p>
<blockquote><p>Without limiting the foregoing, ClickBank                     shall have the right to immediately terminate Your access and use of the ClickBank Services, or any                     portion thereof, in the event of any conduct which ClickBank, <span style="color: #ff0000;">in its sole discretion, considers to                     be unacceptable</span>.</p></blockquote>
<p>I am speechless.</p>
<p>Then there is the infamous paragraph 12.  I&#8217;m not reprinting any portion here.  I will tell you that it is 220 SOLID WORDS OF UPPERCASE THAT WOULD DRIVE AN INSANE PERSON TO FURTHER INSANITY.</p>
<p>When I looked at paragraph 13, I almost threw up.  Here is subsection a for your viewing pleasure.</p>
<blockquote><p><strong>YOU HEREBY IRREVOCABLY WAIVE ANY AND                     ALL RIGHT TO TRIAL BY JURY IN ANY ACTION, SUIT, PROCEEDING, CLAIM OR COUNTERCLAIM ARISING UNDER OR IN RELATION TO THIS AGREEMENT.</strong></p></blockquote>
<p>WTF is that?  Are they serious.  Some lawyer actually wrote that? Waive all rights to a jury trial? Really?  Surely, they cannot be serious?  I am no lawyer.  But I am thinking that this isn&#8217;t enforceable anyway.  There are some rights that you cannot sign away.</p>
<blockquote><p><strong>YOU ASSUME ALL RISK AND RESPONSIBILITY FOR YOUR DECISION TO USE THE CLICKBANK SERVICES</strong></p></blockquote>
<p>You know what Mr. ClickBank, you are right, I would assume all risk.  Assuming of course that I accepted your ridiculous terms.  But I can remedy all that right very easily right now but NOT ACCEPTING THESE TERMS.</p>
<p>Here is my plan going forward.  ClickBank is on probation for a year.  JavaScript and Cookies related to them will be disabled on any computer I have access to.  If I am ever FORCED to enable these things, it will be on an extremely temporary basis.  Provided of course that there is absolutely no other alternative.</p>
<p>And lawyers wonder why people don&#8217;t like them.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsanctum.com/blog/index.php/2009/07/terms-of-service-agreements/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sears and Social Media</title>
		<link>http://devsanctum.com/blog/index.php/2009/07/sears-and-social-media/</link>
		<comments>http://devsanctum.com/blog/index.php/2009/07/sears-and-social-media/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 20:40:05 +0000</pubDate>
		<dc:creator>RyanTxr</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devsanctum.com/blog/?p=132</guid>
		<description><![CDATA[Sears launching open id platform for Sears Communities.]]></description>
			<content:encoded><![CDATA[<p>Sears Holdings Corp. announced June 6th that it is the first major retailer to launch the Open ID platform for Sears Communities, which will connect over 1 million monthly visitors via MySears and MyKmart sites to major social media.</p>
<p>The OpenID universal login standard enables visitors to consolidate their Internet identity by providing them a single login for all of their online interactions. This is the first step toward enabling customers to log in to Sears communities using their social IDs rather than set up new accounts. This covers the most popular, familiar web sites such as Google, Facebook, MySpace, Yahoo! and Twitter.</p>
<p>Through this new innovation, users in the Sears and Kmart communities can use the ID and password they already have to write product reviews and can share information on products, services and solutions. Future updates planned with the OpenID platform will allow users in the communities to share their posts and product reviews with friends easily via Facebook.</p>
<p>“We’re constantly looking for ways to stay innovative in our online initiatives by identifying and implementing technologies that help our users navigate our communities with ease,” says Rob Harles, Sears’ vice president of community. “Our adoption of the OpenID technology helps simplify our customers’ online experience and ultimately helps us meet our goal of ensuring our customers have the most efficient shopping experience possible.”</p>
<p>MySears and MyKmart community sites are online destinations that give consumers a variety of ways to share in-depth information about products, helping make their purchase decisions easier. Visitors to MySears and MyKmart have the opportunity to write product reviews, post comments on the reviews of others, participate in discussion boards and post ideas for the community to vote on. Customers also have access to special offers and coupons in return for their participation in the community.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsanctum.com/blog/index.php/2009/07/sears-and-social-media/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why I Don&#8217;t Allow Analytics</title>
		<link>http://devsanctum.com/blog/index.php/2009/07/why-i-dont-allow-analytics/</link>
		<comments>http://devsanctum.com/blog/index.php/2009/07/why-i-dont-allow-analytics/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 12:51:29 +0000</pubDate>
		<dc:creator>RyanTxr</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devsanctum.com/blog/?p=130</guid>
		<description><![CDATA[When browsing sites, I generally do not allow any sort of analytics to run.  I do this by using NoScript in Firefox.  If you have never used NoScript let me tell you a little bit about it.
NoScripts lets the user decide which domains will be allowed to run JavaScript.  It generally defaults to blocking all [...]]]></description>
			<content:encoded><![CDATA[<p>When browsing sites, I generally do not allow any sort of analytics to run.  I do this by using NoScript in Firefox.  If you have never used NoScript let me tell you a little bit about it.</p>
<p>NoScripts lets the user decide which domains will be allowed to run JavaScript.  It generally defaults to blocking all JavaScript at first.  There are two ways to tell it to allow JavaScript for a particular domain.  When on the actual page, there is a little icon which indicates if JavaScript is enabled.  Click on that icon and it opens a menu which allows the user to turn on or off any JavaScript that is included on that page.  This lets users run JavaScript for the site itself but not allow any third party analytics that might be attempting to run.</p>
<p>It is more intrusive to operate this way since the first time visiting a site requires the user to enable any domains he wants to allow JavaScript.  I generally allow JavaScript for the domain I am on but not for any third party.  This works most of the time.  Exceptions to this are things like embedded videos which require JavaScript for the domain where the video is hosted.  This requires some amount of knowledge.  Most users don&#8217;t really understand how JavaScript fits into the browsing picture.  So it probably isn&#8217;t for novices.</p>
<p>The big question is why.  There are two reasons I use this approach.  The first is to reduce exposure to malware.  Granted, this depends on what sorts of sites I visit.  Blocking third party JavaScript can reduce or eliminate redirects and navigation control that might take a person to a place that is bad.</p>
<p>The second reason is one of resources.  If I can operate with less JavaScript why not do it?  There is ZERO benefit to the user to run any analytics.  That is solely for the benefit of the website itself.</p>
<p>If you have not used NoScript and you are intrigued by the idea, I encourage you to give it a try.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsanctum.com/blog/index.php/2009/07/why-i-dont-allow-analytics/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Use Twitter to build ecommerce customers</title>
		<link>http://devsanctum.com/blog/index.php/2009/06/use-twitter-to-build-ecommerce-customers/</link>
		<comments>http://devsanctum.com/blog/index.php/2009/06/use-twitter-to-build-ecommerce-customers/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 20:32:06 +0000</pubDate>
		<dc:creator>RyanTxr</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<category><![CDATA[Social Media]]></category>

		<category><![CDATA[ecommerce]]></category>

		<category><![CDATA[online store]]></category>

		<category><![CDATA[socialmedia]]></category>

		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://devsanctum.com/blog/?p=128</guid>
		<description><![CDATA[How to user Twitter to build ecommerce customers.]]></description>
			<content:encoded><![CDATA[<p>Twitter is here and it is growing fast.  Some are still skeptical and others are forging ahead.  The thing about Twitter is that it is a low calorie service.  It takes very little to create an account and post a few messages every day.  If you run an ecommerce store, why not do something with it even if you don&#8217;t think it will make any difference.  What do you have to lose?  Not very much.</p>
<blockquote><p>Don&#8217;t let perfect be the enemy of good.</p></blockquote>
<p>Or, said another way&#8230;</p>
<blockquote><p>A mediocre plan that is implemented is far better than a great plan that is not.</p></blockquote>
<p>Assuming that you have taken my challenge, what exactly should you do with your Twitter account? Of course you want to create your account.  Try to choose a name that is a good fit but don&#8217;t get too hung up on it.  The name of the game is to get followers.  To do that, you must provide information of value.  If all you plan to do is spew out yoru specials of the day, don&#8217;t bother.  I recently got followed by a Twitter account called &#8220;Jewelry and Watches&#8221;.  I took one look at their tweets and blocked them.  It is pure spam I tell you.</p>
<h2>Enter a Bio</h2>
<p>Statistics show that profiles that have a bio are more likely to get followed.  It&#8217;s only 160 characters.  It cannot be that hard.  Make your bio a real commentary about your e-commerce site.  Do not just cram it with buzzwords.</p>
<h2>Follow Top Users and Your Followers</h2>
<p>The more people you follow, the more followers you will get.  The ratio should be about even.  If you have 50 followers you should be following about 50 people.  The rules are different if you have a strong brand name or an advertising campaign.  Many TV news personalities now are promoting their Twitter accounts.  They don&#8217;t have to follow this rule.</p>
<h2>Put a Link to Your Store</h2>
<p>This is the simplest one of all.  Just do it.  Did I really need to tell you that?</p>
<h2>Know Your Customers and Give Them Value</h2>
<p>Your customers will be interested in valuable information you bring to them.  Beyond telling them what you have on sale today, give them some information on your industry.  This could just be links to articles.  If you write your own blog then you can tweet links to those articles.</p>
<p>Twitter isn&#8217;t the place to list all the widgets you are selling.  You will quickly get ignored for that.</p>
<h2>Retweet Others In Your Industry or Your Customers&#8217; Interests</h2>
<p>Retweeting is sending a twitter message that came from someone else.  It is the main way that information spreads on Twitter.</p>
<p>Your customers will appreciate getting information from you.  Think about someone who sells cars.  What would his friends think if every time they talked to him he asked if they wanted to buy a car?  I mean every time.  Once in a while he might tell them about some special deal that they had.</p>
<h2>Tweet About 20 to 30 Times a Day</h2>
<p>You can go overboard with twitter.  Don&#8217;t over do it.  At the same time, you must have some activity.</p>
<h2>What To Tweet</h2>
<p>Keep things conversational. An old uncle of mine always said, &#8220;People buy from people they like.&#8221;  Someone does not have to know you personally to like you.  If you can give some aspect of personality in your tweets, people will feel more connected.  Try actually responding to people once in a while.  When you are tweeting, you are the individual, not the corporation.  No one ever had a conversation with a corporation.</p>
<p>You might consider doing discounts and specials.  Some ecommerce businesses have been successful with that.  Other brands send out photos or testimonials of real people using their products.</p>
<p>If you sell dive gear, tweet about great places to dive.  You will get more respect that way than talking about 10% off snorkels this month.</p>
<p>A coupon deal of the day has been a big winner for several internet businesses.</p>
<p>Remember, don&#8217;t over do it.  Don&#8217;t flood your customers with too much sales stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsanctum.com/blog/index.php/2009/06/use-twitter-to-build-ecommerce-customers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Object oriented CSS</title>
		<link>http://devsanctum.com/blog/index.php/2009/06/object-oriented-css/</link>
		<comments>http://devsanctum.com/blog/index.php/2009/06/object-oriented-css/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 06:22:49 +0000</pubDate>
		<dc:creator>RyanTxr</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devsanctum.com/blog/?p=126</guid>
		<description><![CDATA[This is not about Object Oriented CSS.  There is no such thing.  However, I just got suckered into reading an article that purported to give a glimpse into the next generation CSS which he claimed was object oriented.  I won&#8217;t even bother to repeat the URL.  It was downright silly.
First, to be object oriented, CSS [...]]]></description>
			<content:encoded><![CDATA[<p>This is not about Object Oriented CSS.  There is no such thing.  However, I just got suckered into reading an article that purported to give a glimpse into the next generation CSS which he claimed was object oriented.  I won&#8217;t even bother to repeat the URL.  It was downright silly.</p>
<p>First, to be object oriented, CSS would have to be a programming language. CSS is only a way to attach attributes to something.  It has no code.  It has no methods.  It has no encapsulation.  It has none of the the things that make a programming language object oriented.</p>
<p>The technique the author was trying to pass off as object oriented is the well known approach that has been in use for years where an HTML element gets multiple styles and each style adds something semantic.  For example I have a few styles I use for debug that add borders to any element.  I would hardly classify that as object oriented CSS.</p>
<p>Rubbish.</p>
<p><a href="http://developer.yahoo.com/yui">YUI</a> started using this approach a long time ago.  And I have never heard any of the Yahoo engineers or architects refer to this technique as object oriented.</p>
]]></content:encoded>
			<wfw:commentRss>http://devsanctum.com/blog/index.php/2009/06/object-oriented-css/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Uses for the Strategy Pattern</title>
		<link>http://devsanctum.com/blog/index.php/2009/06/uses-for-the-strategy-pattern/</link>
		<comments>http://devsanctum.com/blog/index.php/2009/06/uses-for-the-strategy-pattern/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 21:39:43 +0000</pubDate>
		<dc:creator>RyanTxr</dc:creator>
		
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://devsanctum.com/blog/?p=123</guid>
		<description><![CDATA[I was engaged in a discussion recently and the subject of software patterns came up.  More specifically, the strategy pattern became a point of discussion.  I have used this pattern before though I never placed a name to it.  I find that several patterns seem to have multiple names and some are so close in [...]]]></description>
			<content:encoded><![CDATA[<p>I was engaged in a discussion recently and the subject of software patterns came up.  More specifically, the strategy pattern became a point of discussion.  I have used this pattern before though I never placed a name to it.  I find that several patterns seem to have multiple names and some are so close in functionality to others that it is not so clear which is which.</p>
<p>The strategy pattern is also known as the <strong>policy pattern</strong>.  There you go again with the multiple names.</p>
<p>The strategy pattern is a means whereby the algorithm for some class action can be selected at run time.  A class defines a method yet has a mechanism for selecting the algorithm for that method at run time.  This can be implemented in many ways depending on the programming language in use.</p>
<p>Let&#8217;s say there is a class that calculates the total for an invoice.  Let&#8217;s give this class a method that calculates tax.  The tax calculation may be different depending on where the purchaser lives.  We design the calculator class to have a tax calculator method.  This method will call another method that lives in a tax calculator class.  We allow the tax calculator class to be supplied to the calculator class at any time.  We can then determine which tax calculator to use whenever we need to.  Then we can instantiate the tax calculator and pass it to the calculator class which in turn uses it to calculate the tax among the other things it does.</p>
<p>According to Strategy pattern, the behaviors of a class should not be  inherited, instead they should be encapsulated using interfaces.</p>
<p>Why is this a good thing?</p>
<p>We can redefine the tax calculator classes any time we want without touching any of the other classes in the system.  This allows us to separate the algorithms and allow changes with zero possible impact on any other area of the system.</p>
<h2>Similar patterns to consider:</h2>
<p>Adapter</p>
<p>Driver/Plugin</p>
]]></content:encoded>
			<wfw:commentRss>http://devsanctum.com/blog/index.php/2009/06/uses-for-the-strategy-pattern/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
