<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sodaware::Blog &#187; Software Development</title>
	<atom:link href="http://www.sodaware.net/blog/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sodaware.net/blog</link>
	<description>Adventures in shareware.</description>
	<lastBuildDate>Mon, 12 Dec 2011 14:15:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>How to add a custom Facebook app to your page</title>
		<link>http://www.sodaware.net/blog/2011/12/how-to-add-a-custom-facebook-app-to-your-page/</link>
		<comments>http://www.sodaware.net/blog/2011/12/how-to-add-a-custom-facebook-app-to-your-page/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 08:56:18 +0000</pubDate>
		<dc:creator>Phil Newton</dc:creator>
				<category><![CDATA[Web Programming]]></category>

		<guid isPermaLink="false">http://www.sodaware.net/blog/?p=220</guid>
		<description><![CDATA[For the last few hours I&#8217;ve been pulling my hair out trying to add an app I created to a Facebook fan page. Creating the app was trivial compared to actually adding it to the page. Every help page says something different, and the links that were supposed to be there weren&#8217;t. The instructions given [...]]]></description>
			<content:encoded><![CDATA[<p>For the last few hours I&#8217;ve been pulling my hair out trying to add an app I created to a Facebook fan page. Creating the app was trivial compared to actually adding it to the page. Every help page says something different, and the links that were supposed to be there weren&#8217;t. The instructions given are to follow the &#8220;View App Profile Page&#8221; in your app&#8217;s settings page, but this link isn&#8217;t always there for whatever reason. </p>
<p>To add your new app to a page, use the URI below, replacing APP_ID with the ID of the app you want to add. It&#8217;s on the summary page of your app in the developers area (for now).</p>
<blockquote><p>http://www.facebook.com/add.php?api_key=APP_ID&#038;pages=1</p></blockquote>
<p>That will brind up a dialog allowing you to add the app to any page or profile. </p>
<p>Courtesy of <a href="http://stackoverflow.com/questions/8335987/unable-to-view-app-profile-page-the-page-you-requested-was-not-found">this topic</a> on Stack Overflow.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sodaware.net/blog/2011/12/how-to-add-a-custom-facebook-app-to-your-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Traffic That Works</title>
		<link>http://www.sodaware.net/blog/2009/03/getting-traffic-that-works/</link>
		<comments>http://www.sodaware.net/blog/2009/03/getting-traffic-that-works/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 01:11:14 +0000</pubDate>
		<dc:creator>Phil Newton</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Web Programming]]></category>

		<guid isPermaLink="false">http://www.sodaware.net/blog/?p=138</guid>
		<description><![CDATA[There are a few fundamental truths when selling things online. The first is that you need visitors to your website. The second is that you need those visitors to buy something. Anything else they do, such as blog or tweet about you, is just a bonus.]]></description>
			<content:encoded><![CDATA[<p>There are a few fundamental truths when selling things online. The first is that you need visitors to your website. The second is that you need those visitors to buy something. Anything else they do, such as blog or tweet about you, is just a bonus. </p>
<p>A lot of times people concentrate on getting traffic, instead of on obtaining <strong>quality traffic</strong>. </p>
<p>This article contains most of the traffic generation techniques I&#8217;ve used in the last few years, along with some statistics on how well they perform. Naturally, your results may differ from these, but they&#8217;re a good starting point for evaluating different methods. </p>
<p>All statistics are taken from an 18 month period (September 2007 &#8211; February 2009) to give as large a sample size as possible. There are nearly 1,000 different referrers for this period, so these statistics are certainly not 100% accurate. They do give a good picture of what works, which is the important thing. </p>
<p>Anyway, enough with the disclaimers. Each table contains four columns:</p>
<dl>
<dt><strong>Pages Per Visit</strong> </dt>
<dd>
<p>This is the average number of pages a visitor looks at. A higher number means they look around your site more, so keep an eye on this number.</p>
<p>Adding relevant links to the bottom of pages, or sprinkling them throughout your content can help. Be careful not to add too many links though, so you don’t distract visitors from downloading or buying your product.</p>
</dd>
<dt><strong>Time on Site</strong> </dt>
<dd>
<p>The average amount of time a visitor spends on your site. Again, higher numbers are better, as it generally means they’re reading and not just skimming.</p>
</dd>
<dt><strong>Bounce Rate</strong> </dt>
<dd>
<p>The bounce rate is the percentage of visitors that leave your site after a single page. For example, a visitor who enters your homepage and then types another link in the address bar without following your links has “bounced”. The lower this number, the better.</p>
</dd>
<dt><strong>Download Rate</strong> </dt>
<dd>
<p>This is from a goal I set up in Google Analytics to track downloads. A lot of my sales come from people who buy from within the demo, so the higher this number the better. If a source of traffic doesn’t produce any downloads, it’s a sign that I’m advertising to the wrong people.</p>
</dd>
</dl>
<p>As you’ll see, there’s a big difference between the best traffic sources and the worst. The most traffic to <a href="http://www.sodaware.net/">sodaware.net</a> comes from search engines, but search engine optimisation is a big topic that I wanted to avoid, so this article concentrates on sources that are easier to control.</p>
<h3>Paid Advertising </h3>
<h4>Google AdWords </h4>
<p></p>
<p>This is one of the easiest ways to buy traffic. All you have to do is write a short textual advert about your product or website, and then target keywords that people search for. It&#8217;s quick to set up, and you know visitors are looking for what you’re offering because they searched for it. </p>
<p>On the flipside, there&#8217;s a lot of depth to AdWords, and it takes a long time to get really great results. Throwing down a few dollars is only the start, and you’ll lot of your time will be spent on optimising your campaigns and weeding out underperformers.</p>
<table class="HistoryList" width="100%">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right" align="right">3.18</td>
<td class="rowOne" valign="top" align="right" align="right">01:24</td>
<td class="rowOne" valign="top" align="right" align="right">32.6%</td>
<td class="rowOne" valign="top" align="right">17.44%</td>
</tr>
</tbody>
</table>
</p>
<p>&#160;</p>
<h4>Project Wonderful </h4>
<p>Project Wonderful is even easier to use than Google AdWords. Create a graphical button or banner, select the criteria for sites you want to advertise on and you&#8217;re away. </p>
<p>Project Wonderful has the advantage that ads are extremely cheap, as you pay per day, not per click or impression. It&#8217;s a good way of getting lots of hits, and the campaign option makes things even easier. However, it&#8217;s quite easy to spend a lot of money and end up with little to show if you&#8217;re not careful. </p>
<p>Manual bids that are tailored to each site you&#8217;re bidding on seem to work the best. They takes more work, but the responses are generally higher. </p>
<p>Below are stats for the top three bids I ran. </p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">3.52</td>
<td class="rowOne" valign="top" align="right">01:11</td>
<td class="rowOne" valign="top" align="right">61.0%</td>
<td class="rowOne" valign="top" align="right">9.76%</td>
</tr>
<tr>
<td class="rowTwo" valign="top" align="right">2.42</td>
<td class="rowTwo" valign="top" align="right">00:50</td>
<td class="rowTwo" valign="top" align="right">59.3%</td>
<td class="rowTwo" valign="top" align="right">6.44%</td>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">2.08</td>
<td class="rowOne" valign="top" align="right">00:47</td>
<td class="rowOne" valign="top" align="right">59.8%</td>
<td class="rowOne" valign="top" align="right">2.06%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>Text Link Ads </h4>
<p>According to Text Link Ads, the real power of this method comes from the increase in search engine ranking for your site. They recommend you leave your ad running for several months to evaluate it, as search engines take a while to update. </p>
<p>Over a five month period, I saw no change in my ranking. Having said that, I was trying to rank on very competitive terms, so it may be better for niche phrases instead. </p>
<p>These are statistics from the sites that ads were placed on. As you can see, the links themselves didn’t bring particularly good traffic compared to other methods.</p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">1.35</td>
<td class="rowOne" valign="top" align="right">00:05</td>
<td class="rowOne" valign="top" align="right">88.4%</td>
<td class="rowOne" valign="top" align="right">3.49%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h3>Free Advertising </h3>
<h4>StumbleUpon </h4>
<p>Although you can pay for Stumbles, I&#8217;m putting it in the free category as you can get good results without paying. Stumblers generally fall into two categories: People who will stay and read, and people who will leave within a few seconds. This dramatically skews the visit time down and bounce rate. </p>
<p>StumbleUpon brings in a big spike of traffic at the beginning, and quickly tales off after a few days. It continues to bring in visitors over time, and sometimes you’ll get secondary spikes. There’s also the chance that visitors will stumble your other content, leading to more spikes.</p>
<p>For the main page, the were quite poor, but for articles and resources it works much better. Your best option is to add tips, hints or guides to your site and have them stumbled. </p>
<p>Articles about unique qualities of your product will perform better, as long as you go easy on the sales talk and concentrate on writing something of value. </p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">1.34</td>
<td class="rowOne" valign="top" align="right">00:23</td>
<td class="rowOne" valign="top" align="right">74.4%</td>
<td class="rowOne" valign="top" align="right">0.58%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>Article Marketing </h4>
<p>This is a simple technique, but it can have good results. The process involves writing articles that target certain keywords. Each article will contain a link to your site in the article footer. This article is then submitted to article directories, which generally rank high in the search engines. For example, if you&#8217;re selling a solitaire game you could write about tips for playing the game and include a link at the bottom of the article. </p>
<p>It may sound a little bit spammy, but it isn’t if you provide value to your readers.</p>
<p>So far this has been one of the best methods of traffic generation I&#8217;ve used. It takes effort to research and write your article, but the traffic quality is extremely high. An article I wrote over a year ago still sends a good amount of traffic which converts extremely well into downloads and sales. </p>
<p>Article marketing is a topic I’ll be writing more about in the future.</p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">2.37</td>
<td class="rowOne" valign="top" align="right">00:46</td>
<td class="rowOne" valign="top" align="right">42.8%</td>
<td class="rowOne" valign="top" align="right">24.28%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>Blog Commenting </h4>
<p>Find a blog that relates to your topic, and make a relevant comment that contains a link to your website. As long as your comment is useful and the blog gets a reasonable amount of traffic, you&#8217;ll get visits. Depending on your contribution, you may also develop a relationship with the blogger which can bring more traffic. </p>
<p>The first result in the table below is the result of a single trackback I made three years ago. It&#8217;s brought several hundred visits (and still brings in a dozen or so a week), but the traffic doesn&#8217;t convert. This technique works much better for getting blog readers rather than customers.</p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">2.60</td>
<td class="rowOne" valign="top" align="right">02:28</td>
<td class="rowOne" valign="top" align="right">48.3%</td>
<td class="rowOne" valign="top" align="right">0.00%</td>
</tr>
<tr>
<td class="rowTwo" valign="top" align="right">1.83</td>
<td class="rowTwo" valign="top" align="right">00:09</td>
<td class="rowTwo" valign="top" align="right">66.7%</td>
<td class="rowTwo" valign="top" align="right">0.00%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>Forum Posting </h4>
<p>This is similar to blog commenting, but the link to your site goes in your forum signature. Again, the benefit here comes from generating an online presence, rather than raw traffic power. </p>
<p>These are the top three forum referrals to <a href="http://www.sodaware.net/">sodaware.net</a>. </p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">2.39</td>
<td class="rowOne" valign="top" align="right">01:28</td>
<td class="rowOne" valign="top" align="right">73.4%</td>
<td class="rowOne" valign="top" align="right">1.06% </td>
</tr>
<tr>
<td class="rowTwo" valign="top" align="right">2.96</td>
<td class="rowTwo" valign="top" align="right">01:41</td>
<td class="rowTwo" valign="top" align="right">62.7%</td>
<td class="rowTwo" valign="top" align="right">0.00%</td>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">1.36</td>
<td class="rowOne" valign="top" align="right">01:21</td>
<td class="rowOne" valign="top" align="right">72.7%</td>
<td class="rowOne" valign="top" align="right">0.00%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>&quot;How To&quot; blog articles </h4>
<p>Think of a problem you face daily, and write a blog article about solving it. Its simple, quick, and if you get the title (and problem) right you can get a lot of exposure and links. </p>
<p>I get a lot of traffic to one &quot;how to&quot; in particular, but the vast majority of visitors don’t stay for anything else. This makes sense, seeing as they&#8217;re searching for a solution to a problem and not for games. </p>
<p>The best advice I can give is to treat this method like writing a recipe with one of your products as the ingredient. This way you’re providing something valuable, and also encouraging downloads and sales. </p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">1.04</td>
<td class="rowOne" valign="top" align="right">05:29</td>
<td class="rowOne" valign="top" align="right">94.3%</td>
<td class="rowOne" valign="top" align="right">0.00%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>Link directories </h4>
<p>I tried an automated submission programme a while ago, but I’m yet to see a single visitor from any directory. </p>
<p><a href="http://dmoz.org">dmoz.org</a> is worth submitting to, but as it&#8217;s human edited it can take a while to get added. </p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">0</td>
<td class="rowOne" valign="top" align="right">00:00</td>
<td class="rowOne" valign="top" align="right">n/a</td>
<td class="rowOne" valign="top" align="right">0.00%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>Blog Carnivals </h4>
<p>I&#8217;ve entered blog carnivals as well as hosted them, and the results have been a little mixed. Hosting brings in a decent amount of short term traffic, but I suspect it&#8217;s mainly people who submitted articles that visit. </p>
<p>It’s a good way of getting a few more readers for your blog, and be good for spreading your site around. </p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">1.50</td>
<td class="rowOne" valign="top" align="right">00:21</td>
<td class="rowOne" valign="top" align="right">75.0%</td>
<td class="rowOne" valign="top" align="right">0.00%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>Game Buttons </h4>
<p>I tried these out in my <a href="http://www.sodaware.net/blog/2007/10/how-much-traffic-does-19.95-get-you-part-1/">$19.95 experiment</a> and absolutely hated them. I think they cheapened the look of the site, and most of the banners contained images I didn’t really want to see. The other problem is you have to make a lot of impressions to generate any decent amount of traffic. </p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">2.84</td>
<td class="rowOne" valign="top" align="right">00:59</td>
<td class="rowOne" valign="top" align="right">41.3%</td>
<td class="rowOne" valign="top" align="right">13.99%</td>
</tr>
<tr>
<td class="rowTwo" valign="top" align="right">1.67</td>
<td class="rowTwo" valign="top" align="right">00:21</td>
<td class="rowTwo" valign="top" align="right">71.4%</td>
<td class="rowTwo" valign="top" align="right">0.00%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>Free Developer Resources </h4>
<p>The &quot;<a href="http://www.sodaware.net/dev/">For Developers</a>&quot; section is where I put articles, source code and tools for other developers to use. It didn&#8217;t bring in much traffic to begin with, but posting about some of the resources on forums helped. </p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">2.43</td>
<td class="rowOne" valign="top" align="right">01:39</td>
<td class="rowOne" valign="top" align="right">73.5%</td>
<td class="rowOne" valign="top" align="right">0.86%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>WikiPedia </h4>
<p>This is a five minute method that works well, but if done incorrectly you’ll end up looking like a spammer, so use it wisely. </p>
<p>Find an article on WikiPedia that relates to something on your site, and add a link to it in the &quot;External Links&quot; section of the page. Remember that WikiPedia monitors links that are added, so if you don&#8217;t add value to the topic you&#8217;ll find your link nuked (and you could also be banned). For example, my <a href="http://www.sodaware.net/blog/2006/11/interview-with-hanako-games/">interview with Hanako Games</a> is on the <a href="http://en.wikipedia.org/wiki/Hanako_Games">Hanako Games WikiPedia page</a>.</p>
<p>As with text link ads, the real benefit here is getting links and increasing your search engine ranking.</p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">1.31</td>
<td class="rowOne" valign="top" align="right">01:03</td>
<td class="rowOne" valign="top" align="right">76.9%</td>
<td class="rowOne" valign="top" align="right">0.00%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>Traffic Exchanges </h4>
<p>This one is a little hit and miss, although it&#8217;s not as bad as some of the other methods. You add your link to a directory, and its position is dependent on how many other sites you visit. For example, visiting 30 sites may put you on the first page, which will get you more visitors. </p>
<p>The downside is that most people are only visiting your page to increase their own rank, but the traffic isn&#8217;t as bad as I expected. </p>
<table class="HistoryList" width="2">
<tbody>
<tr>
<th valign="top">Pages Per Visit</th>
<th valign="top">Time on Site</th>
<th valign="top">Bounce Rate</th>
<th valign="top">Download Rate</th>
</tr>
<tr>
<td class="rowOne" valign="top" align="right">1.42</td>
<td class="rowOne" valign="top" align="right">00:27</p>
</td>
<td class="rowOne" valign="top" align="right">81.4%</td>
<td class="rowOne" valign="top" align="right">1.53%</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>Conclusion </h4>
<p>This is just a small sample of the various method of traffic generation techniques out there. If you’re trying to increase your site’s traffic, just remember to measure <strong>what</strong> your visitors are doing, not just <strong>how many</strong> you’re getting. Sure, it’s nice to see big numbers in your hit counter, but that means nothing if they don’t stay and buy from you. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sodaware.net/blog/2009/03/getting-traffic-that-works/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More on Silver Bullets</title>
		<link>http://www.sodaware.net/blog/2008/08/more-on-silver-bullets/</link>
		<comments>http://www.sodaware.net/blog/2008/08/more-on-silver-bullets/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 07:52:00 +0000</pubDate>
		<dc:creator>Phil Newton</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.sodaware.net/blog/2008/08/more-on-silver-bullets/</guid>
		<description><![CDATA[A brief follow-up to "<a href="http://www.sodaware.net/blog/2008/08/there-is-no-silver-bullet/">There is No Silver Bullet</a>".]]></description>
			<content:encoded><![CDATA[</p>
<p>In my previous post, I wrote about Silver Bullets, and how they’re a dangerous thing to strive for when writing software. Naturally I’m not the first person to write about them</p>
<p>Jeff Atwood’s “<a href="http://www.codinghorror.com/blog/archives/001160.html">Quantity Always Trumps Quality</a>” deals with the underlying cause of Silver Bullet Syndrome – trying to design the perfect system. When I first read the headline, I was already getting ready to disagree, but it makes a very valid point. If you’re not writing code, you’re no learning. Theorizing about best practices and architecture is all well and good, but you can only see things go wrong when you actually code them and see how they work.</p>
<p><a href="http://jeffreypalermo.com/blog/i-ll-get-to-your-application-in-a-minute-first-we-need-to-build-the-framework/">“I&#8217;ll get to your application in a minute &#8211; First, we need to build the framework</a>” by Jeffrey Palermo looks at the problem from a web developer’s point of view. The environment may be different, but the problem remains the same. Well worth a read.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sodaware.net/blog/2008/08/more-on-silver-bullets/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>There is No Silver Bullet</title>
		<link>http://www.sodaware.net/blog/2008/08/there-is-no-silver-bullet/</link>
		<comments>http://www.sodaware.net/blog/2008/08/there-is-no-silver-bullet/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 07:13:00 +0000</pubDate>
		<dc:creator>Phil Newton</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.sodaware.net/blog/2008/08/there-is-no-silver-bullet/</guid>
		<description><![CDATA[Once this engine is finished, making the rest of the software will be a piece of cake! If only that was true.]]></description>
			<content:encoded><![CDATA[<p>Legend has it that the way to kill a werewolf is to shoot it through the heart with a silver bullet. </p>
<p>Software is not a werewolf. </p>
<p>That might seem like an obvious statement, but how many times do developers approach a task with the mentality that there&#8217;s only one &quot;perfect&quot; way of doing it? </p>
<p>A good illustration of this is to give ten programmers a single, small problem to solve. Chances are, they will all do something slightly different. Even simple algorithms can be done in a dozen different ways. And remember, this is just small stuff here. Once you get to developing full pieces of software, the choice of solutions explodes. Just look at how many RSS readers are out there. Each one solves the same basic problem in a different way. </p>
<p>Games are just as likely to fall prey to the &quot;perfect&quot; way of thinking. Perhaps even more likely, because of there&#8217;s always the thought of &quot;we can use this framework for every other game, so it has to be good&quot;. This type of thinking sounds smart in principle. After all, re-using code saves money and time. The only problem is that too much time gets wasted on tweaking engines instead of creating the actual product. </p>
<p>Start small, and concentrate on what <strong>needs</strong> doing. Don&#8217;t get caught up in trying to develop an engine that can do everything, because it&#8217;s a waste of time. Always remember that what you&#8217;re creating can be done in a million different ways, and none of them are perfect. </p>
<p>There is no silver bullet. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sodaware.net/blog/2008/08/there-is-no-silver-bullet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Resource &#8211; BlitzBuild</title>
		<link>http://www.sodaware.net/blog/2007/04/new-resource-blitzbuild/</link>
		<comments>http://www.sodaware.net/blog/2007/04/new-resource-blitzbuild/#comments</comments>
		<pubDate>Tue, 10 Apr 2007 01:30:18 +0000</pubDate>
		<dc:creator>Phil Newton</dc:creator>
				<category><![CDATA[Blitz Tips]]></category>
		<category><![CDATA[Developer Resources]]></category>
<category>blitz</category><category>free resources</category>
		<guid isPermaLink="false">http://www.sodaware.net/blog/2007/04/new-resource-blitzbuild/</guid>
		<description><![CDATA[A command line build tool for Blitz developers.]]></description>
			<content:encoded><![CDATA[<h3>What is BlitzBuild?</h3>
<p>BlitzBuild is a command line tool for compiling BlitzPlus and Blitz3D applications, although it can be used to automate other tasks in a similar fashion to Windows batch files. BlitzBuild&#8217;s primary aim is to make it easier to build software with the Blitz series of languages, to remove the IDE from the build process and to combine several key build steps (such as documentation creation and testing) into a single step. This saves time and can also improve the quality of the finished article.  </p>
<p>For the latest updates to this project, see the <a title="BlitzBuild -- Project Homepage" href="http://www.sodaware.net/dev/tools/blitzbuild">BlitzBuild project homepage</a>.</p>
<p><strong>Important Note: </strong>This release is very much a &#8220;preview&#8221;, and as such isn&#8217;t really recommended for a production environment. </p>
<h3>License</h3>
<p>BlitzBuild is freeware and may be used without restrictions.</p>
<h3>Quick Links</h3>
<table cellpadding="2" width="100%">
<tbody>
<tr>
<td style="background: #eeeeee"><strong>Project Home:</strong></td>
<td><a href="http://www.sodaware.net/dev/tools/blitzbuild/">http://www.sodaware.net/dev/tools/blitzbuild/</a></td>
</tr>
<tr>
<td style="background: #eeeeee"><strong>Project Documentation:</strong></td>
<td><a href="http://docs.sodaware.net/blitzbuild/">http://docs.sodaware.net/blitzbuild/</a></td>
</tr>
<tr>
<td style="background: #eeeeee"><strong>Bug Tracker:</strong></td>
<td><a href="http://bugs.sodaware.net/?project=3">http://bugs.sodaware.net/?project=3</a></td>
</tr>
</tbody>
</table>
<h3>Donations &amp; Support</h3>
<p>If you find this library helpful in your projects, please consider <a href="http://www.sodaware.net/dev/donate.htm">donating</a>. Donations of any size are always welcome!</p>
<p>If you have any comments, please feel free to leave them here. You can also <a href="http://www.sodaware.net/contact-us.htm">send an email</a> or leave them as a feature request on the <a href="http://bugs.sodaware.net/?project=3">bug tracker</a>.</p>
<h3>Download</h3>
<div class="latestRelease">
<h4>Download Latest Release (0.1)</h4>
<p><img src="http://www.sodaware.net/blog/wp-content/themes/sodaware_blog/images/greenArrow.gif" align="left"/> <a title="Download zip distribution" href="http://downloads.sodaware.net/tools/blitzbuild/blitzbuild-0.1.zip">blitzbuild-0.1.zip</a> (543KB)</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.sodaware.net/blog/2007/04/new-resource-blitzbuild/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adding Apps to the Windows PATH</title>
		<link>http://www.sodaware.net/blog/2007/04/quick-tip-adding-apps-to-the-windows-path/</link>
		<comments>http://www.sodaware.net/blog/2007/04/quick-tip-adding-apps-to-the-windows-path/#comments</comments>
		<pubDate>Tue, 10 Apr 2007 01:30:16 +0000</pubDate>
		<dc:creator>Phil Newton</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Useful Tools]]></category>
<category>useful tips</category>
		<guid isPermaLink="false">http://www.sodaware.net/blog/2007/04/quick-tip-adding-apps-to-the-windows-path/</guid>
		<description><![CDATA[Save typing by adding tool directories to the Windows PATH.]]></description>
			<content:encoded><![CDATA[<p>This is a simple change that can make using the Windows command line much easier. Adding a directory to the Windows PATH will mean Windows will search the directory when a command is entered. The main reason for doing this is that it acts as a shortcut for common applications you may run.  </p>
<p>For example, instead of typing : <code>"C:\Program Files\SomeProgram\Bin\MyProg.exe" --some-arg</code> to launch an application, you can type <code>MyProg.exe –some-arg</code>. This has three main advantages:
<ol>
<li><b>Looks Neater</b> – This can be important if you&#8217;re using batch files. Long lines are hard to read, so shortening things is a good idea.  </li>
<li><b>Less Typing</b> – Speaks for itself. If you use the command line or batch files for any amount of time, you&#8217;ll appreciate how much easier it is to use if you&#8217;re not typing full paths for your tools.  </li>
<li><b>Portable</b> – Perhaps the most important detail. Not using hard-coded paths makes it easier to port your batch files to other machines.</li>
</ol>
<p><strong>Note: </strong>Be careful when editing your path variable, as you could render some programs unusable if you make a mistake. Also remember that changes won&#8217;t take effect until you restart the console.<br />
<h3>Editing the Windows Path Variable</h3>
</p>
<p>1) Right click “My Computer” and select “Properties” OR goto Control Panel and select “System”. This will open the &#8220;System Properties&#8221; window.  </p>
<p>2) Switch to the “Advanced” tab, and select “Environment Variables”.  </p>
<p><a href="http://www.sodaware.net/blog/wp-uploads/QuickTipAddingAppstotheWindowsPATH_11DC2/env18.png" atomicselection="true"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="System Properties Dialog" src="http://www.sodaware.net/blog/wp-uploads/QuickTipAddingAppstotheWindowsPATH_11DC2/env1_thumb6.png" width="209" border="0"/></a>&nbsp; </p>
<p>3) There are now two options. You can modify the global path variable, or add your own to your personal profile.&nbsp;If you want all users on the machine to&nbsp;have the same&nbsp;shortcut, add it to the global path, otherwise&nbsp;use the local one.&nbsp;
<div class="textIndent">
<p>a. To modify the global path variable – Find &#8220;Path&#8221; or &#8220;PATH&#8221; in the lower window (marked Global variables). Select Edit. Add the path to your application. Separate paths with a semi-colon (;). Add trailing slashes if you wish.  </p>
<p>b. Either modify an existing one using the tutorial above, or select &#8220;new&#8221;, then enter &#8220;PATH&#8221; as the name of the variable and enter the path value in the environment value section.</p>
</div>
<p><a href="http://www.sodaware.net/blog/wp-uploads/QuickTipAddingAppstotheWindowsPATH_11DC2/env21.png" atomicselection="true"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="Environment Variables Dialog" src="http://www.sodaware.net/blog/wp-uploads/QuickTipAddingAppstotheWindowsPATH_11DC2/env2.png" width="217" border="0"/></a><br />
<h3>Modifying the Path Using the Command Line</h3>
</p>
<p>If you&#8217;d like to do this using the command line, you can use the &#8220;setx&#8221; command included with Windows XP service pack two. To add the directory &#8220;c:\program files\SomeProgram\Bin&#8221; to your path, use the following:</p>
<p><code>setx path "%PATH%;C:\Program Files\SomeProgram\Bin"</code></p>
<p>Remember to include the <code>%PATH%</code> variable at the start of your <code>setx</code> command so that you&#8217;ll keep existing path names.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sodaware.net/blog/2007/04/quick-tip-adding-apps-to-the-windows-path/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automating the Build Process</title>
		<link>http://www.sodaware.net/blog/2007/04/automating-the-build-process/</link>
		<comments>http://www.sodaware.net/blog/2007/04/automating-the-build-process/#comments</comments>
		<pubDate>Tue, 10 Apr 2007 01:30:01 +0000</pubDate>
		<dc:creator>Phil Newton</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Useful Tools]]></category>
<category>software development</category><category>useful tools</category>
		<guid isPermaLink="false">http://www.sodaware.net/blog/2007/04/automating-the-build-process/</guid>
		<description><![CDATA[Creating software is a time consuming business, and it&#8217;s important to always be on the lookout for ways to reduce the amount of time spent on less important tasks. The process of actually building software (creating the finished distributable binary) is one such area that can be optimised. Opening up your IDE and hitting “compile” [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>Creating software is a time consuming business, and it&#8217;s important to always be on the lookout for ways to reduce the amount of time spent on less important tasks. The process of actually building software (creating the finished distributable binary) is one such area that can be optimised. Opening up your IDE and hitting “compile” might not seem particularly time consuming, but it&#8217;s only one part of the build process. </p>
<p>To get you started, here&#8217;s a short list of tasks that can be automated:
<ul>
<li>Compiling the executables and dependent libraries</li>
<li>Packing media</li>
<li>Creating an installer</li>
<li>Uploading files to an FTP site</li>
<li>Checking out files from a repository to be built</li>
<li>Sending an email about a finished build to other developers</li>
<li>Creating the application documentation / Converting it to HTML</li>
<li>Testing the software</li>
</ul>
<p>The benefits of using an automated build system include:
<ul>
<li><b>Saves time</b> – Run a build and leave the computer to do the work whilst you take care of other tasks.</li>
<li><b>Documents the build process </b>– If a build requires several steps before being completed, a build file will document this process for you. This is useful if templates need to be generated or options need to be set before a build is ready.</li>
<li><b>Improves quality</b> – As well as automating the creation of a binary package, tests can be automated. This saves a lot of time on the development end, as tests can be constantly run so you&#8217;ll quickly find out if the software&#8217;s behaviour has changed. </li>
</ul>
<h3>Simple Automation – Batch Files</h3>
</p>
<p>The simplest way to automate many of these tasks is to use batch files. A batch file is a list of tasks to be run, usually in the form of a list of applications with some command line parameters. Using a few simple commands it&#8217;s possible to run many tasks in succession without any user input, leaving you to do more important things. Microsoft.com has a is a <a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true">simple guide to batch files</a> which is a good place to start.  </p>
<p>As useful as batch files are, there is only so much they can accomplish, and there may come a time when something more complex is required for your project. Thankfully there are many build systems available<br />
<h3>Build Tools</h3>
</p>
<p>There are plenty of build systems available, and several of them are targeted at certain platforms or languages. It may take a while to become comfortable with a platform, but the savings are worth it.
<ul>
<li><a href="http://www.gnu.org/software/make/">GNU make</a> – A standard system used by many Linux projects. It consists of a plain text file that lists targets and dependencies, and features many advanced features such as automatically determining which files require rebuilding.</li>
<li><a href="http://ant.apache.org/">Apache Ant</a> – Ant is designed as a replacement for make, and uses XML files to describe the build process instead of text files. It&#8217;s written in JAVA, and is completely portable. </li>
<li><a href="http://nant.sourceforge.net">nAnt</a> – nAnt is a .NET based version of Ant, and although it is not exclusively for .NET developers it has many features that make it useful for building .NET apps.</li>
<li><a href="http://www.a-a-p.org/">A-A-P</a> – A-A-P is a portable build tool that uses text-based “recipes” to compile and distribute software, but it can also be used for other tasks such as publishing websites and generating files from templates.</li>
<li><a href="http://www.kinook.com/VisBuildPro/">Visual Build Professional</a> – VBP is a commercial build tool that takes a more visual approach to creating build scripts. It integrates well into many Microsoft IDEs, but also supports other languages such as Delphi and Java.</li>
<li><a href="http://www.sodaware.net/dev/tools/blitzbuild/">BlitzBuild</a> – A free build tool aimed at BlitzPlus and Blitz3D developers. </li>
</ul>
<h3>Breaking the Task Down</h3>
</p>
<p>Most build scripts will contain more than a single command, so it is useful to break the build script into different groups or “targets” that can be executed individually. This is particularly useful if building of data files is included, as it can be used for art or music to be built independently of the main application. Many build platforms also allow targets to be called from other targets, which effectively breaks a build script into a set of functions that can be executed in any order. </p>
<p>Common targets include compilation, installation and cleanup, but the choice is entirely up to the developer. It may also prove beneficial to include a separate target for generating debug versions of the application which can be distributed as a troubleshooting option.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sodaware.net/blog/2007/04/automating-the-build-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using zip files with Blitz Basic</title>
		<link>http://www.sodaware.net/blog/2007/02/using-zip-files-with-blitz-basic/</link>
		<comments>http://www.sodaware.net/blog/2007/02/using-zip-files-with-blitz-basic/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 23:25:39 +0000</pubDate>
		<dc:creator>Phil Newton</dc:creator>
				<category><![CDATA[Blitz Tips]]></category>
<category>blitz</category><category>software development</category>
		<guid isPermaLink="false">http://www.sodaware.net/blog/2007/02/using-zip-files-with-blitz-basic/</guid>
		<description><![CDATA[How to use zip files within Blitz Basic applications. Open and create archives and compress your data.]]></description>
			<content:encoded><![CDATA[<p>Zip files are one of the most common compression formats around, and are a great way of storing files. Using the userlib functionality of BlitzPlus and Blitz3D, it&#8217;s now possible to access and manipulate zip files from within your Blitz applications. This can be useful for packing your media, as well as compressing network data.</p>
<p>This article will show you the following:</p>
<ul>
<li>What files you need to use zip files in Blitz, and how to install them.  </li>
<li>How to open an archive file and find out what files it contains.  </li>
<li>How to extract a file from an archive.  </li>
<li>How to create a new zip file and add files to it.  </li>
<li>How to compress and uncompress Blitz banks. </li>
</ul>
<h3>What will you need?</h3>
<p><a title="View resource: Blitz.ZipApi" href="http://www.sodaware.net/dev/blitz/libs/blitz.zipapi/"><strong>Blitz.ZipApi</strong></a> &#8212; A free library that you can include in your Blitz project. It comes with everything you need to use zip functionality within Blitz.</p>
<h3>Installing the files</h3>
<p>Once you&#8217;ve downloaded the library, you&#8217;ll need to copy “zlibwapi.dll” and “zlibwapi.decls” to the appropriate “userlibs” folder so that you can use the userlib functions in your application. This will be something similar to &#8220;c:\program files\blitzplus\userlibs\&#8221;. The userlib file is fully documented and has XML comments for use with <a href="http://www.proteanide.co.uk/">Protean IDE</a>.</p>
<p>You&#8217;re now able to use simple zip functions, but if you&#8217;d like to get easier access to some of the more common functions, you should include the following into your project:</p>
<ul>
<li>Blitz_File_ZipApi.bb &#8212; Helper functions for using zip files in Blitz.  </li>
<li>Blitz_File_FileName.bb &#8212; A few functions for manipulating file names. Use them to get a directory name, file name and extensions from a string.  </li>
<li>Blitz_Basic_Bank.bb &#8212; PeekString and PokeString functions. </li>
</ul>
<p>All of these files are included in the <a href="http://www.sodaware.net/dev/blitz/libs/blitz.zipapi/">Blitz.ZipApi distribution</a>, along with full documentation in HTML format.</p>
<h3>How it works</h3>
<p>The zip library works in a similar fashion to the standard Blitz file functions. Before a file can be read from it should be opened with <code>ZipApi_Open</code>, and once finished with it should be closed with <code>ZipApi_Close</code>. Files to be written to should be opened with <code>ZipApi_CreateZip</code> and closed with <code>ZipApi_CloseZip</code>.</p>
<p>Fully documented examples are included with the library, and are also <a href="http://docs.sodaware.net/blitz.zipapi/">available online</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sodaware.net/blog/2007/02/using-zip-files-with-blitz-basic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Started with Subversion</title>
		<link>http://www.sodaware.net/blog/2007/02/getting-started-with-subversion/</link>
		<comments>http://www.sodaware.net/blog/2007/02/getting-started-with-subversion/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 23:13:47 +0000</pubDate>
		<dc:creator>Phil Newton</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Useful Tools]]></category>
<category>software development</category>
		<guid isPermaLink="false">http://www.sodaware.net/blog/2007/02/getting-started-with-subversion/</guid>
		<description><![CDATA[An introduction to using Subversion to manage your source code.]]></description>
			<content:encoded><![CDATA[<p>Subversion is an open-source version control system. That doesn’t sound particularly interesting, and at face value it isn’t, but you only need it to save your skin once to realise how useful it can be.</p>
<p>Version control is a method of storing different revisions of the same file, usually source code or documents. This allows developers to see when changes to a file have been made, which can be useful for isolating bugs, and can also be used to “roll-back” a file to a time before a bug was introduced.</p>
<p>Along with these features, version control allows developers to merge two versions of a file, which is very useful for projects with more than one person.  </p>
<p>This article covers the following:
<ol>
<li>What software you need  </li>
<li>Creating a new repository  </li>
<li>How to set up a Subversion server  </li>
<li>Adding password protection to a Subversion repository  </li>
<li>Laying out your repository and importing files  </li>
<li>Checking out and checking in  </li>
<li>Using tags and branches </li>
</ol>
<h3>What you’ll need</h3>
</p>
<p><b><a href="http://subversion.tigris.org/">Subversion</a></b> – The primary download is source code, but there are binary versions available for different operating systems, including Windows, Mac OS and most common flavours of Linux.</p>
<p>If you intend to use Subversion mostly from the command line, you might want to add the Subversion binaries directory to your Windows PATH variable.</p>
<h4>Optional Downloads</h4>
<p><b><img style="margin: 0px 0px 5px 5px" src="http://www.sodaware.net/rsc/blog/issue-001/tortoise-svn.png" align="right"/> <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a></b> – If you’re using Subversion with Windows, I highly recommend installing TortoiseSVN. It integrates with the Windows explorer shell, so you can see an icon if a file has been changed. You can and also check in items, commit changes and perform other common operations with a few clicks of the mouse instead of using the command line.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sodaware.net/blog/2007/02/getting-started-with-subversion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tweaking the Sociable plugin</title>
		<link>http://www.sodaware.net/blog/2006/12/tweaking-the-sociable-plugin/</link>
		<comments>http://www.sodaware.net/blog/2006/12/tweaking-the-sociable-plugin/#comments</comments>
		<pubDate>Wed, 06 Dec 2006 10:11:00 +0000</pubDate>
		<dc:creator>Phil Newton</dc:creator>
				<category><![CDATA[Useful Tools]]></category>
		<category><![CDATA[Web Programming]]></category>
<category>useful tools</category><category>web programming</category>
		<guid isPermaLink="false">http://www.sodaware.net/blog/1970/01/tweaking-the-sociable-plugin/</guid>
		<description><![CDATA[I use the &#8220;Sociable&#8221; WordPress plugin to add social bookmarking links to the bottom of every post. There are a tonne of social bookmarking sites around, so I&#8217;ve kept things light to avoid the icon overload that can be seen on some blogs. I&#8217;ve made two updates over the last few days, one was adding [...]]]></description>
			<content:encoded><![CDATA[<p>I use the &#8220;<a href="http://push.cx/sociable">Sociable</a>&#8221; WordPress plugin to add social bookmarking links to the bottom of every post. There are a tonne of social bookmarking sites around, so I&#8217;ve kept things light to avoid the icon overload that can be seen on some blogs. I&#8217;ve made two updates over the last few days, one was adding <a title="devbump - cool game development stuff" href="http://www.devbump.com/">devbump</a> and the other was adding CSS image rollovers. </p>
<p>If you&#8217;re not sure about adding a few bookmarking buttons, you might want to check out the <a title="&quot;Sociable WordPress Plugin Brings Good Blog Traffic&quot;" href="http://webloghits.com/index.php/tips-and-techniques/sociable-wordpress-plugin-brings-good-blog-traffic/">traffic increase</a> at webloghits.com. That&#8217;s the kind of increase that is worth a few minutes of your time.</p>
<h3>Adding devbump.com</h3>
<p>There are a lot of digg style sites out there, but <a title="devbump - cool game development stuff" href="http://www.devbump.com/">devbump</a> caught my eye because it&#8217;s aimed squarely at game developers. Submitting your posts to places that are actually interested in the subject is always more useful, so devbump was a natural choice.&nbsp;</p>
<p>To add new sites to sociable, open up &#8220;sociable.php&#8221; and find the following line:</p>
<div class="codeWindow"><code>$sociable_builtin_known_sites = Array(</code></div>
<p>Once you&#8217;d found it, add the following after the &#8220;Del.irio.us&#8221; definition:</p>
<div class="codeWindow"><code>'devbump' =&gt; Array(<br />&nbsp; &nbsp; 'favicon' =&gt; 'devbump.png',<br />&nbsp; &nbsp; 'url' =&gt; 'http://devbump.com/submit.php?url=PERMALINK&amp;title=TITLE',<br />), </code></div>
<p>You&#8217;ll have rebuild the list of available sites by logging in to your blog, and selecting &#8220;Restore Built-in Defaults&#8221; from the sociable page (Options -&gt; Sociable). &#8220;devbump&#8221; should now be available to use on your site.</p>
<h3>Adding CSS image rollovers</h3>
<p>Now for the fun part. I used some code from&nbsp;Present Tense (<a href="http://dyers.org/blog/archives/2006/03/10/hacking-the-sociable-wordpress-plugin-for-image-rollovers/">Hacking the Sociable WordPress Plugin for Image Rollovers</a>), but it didn&#8217;t quite hit the spot so&nbsp;I did quite a lot of tweaking to get things looking nice. I&#8217;ve stuck it all in a zip at the end of this post. </p>
<p>Before you skip ahead to the freebies, there are a few important things to note.</p>
<p><strong>Tweaked &#8220;sociable.php&#8221;</strong> &#8212; I made two main tweaks to sociable.php. One was because some sites have &#8220;.&#8221; characters in their name, so it wouldn&#8217;t work with CSS class names. The other tweak was to change the way that the HTML was generated. Instead of standard images, it&#8217;s a list.</p>
<p><strong>Internet Explorer</strong> &#8212; Naturally IE messes things up a little bit, so you might have to experiment a little bit to get things looking the way you want them. Removing the CSS tooltip may help.</p>
<p><strong>16 x 16 Images</strong> &#8212; I like to have text next to my images, so each one has a different width. If you open &#8220;sociable.css&#8221;, you&#8217;ll see I&#8217;ve defined each networking site with a pair of definitions:</p>
<div class="codeWindow"><code>.sociable li.delicious a { width: 69px; background-image: url(images/delicious-hover.gif)}<br />.sociable li.delicious a:hover { background-position: 0 -16px;}</code></div>
<p>If you&#8217;re using 16 x 16 images, you can move the width statement into the &#8220;.sociable li&#8221; definition.</p>
<p><strong>Adding New Rollovers</strong></p>
<p>To add a new image, you need to add a class with the name of the site, and then set its image. It&#8217;s really just a matter of copying an existing class definition and changing the names. I&#8217;ll add new sites as time goes on, but at the moment I&#8217;ve only defined: del.icio.us, digg, devbump, Reddit and Furl.</p>
<h3>Free Stuff!</h3>
<p>Everyone likes free stuff, so I&#8217;ve zipped up all of the files I modified for your downloading pleasure. There are still a few bugs to iron out, so I&#8217;ll be modifying this post as and when things change.</p>
<p>To install the changes, just copy the files into your &#8220;wp-content/plugins/sociable&#8221; directory &#8212; you&#8217;ll need to have sociable already installed (<a href="http://push.cx/sociable">download here</a>).</p>
<div class="latestRelease">
<h4>Download Latest Release (1.0)</h4>
<p><img src="http://www.sodaware.net/blog/wp-content/themes/sodaware/images/greenArrow.gif" align="left"/>&nbsp;<a title="Download zip distribution" href="http://downloads.sodaware.net/tools/misc/sociable-tweak/sociable-tweak-1.0.zip">sociable-tweak-1.0.zip</a> (11.0KB)</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.sodaware.net/blog/2006/12/tweaking-the-sociable-plugin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 1/42 queries in 0.028 seconds using disk
Object Caching 597/678 objects using disk

Served from: www.sodaware.net @ 2012-02-09 17:50:29 -->
