<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4498544602373544056</id><updated>2011-12-16T07:42:09.499-08:00</updated><category term='InstallShield'/><category term='support'/><category term='MySQL'/><category term='Pagerank'/><category term='product review'/><category term='google sitelinks'/><category term='.Net'/><category term='Shareware'/><category term='SERPs'/><category term='SliQ Invoicing and Quoting'/><category term='supplemental index'/><category term='business startup'/><category term='domain names'/><category term='small business'/><category term='file comparison'/><category term='Keyword research'/><category term='software CD'/><category term='software versioning'/><category term='SQLite'/><category term='software development'/><category term='PHP'/><category term='Web Design'/><category term='SliQ Submitter'/><category term='SEO Tools'/><category term='customer relationship management'/><category term='product management'/><category term='Writing Copy'/><category term='SEO'/><category term='sales'/><category term='Google Adwords'/><category term='installer'/><category term='VistaDB'/><category term='testing'/><category term='sitemaps'/><category term='duplicate sites'/><category term='software release management'/><category term='database'/><category term='ADO.Net'/><title type='text'>Software Product Development &amp; SEO</title><subtitle type='html'>Thoughts and jottings on the whole process of developing and selling software products with an emphasis on selling online via a website.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-4705690446142780333</id><published>2009-11-11T04:58:00.000-08:00</published><updated>2009-11-11T10:21:16.725-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='file comparison'/><title type='text'>Beyond Compare - File Comparison Tool</title><content type='html'>&lt;div&gt;Sometimes it's the simplest activities that take the most time. If you're in the game of software development making changes in multiple versions of source files is a frequent and not very interesting activity. You'll often be working on your next major version then need to make a new minor version release either due to a problem in the current release or a need to support some new feature (like an unexpected tax rate change).&lt;br /&gt;&lt;br /&gt;I'm showing my age here but in the past I've always used Windiff (in my Visual C++ 6 days). Windiff used to let me find out what the differences were between files. I could then merge file contents using a text editor. This process works but it was sometimes difficult to get files to match exactly as there were often extra spaces of line breaks.&lt;br /&gt;&lt;br /&gt;Windiff disappeared from Visual Studio 2005 so more recently I've even restored to the old DOS FC command. I did have a quick play with Visual SourceSafe but the solution wasn't really flexible enough - often I want to compare and merge files without locking something down in a configuration management system.&lt;br /&gt;&lt;br /&gt;However, I recently came across a package called Beyond Compare from Scooter Software. This package is absolutely fantastic and is now my second favourite software tool (after Visual Studio).&lt;br /&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 202px; DISPLAY: block; HEIGHT: 144px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5402912574254750978" border="0" alt="" src="http://4.bp.blogspot.com/_14DeN5hyQQ8/SvsAXETyHQI/AAAAAAAAACs/2eEnfNYET9o/s400/Beyond+Compare+-+File+Comparison.jpg" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;There are a number of good things about Beyond Compare.&lt;br /&gt;&lt;br /&gt;Firstly it remembers folders you've compared in the past. This means you can do a new comparison and merge more easily the second time.&lt;br /&gt;&lt;br /&gt;Secondly it lets you move updates from one file to another with a single mouse-click and shows you the results. Any extra/ missing whitespace differences are easily ignored. This makes merging versions take minutes rather than hours.&lt;br /&gt;&lt;br /&gt;Thirdly, the software tool itself presents a trustworthy user interface. As you're doing a compare and merge with Beyond Compare, you can refresh the file comparison on the fly and check that things are absolutely identical. Knowing things are the same - bar the differences you want to keep - is vital to ongoing software development.&lt;br /&gt;&lt;br /&gt;If merging files and versions of software is something you do regularly I'd recommend going to the &lt;a href="http://www.scootersoftware.com/"&gt;Scooter Software&lt;/a&gt; site and taking a look at Beyond Compare.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-4705690446142780333?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/4705690446142780333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=4705690446142780333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4705690446142780333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4705690446142780333'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2009/11/beyond-compare-file-comparison-tool.html' title='Beyond Compare - File Comparison Tool'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_14DeN5hyQQ8/SvsAXETyHQI/AAAAAAAAACs/2eEnfNYET9o/s72-c/Beyond+Compare+-+File+Comparison.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5693436091225950834</id><published>2009-07-11T06:26:00.000-07:00</published><updated>2009-07-11T07:08:57.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>PHP, MySQL date and time formats</title><content type='html'>PHP and MySQL have different formats for storing dates and times. This can cause confusion when trying to compare a date in PHP and a date stored in a MySQL database.&lt;br /&gt;&lt;br /&gt;PHP stores dates and times in Unix or UTC format. This format encodes a time as an integer count of the number of seconds since New Years Day began in 1970 (1st Jan 1970). MySQL on the other hand stores dates and times in string format. All three MySQL date/ time types DATETIME, DATE and TIMESTAMP store data in string format.&lt;br /&gt;&lt;br /&gt;MySQL DATETIME and TIMESTAMP columns store in the format:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;YYYY-MM-DD HH:MM:SS&lt;/div&gt;&lt;br /&gt;MySQL DATE columns store in the format:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;YYYY-MM-DD&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;PHP and MySQL date/ time comparisons&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Obviously, this difference in format causes problems when inserting dates and times into MySQL databases and especially when comparing MySQL and PHP dates for example trying to select entries from a table where a date value in the table is older than a PHP date. The easiest way to do this is to use the UNIX_TIMESTAMP MySQL function. For example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;// You could get the date as three integer values from a querystring on the PHP page:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;$day = $_GET['day'];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;$month = $_GET['month'];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;$year = $_GET['year'];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;// Then use the day, month and year to construct a PHP time (in seconds since&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;// 1st Jan 1970 format).&lt;br /&gt;$datetime = strtotime($year.'-'.$month.'-'.$day.' 00:00:00');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;// Then find all entries newer than the date given by the querystring arguments.&lt;br /&gt;$sql = "SELECT * FROM MyTable WHERE UNIX_TIMESTAMP(UpdateDate) &gt;= '" . $datetime . "'";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;$result=mysql_query($sql);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above SQL query causes MySQL to convert the value of the DATETIME (or DATE or TIMESTAMP) value in the UpdateDate column in the hypothetical table into a PHP format date before doing the compare.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Storing a PHP date/ time value in MySQL&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;To convert a PHP format date/ time into MySQL's format, the MySQL FROM_UNIXTIME function can be used. For example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;$currenttime = strtotime("now");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;$sql = "UPDATE MyTable SET UpdateDate = FROM_UNIXTIME(" . $currenttime . ") WHERE ... ";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;$result=mysql_query($sql); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Don't use strings for PHP/ MySQL date &gt; or &lt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;You might find some PHP code examples, trying to use the PHP date() function to format PP dates and times as strings in the correct format to match MySQL values. If you can remember the correct format strings for the conversions this will work as long as you are setting values in rows. For comparisons however, strings aren't any good as the comparison will be an alphabetic/ string comparion and not the required date comparison.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5693436091225950834?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5693436091225950834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5693436091225950834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5693436091225950834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5693436091225950834'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2009/07/php-mysql-date-and-time-comparisons.html' title='PHP, MySQL date and time formats'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-8329588239921532215</id><published>2009-05-07T04:40:00.000-07:00</published><updated>2009-05-07T04:52:27.851-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='VistaDB'/><category scheme='http://www.blogger.com/atom/ns#' term='ADO.Net'/><title type='text'>VistaDB, SQLite and Microsoft Access</title><content type='html'>Recently I've been carrying on my investigations into databases. SQLite originally looked promising as an alternative to Microsoft Access - read my &lt;a href="http://software-product-development.blogspot.com/2009/04/sqlite-and-adonet-acting-as-access.html"&gt;SQLite investigation&lt;/a&gt; post for more info. SQLite looked small, fast, robust and very easy to install. However, I eventually decided it wasn't going to work as an Access replacement for me.&lt;br /&gt;&lt;br /&gt;The main reason I decided not to replace Microsoft Access with SQLite was that I'd got too used to ease with which I could get when using the .Net datatypes seamlessly with Microsoft Access, e.g. I could read and write the .Net Decimal type straight to Access. With SQLite it seemed that I might have to convert to and from strings to preserve accuracy. This wasn't a big showstopper but I'm afraid I like my programming to be as easy as possible.&lt;br /&gt;&lt;br /&gt;I'd pretty much resigned myself to using Microsoft Access but then I came across a really neat database system called &lt;a href="http://www.vistadb.net/"&gt;VistaDB&lt;/a&gt;. VistaDB looks (I suspect) like it may have been originally based on SQLite but the great thing about it is that it has the rich data type support you get with Microsoft Access - plus extras like stored procedures - without losing the no hassle deployment of SQLite. I've spent a few hours evaluating VistaDB and so far it looks ace. For my particular application it solves all the downsides of both SQLite and Microsoft Access.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-8329588239921532215?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/8329588239921532215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=8329588239921532215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8329588239921532215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8329588239921532215'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2009/05/vistadb-sqlite-and-microsoft-access.html' title='VistaDB, SQLite and Microsoft Access'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3703660486995668186</id><published>2009-04-06T07:02:00.000-07:00</published><updated>2009-07-11T06:26:07.658-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='ADO.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>SQLite and ADO.Net: Acting as an Access replacement</title><content type='html'>&lt;p&gt;I've had a bit of a play recently with &lt;a href="http://sqlite.phxsoftware.com/"&gt;SQLite and ADO.Net&lt;/a&gt; to see if I could slot in SQLite instead of MS Access in my desktop application. As yet I haven't made my mind up, but it's been a very interesting exercise. Here's a quick summary of my findings so far.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;DataType Support&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;With my limited experience, SQLite seems to support fewer data types than MS Access. On the whole this isn't a problem apart from two areas - the .Net Decimal type and the .Net DateTime type. In both these cases I think you end up having to encode the data as strings and take care of any localisation issues yourself, e.g. making sure dates stored in France can be read in the UK and vice-versa. I haven't delved into Decimal storage too much but I think strings will need to be used instead of squeezing data into the Double data type and experiencing potential rounding errors.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Complete ADO.Net Support&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The SQLite support is pretty comprehensive but misses out in one or two areas like the RowStatusUpdated event handling.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Error Handling&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If you open a connection to a non-existent DB, SQLite seems to create an empty database at the specified path. This isn't a big issue but it means that the "DB doesn't exist" error turns into a "Table doesn't exist" error when you try to access a table in the DB. &lt;/p&gt;&lt;p&gt;Note: Since I wrote this post, I've found out that you can use connection strings to alter the default behaviour of creating an empty DB when the target DB can't be found. Read &lt;a href="http://www.connectionstrings.com/sqlite"&gt;SQLite Connection Strings&lt;/a&gt; for more info.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;On first impressions, data access with SQLite is very quick and certainly quicker than MS Access. However, if you have to start encoding and decoding data into strings (DateTime for example), I'm not sure that the performance wouldn't start to degrade.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;With SQLite there is essentially nothing to install. All you need to do is copy the assembly into your application folder and you are up and running. SQLite wins hands down here.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Conclusions&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;None for now, except to say that SQLite looks very tempting as an Access replacement especially as it's so easy to deploy. I'll post more info as I gain more experience.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3703660486995668186?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3703660486995668186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3703660486995668186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3703660486995668186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3703660486995668186'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2009/04/sqlite-and-adonet-acting-as-access.html' title='SQLite and ADO.Net: Acting as an Access replacement'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-9197500788498072420</id><published>2009-03-01T08:55:00.000-08:00</published><updated>2009-03-01T09:05:54.055-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Invoicing and Quoting'/><title type='text'>SliQ Invoicing 1.6 Released</title><content type='html'>SliQ Invoicing 1.6 has now been released. Although it's only 6 weeks since version 1.5.1 of SliQTools &lt;a href="http://www.sliqtools.co.uk/"&gt;invoicing software&lt;/a&gt; was released, 1.6 is quite a significant update. In 1.6, a number of options have been added to allow customers to modify the provided &lt;a href="http://www.sliqtools.co.uk/invoice-templates.aspx"&gt;templates for invoices&lt;/a&gt;, quotes and credit notes.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;As of 1.6, templates can now optionally include a tax rate column. If desired, the tax value column can now be ommitted and users who are VAT/ tax registered can now choose whether the total column is the gross or net amount. One of the biggest additions to version 1.6 however is a label editor.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5308265459761279506" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 274px; CURSOR: hand; HEIGHT: 234px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_14DeN5hyQQ8/Saq_T66L8hI/AAAAAAAAACk/G5F47ZgyVCE/s400/sliq-label-editor.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;The label editor is provided on the Template Setup tab. The editor lists all the fixed text labels on the selected template preview and lets the user enter their own value. For example, US customers might like to change the &lt;strong&gt;Delivery Address&lt;/strong&gt; label to &lt;strong&gt;Shipping Address&lt;/strong&gt;. Using the new label editor it is even possible to fully translate the standard templates into Spanish, French or German for example.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;For futher details of the modifications and additions in SliQ 1.6 and to download the latest copy, visit the &lt;a href="http://www.sliqtools.co.uk/releasehistory.aspx"&gt;SliQ Release History&lt;/a&gt; page.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-9197500788498072420?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/9197500788498072420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=9197500788498072420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/9197500788498072420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/9197500788498072420'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2009/03/sliq-invoicing-16-released.html' title='SliQ Invoicing 1.6 Released'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_14DeN5hyQQ8/Saq_T66L8hI/AAAAAAAAACk/G5F47ZgyVCE/s72-c/sliq-label-editor.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-162122522036749830</id><published>2009-01-13T05:53:00.001-08:00</published><updated>2009-01-13T06:07:05.637-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shareware'/><title type='text'>Free Software Downloads</title><content type='html'>In the past couple of weeks, SofwareLode, a &lt;a href="http://www.softwarelode.com/"&gt;shareware downloads&lt;/a&gt; site has been growing in popularity. More and more pages are being pulled out of the supplemental index  and the number of page views per day is now into the thousands.&lt;br /&gt;&lt;br /&gt;There are a number of reasons for the increase in traffic.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Being a shareware directory, SoftwareLode naturally builds links over time as authors link either to the homepage or to the details page for their software packages. &lt;/li&gt;&lt;li&gt;As well as an increasing number of links, better internal linking has also helped. Each software details page now links to up to 10 related programs, i.e. programs with the same keywords. Getting more, relevant links to the program details pages helps pull pages out of the supplemental index.&lt;/li&gt;&lt;li&gt;Better linking from the homepage into the rest of the site spreads the homepage PR around more efficiently. The homepage now lists top selections in a number of categories. The details pages for the top selections then link to related programs and so improve the rank of lots of the inner pages.&lt;/li&gt;&lt;/ul&gt;Breaking away from the usual &lt;a href="http://www.softwarelode.com/"&gt;software downloads site&lt;/a&gt; categories also seems to be showing some benefit. The &lt;a href="http://www.softwarelode.com/antivirus-software.php"&gt;antivirus software&lt;/a&gt; and &lt;a href="http://www.softwarelode.com/free-dvd-software.php"&gt;free dvd software&lt;/a&gt; pages seems to be attracting a decent amount of traffic these days.&lt;br /&gt;&lt;br /&gt;As SoftwareLode was &lt;a href="http://software-product-development.blogspot.com/2008/06/new-software-directory-launched.html"&gt;launched&lt;/a&gt; only 7 months old, I'm pretty pleased with its performance and hopeful of further increases in traffic in the months ahead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-162122522036749830?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/162122522036749830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=162122522036749830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/162122522036749830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/162122522036749830'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2009/01/free-software-downloads.html' title='Free Software Downloads'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-7560451597713088742</id><published>2009-01-08T14:34:00.000-08:00</published><updated>2009-01-09T06:52:56.795-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>ADO.Net, DataAdapters &amp; DataSets: What are they?</title><content type='html'>&lt;div&gt;ADO.Net is Microsoft's .Net interface to databases. Traditionally, to work with databases like Access, SQL Server and the like, you needed to know a fair bit about SQL. With ADO.Net you still need to know SQL commands but some pretty near classes are provided that allow you to hive off the SQL stuff and work with a much easier set of objects when adding, deleting or updating items in a database.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The two major classes described in this post are the DataAdapter and DataSet classes. It wasn't until I'd actually coded some example that the ease of use of these classes became clear to me. I'll expand on the classes in later posts and give some code examples but for now I'm just going to give an overview of their purpose. This picture gives an idea of how the classes interact to allow you (the programmer/ user) to work with a database.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5289057226761251954" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 110px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_14DeN5hyQQ8/SWaBhm3RLHI/AAAAAAAAACY/q3jeW6rCbNY/s400/ADO_DataAdapter_DataSet.jpg" border="0" /&gt; &lt;div&gt;&lt;/div&gt;The four items in the picture are:-&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Database&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is something like an Access or SQL Server database. ADO.Net provides classes to handle many different types of database. All the classes inherit from a set of base classes so to a degree you can hide the details of the specific database type from your code.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The DataAdapter&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The DataAdapter class is the SQL workhorse. There are a number of different DataAdapter classes for different databases, e.g. OldDataAdapter for working with an Access database. It's the DataAdapter class that does all the work - reading, inserting, deleting and updating - in interacting with the database. All you have to do is build the SQL commands for the DataAdapter to do the work and then let it get on with it's job.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The DataSet&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The DataSet is the class you interact with when manipulating data values in the database. The data within a table in the actual database can be thought of as a collection of rows, with each row containing a number of named field values. The DataSet mirrors this view of the database. The DataSet is a collection of DataRow objects, with each DataRow begin a Dictionary of the values in the row where the dictionary keys are the field names.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How do the classes interact?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;To work with the data, you configure a DataAdapter instance with the SQL commands to read data, insert, update and delete data in the database. You then ask the DataAdapter to fill a DataSet. You can then change values in rows in the DataSet, add new rows or delete rows. When you've made the changes, you ask the DataSet to get the DataAdapter to reflect your changes into the actual database.&lt;br /&gt;&lt;br /&gt;In my next post, I'll give some code examples using the DataSet and DataAdapter classes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-7560451597713088742?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/7560451597713088742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=7560451597713088742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7560451597713088742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7560451597713088742'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2009/01/adonet-dataadapters-datasets-what-are.html' title='ADO.Net, DataAdapters &amp; DataSets: What are they?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_14DeN5hyQQ8/SWaBhm3RLHI/AAAAAAAAACY/q3jeW6rCbNY/s72-c/ADO_DataAdapter_DataSet.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-4500421739826664397</id><published>2009-01-07T03:41:00.000-08:00</published><updated>2009-01-07T03:55:20.436-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InstallShield'/><category scheme='http://www.blogger.com/atom/ns#' term='installer'/><title type='text'>Error reading setup initialization file: InstallShield Problem</title><content type='html'>Yesterday I had a support mail from a user who was unable to install on Windows Vista Home Premium. I was rather worried about the report since we'd just release SliQ 1.5.1 the evening before and I always get a bit nervous when we make a new software release.&lt;br /&gt;&lt;br /&gt;The error the user was getting was "Error reading setup initialization file". Googling for info I found information saying that the error was sometimes reported if the &lt;a href="http://software-product-development.blogspot.com/2008/07/installshield-115-and-net-20-runtime.html"&gt;InstallShield package&lt;/a&gt; had been corrupted. I tried downloading the lastest installer from SliQTools and tested it successfully on Vista and XP machines here in the office so I knew the live release wasn't corrupt. More research on Google indicated that the problem sometimes occurred if the installer took a long time to download -it was taking over 20 minutes on the user's Vista machine. Luckily the user was very technically aware and was very helpful in trying out different things.&lt;br /&gt;&lt;br /&gt;I asked the user to download the installer to a Windows XP machine. This time the download took only 5 minutes over the same office broadband connection as with the Vista machine. The installation ran perfectly. The user then copied the installer on a flash drive and installed correctly on the original Vista machine. That evening the user download and installed correctly on his home Vista machine.&lt;br /&gt;&lt;br /&gt;I find it hard to believe but the finger is pointing at the installer package being corrupted during the download process. There's not a lot I can do about people's broadband connection but I may have to think up some strategies for reducing the size of the download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-4500421739826664397?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/4500421739826664397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=4500421739826664397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4500421739826664397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4500421739826664397'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2009/01/error-reading-setup-initialization-file.html' title='Error reading setup initialization file: InstallShield Problem'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-214370284063779913</id><published>2009-01-06T01:21:00.000-08:00</published><updated>2009-01-07T02:50:35.687-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='supplemental index'/><category scheme='http://www.blogger.com/atom/ns#' term='Pagerank'/><title type='text'>Getting out of the supplemental index</title><content type='html'>&lt;p&gt;Back in late summer I reevaluated the linking strategy between my websites. Up until then I'd used my main site to feed link juice into my newer sites - softwarelode and so on. I decided this was a bad thing to keep on doing, since my original intention was to feed link juice back into my main money-earning site and not do things the other way around.&lt;/p&gt;&lt;p&gt;It was interesting though to see how well sites like softwarelode responded to getting a few links from my main site. Basically within 3 weeks softwarelode started getting a few hundred visitors a day even though it was a new site. Predictably, when I removed the links the visitor numbers began to fall but at a much slower pace than the visitor numbers grew in the first place. Rather than the 3 weeks or so for the visitor numbers to peak, it took 2 to 3 months for the visitor numbers to fall away. During those 3 months, Google did some mini toolbar &lt;a href="http://software-product-development.blogspot.com/2008/06/what-is-google-pagerank.html"&gt;PageRank&lt;/a&gt; exports and some of the inner pages of softwarelode started showing PRs of 2 or 3. By early December though all pages apart from the homepage were showing PR N/A and visitor numbers were 20% of the peak.&lt;/p&gt;&lt;p&gt;As the visitors fell away, more of the softwarelode pages were falling into Google's supplemental index. When a page is in the supplemental index it's not going to turn up in SERPS execept for very specific/ obscure search phrases. The supplemental index is purgatory for web pages. I had a look around the web to see what advice I could find. As to be expected the advice was that old chestnut - build backlinks. So, before Christmas I did a spurt of backlink building and I'm pleased to say that since the New Year visitors are returning to softwarelode and the Adsense income is beginning to climb again. Since yesterday (5th Jan), an extra 350 pages are marked as being in the main index. I know of similar sites to softwarelode with about 2500 pages in the main index that make a decent amount of Adsense income (few hundred dollars a month) so hopefully I'm on target to making softwarelode an earning website by the middle of 2009.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-214370284063779913?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/214370284063779913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=214370284063779913' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/214370284063779913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/214370284063779913'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2009/01/getting-out-of-supplemental-index.html' title='Getting out of the supplemental index'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3218825200703241767</id><published>2008-12-19T00:27:00.000-08:00</published><updated>2008-12-19T00:31:41.295-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Keyword research'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Measuring the competitiveness of keywords</title><content type='html'>When writing a new website and choosing keywords, it's easy to make the mistake of choosing ones which are far too competitive. For a new website, it will be difficult to rank well for competitive keywords unless you can get some very high quality links from high PR sites.&lt;br /&gt;&lt;br /&gt;Competitiveness is a difficult thing to measure and it has to be balanced against the search volume for any particular keywords. It might be worth optimising for competitive keywords if the search volume is very high and you don't mind taking a longer term view of ranking well. Taking the opposite view, it isn't worth optimising for uncompetitive keywords if the search volume is very low.&lt;br /&gt;&lt;br /&gt;One way of investigating the competitiveness of keywords is by using Google's own keyword research tool at &lt;a href="https://adwords.google.com/select/KeywordToolExternal"&gt;https://adwords.google.com/select/KeywordToolExternal&lt;/a&gt;. This tool shows monthly search volumes for keywords together with a rough gauge of the competition for the keywords.&lt;br /&gt;&lt;br /&gt;Another rough way of gauging the competition is by using the allintitle: operator when doing a search. Using the allintitle operator makes the SERPS only contain those pages which have the search words in their title. Since a page title is a key SEO factor, the number of results returned is a rough and ready gauge of competitiveness. For example, if you want to measure the competition for web design, do the following search on google.co.uk:&lt;br /&gt;&lt;br /&gt;allintitle:web design&lt;br /&gt;&lt;br /&gt;This returns 9,800,000 results. Trying:&lt;br /&gt;&lt;br /&gt;allintitle:seo&lt;br /&gt;&lt;br /&gt;returns 13,800,000 results.&lt;br /&gt;&lt;br /&gt;Contrast these numbers with a set of keywords that we can guess are pretty uncompetitive:&lt;br /&gt;&lt;br /&gt;allintitle:british vineyards&lt;br /&gt;&lt;br /&gt;This returns 639 results, or ...&lt;br /&gt;&lt;br /&gt;allintitle:web design worcester&lt;br /&gt;&lt;br /&gt;which returns 1050 results.&lt;br /&gt;&lt;br /&gt;Of course, the number of pages that include keywords in their title doesn't tell you the full story of how competitive a set of keywords are but it is a start. For one thing, allintitle doesn't tell you how well optimised the pages are, e.g. the first 50 pages in the results might have good links and content and be hard to beat without a lot of work. allintitle though is a useful tool to add to your SEO arsenal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3218825200703241767?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3218825200703241767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3218825200703241767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3218825200703241767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3218825200703241767'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/12/measuring-competitiveness-of-keywords.html' title='Measuring the competitiveness of keywords'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5814603967982245441</id><published>2008-12-15T13:46:00.000-08:00</published><updated>2008-12-15T14:01:02.077-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Invoicing and Quoting'/><title type='text'>SliQ 1.5 Released</title><content type='html'>After a few months development SliQ 1.5 has been released and includes a new &lt;a href="http://www.sliqtools.co.uk/recurring-invoices.aspx"&gt;recurring invoice &lt;/a&gt;feature. The recurring/ automatic invoice feature has been in development for the last 3 months. During this time, feedback from a number of users/ potential users was used to guide the implementation. In line with earlier feature additions, the emphasis has been on making recurring invoices as easy to set up as possible.&lt;br /&gt;&lt;br /&gt;With two or three mouse-clicks you can now make SliQ Invoicing automatically raise repeat copies of invoices. All you need is select an invoice and check the Recurring? box in the toolbar.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sliqtools.co.uk/images/recurringbillingsetup.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 332px; CURSOR: hand; HEIGHT: 228px; TEXT-ALIGN: center" alt="" src="http://www.sliqtools.co.uk/images/recurringbillingsetup.jpg" border="0" /&gt;&lt;/a&gt; ... then confirm the frequency for raising the invoices ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 362px; CURSOR: hand; HEIGHT: 104px; TEXT-ALIGN: center" alt="" src="http://www.sliqtools.co.uk/images/recurringdetails.jpg" border="0" /&gt;This will save loads of time for anyone regularly raising repeat copies of invoices, e.g. website designers charging monthly for SEO or website maintenance. &lt;/p&gt;&lt;p&gt;SliQ 1.5 also includes a bulk printing facility. SliQ now tracks which invoices have been printed and allows the user to print all un-printed invoices with a single menu click. This should greatly speed up the monthly billing process for SliQ's users, especially if most of the user's invoces are automatically raised by SliQ using the recurring invoice feature.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5814603967982245441?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5814603967982245441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5814603967982245441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5814603967982245441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5814603967982245441'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/12/sliq-15-released.html' title='SliQ 1.5 Released'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-1359212008485718332</id><published>2008-12-03T04:54:00.000-08:00</published><updated>2009-01-07T02:49:37.836-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Design'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>SEO: Doing it professionally</title><content type='html'>After helping out a few friends and acquaintances with website optimisation, I've been approached by a &lt;a href="http://www.jmd.eu.com/"&gt;web designer&lt;/a&gt; about doing SEO work for them on an ongoing basis. They would like me to propose a service or set of services I could offer together with a set of prices.&lt;br /&gt;&lt;br /&gt;The easiest and cheapest service I could offer is sets of directory submissions. To do these I could use my development version of professional &lt;a href="http://www.sliqtools.co.uk/directory-submission-tool.aspx"&gt;directory submitter&lt;/a&gt;, SliQ Submitter Pro. This should allow me to do a hundred or so submissions an hour.&lt;br /&gt;&lt;br /&gt;Of course there are a lot of other techniques I could use to do link-building. The more I think about it though, the more I feel a fixed price service won't do the job. SEO is a long-haul activity and needs to be spread over a number of months. Ideally I would spend 6 or so hours a month doing offsite optimisation for a website using directory submissions, articles where appropriate plus other link-building techniques I've become familiar with.&lt;br /&gt;&lt;br /&gt;Spreading the SEO work over a few months should give better value and satisfaction to the customer. With a one-off hit at link-building, there won't be time to see any results before the work is completed. It's also likely to be unsuccessful. To do optimisation, you have to be able to monitor the results and make changes over a period of weeks. with newer sites this is especially important as the sites tend to perform well for a period before dropping back.&lt;br /&gt;&lt;br /&gt;The other aspect I've got to price up is the on-page optimisation. Do I charge per page? Do I have a minimum charge that makes it worthwhile doing the job in the first place? If I think back to when I was looking for SEO help, I would often get quoted £350 a site or £100 per page. I never felt entirely comfortable with quotes like that since they didn't quantify what work was being done. Now, I've got more experience I can also see that it's pretty hard - or at least less optimal - to optimise a single page on a website.&lt;br /&gt;&lt;br /&gt;I'll also have to think through whether I offer any PPC, e.g. &lt;a href="http://software-product-development.blogspot.com/2008/05/10-tips-for-using-google-adwords.html"&gt;Google Adwords advice&lt;/a&gt;. My feeling right now is that I shouldn't since I don't think it's a good medium to long term way of getting traffic/ sales, or rather I think that organic SEO will be the most cost-effective after a 6 month to 1 year period.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-1359212008485718332?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/1359212008485718332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=1359212008485718332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/1359212008485718332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/1359212008485718332'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/12/seo-doing-it-professionally.html' title='SEO: Doing it professionally'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-8984163102956503655</id><published>2008-11-30T06:32:00.000-08:00</published><updated>2008-12-03T04:54:26.031-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shareware'/><category scheme='http://www.blogger.com/atom/ns#' term='support'/><category scheme='http://www.blogger.com/atom/ns#' term='software release management'/><title type='text'>Software Trial Periods: How long before customers buy?</title><content type='html'>With the November releases of SliQ Invoicing and Quoting (Standard and MC), I made a change to the format of the product and unlock codes. The idea behind this was to simplify the process for users, making it easier to check if a product code was correct. The new format also makes it easier to generate an unlock code. The new unlock code format is also longer - meaning that people will be less likely to try and type the code in by hand. This should reduce the chances of the unlock code being mistakenly typed. On the advice of a fellow software vendor, I now use the customer’s identity - land and email addresses in the code making it easier to match codes to customers in the future.&lt;br /&gt;&lt;br /&gt;I've always wondered how long people use my software before purchasing. People have up to 30 days free use before they need to buy but until now I've had no way of gauging how long people try before buying on average. With the change in the code format, I've been able to tell whether someone download the software before or after the change. Previously, I’d read posts from other shareware authors or marketing people advising that people tend to buy more or less immediately - within hours - if they are going to buy. The longer people leave between trying and buying, the less chance of a purchase. Although not a scientific test, in the three or so weeks since the last release, 90% of purchasers still use the old format code. I'm taking this to mean that, at least with my products, most people take pretty much full advantage of the 30 day trial period.&lt;br /&gt;&lt;br /&gt;Of course, I could get worried by purchasers still registering with the old product codes. With the credit crunch I could assume that I’m not getting any new customers and I’m just exhausting the supply of people who downloaded a trial a month ago. However Google Analytics is actually showing an increase in traffic over the past 3 weeks and my download bandwidth has increased too. This means I'm probably getting proportionately more new trial users. The sales haven't dropped off either, which I was kind of expecting for business-related software in the run-up to Christmas.&lt;br /&gt;&lt;br /&gt;If all this means that most people take advantage of the trial period then I’m glad. I want people to use the full trial period to make sure they are happy to purchase. Hopefully it reduces the support overhead in the long-term since those people who do buy will be more happy with the features the software provides.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-8984163102956503655?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/8984163102956503655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=8984163102956503655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8984163102956503655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8984163102956503655'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/11/software-trial-periods-how-long-before.html' title='Software Trial Periods: How long before customers buy?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-2265000612418125830</id><published>2008-11-28T09:22:00.000-08:00</published><updated>2008-11-28T09:25:53.885-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='customer relationship management'/><category scheme='http://www.blogger.com/atom/ns#' term='support'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Remote Support Access</title><content type='html'>&lt;p&gt;For a while, I've been looking for a way of improving support to customers. If a customer is confused by a feature or we can't understand the problem they are trying to describe things can be difficult. The only real way to move forward in such situations is to see what the customer is actually doing on their PC. Site visits are not really possible - for cost reasons if nothing else - so I've been looking for a way of sharing PC desktops remotely over the internet.&lt;/p&gt;&lt;p&gt;Discussions with friends raised a number of possibilities - Webex, Windows Invite a Friend and NetViewer were mentioned. The cheapest options is Windows Invite a Friend - it comes free with Windows XP and Windows Vista. I tried it our on a pair of PCs in our office but found that:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;You have to explain to the client/ customer how to get the service going and send an invite for support.&lt;/li&gt;&lt;li&gt;The help pages linked from XP's help are no longer present on Microsoft's website.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Both of these points make me wary of using Invite a Friend - they wouldn't make SliQTools look professional.&lt;/p&gt;&lt;p&gt;So I took at NetViewer. This seems a reasonable service - the cost is good and the service works well. The support technician sends an invite to the customer, the customer downloads a small client program (linked from the support invite email) and gives access to his PC to the support person. &lt;/p&gt;&lt;p&gt;To see an alternative, I took a look at &lt;a href="http://www.logmein.com/"&gt;LogMeIn Rescue&lt;/a&gt;. This turned out to be the Rolls-Royce remote support service. It's a really good package, working more smoothly and with a more professional, friendly feel for the technician and customer. The only downside is the cost - 4 times that of NetViewer. Overall though, I think you get what you pay for and LogMeIn Rescue seems like a good choice.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-2265000612418125830?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/2265000612418125830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=2265000612418125830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/2265000612418125830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/2265000612418125830'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/11/remote-support-access.html' title='Remote Support Access'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-1295190182298325961</id><published>2008-11-12T13:50:00.000-08:00</published><updated>2009-01-07T13:30:40.055-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Submitter'/><title type='text'>Free Directory Submission Software</title><content type='html'>It's about 3 months since I made a new release of my &lt;a href="http://software-product-development.blogspot.com/2008/07/new-directory-submission-tool.html"&gt;free directory submission tool&lt;/a&gt;, SliQ Submitter. Since I made the release, I've been busy on other projects. One of those projects is a faster directory submitter that should make the whole submission process much quicker - perhaps as little as 1 or 2 seconds if the directory doesn't have a captcha.&lt;br /&gt;&lt;br /&gt;SliQ Submitter was my first attempt at writing &lt;a href="http://www.sliqtools.co.uk/directory-submission-tool.aspx"&gt;directory submission software&lt;/a&gt;. Initially I made 3 releases very soon after each other - first with a free web directory list containing 450 directories, quickly followed by 2 more releases until the package listed over 2000 web directories. I initially tested submissions to all the listed directories and was confident that all directories worked and would accept submissions.&lt;br /&gt;&lt;br /&gt;Soon after the last release though, I realised that web directories don't stand still. Before long the PR of the web directories changed, with a lot going to PR0. Whether this caused a number to give up I don't know, but quite a few of the 2000 went offline. As the months have passed, a number of the domains expired and a good percentage of the directories switched to paid.&lt;br /&gt;&lt;br /&gt;In the last few days, I've rechecked the directories, removing those which are dead or have switched to being paid. Of the original 2250, there are now about 1250 left. As of today though, all of these are free and if a submitted website gets accepted by a good proportion of the 1250 directories, the site should get a good boost in PR and performance in SERPs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-1295190182298325961?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/1295190182298325961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=1295190182298325961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/1295190182298325961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/1295190182298325961'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/11/free-directory-submission-software.html' title='Free Directory Submission Software'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-4389049593946292540</id><published>2008-11-12T13:15:00.000-08:00</published><updated>2008-11-12T13:53:16.590-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shareware'/><category scheme='http://www.blogger.com/atom/ns#' term='SERPs'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Getting more Visitors and Page Views</title><content type='html'>I've been helping a friend optimise his &lt;a href="http://www.softtester.com/"&gt;software archive&lt;/a&gt; site SoftTester. The site is nearly 5 years old and has about 100,000 pages as well as being listed in DMOZ. Over the last couple of years his site had been slowly losing visitors. By June he was down to only a few hundred a day. Needless to say, his income from Adsense had fallen away to almost nothing.&lt;br /&gt;&lt;br /&gt;In June, we decided to do some SEO on the site. We mainly concentrated on on-page SEO and improved page titles and descriptions as well as adding good h1 and h2 tags. His site is database-driven, with most of the content coming from PAD files submitted by software authors.&lt;br /&gt;&lt;br /&gt;We changed some of the data used to display info as well as shuffling the position of some the displayed items. Whatever we did, it seems to have paid off. Within a couple of weeks, search engines started sending more traffic to the site. In particular traffic from Google began to grow steadily.&lt;br /&gt;&lt;br /&gt;As well as on-page optimisation, we set about getting new links to the site. One of the main ways &lt;a href="http://www.softwarelode.com/"&gt;software download&lt;/a&gt; sites get links is by reviewing and making awards to listed software packages. Software authors can then use a nice award graphic on their own websites and link back to the archive. The existing graphics were a bit tired, so I encouraged my friend to buy classy new ones and before long he began to get extra links to his site.&lt;br /&gt;&lt;br /&gt;After waiting 4 or 5 months, the number of visitors and page views had grown by a factor of nearly 5 and the income from Adsense had grown along with the traffic. Not a bad result for a few hours work spread over a few days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-4389049593946292540?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/4389049593946292540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=4389049593946292540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4389049593946292540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4389049593946292540'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/11/getting-more-visitors-and-page-views.html' title='Getting more Visitors and Page Views'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3384802098843255366</id><published>2008-11-10T10:40:00.000-08:00</published><updated>2009-01-07T13:29:01.780-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>SEO’ing webpages using precise Keywords</title><content type='html'>&lt;p&gt;A friend of mine has been trying to optimize his webpages. His site is an online shop selling jewellery. On each webpage, he's added a set of links to each product page. These links aid the user in navigating around the site and also attempt to improve SERPs performance as the anchor text for each link includes the keywords for each product page. For example, on one page he's trying to sell some &lt;a href="http://www.mcls4u.com/shop/choker-jewellery-turquoise-blue-wand-pendant/prod_38.php"&gt;Choker Jewellery&lt;/a&gt;, so he made Choker Jewellery the anchor text of the link to the page.&lt;br /&gt;&lt;br /&gt;All the links and anchor text are chosen to reinforce the keywords used on the linked page. He's taken things one stage further and dynamically parsed the page description from the backend database and generated the anchor text for the links automatically. This will make it much easier to add product pages in the future and is a good example of using a database to make management of a website easier.&lt;/p&gt;&lt;p&gt;To give the links extra value he's added the navigation near the top of each webpage on the site. This should show google that these links are important. To make the placement of the links useful to visitors he's also added the text “Recent Searches” so the links look like phrases people have used to search for items on my site, but more importantly providing google with an important set of links.&lt;br /&gt;&lt;br /&gt;He wasn't sure whether to have these links at the top of the page as they do look odd. However his biggest problem was deciding what keywords to use for his home page. He finally decided on &lt;a href="http://www.mcls4u.com/shop"&gt;Cheap Jewellery&lt;/a&gt;. Having developed several websites in the past and getting little traffic, he was keen to better this time and used the Adwords keyword tool to find keywords with a good expected level of traffic. He then matched the best keywords against the products on his shop site. An example would be &lt;a href="http://www.mcls4u.com/shop/jewelry-fun-hen-night-party-l-plate-pendant/prod_23.php”%3EJewelry%3C/a"&gt;Jewelry&lt;/a&gt; which is a spelling mistake, but a good keyword from a volume point of view with a good, i.e. low, level of &lt;a href="http://software-product-development.blogspot.com/2008/12/measuring-competitiveness-of-keywords.html"&gt;keyword competition&lt;/a&gt;. This was a difficult process but he found that keywords with a good expected level of traffic aren’t necessarily the keywords people use when searching for things to buy from his site. Therefore the whole strategy is quite risky, but definitely worth trying.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3384802098843255366?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3384802098843255366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3384802098843255366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3384802098843255366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3384802098843255366'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/11/seoing-webpages-using-precise-keywords.html' title='SEO’ing webpages using precise Keywords'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-300381313415688444</id><published>2008-10-13T13:19:00.000-07:00</published><updated>2008-10-13T13:59:29.537-07:00</updated><title type='text'>Capturing an image/ thumbnail of a webpage in C#</title><content type='html'>&lt;div align="justify"&gt;For a while I've been figuring out how to programmatically get an image of a web page using C# and .Net. This could have a number of uses such as displaying a thumbnail of a web page. I found a number of methods by Googling but on the whole they seemed a bit lengthy. Eventually, I combined bits of a number of methods and then simplified things by trying out an alternative approach myself. One key thing I wanted to do was to create a mini picture of a website for display in a new desktop app I'm developing.&lt;br /&gt;&lt;br /&gt;In the end I wrote a simple class with a single static method called&lt;br /&gt;GrabImageOfWebPage. GrabImageOfWebPage takes a .Net WebBrowser control instance as an argument together with the required size for the captured image. The web page loaded in the WebBrowser control is captured (the entire client area of the control is captured) and shrunk/ enlarged into a bitmap of the required size. Here's the code:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;using Microsoft;&lt;br /&gt;using mshtml;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;using System.Runtime.InteropServices.ComTypes;&lt;br /&gt;using System.Drawing;&lt;br /&gt;&lt;br /&gt;namespace BrowserComponents&lt;br /&gt;{&lt;br /&gt;    /// &lt;summary&gt;&lt;br /&gt;    /// Class providing a static method to return a bitmap of a web page rendered in&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-family:courier new;font-size:85%;"&gt;/// a .Net webbrowser control.&lt;br /&gt;    /// &lt;/summary&gt;&lt;br /&gt;    public class CBrowserImageGrabber&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        [ComVisible(true), ComImport()]&lt;br /&gt;        [GuidAttribute("0000010d-0000-0000-C000-000000000046")]&lt;br /&gt;        [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]&lt;br /&gt;&lt;br /&gt;        private interface IViewObject&lt;br /&gt;        {&lt;br /&gt;            [return: MarshalAs(UnmanagedType.I4)]&lt;br /&gt;            [PreserveSig]&lt;br /&gt;            int Draw(&lt;br /&gt;                //tagDVASPECT&lt;br /&gt;                [MarshalAs(UnmanagedType.U4)] UInt32 dwDrawAspect,&lt;br /&gt;                int lindex,&lt;br /&gt;                IntPtr pvAspect,&lt;br /&gt;                [In] IntPtr ptd,&lt;br /&gt;                //[MarshalAs(UnmanagedType.Struct)] ref DVTARGETDEVICE ptd,&lt;br /&gt;                IntPtr hdcTargetDev,&lt;br /&gt;                IntPtr hdcDraw,&lt;br /&gt;                [MarshalAs(UnmanagedType.Struct)] ref tagRECT lprcBounds,&lt;br /&gt;                [MarshalAs(UnmanagedType.Struct)] ref tagRECT lprcWBounds,&lt;br /&gt;                IntPtr pfnContinue,&lt;br /&gt;                [MarshalAs(UnmanagedType.U4)] UInt32 dwContinue);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            public static Image GrabImageOfWebPage&lt;/span&gt;&lt;br /&gt;            &lt;span style="font-family:courier new;font-size:85%;"&gt;(WebBrowser Browser, Size ImageSize)&lt;br /&gt;            {&lt;br /&gt;                // Get the view object of the browser&lt;br /&gt;                //&lt;br /&gt;                IViewObject VObject = Browser.Document.DomDocument as IViewObject;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;                if (VObject != null)&lt;br /&gt;                {&lt;br /&gt;                    // Construct a bitmap as big as the required image.&lt;br /&gt;                    //&lt;br /&gt;                    Bitmap bmp = new Bitmap(ImageSize.Width, ImageSize.Height);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;                    // The size of the portion of the web page to be captured.&lt;br /&gt;                    //&lt;br /&gt;                    mshtml.tagRECT SourceRect = new tagRECT();&lt;br /&gt;                    SourceRect.left = 0;&lt;br /&gt;                    SourceRect.top = 0;&lt;br /&gt;                    SourceRect.right = Browser.Right;&lt;br /&gt;                    SourceRect.bottom = Browser.Bottom;&lt;br /&gt;                    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;                    // The size to render the target image. This can be used&lt;br /&gt;                    // to shrink the image to a thumbnail.&lt;br /&gt;                    //&lt;br /&gt;                    mshtml.tagRECT TargetRect = new tagRECT();&lt;br /&gt;                    TargetRect.left = 0;&lt;br /&gt;                    TargetRect.top = 0;&lt;br /&gt;                    TargetRect.right = ImageSize.Width;&lt;br /&gt;                    TargetRect.bottom = ImageSize.Height;&lt;br /&gt;                    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;                    // Draw the web page into the bitmap.&lt;br /&gt;                    //&lt;br /&gt;                    using (Graphics gr = Graphics.FromImage(bmp))&lt;br /&gt;                    {&lt;br /&gt;                        IntPtr hdc = gr.GetHdc();&lt;br /&gt;                        int hr =&lt;br /&gt;                            VObject.Draw((int)DVASPECT.DVASPECT_CONTENT,&lt;br /&gt;                                (int)-1, IntPtr.Zero, IntPtr.Zero,&lt;br /&gt;                                IntPtr.Zero, hdc, ref TargetRect, ref SourceRect,&lt;br /&gt;                                IntPtr.Zero, (uint)0);&lt;br /&gt;                        gr.ReleaseHdc();&lt;br /&gt;                    }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;                    // Return the bitmap.&lt;br /&gt;                    //&lt;br /&gt;                    return bmp;&lt;br /&gt;                }&lt;br /&gt;                else&lt;br /&gt;                {&lt;br /&gt;                    return null;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div align="justify"&gt;To gain visibility of the types in this example, you have to include the following uses:&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;using mshtml;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;using System.Runtime.InteropServices;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;using System.Runtime.InteropServices.ComTypes;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;using System.Drawing;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;and you also need to add a .Net reference to your project for Microsoft.mshtml.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Using the method is then pretty easy. The example code below create a webbrowser control and loads a webpage. When the webpage is fully loaded, it grabs an image 10% the size of the original page and displays it in a picture box.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;WebBrowser mWebBrowser;&lt;br /&gt;      &lt;br /&gt;public Form1()&lt;br /&gt;{&lt;br /&gt;    InitializeComponent();&lt;br /&gt;&lt;br /&gt;    mWebBrowser = new WebBrowser();&lt;br /&gt;    mWebBrowser.Width = 1024;&lt;br /&gt;    mWebBrowser.Height = 768;&lt;br /&gt;    mWebBrowser.ScrollBarsEnabled = false;&lt;br /&gt;&lt;br /&gt;    mWebBrowser.DocumentCompleted +=&lt;br /&gt;        new WebBrowserDocumentCompletedEventHandler&lt;br /&gt;            (mWebBrowser_DocumentCompleted);&lt;br /&gt;    mWebBrowser.Navigate&lt;br /&gt;        (@"http://www.software-product-development.blogspot.com");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void mWebBrowser_DocumentCompleted(object sender,&lt;br /&gt;    WebBrowserDocumentCompletedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    if (mWebBrowser.ReadyState == WebBrowserReadyState.Complete)&lt;br /&gt;    {&lt;br /&gt;        Image Img =&lt;br /&gt;            BrowserComponents.CBrowserImageGrabber.&lt;br /&gt;                GrabImageOfWebPage(mWebBrowser, new Size(102, 77));&lt;br /&gt;&lt;br /&gt;        if (Img != null)&lt;br /&gt;        {&lt;br /&gt;            pictureBox1.Image = Img;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-300381313415688444?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/300381313415688444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=300381313415688444' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/300381313415688444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/300381313415688444'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/10/capturing-image-thumbnail-of-webpage-in.html' title='Capturing an image/ thumbnail of a webpage in C#'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5207005606934755550</id><published>2008-10-06T07:33:00.000-07:00</published><updated>2009-01-07T02:51:34.500-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Losing a PageRank Value</title><content type='html'>In the mini-update toolbar export on Sept 26th this blog lost its &lt;a href="http://software-product-development.blogspot.com/2008/06/what-is-google-pagerank.html"&gt;PR&lt;/a&gt;, i.e the value went to N/A. Previously the PR had been 3. Why this has happened I don't know. I haven't linked to any silly sites or reduced the frequency of posting.&lt;br /&gt;&lt;br /&gt;Today I also noticed that a few inner pages on the blog have PR. I haven't noticed this before. It's strange that the older posts have PR but the blog home page is back to PR N/A. Google Analytics isn't showing any change in the level of traffic to the blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5207005606934755550?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5207005606934755550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5207005606934755550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5207005606934755550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5207005606934755550'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/10/losing-pagerank-value.html' title='Losing a PageRank Value'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3746410513015147518</id><published>2008-09-12T05:25:00.000-07:00</published><updated>2009-01-07T02:58:12.930-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>How to keep on the good side of Google</title><content type='html'>When people are trying to improve their ranking in search engine results page, a lot of people will use any advice they can find in a struggle to improve rankings. People need to be wary which advice they follow though. Some advice will cause you to be penalised by Google.&lt;br /&gt;&lt;br /&gt;If a page on your website is penalised, it will not perform as well as it might in search results. Here are some tips to help avoid penalties. In the case of a new website, it may never get to perform well in the first place.&lt;br /&gt;&lt;br /&gt;Remember that outside Google, no-one really knows what counts as good or bad in terms of SEO. There is some general advice from Google about having good, unique content and quality backlinks. Other than that, people are justing using their experience and guesswork to find out what works and doesn't. A lot of SEO information online is copied and spread as online myths.&lt;br /&gt;&lt;br /&gt;With this proviso in mind, here's a fairly non-controversial list of things to avoid.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Avoid Exchanging Links&lt;br /&gt;&lt;/strong&gt;Excessive link exchanging should be avoided as Google may see this as an attempt to artifically improve rank. A few link exchanges will be OK but avoid large numbers. Link farms - where a large group of sites hyperlink to all other sites in the group should always be avoided.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Do not Sell links&lt;br /&gt;&lt;/strong&gt;Selling links is a no-no - unless the hrefs use the nofollow attribute. If your site sells dofollow links and Google becomes aware it may well be penalised. Google's WebMasters site allows people to report paid links. Rumour has it that Google may use this information to adjust its algorithms to improve detection of paid links.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Do not buy links&lt;br /&gt;&lt;/strong&gt;Recently, Google has threatened to penalise sites they discover have purchases dofollow links from another site. Logically thinking though, this does not seem possible - or at least it would be extremely unfair! If this were to be the case it would be easy to penalise a competitor by purchasing links to their site and then reporting them to Google.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Avoid duplicate content&lt;/strong&gt;&lt;br /&gt;If possible, avoid duplicate content. For example, don't make the same post to two different blogs. Google will ignore copies of content. A few copies will make it into Google's index but lots of copies will be ignored. Even on different pages within a website, try to keep the textual content unique and avoid repeating whole paragraphs of text.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Don't stuff keywords&lt;br /&gt;&lt;/strong&gt;If you want to perform well for a certain keyword, stuffing your webpages full of the keyword will not help. Write you copy in a natural way so that it reads well. If you are writing a web page about Google penalties (for example), the keyword "Google Penalty" will naturally appear a number of times - you don't need to repeat the phrase scores or hundred of times.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Don't include hidden text&lt;/strong&gt;&lt;br /&gt;Make the contents of the webpage visible to the user. For example, don't include extra content such as white text on a white background that the user cannot see.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3746410513015147518?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3746410513015147518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3746410513015147518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3746410513015147518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3746410513015147518'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/09/how-to-keep-on-good-side-of-google.html' title='How to keep on the good side of Google'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5738587814164434360</id><published>2008-09-07T23:37:00.000-07:00</published><updated>2009-01-07T02:58:58.979-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google sitelinks'/><title type='text'>Sitelinks update</title><content type='html'>Today, Google Webmasters shows an updates in my sitelinks but these don't seem to have made it to the SERPs yet. Three new links have been added to my sales, support and SliQ Submitter pages. When these links make it to the search results, the &lt;a href="http://software-product-development.blogspot.com/2008/08/further-thoughts-on-google-sitelinks.html"&gt;sitelinks&lt;/a&gt; will look much better than at present.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5738587814164434360?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5738587814164434360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5738587814164434360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5738587814164434360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5738587814164434360'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/09/sitelinks-update.html' title='Sitelinks update'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-2602571303473881250</id><published>2008-08-31T03:30:00.000-07:00</published><updated>2009-01-07T03:00:13.959-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google sitelinks'/><title type='text'>Further thoughts on Google Sitelinks</title><content type='html'>Thinking about it a bit more, my feeling is that Google needed knowledge of where people went after landing on the SliQTools homepage in order to choose the &lt;a href="http://software-product-development.blogspot.com/2008/08/sliqtools-now-has-sitelinks.html"&gt;sitelinks&lt;/a&gt;. The only way Google could have this knowledge is by using Google Analytics data. I wonder if sitelinks have ever been given to a site that did not use Analytics?&lt;br /&gt;&lt;br /&gt;One of the search terms for which sitelinks are displayed is used by people revisiting the site to see if there is a new release. After landing on the homepage, they go to the Release History Page.&lt;br /&gt;&lt;br /&gt;I did a rejig of the homepage a couple of weeks ago and shuffled around some of the thumbnails to make people go to a better page after the homepage, i.e. the Invoice Software page instead of the Invoices &amp;amp; Payments page. I think the Invoices &amp;amp; Payments sitelink was generated before this reshuffle. Perhaps after 90 days the sitelinks will be regenerated inline with the new site linking stucture.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-2602571303473881250?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/2602571303473881250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=2602571303473881250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/2602571303473881250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/2602571303473881250'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/08/further-thoughts-on-google-sitelinks.html' title='Further thoughts on Google Sitelinks'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3094486104968013730</id><published>2008-08-31T02:39:00.001-07:00</published><updated>2008-08-31T02:55:38.698-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google sitelinks'/><title type='text'>SliQTools now has SiteLinks</title><content type='html'>Today I noticed that for a couple of search terms, the SliQTools website now has sitelinks on Google. The links aren't really to the pages I would have wished to highlight to users.&lt;br /&gt;&lt;br /&gt;If I could generate the sitelinks manually - which isn't possible with Google sitelinks - I'd have chosen the invoice software page, download trial page, invoice templates page and sales pages. Instead, Google has chosen the Invoices &amp;amp; Payments page, Invoice Templates page and Release History pages.&lt;br /&gt;&lt;br /&gt;It's interesting how Google has chosen the names for the links too.&lt;br /&gt;&lt;br /&gt;The names aren't the first words in the page titles, i.e. in the HTML title tags. Also, in the case of the Invoice Templates link, the link text isn't the anchor text used for links to the pages within the site either. Interestingly, the Invoices &amp;amp; Payments link has only one text link pointing to it within the SliQTools website - mostly it's linked from a thumbnail. I thnk the sitelinks persist for 3 months, i.e. the links won't change for 90 days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3094486104968013730?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3094486104968013730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3094486104968013730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3094486104968013730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3094486104968013730'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/08/sliqtools-now-has-sitelinks.html' title='SliQTools now has SiteLinks'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-8824830416391419178</id><published>2008-08-25T08:16:00.000-07:00</published><updated>2008-08-25T08:23:58.616-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SERPs'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Different sites, different visitor profiles</title><content type='html'>I thought I'd make a record of the share of visitors two of my sites get from different search engines. The profiles are very different and not really what I'd expected. the first sets gets over 90% of its traffic from direct addresses/ bookmarks but here are its search engine stats:-&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Windows Live - 53%&lt;/li&gt;&lt;li&gt;Google - 32%&lt;/li&gt;&lt;li&gt;Yahoo - 10%&lt;/li&gt;&lt;li&gt;AltaVista - 2%&lt;/li&gt;&lt;li&gt;Alexa,Google Images,Tiscali,Dogpile,AllTheWeb - 3%&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The second site gets less than 5% of visitors from direct traffic. Its search engine stats are:-&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Google - 77%&lt;/li&gt;&lt;li&gt;Yahoo - 10%&lt;/li&gt;&lt;li&gt;Unknown - 8%&lt;/li&gt;&lt;li&gt;AOL - 2%&lt;/li&gt;&lt;li&gt;MSN, Tiscali, Ask Jeeves, Alexa, AltaVista - 3%&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The search engine stats are very different between the sites. The second site is my oldest. For both sites Google is very important but I'm surprised to see Windows Live heading up the list for the first site. The first site is quite new - less than 2 months old. In another couple of months I'll see how the search engine stats are looking then.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-8824830416391419178?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/8824830416391419178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=8824830416391419178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8824830416391419178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8824830416391419178'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/08/different-sites-different-visitor.html' title='Different sites, different visitor profiles'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-221872649434261090</id><published>2008-08-23T14:31:00.000-07:00</published><updated>2009-01-07T13:26:06.467-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Submitter'/><category scheme='http://www.blogger.com/atom/ns#' term='Pagerank'/><title type='text'>Google PageRank - Second Update</title><content type='html'>I'd been confused by the visible &lt;a href="http://software-product-development.blogspot.com/2008/06/what-is-google-pagerank.html"&gt;Pagerank&lt;/a&gt; of this blog as shown on the Google toolbar. After the last export of rank values at the end of July this blog had still not been assigned a rank value by Google and was still showing PR N/A. However today - Aug 23rd - the rank is showing as PR 3! This is great news and much more in line with what I was expecting. I'd been doing a mixture of different types of link-building and had also been doing directory submissions using SliQ Submitter, my &lt;a href="http://www.sliqtools.co.uk/directory-submission-tool.aspx"&gt;directory submission software&lt;/a&gt;. This now looks as though it has paid off - at least in terms of PR - and ties up with the increase in the number of visitors to the blog over the past 4 weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-221872649434261090?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/221872649434261090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=221872649434261090' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/221872649434261090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/221872649434261090'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/08/google-pagerank-second-update.html' title='Google PageRank - Second Update'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-4166310253324322305</id><published>2008-08-21T15:41:00.000-07:00</published><updated>2008-08-21T15:42:28.064-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SERPs'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Tracking performance in SERPS for keywords</title><content type='html'>A few day ago I was speaking to a friend who was testing out SliQ Submitter for me and providing some useful, constructive feedback. He was wondering what tools I used to check the ranking of my site on Google for different keywords. I don't use anything other than Google searches by hand but I thought I'd look to see if there was anything on the market.&lt;br /&gt;&lt;br /&gt;I soon found a tool called WebPosition Gold or WPG for short. This tool allows you to automatically track the performance of sites on Google and show nice graphs of the historical trend. Trouble is that with a bit more reading online, it turns out that Google mentions that use of WPG is against Google's terms of service. the terms specifically name WPG as well as saying that similar tools are also not to be used.&lt;br /&gt;&lt;br /&gt;To use WPG you have to a Google API key for their SOAP search API. Google no longer issue such keys and there are stories online saying that WPG users are now finding that WPG gets blocked. The future doesn't look good for WPG.&lt;br /&gt;&lt;br /&gt;When I think about, it seems fairly clear that tracking a few keywords is interesting but not necessarily informative anyway. What really matters is traffic to your site and conversion of visitors to sales. You could be performing really well for certain keywords - and improving in performance too - but really you need to measure traffic. Google itself provides a better measurement tool - Google Analytics. If you have the time, Google Analytics can provide valuable data about the performance of your website - traffic figures, how people got to your site (not just SE performance) and where they went went they landed on your site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-4166310253324322305?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/4166310253324322305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=4166310253324322305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4166310253324322305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4166310253324322305'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/08/tracking-performance-in-serps-for.html' title='Tracking performance in SERPS for keywords'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5852440544355626661</id><published>2008-08-18T15:26:00.000-07:00</published><updated>2009-01-07T13:32:43.638-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Submitter'/><title type='text'>SliQ Submitter - New Release</title><content type='html'>SliQTools have released an updated version of their free &lt;a href="http://www.sliqtools.co.uk/directory-submission-tool.aspx"&gt;directory submission tool &lt;/a&gt;&lt;a href="http://www.sliqtools.co.uk/directory-submission-tool.aspx"&gt;SliQ Submitter&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After feedback from beta testers, a number of enhancements have been made:-&lt;br /&gt;&lt;ol&gt;&lt;li&gt;SliQ Submitter now attempts to learn directory categories selected by the user on the directory page. This means that the user is no longer restricted to a small, fixed set of categories to be filled in automatically - the more categories you use when submitting to directories, the more categories SliQ will learn.&lt;/li&gt;&lt;li&gt;If SliQ Submitter can detect that a website has been successfully submitted, SliQ will load the next directory automatically. &lt;/li&gt;&lt;li&gt;A number of GUI enhancements have also been made.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The end results of these improvements is that SliQ Submitter is now easier to use and makes the process of web directory submission faster.&lt;/p&gt;&lt;p&gt;Read the &lt;a href="http://software-product-development.blogspot.com/2008/07/new-directory-submission-tool.html"&gt;original release post&lt;/a&gt; for SliQ Submitter.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5852440544355626661?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5852440544355626661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5852440544355626661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5852440544355626661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5852440544355626661'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/08/sliq-submitter-new-release.html' title='SliQ Submitter - New Release'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5047677561593844727</id><published>2008-07-27T15:15:00.000-07:00</published><updated>2008-07-27T15:23:24.517-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SERPs'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Google Pagerank update - Strange results</title><content type='html'>Two or three days ago Google exported the current Pagerank values to the Google toolbar. I always find this interesting - not because I put a huge amount of faith in a higher Pagerank value, but simply because I take a higher Pagerank value to mean I'm probably doing something right in terms of SEO.&lt;br /&gt;&lt;br /&gt;This time round I had some confusing results. On the main SliQTools website, 6 inner pages moved from PR2 to PR3 but one page dropped from PR2 to PR0. The homepage itself remained at PR3 while another page (relatively new) that does really well in SERPS for certain keywords had PR 0. I find it a bit hard to explain how so many pages are PR3 and the homepage is only PR3 and why other pages are PR0 but still do well in SERPs. I guess Pagerank isn't as important as it used to be.&lt;br /&gt;&lt;br /&gt;The other confusing aspect about the recent export, is that another of my websites has gained PR2 from PR0. This is hard to explain since it only has links from a forum. Its inner pages are PR1 even though one of them is virtually blank.&lt;br /&gt;&lt;br /&gt;I collaborate on another blog with a friend. This blog is still PR0 but he has a new website - registered less than 2 months ago that only has links from the PR0 blog - and the new site has a PR of 1 which is higher than the only external site giving incoming links.&lt;br /&gt;&lt;br /&gt;Strange!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5047677561593844727?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5047677561593844727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5047677561593844727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5047677561593844727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5047677561593844727'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/google-pagerank-update-strange-results.html' title='Google Pagerank update - Strange results'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3458068345301455366</id><published>2008-07-27T09:31:00.000-07:00</published><updated>2008-07-27T23:44:06.734-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Submitter'/><title type='text'>New Directory Submission Tool</title><content type='html'>SliQTools have just released a beta of a new &lt;a href="http://www.sliqtools.co.uk/directory-submission-tool.aspx"&gt;directory submission tool &lt;/a&gt;called &lt;a href="http://www.sliqtools.co.uk/directory-submission-tool.aspx"&gt;SliQ Submitter&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5227733620892045026" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_14DeN5hyQQ8/SIykB82jDuI/AAAAAAAAAB4/j2b15Nz_8vc/s320/sliqsubmitterblog.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;SliQ Submitter helps speed manual submissions to web directories. Submitting to web directories can still be an important way of gaining backlinks for a website in order to help with positioning in search engine result pages.&lt;br /&gt;&lt;br /&gt;SliQ Submitter is available for free. The tool currently handles submission to about 450 directories and will be updated in a future release to handle many more.&lt;br /&gt;&lt;br /&gt;The software allows up to 5 titles and descriptions to be specified together with up to 6 categories. SliQ Submitter autmatically fills out the fields in web directory submission forms. All you have to do is review the submitted details, enter any captcha and click the directory's Submit or Continue button to complete the process.&lt;br /&gt;&lt;br /&gt;To find out more about SliQ Submitter, go to &lt;a href="http://www.sliqtools.co.uk/directory-submission-tool.aspx"&gt;http://www.sliqtools.co.uk/directory-submission-tool.aspx&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3458068345301455366?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3458068345301455366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3458068345301455366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3458068345301455366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3458068345301455366'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/new-directory-submission-tool.html' title='New Directory Submission Tool'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_14DeN5hyQQ8/SIykB82jDuI/AAAAAAAAAB4/j2b15Nz_8vc/s72-c/sliqsubmitterblog.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-7881430394495800849</id><published>2008-07-24T17:15:00.000-07:00</published><updated>2008-07-24T17:26:40.935-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>.Net WebBrowser Control &amp; DocumentComplete event</title><content type='html'>Lately I've been developing a new application that includes an embedded web browser. The application loads specific web pages and then reads and writes to the fields on the page. For example, it might set some fields to text values defined by the user or read the value of a combo/ dropdown to see if a user-defined criteria is met.&lt;br /&gt;&lt;br /&gt;The fundamentals of the new application were working OK but under some conditions my code failed to access the fields on a loaded web page. The access code is executed in the .Net WebBrowser control's DocumentCompleted event.&lt;br /&gt;&lt;br /&gt;The DocumentCompleted event is fired after calling the control's Navigate method to load a web page. After some investigation I found that the DocumentCompleted event was being called more than once when a page was loaded. What I had to do in the event was test the WebBrowser's ReadyState property and check that the state was Complete. Only when a Complete state was set could the DocumentCompleted event run code to access the HTML fields on the web page. The DocumentCompleted event might be fired many times as a page is loaded but any code accessing the WebBrowser's Document property should only be executed if the ReadyState property has a value of Complete.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-7881430394495800849?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/7881430394495800849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=7881430394495800849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7881430394495800849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7881430394495800849'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/net-webbrowser-control-documentcomplete.html' title='.Net WebBrowser Control &amp; DocumentComplete event'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5109724684158463606</id><published>2008-07-18T05:06:00.000-07:00</published><updated>2008-07-18T05:11:41.390-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO Tools'/><title type='text'>Keyword Research Tools</title><content type='html'>&lt;p&gt;Google have recently released a new keyword research tool at this link:&lt;/p&gt;&lt;p&gt;&lt;a href="https://adwords.google.com/select/KeywordToolExternal"&gt;https://adwords.google.com/select/KeywordToolExternal&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This new tool gives estimates of search volumes for different keywords and can be configured to specific regions, e.g. the UK. If you need to choose keywords for a new web page where ranking in SERPs is important, this tool can provide a better way of picking good words and phrases than simply guessing which might be good.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5109724684158463606?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5109724684158463606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5109724684158463606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5109724684158463606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5109724684158463606'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/keyword-research-tools.html' title='Keyword Research Tools'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-6371862966120896868</id><published>2008-07-17T03:28:00.000-07:00</published><updated>2008-07-17T03:31:34.158-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>.Net Double vs. Decimal</title><content type='html'>One twist with floating-point values is that they cannot represent every possible number. In part this is because the types are of limited size, e.g. Double only has 64-bits of data to work with. The number base used to represent values also has an effect. The .Net float and Double are encoded in base 2 (binary) format. It's not possible to represent every base 10 decimal number in base 2.&lt;br /&gt;&lt;br /&gt;To increase accuracy, use the Decimal data type. The .Net Double data type is a 64-bit floating point value whereas the .Net Decimal data type is a 128-bit floating point value. These extra bits alone might be sufficent to make the Decimal type more accurately represent numbers than Double. However, unlike Double, Decimal is encoded in base 10. This means it can exactly represent base 10 numbers, i.e. the number system humans use, and make it an ideal type for financial calculations. The way the type works allows 28 digits of accuracy, i.e. you can represent 28 decimal digits with the decimal point moved to any position amongst the digits.&lt;br /&gt;&lt;br /&gt;So why use Double if Decimal is available? The downside with Decimal is performance. Decimal operations can take 20 to 40 times longer than Double calculations. Most, if not all, processors used in PCs these days have 64-bit floating-point support built into the processor. Decimal operations however have to be done in software and take much longer to execute.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-6371862966120896868?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/6371862966120896868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=6371862966120896868' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/6371862966120896868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/6371862966120896868'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/net-double-vs-decimal.html' title='.Net Double vs. Decimal'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3418929438529200562</id><published>2008-07-16T09:08:00.000-07:00</published><updated>2008-07-16T09:09:10.195-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Invoicing and Quoting'/><title type='text'>Beefing up Backup/ Restore Protection</title><content type='html'>Sometimes the easiest solutions are the best. Rather than worry about whether having Restore buttons on the new Company tab in multi-company SliQ could carry a risk of users overwriting data with data for the wrong company, we've now added an extra check. When the user restores data, we now check if the data being restored is for the same company. If it isn't we let the user know and ask for confirmation before continuing with the restore.&lt;br /&gt;&lt;br /&gt;This additional check will also make it into the single-company version of SliQ on the next release.&lt;br /&gt;&lt;br /&gt;The actual risk of data loss is quite small. Even if the user does load the incorrect backup file, the daily autobackup will have saved a very recent copy of data in any case.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3418929438529200562?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3418929438529200562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3418929438529200562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3418929438529200562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3418929438529200562'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/beefing-up-backup-restore-protection.html' title='Beefing up Backup/ Restore Protection'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3449260722443509381</id><published>2008-07-16T09:01:00.000-07:00</published><updated>2008-07-16T09:03:03.816-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software release management'/><category scheme='http://www.blogger.com/atom/ns#' term='software CD'/><title type='text'>CD Autorun in Windows XP and Vista</title><content type='html'>To get Windows to automatically launch an application when a disc is inserted into a CD or DVD drive you need to include an autorun.inf file on the root of the CD folder.&lt;br /&gt;&lt;br /&gt;The autorun.inf file is a text file written in a Windows INI file format. The sections in the file tell Windows what to launch, e.g.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[autorun]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;shellexecute=install-instructions.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;launches the default browser on your PC, e.g. Internet Explorer, and displays the install-instruction.html file in the root of the CD (or DVD). You can then include further instruction in the HTML file together with links to launch an installer for example.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3449260722443509381?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3449260722443509381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3449260722443509381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3449260722443509381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3449260722443509381'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/cd-autorun-in-windows-xp-and-vista.html' title='CD Autorun in Windows XP and Vista'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5007448228806996678</id><published>2008-07-10T13:41:00.000-07:00</published><updated>2008-07-10T13:46:31.624-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='customer relationship management'/><title type='text'>Windows Update &amp; AVG Firewall</title><content type='html'>I just lost 3 hours of support time due to Windows Update. I switched off my computer at lunchtime and XP said it would install another update from Windows. I left the computer to update itself as I've never had problems before.&lt;br /&gt;&lt;br /&gt;When I came back this evening, I couldn't connect to the BT wireless router. My other PC with an Ethernet cable was fine but my main PC refused to connect. I used my wife's PC in the end and found that a lot of other people were experiencing the same thing. The fix turned out to require cranking down the AVG firwall setting. Very frustrating!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5007448228806996678?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5007448228806996678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5007448228806996678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5007448228806996678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5007448228806996678'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/windows-update-avg-antivirus.html' title='Windows Update &amp; AVG Firewall'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-2807380755948342961</id><published>2008-07-08T13:43:00.000-07:00</published><updated>2008-07-18T11:56:50.041-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Invoicing and Quoting'/><title type='text'>First Review of Multi-Company SliQ</title><content type='html'>First review of the multi-company version of SliQ highlighted a couple of areas that need reconsideration:-&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Upgrading from the single company version. How do you transfer data from one version to the other?&lt;/li&gt;&lt;li&gt;Is it entirely friendly to have a &lt;strong&gt;Restore Backup&lt;/strong&gt; button on the Companies tab?&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;For point 1, the current idea is that you create a dummy company and then load an SLB (SliQ backup file) into the company overwriting the existing contents. This isn't entirely friendly however, so we may have to add a feature where you can create a new company by opening a backup file.&lt;/p&gt;&lt;p&gt;For point 2, although it seems to be convenient to have the button on the Companies tab, in some ways it's a bit inconvenient - the user could end up overwriting data in the wrong company by mistakenly clicking on the wrong row. Perhaps the easiest, less problematic thing to do would be to remove the save and restore backup buttons from the Companies tab and leave them in the Setup tab and SliQ start menu as in the single company version.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-2807380755948342961?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/2807380755948342961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=2807380755948342961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/2807380755948342961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/2807380755948342961'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/first-review-of-multi-company-sliq.html' title='First Review of Multi-Company SliQ'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-7471171644539276731</id><published>2008-07-06T11:46:00.000-07:00</published><updated>2009-01-07T03:54:10.246-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InstallShield'/><category scheme='http://www.blogger.com/atom/ns#' term='installer'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Installshield 11.5 and .Net 2.0 runtime install</title><content type='html'>I'm doing a new installer for a new software package and it's 6 months since I last used Installshield. I find it pretty difficult finding my way around Installshield so I'm making a blog post about what I had to do to get .Net 2.0 installed as well as the main package.&lt;br /&gt;&lt;br /&gt;Last time I did an installer I needed to install the .Net 2.0 runtime prior to the main package. I had to a fair bit of research using Google to find the info I needed. This time around I ended up doing the same searching so I'm making a note in this blog for future reference.&lt;br /&gt;&lt;br /&gt;Using InstallShield 11.5 ...&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You have to run the Release Wizard and create a new Product Configuration to include .Net 2.0. The wizard has an option to include .Net 2.0 that appears nowhere else in InstallShield.&lt;/li&gt;&lt;li&gt;In the Installation Designer, click on the Media/ Releases node and then, in the middle panel, click on the release to configure more .Net install options. Then ...&lt;/li&gt;&lt;li&gt;In the Command Line to dotnetfx.exe option, put " /q:a /c:\"install /qb\"". This forces a quiet install of the runtime.&lt;/li&gt;&lt;li&gt;Set Show full user interface when installing .Net framework to Yes.&lt;/li&gt;&lt;li&gt;Set display .Net Option dialog to No so the user is not given the option to skip installing .Net 2.0.&lt;/li&gt;&lt;li&gt;Set Delay .Net Reboot to Yes.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Then save everything and build the installation. Now, if the setup.exe is executed on a machine that doesn't have .Net 2.0, the installer will make sure the runtime is installed on the user's machine.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-7471171644539276731?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/7471171644539276731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=7471171644539276731' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7471171644539276731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7471171644539276731'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/installshield-115-and-net-20-runtime.html' title='Installshield 11.5 and .Net 2.0 runtime install'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-7955611491662116330</id><published>2008-07-05T10:13:00.001-07:00</published><updated>2008-07-05T10:39:46.160-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Invoicing and Quoting'/><title type='text'>Multi-Company Version of SliQ</title><content type='html'>&lt;a href="http://bp1.blogger.com/_14DeN5hyQQ8/SG-wyqCeO-I/AAAAAAAAABw/F1ehSry0B6k/s1600-h/sliq_invoicing_company_tab.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5219584877470301154" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_14DeN5hyQQ8/SG-wyqCeO-I/AAAAAAAAABw/F1ehSry0B6k/s320/sliq_invoicing_company_tab.jpg" border="0" /&gt;&lt;/a&gt;Development of the multi-company version of SliQ is coming to an end. The last thing to be done is to update the help file and write the installer before reviewing and test begins. &lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The multi-company version adds a new tab (shown on the right) listing the companies SliQ knows about. Simply selecting a company in the list, loads it data into the other tabs. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;The bottom panel allows the user to keep notes about the company, e.g. the dates invoicing needs to be done on each month.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;When the user adds a new company into SliQ a company setup wizard is launched guiding the user through entering the company details, VAT/ tax registration number and so on. SliQ automatically creates a filename based on the company name and saves the company data.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;With any luck, if reviewing and testing goes well SliQ Invoicing &amp;amp; Quoting MC should be released within 2 weeks.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-7955611491662116330?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/7955611491662116330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=7955611491662116330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7955611491662116330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7955611491662116330'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/07/multi-company-version-of-sliq.html' title='Multi-Company Version of SliQ'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_14DeN5hyQQ8/SG-wyqCeO-I/AAAAAAAAABw/F1ehSry0B6k/s72-c/sliq_invoicing_company_tab.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-363107683515672882</id><published>2008-06-30T23:33:00.000-07:00</published><updated>2008-06-30T23:46:08.760-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shareware'/><category scheme='http://www.blogger.com/atom/ns#' term='product review'/><title type='text'>New Software Directory Launched</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_14DeN5hyQQ8/SGnQLGLezBI/AAAAAAAAABY/VsgO_wLo-zY/s1600-h/software-award.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217930532341337106" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_14DeN5hyQQ8/SGnQLGLezBI/AAAAAAAAABY/VsgO_wLo-zY/s320/software-award.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;SliQTools have launched a shareware download site. Thousands of software packages are listed offering a mix of shareware/ try before you buy software and freeware/ completely free software for downloads.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.softwarelode.com/"&gt;SoftwareLode &lt;/a&gt;accepts listing submissions from software authors worldwide. All submissions are reviewed before being accepted into the directory. SoftwareLode only accepts submissions using the Association of Shareware Professional's PAD file format.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;SoftwareLode allows users to submit reviews on downloaded software. Authors can apply to have their software reviewed and given an award by the site owners. In addition a number of advertising options are provided allowing software titles to be given more prominent advertising slots.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Feel free to browse the &lt;a href="http://www.softwarelode.com/"&gt;software directory&lt;/a&gt; and download one of the many titles available for free.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-363107683515672882?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/363107683515672882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=363107683515672882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/363107683515672882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/363107683515672882'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/new-software-directory-launched.html' title='New Software Directory Launched'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_14DeN5hyQQ8/SGnQLGLezBI/AAAAAAAAABY/VsgO_wLo-zY/s72-c/software-award.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-7788676173656239031</id><published>2008-06-20T23:38:00.000-07:00</published><updated>2008-06-20T23:48:46.065-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='Pagerank'/><title type='text'>4 Tips for Making the Most of a Hyperlink</title><content type='html'>When getting a link to one of your websites you need to make the most of the link - not all links are equal. Here are my 4 tips for getting the most benefit from a link in terms of SEO:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Place the link on a page with higher PageRank&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This means the link will have more &lt;a href="http://software-product-development.blogspot.com/2008/06/what-is-google-pagerank.html"&gt;PageRank &lt;/a&gt;to pass to you and will hopefully help push you up the ranking in search results.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Try to place the link on a page with only a small number of other links&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When passing PageRank to other pages, the rank of a page is divided up between all the outgoing links on the page. If there are a lot of links on a page, the benefit passed by each one is reduced.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Place the link on a page on a similar topic to your own&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;For example a link from a page talking about shoes to one with a topic of finance is probably worth less.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Make sure the link text reinforces your keywords&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;For example, if one of your keywords is "Greek Holidays", make this the text associated with the link using the href element.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-7788676173656239031?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/7788676173656239031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=7788676173656239031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7788676173656239031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7788676173656239031'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/4-tips-for-making-most-of-hyperlink.html' title='4 Tips for Making the Most of a Hyperlink'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-7183724228748709805</id><published>2008-06-18T12:46:00.000-07:00</published><updated>2008-06-18T12:48:09.927-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Writing Copy'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Keyword Research Tools for SEO</title><content type='html'>The following links point to great (and free!) tools to research popular keywords and longtail keywords for web pages.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://freekeywords.wordtracker.com/"&gt;http://freekeywords.wordtracker.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://inventory.overture.com/d/searchinventory/suggestion/"&gt;http://inventory.overture.com/d/searchinventory/suggestion/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-7183724228748709805?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/7183724228748709805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=7183724228748709805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7183724228748709805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7183724228748709805'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/keyword-research-tools-for-seo.html' title='Keyword Research Tools for SEO'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3397991125240706590</id><published>2008-06-16T12:19:00.000-07:00</published><updated>2008-06-18T12:49:10.213-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='sitemaps'/><title type='text'>Tool for creating a sitemap for a website</title><content type='html'>As my website grows larger and acquires more pages I want to give Google all the help I can indexing my pages so I submit a sitemap using Google's webmaster tools.&lt;br /&gt;&lt;br /&gt;I've been looking for a good tool to create a sitemap for my website for a few months on and off.&lt;br /&gt;I found a few shareware programs but the majority of these would only scan the root directory of my site or cost more than I was prepared to spend for something I would only use 3 or 4 times a year.&lt;br /&gt;&lt;br /&gt;However, I've now found a site with a great, free &lt;a href="http://www.xml-sitemaps.com/"&gt;sitemap generator&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xml-sitemaps.com/"&gt;http://www.xml-sitemaps.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It scans subfolders and also works quicker than the shareware programs I've been using. It also exports sitemaps in a number of different formats including compressed and uncompressed sitemap format as well as ROR sitemap format.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3397991125240706590?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3397991125240706590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3397991125240706590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3397991125240706590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3397991125240706590'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/tool-for-creating-sitemap-for-website.html' title='Tool for creating a sitemap for a website'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5309706552837380056</id><published>2008-06-14T10:48:00.000-07:00</published><updated>2008-06-20T23:51:32.973-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software release management'/><title type='text'>SliQ Invoicing and Quoting 1.4 Released!</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_14DeN5hyQQ8/SFQF-urel_I/AAAAAAAAABQ/DUZwIlGD3UM/s1600-h/ebay.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5211797244014925810" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_14DeN5hyQQ8/SFQF-urel_I/AAAAAAAAABQ/DUZwIlGD3UM/s320/ebay.jpg" border="0" /&gt;&lt;/a&gt; SliQTools have released version 1.4 of their invoicing software SliQ Invoicing and Quoting.&lt;br /&gt;&lt;br /&gt;Version 1.4 is available as a free upgrade to any existing purchasers. To upgrade to 1.4, all existing owners have to do is &lt;a href="http://www.sliqtools.co.uk/download-invoice-trial.aspx"&gt;download a new trial&lt;/a&gt; copy from the SliQTools website and install 1.4 on their PC.&lt;br /&gt;&lt;br /&gt;SliQ Invoicing and Quoting can be configured for different currencies and tax rates.&lt;br /&gt;&lt;br /&gt;A &lt;a href="http://www.sliqtools.co.uk/download-invoice-trial.aspx" modo="false"&gt;fully functional 30 day trial&lt;/a&gt; of SliQ Invoicing and Quoting can be downloaded from the &lt;a href="http://www.sliqtools.co.uk/"&gt;SliQTools&lt;/a&gt; website.&lt;br /&gt;&lt;br /&gt;Version 1.4 of SliQ Invoicing and Quoting is still available at the same price of £24.99.&lt;br /&gt;&lt;br /&gt;A number of useful features have been added in version 1.4:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Multiple &lt;a title="Invoice Templates" href="http://www.sliqtools.co.uk/invoice-templates.aspx"&gt;invoice templates&lt;/a&gt; are now supported. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sliqtools.co.uk/invoice-templates.aspx"&gt;Service Invoices &lt;/a&gt;as well as Product Invoices are now supported. &lt;/li&gt;&lt;li&gt;Discounts (% and amount) can now be applied to invoice items. &lt;/li&gt;&lt;li&gt;Standard discounts can be stored. &lt;/li&gt;&lt;li&gt;Remittance slips can optionally be included on invoices and statements. &lt;/li&gt;&lt;li&gt;Payment details information can be stored. &lt;/li&gt;&lt;li&gt;Customer and product data can now be exported and imported allowing data to be shared with other copies of SliQ or external applications.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All the useful features of SliQ 1.3 are still present in the new software release. SliQ supports a range of sales reports and includes the ability to create esimates/ quotes, credit notes and statements or ageing reports. &lt;/p&gt;&lt;p&gt;All items can be emailed from SliQ as PDFs. New copies of invoices or quotes can be raised and quotes can be turned into invoices with a single button click.&lt;/p&gt;&lt;p&gt;To visit the &lt;a href="http://www.sliqtools.co.uk/"&gt;SliQTools&lt;/a&gt; site and find out more, go to &lt;a href="http://www.sliqtools.co.uk/" modo="false"&gt;http://www.sliqtools.co.uk/&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5309706552837380056?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5309706552837380056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5309706552837380056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5309706552837380056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5309706552837380056'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/sliq-invoicing-and-quoting-14-released.html' title='SliQ Invoicing and Quoting 1.4 Released!'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_14DeN5hyQQ8/SFQF-urel_I/AAAAAAAAABQ/DUZwIlGD3UM/s72-c/ebay.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-7944276136891914188</id><published>2008-06-13T04:14:00.000-07:00</published><updated>2008-06-13T04:15:08.748-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>What makes a good software tester?</title><content type='html'>Good software testers are a rare breed. There are also different sorts of testing and often a person can be good at one kind of testing but not at another. Here are some basic tips for choosing testers:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Don’t rely on a single person to do all the testing&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Relying on a single person is putting all your eggs into one basket. You’re just asking for trouble. It’s very easy to get bored while testing and one person will, perhaps without realising it, miss important tests or features.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Don’t rely on the product developers to do all the testing&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;The product developers are simply too close to the product to see the wood for the trees. They will know the product back to front and will use the product features in the way they expect the features will be used. The product developers may not test the product in ways it will end up getting used by real customers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Don’t rely on external developers to evaluate features&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Using external people is good. They won’t be so familiar with the product. Using other developers though isn’t ideal. They are so computer literate they will, probably subconsciously, work around difficulties or things which might not be obvious to less savvy users.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Use women as well as men&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Women often make very good testers. Women can be better than men at working in a detailed way. In my experience they are also less embarrassed in asking for help about something they don’t understand. This is a key skill for testers. The worst thing that can happen is a feature gets into the field, a problem occurs, and you find it was spotted in testing but not reported because the tester worked around the difficulty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-7944276136891914188?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/7944276136891914188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=7944276136891914188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7944276136891914188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7944276136891914188'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/what-makes-good-software-tester.html' title='What makes a good software tester?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-8524992762998972269</id><published>2008-06-13T03:48:00.000-07:00</published><updated>2008-06-13T03:54:46.105-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>What’s a Software Bug?</title><content type='html'>If you ask this question to a software developer, you might get the answer …&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-family:courier new;"&gt;"One man’s bug is another man’s feature"&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Not everyone’s a software developer though, some people actually pay money for software and are called “customers”. Customers take a different view. They might say:&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;"This bug makes me not want to buy your software"&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;… or, perhaps worse …&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-family:courier new;"&gt;"I wish I’d never bought this software"&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;p&gt;There is a class of problem which everyone will agree is a bug – software developers and customers. These problems usually involve software crashing or refusing to run. To summarise, there are two main types of software bug or problem:-&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Something doesn’t work the way the user expects (or wants).&lt;/li&gt;&lt;li&gt;Under certain conditions the software crashes and stops working. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;By performing thorough testing of software before releasing it to customers, the number both types of problem can be minimised. If you want to sell software, conducting a proper and thorough testing phase prior to every release is essential. &lt;/p&gt;&lt;p&gt;To reduce the likelihood of the different types of software issues, different types of testing need to be performed.&lt;/p&gt;&lt;p&gt;To eliminate type 1, detailed step-by-step testing of the software needs to be performed. For small software development products or teams, thorough black box testing should suffice. This means that all features of the software should be exercised with a range of possible data and inputs to see if any problems occur.&lt;/p&gt;&lt;p&gt;To eliminate type 2, beta testing must be performed. Beta testing involves asking people outside the development team (or even company) to evaluate the features to see how useful and usable they are. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-8524992762998972269?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/8524992762998972269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=8524992762998972269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8524992762998972269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8524992762998972269'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/whats-software-bug.html' title='What’s a Software Bug?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-6954686882901208510</id><published>2008-06-12T12:24:00.000-07:00</published><updated>2008-06-13T07:22:40.646-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software release management'/><category scheme='http://www.blogger.com/atom/ns#' term='software versioning'/><title type='text'>Software Bugs, Software Releases and Version Numbers</title><content type='html'>Occasionally the inevitable happens and I get a problem report on my software products. Usually this doesn't happen frequently, e.g. for the whole of March, April and May 2008 I haven't had a single problem report.&lt;br /&gt;&lt;br /&gt;When a problem is reported I have to weigh up how serious the issue is and how many customers are likely to be affected. In one sense all customers could be affected by a software bug, the question comes down to how many people are actually likely to run into the issue.&lt;br /&gt;&lt;br /&gt;One thing that helps is how long a software release has been in distribution before the problem is reported. If the release has been in the field for a few weeks - or hopefully months! - I can have more confidence there's no need for a knee jerk reaction. If this is the case I can avoid a global release to all registered customers.&lt;br /&gt;&lt;br /&gt;Whatever happens, if a customer has reported a problem I will either try to find a workaround that we are both happy with or provide them with a new software release. I do this whether or not the customer has paid for an unlock code or is still using a trial copy of SliQ Invoicing and Quoting.&lt;br /&gt;&lt;br /&gt;If I make a special release for a single customer I use an intermediate version number for my products. Normally I use 3 digits to number software versions. For example:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-family:courier new;"&gt;1.3.0&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-family:courier new;"&gt;1.3.1&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-family:courier new;"&gt;1.4.0&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;but if I do a release to a single customer I will use a 4th digit on the version number in the application's software version resource. For example:&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-family:courier new;"&gt;1.3.1.1&lt;/span&gt; &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;if a problem was found in version 1.3.1.&lt;br /&gt;&lt;br /&gt;This way, when I come to do a full public release of software, I can avoid documenting the intermediate versions in the Release History on the product website. I can just document the major, public releases: 1.3.0, 1.3.1, 1.4.0&lt;br /&gt;&lt;br /&gt;Of course, one question will always be: what's the difference between a bug and feature that doesn't work the way a customer expects? This is a topic for a different post however.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-6954686882901208510?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/6954686882901208510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=6954686882901208510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/6954686882901208510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/6954686882901208510'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/software-bugs-software-releases-and.html' title='Software Bugs, Software Releases and Version Numbers'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-4128202354317597435</id><published>2008-06-12T02:29:00.000-07:00</published><updated>2008-06-13T01:31:46.790-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='Pagerank'/><title type='text'>What is Google Pagerank?</title><content type='html'>Put simply, it's &lt;a href="http://www.google.co.uk/"&gt;Google&lt;/a&gt;'s measure of the importance of a web page or put another way, a measure of how likely you are to find a web page by randomly clicking on hyperlinks online. Google gives a web page a PageRank value between 0 and 10 with 0 meaning least important and 10 meaning more important.&lt;br /&gt;&lt;br /&gt;This is the Google definition of PageRank:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;PageRank relies on the uniquely democratic nature of the web by using its vast link structure as an indicator of an individual page's value. In essence, Google interprets a link from page A to page B as a vote, by page A, for page B. But, Google looks at more than the sheer volume of votes, or links a page receives; it also analyzes the page that casts the vote. Votes cast by pages that are themselves "important" weigh more heavily and help to make other pages "important".&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Basically having more hyperlinks makes a page more important in Google's eyes. Incoming links from important pages count for more than links from less important pages. In a simple sense, if two web pages contain the words "Red Bananas" and a user searches for Red Bananas on Google, the page with the higher rank will appear first in the search results.&lt;br /&gt;&lt;br /&gt;However, things are not quite this simple. If things were this simple, there would web pages stuffed with multiple links to other pages in an attempt to improve placings in search&lt;br /&gt;results on Google.&lt;br /&gt;&lt;br /&gt;Apart from Google itself, no-one knows how PageRank is calculated. Google now say that their ranking algorithms are more sophistacted than in years past and the content of pages is now more important than previously. However Google still assign and publish pageranks for websites 3 or 4 times a year so Pagerank must still have some relevance. &lt;/p&gt;&lt;p&gt;These factors are likely to affect the importance or weight passed by a hyperlink.&lt;br /&gt;Multiple links from one page are devalued, i.e. the second link probably counts for less than the first link.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Site-wide links are devalued, e.g. a link from every page in a 10 page website probably counts for less than links from 10 pageson separate websites.&lt;/li&gt;&lt;li&gt;Reciprocal links are devalued. Many people now consider these worthless. This gets around the mutual voting scenario.&lt;/li&gt;&lt;li&gt;A link from a page containing unrelated content counts for less, e.g. a link from a page talking about holidays to a page talking about nuclear physics, counts for less than a link from a page on another site talking about holidays. &lt;/li&gt;&lt;li&gt;A link needs to say why it links to another page to give more credit, i.e. the link text needs to be appropriate to the topic of the page being linked.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-4128202354317597435?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/4128202354317597435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=4128202354317597435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4128202354317597435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4128202354317597435'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/what-is-google-pagerank.html' title='What is Google Pagerank?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-4359966907096873327</id><published>2008-06-10T11:16:00.000-07:00</published><updated>2008-06-13T01:32:44.312-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Writing Copy'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Choosing Keywords for Web Pages</title><content type='html'>Consider these factors when choosing keywords:-&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The keywords should accurately describe the products or services you offer. &lt;/li&gt;&lt;li&gt;Are the keywords ones people actually search for? &lt;/li&gt;&lt;li&gt;The best keywords are ones people search for a lot. &lt;/li&gt;&lt;li&gt;Can you find competitive keywords, i.e. ones that aren't used too frequently on other sites. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Some of these factors conflict. &lt;/p&gt;&lt;p&gt;As an example, if you are a travel agent selling holidays you might choose think holiday is a good keyword. After all, you are in the business of selling holidays and lots of people will search online for holidays. However, there are so many web pages containing the word holiday that you will unlikely to appear high in any search results. So although "holiday" will be included in lots of search terms, it is not a competitive choice since it will be used in masses of websites.&lt;/p&gt;&lt;p&gt;Instead choose a few more specific terms. Such as:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;french holiday specialist&lt;/li&gt;&lt;li&gt;travel agent shrewsbury&lt;/li&gt;&lt;li&gt;discount package holidays &lt;/li&gt;&lt;li&gt;last minute package holdays &lt;/li&gt;&lt;li&gt;adventure holidays in spain &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Build up a list of keywords and phrases you think people will type into search engines then include these in the text of your web pages. The best way to include the words is in a way that seems natural to the human reader. &lt;/p&gt;&lt;p&gt;Having read this far you might think ...&lt;/p&gt;&lt;blockquote&gt;"What's the big deal? I'm a travel agent of course I'm going to include phrases like adventure holidays in France". I don't need to think too much about keywords, all I need to do is write about my products." &lt;/blockquote&gt;&lt;p&gt;... and you would be correct, except there are methods to &lt;a href="http://software-product-development.blogspot.com/2008/06/write-copy-on-web-pages-for-seo.html"&gt;highlight your keywords &lt;/a&gt;so that they are emphasised to search engines. This will potentially raise your pages up the search results. If a competitor website is optimised to reinforce a certain keyword and your site is not then the odds are you will appear lower in the search results.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-4359966907096873327?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/4359966907096873327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=4359966907096873327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4359966907096873327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/4359966907096873327'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/choosing-keywords-for-web-pages.html' title='Choosing Keywords for Web Pages'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-7765951939532307256</id><published>2008-06-09T14:30:00.000-07:00</published><updated>2008-06-18T12:49:25.593-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Favourite Tools for SEO</title><content type='html'>This post contains links to some of my favourite SEO tools.&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Keyword Density Checking&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;These tools check for the occurrence and density of keywords in websites.&lt;/p&gt;&lt;a href="http://www.googlerankings.com/ultimate_seo_tool.php"&gt;www.googlerankings.com/ultimate_seo_tool.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.seochat.com/seo-tools/keyword-density/"&gt;www.seochat.com/seo-tools/keyword-density/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.keyworddensity.com/"&gt;www.keyworddensity.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="currentpagerank"&gt;&lt;/a&gt;&lt;strong&gt;Measuring your PageRank&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Tools that can be used for measuring the current PageRank of a web page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.top25web.com/pagerank.php"&gt;http://www.top25web.com/pagerank.php&lt;/a&gt;&lt;br /&gt;&lt;a href="file:///C:/Documents%20and%20Settings/Compaq_Owner/My%20Documents/My%20Web%20Sites/dowebseo/toolbar.google.com"&gt;Google Toolbar&lt;/a&gt; - installs a toolbar into your browser and includes the option of displaying the PageRank of pages you visit.&lt;br /&gt;&lt;a href="http://www.smartpagerank.com/"&gt;http://www.smartpagerank.com/&lt;/a&gt;&lt;br /&gt;&lt;a name="futurepagerank"&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Predicting your future PageRank&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;These links provide tools that attempt to predict your PageRank. Note: The tools are for curiosity only and the predicted values are sometimes wide of the mark - they aren't really SEO aids.&lt;br /&gt;&lt;br /&gt;&lt;a title="Predict your future pagerank" href="http://www.rustybrick.com/pagerank-prediction.php"&gt;http://www.rustybrick.com/pagerank-prediction.php&lt;/a&gt;&lt;br /&gt;&lt;a name="seresultsmc"&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Google Results for Multiple Countries&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This tool allows you to see how a website performs in multiple countries. There is no single "google" and the results from Google data centres for different countries can be very different.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.link.ezer.com/tools/google_serps_rank_checker.asp"&gt;www.link.ezer.com/tools/google_serps_rank_checker.asp&lt;/a&gt;&lt;br /&gt;&lt;a name="whois"&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Find out who owns a competitor domain&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;This tool allows you to find out who own a domain. The report also provides an SEO rating.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://whois.domaintools.com/"&gt;http://whois.domaintools.com/&lt;/a&gt;&lt;br /&gt;&lt;a name="bloghunt"&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Find Blogs on a particular topic&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This tool allows you to find blogs on particular topics. Posting comments on blogs can give you free backlinks.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.commenthunt.com/"&gt;http://www.commenthunt.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-7765951939532307256?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/7765951939532307256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=7765951939532307256' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7765951939532307256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7765951939532307256'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/favourite-tools-for-seo.html' title='Favourite Tools for SEO'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3956399151497887927</id><published>2008-06-09T07:31:00.000-07:00</published><updated>2008-06-16T12:19:13.791-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Design'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>Tips on Writing Web Page Copy for SEO</title><content type='html'>&lt;p&gt;&lt;span style="font-size:85%;"&gt;The copy or text you write in a web page is vitally important for good search engine results. You need to include a good range of keywords. The keywords will be the ones you have calculated people will use when searching for the services you offer on Google, MSN or Yahoo. There are a number of strategies you can use to choose keywords and to write your web pages to emphasis or highlight the keywords to search engines. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;There is no penalty for having too much text on a page and if you have written less than 300 words it is unlikely you will have included a good range of keywords for SEO. When writing the text on the page, always write for a human reader but also bear in mind SEO. Include more text and also include long tail keywords. Long tails are keywords that are searched for less often but if you include more long tails you are likely to get just as many, if not more, hits from the long-tails as your main keywords.&lt;br /&gt;&lt;br /&gt;A good way to look for keywords is to analyse competitor sites. A set of keyword analysis tools can be found at www.googlerankings.com. Use the tools to find what 1, 2 and 3 word phrases appear on your competitor's web pages. Include the same phrases, where appropriate, on your own pages.&lt;br /&gt;&lt;br /&gt;Here are my tips for writing text on a web page:&lt;br /&gt;&lt;br /&gt;1. Include alternative ways of saying the same thing, e.g. an invoice software/ invoicing software/ software to create invoices.&lt;br /&gt;&lt;br /&gt;2. Include the words in different orders, e.g. a man’s hat/ a hat for a man.&lt;br /&gt;&lt;br /&gt;3. One method of adding keywords is to include a column listing benefits or features.&lt;br /&gt;&lt;br /&gt;Good ways to ways of including alternative ways of saying the same thing are:-&lt;br /&gt;&lt;br /&gt;a. alt text on images&lt;br /&gt;&lt;br /&gt;b. title text on a hyperlink.&lt;br /&gt;&lt;br /&gt;4. title tag&lt;br /&gt;&lt;br /&gt;Use the title tag to hold as many as 3 keyword/ phrases separated by  or -. For example:&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-size:85%;"&gt;invoice software  billing software&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;The page title is probably the most important on-page SEO elements and ensure your most important keywords are at the beginning of the title.&lt;br /&gt;&lt;br /&gt;5. h1 tag&lt;br /&gt;&lt;br /&gt;This the most important header tag. Place a h1 tag near the top of each of your pages and make sure the keywords agree with the page title, e.g.&lt;br /&gt;&lt;br /&gt;title = Invoice Software Billing Software&lt;br /&gt;h1 = Invoice Software&lt;br /&gt;&lt;br /&gt;6. h2, 3, 4, 5, 6 tags&lt;br /&gt;&lt;br /&gt;Structure your pages by separating the text into topics. Use a h2 title for each topic. h3, 4, 5 and h6 can also be used to emphasise keywords.&lt;br /&gt;&lt;br /&gt;7. Place important text near the top of the page, e.g. the first paragraph after the h1 tag should contain your main keywords.&lt;br /&gt;&lt;br /&gt;8. Use bold or strong to emphasise keywords - Google picks up this as well as a human reader.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3956399151497887927?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3956399151497887927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3956399151497887927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3956399151497887927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3956399151497887927'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/write-copy-on-web-pages-for-seo.html' title='Tips on Writing Web Page Copy for SEO'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-323640823367031847</id><published>2008-06-09T03:17:00.003-07:00</published><updated>2009-01-07T13:36:26.732-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shareware'/><category scheme='http://www.blogger.com/atom/ns#' term='small business'/><category scheme='http://www.blogger.com/atom/ns#' term='sales'/><title type='text'>Strategy for Selling Software</title><content type='html'>&lt;span style="font-size:85%;"&gt;If you are setting up a software development company and want to sell your own products, one route for selling software is to package your products as shareware. Shareware is a form of software distribution whereby customers can use your software for free for a trial period - it's a kind of try-before-you-buy means of selling software. Historically, shareware has quite often been associated with low-quality or simple software but this picture is changing.&lt;br /&gt;&lt;br /&gt;If you want to sell software as shareware, make sure your software products have a sizeable market. It is essential to ensure that your software product will has a value in your chosen market - either because the software has unique features or is better than competitor offerings. Don't rely on a selling strategy of simply being cheaper than your competitors. These days, a lot of people realise that if they want to buy software they will possibly use for a number of years then cost isn’t a key factor when deciding to make a purchase.&lt;br /&gt;&lt;br /&gt;Your sales and product development strategies must be based on writing a non-trivial, valuable program. There is a lot of cheap software - even free software - available. There are lots of big companies with large development resources allowing people to use software either for free or for a trial period. The distinction between fully-fledged commerical software and shareware is becoming increasingly blurred. Make sure your software has features that people are willing to pay for.&lt;br /&gt;&lt;br /&gt;When selling shareware try to fill a niche and make a quality offering. One example of a niche is an “easy-to-use” version of a larger, more complicated software package. Note the key phrase here is “easy-to-use”, not trivial or cheap. People will pay to have complication taken away from them if the software offering still does an effective job. There is a risk here that some people will provide feedback indicating that your product is too simple and too inflexible. You must be careful in deciding which new features to add - are you willing to sacrifice simplicity and ease of use?&lt;br /&gt;&lt;br /&gt;Many people will have made purchases they later regret simply because the product was cheap, e.g. a cheap power tool. Often, sooner rather than later you will have regretted the purchase, either because the product turns out not to be up to the job or breaks easily. People soon learn to spend a bit more money and get a product they know they can live with and continue to use for more than a couple of days. Selling software as shareware is a good way of reducing the risk of this happening with your software products - people can try out and live with your products for a period before deciding to purchase.&lt;br /&gt;&lt;br /&gt;Small software companies can add value by offering &lt;a href="http://software-product-development.blogspot.com/2008/11/remote-support-access.html"&gt;good pre and post-sales support&lt;/a&gt;. A small software development company can often offer better support than a larger software company. Large companies can be unresponsive to support calls or can’t hold a meaningful discussion with a potential customer. With small companies there are few barriers between the company owner and the customer. Both sides can benefit from this - the customer can make his case and get a decision quickly and the company owner has a chance to build a relationship with the customer. Building a relationship with a customer may lead to future sales, for example if you release a major upgrade of your software.&lt;br /&gt;&lt;br /&gt;When setting a price for your software product, don’t charge so little that you are literally working for peanuts. If a business’s products are too cheap, some customers may believe that the since the company does not value their own products why should the customer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Read &lt;a href="http://software-product-development.blogspot.com/2008/06/things-to-consider-when-selling.html"&gt;Selling Online&lt;/a&gt; for tips on software promotion via a website.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-323640823367031847?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/323640823367031847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=323640823367031847' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/323640823367031847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/323640823367031847'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/strategy-for-selling-software_09.html' title='Strategy for Selling Software'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-6858260110398637814</id><published>2008-06-09T02:55:00.000-07:00</published><updated>2009-01-07T13:34:46.617-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Writing Copy'/><category scheme='http://www.blogger.com/atom/ns#' term='SERPs'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='sales'/><title type='text'>6 Things to Consider when Selling Software Products online</title><content type='html'>&lt;span style="font-size:85%;"&gt;If you want to sell a software product online, the obvious route is to sell via your own website. If you want to sell software this way, you need to optimise your website to make it perform well in searches.&lt;br /&gt;&lt;br /&gt;There is no easy solution for optimising a website to get good rankings in search engine results. No quick fix or magic trick is possible that will guarantee frequent visitors to a site and convert large percentages of your visitors into paying customers. The task of optimising a website for rankings, visitors and sales is an ongoing story of continual refinement and updates.&lt;br /&gt;&lt;br /&gt;To sell a product online, at least 6 factors need to be considered:-&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Do you have a product that has a reasonable market?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Determine how people search for your product or type of product. Do they use Yahoo or Google, what keywords do they look for?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Make sure the copy on your website emphasis the most frequently used search terms - plus long tail terms. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Make sure the copy on your website emphasis the most frequently used search terms - plus long tail terms. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Write the copy for your website to convince customers to buy your product. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Images are also important - or at least the names of your images are.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Point 6 can be very important. Google searches images and uses the image filename. Lots of people look for example images of invoices and I get a few hundred hits a month on my website for images of invoices and invoice templates. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Long-tail search terms are very important. For example, on my main website the search terms are invoicing software, invoice software and billing software. I’ve done research and found that these are the main search terms in the US and UK for my type of product. However, these search terms account for only 15% of my visitors. The rest of my visitors come from long tail terms that may only be mentioned once in the whole website. I don’t always deliberately put long tails into the text, I just write text, e.g. in the Support page or the Release History page that simply gives a good variety of words and phrases. I also examine competitor sites to see if they have combinations of phrases that I haven't included. I don't do any keyword stuffing, I just modify an existing phrase to include the long tails.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Due to the way search engines work, the people who find your website will already be interested in your product, or at least in the problem your product helps with. My feeling is that your website should then describe the benefits your specific product offers, i.e. why using your product will make handling security easier, quicker and cheaper for users. Be as specific as possible about the benefits so the visitor can easily understand how they can take advantage of your product.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;The other thing to remember is that Google Pagerank isn’t everything. Pagerank doesn’t guarantee a page gets visitors. Monitor your web stats and see if any changes produce a rise in the number of visitors. Make refinements and see what effect they have.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Also consider whether you should rely entirely on search engines to get customers. Are there alternative methods of advertising your software? Can you get resellers for your software in other countries. For my invoicing software, virtual assistants make good resellers as they do invoicing for clients and I add features to make the software more suitable for their use.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Read &lt;a href="http://software-product-development.blogspot.com/2008/06/strategy-for-selling-software_09.html"&gt;Sales Strategy&lt;/a&gt; for more information.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-6858260110398637814?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/6858260110398637814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=6858260110398637814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/6858260110398637814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/6858260110398637814'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/things-to-consider-when-selling.html' title='6 Things to Consider when Selling Software Products online'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-6693620585311605393</id><published>2008-06-08T14:17:00.000-07:00</published><updated>2008-06-08T14:21:05.671-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Invoicing and Quoting'/><title type='text'>SliQ 1.4 Beta Test Rework Nearing the End</title><content type='html'>After almost a month in beta test/ rework, SliQ 1.4 is near complete and should be ready for release this week.&lt;br /&gt;&lt;br /&gt;The beta testers provided excellent feedback about the usability of some of the features. This shows the benefits of good, independent, objective testing. It took some motivation to reopen the package and rework some of the features - especially the help file - but I knew the tester was making very valid points.&lt;br /&gt;&lt;br /&gt;The new release is ready for final test again. 2 days should do it and then 1.4 will be released in stages over the next week or two.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-6693620585311605393?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/6693620585311605393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=6693620585311605393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/6693620585311605393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/6693620585311605393'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/06/sliq-14-beta-test-rework-nearing-end.html' title='SliQ 1.4 Beta Test Rework Nearing the End'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-1177166236571978727</id><published>2008-05-06T13:57:00.000-07:00</published><updated>2009-01-07T02:48:44.941-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Adwords'/><title type='text'>Make the most of Google Adwords using these 10 Tips</title><content type='html'>&lt;span style="font-size:85%;"&gt;When I first created my website up and launched my brand new software package I had one main strategy for selling - get people to visit my site and download the trial copy of my software. Hopefully the software would then sell itself.&lt;br /&gt;&lt;br /&gt;From talking with other people who owned websites and who had tried to do e-commerce, I knew it would take lots of work, possibly over many months, to rank well in search engine results. I was told to think about using Pay Per Click (PPC) to get going and that GoogleAds was the only service worth using. I signed up at &lt;/span&gt;&lt;a href="http://www.google.co.uk/adwords"&gt;&lt;span style="font-size:85%;"&gt;www.google.co.uk/adwords&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;, wrote my first ad, started getting visitors within an hour and made sales on my first day.&lt;br /&gt;&lt;br /&gt;It all seemed so easy - let GoogleAds do the work and sit back waiting for Paypal to tell me people had made a purchase. As the days passed though, the number of visitors clicking through to my site dropped and sales were harder to come by. As I should have expected, nothing in life is ever too easy and I should have done research upfront to optimise my Adwords campaign.&lt;br /&gt;&lt;br /&gt;As the days rolled on, I had to up the amounts I was prepared to pay for each click in order to keep getting visitors. I was still making a profit but not much. After a couple of weeks of further research I decided I needed to rethink my whole campaign. I found these tips to be the most useful in improving my conversion rate of clicks to sales:&lt;br /&gt;&lt;br /&gt;1. When choosing the keywords for which your ad is to appear, make sure that they are absolutely relevant to your site. I got good click through rates (CTR) for “&lt;/span&gt;&lt;a href="http://www.sliqtools.co.uk/"&gt;&lt;span style="font-size:85%;"&gt;invoice templates&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;” but at the time my &lt;/span&gt;&lt;a href="http://www.sliqtools.co.uk/"&gt;&lt;span style="font-size:85%;"&gt;invoicing software&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; package didn’t include multiple templates.&lt;br /&gt;&lt;br /&gt;2. Run multiple ads simultaneously. Try different ads to see which work best. Don’t use the same keywords in multiple ads – Google will only show 1 or the other ad and not both.&lt;br /&gt;&lt;br /&gt;3. Avoid the word free. I got good CTR for phrases including the word free – like “free invoice software”. In hindsight this was probably a bad choice since those clicks probably weren’t from people wanting to make a purchase of any kind in the first place.&lt;br /&gt;&lt;br /&gt;4. You can’t include many words in a single ad. Try selling different benefits in different ads to see which attracts most customers.&lt;br /&gt;&lt;br /&gt;5. Write the ads in an attention-grabbing way, don’t just list features. For example – use &lt;strong&gt;Special Offer&lt;/strong&gt;, &lt;strong&gt;Time Limited Offer&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;6. Sell benefits as well as features – &lt;strong&gt;Save Time&lt;/strong&gt;, &lt;strong&gt;No Special Knowledge&lt;/strong&gt;, &lt;strong&gt;Easy to Use&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;7. Try ads with and without the price – which works best?&lt;br /&gt;&lt;br /&gt;8. Use Google’s free Adwords optimisation service. Look at their suggestions and see if they’ve spotted something your own ads and keywords haven’t covered.&lt;br /&gt;&lt;br /&gt;9. Above all, monitor the performance of ads, keep tweaking and try different ads to see which works best. Give an ad a few days to see how it performs before changing it.&lt;br /&gt;&lt;br /&gt;10. Use the knowledge you gain while monitoring your ads to optimise the content of the pages on your site and improve your performance in organic search results. Which keywords work best? Do you have pages that clearly focus on those keywords? Can you build backlinks that reinforce the keywords?&lt;br /&gt;&lt;br /&gt;When used properly, Google Adwords is a very useful selling tool. Don’t expect to set up a single ad and keep making money however. When you use Google Adwords you are competing in a bidding war. Your competitors will be optimising their campaigns even if you aren’t. Ongoing monitoring and updating of ads is essential to continued success.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-1177166236571978727?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/1177166236571978727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=1177166236571978727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/1177166236571978727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/1177166236571978727'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/10-tips-for-using-google-adwords.html' title='Make the most of Google Adwords using these 10 Tips'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-8273517428066842447</id><published>2008-05-05T02:16:00.000-07:00</published><updated>2008-05-05T02:17:34.476-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='domain names'/><title type='text'>Did I choose the right domain name?</title><content type='html'>A fellow software author tells me we’ve chosen the wrong domain names for the sites selling our products. He says we should have chosen domain names with the product (not company) name in them. I’ve heard this advice before and did consider it when choosing a domain name.&lt;br /&gt;&lt;br /&gt;From my point of view, the problem with choosing a product-specific domain name is that it could reduce my options in the future. At the moment I sell one software product but within the next 6 months will be launching 2 more. If I were to have a separate domain selling each product I don’t think I’d have the time or energy to do the link-building. It’s pretty time-consuming doing link-building for one site less alone 2 or 3. On the other hand if I’d chosen a product-specific domain name to begin with, selling different products on the one, original site might not look right.&lt;br /&gt;&lt;br /&gt;I used to think the domain name was very important but if you read around, it turns out that URLs are considered more important (and the domain is a specific case of a URL). With a good &lt;a href="http://www.jimboykin.com/internal-linking"&gt;linking strategy&lt;/a&gt; within your site, inner pages can benefit from links to the homepage, e.g. several of my inner pages have a PR only 1 less than the homepage even though they have no links from external sites. These inner pages are often landing pages in searches. So as I sell different products and services I can create pages within my site, like:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sliqtools.co.uk/invoice-software.aspx"&gt;http://www.sliqtools.co.uk/invoice-software.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.sliqtools.co.uk/invoice-templates.aspx"&gt;http://www.sliqtools.co.uk/invoice-templates.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and so on.&lt;br /&gt;&lt;br /&gt;All in all, I’m pretty happing with my choice of domain name and will continue to build links to one site and, for the time being, mostly to one page – my homepage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-8273517428066842447?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/8273517428066842447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=8273517428066842447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8273517428066842447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8273517428066842447'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/did-i-choose-right-domain-name.html' title='Did I choose the right domain name?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-7112833185538233024</id><published>2008-05-05T01:28:00.000-07:00</published><updated>2008-05-05T01:38:11.266-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SERPs'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><category scheme='http://www.blogger.com/atom/ns#' term='duplicate sites'/><title type='text'>SERPS outside the UK</title><content type='html'>While my site does well in SERPs in the UK, it doesn’t do well in other countries, e.g the US.&lt;br /&gt;&lt;br /&gt;For some competitive search terms I’m on page 1 on &lt;a href="http://www.google.co.uk/"&gt;http://www.google.co.uk/&lt;/a&gt; but for the same terms in the US I’m below #500. I can also see that my competitor’s .co.uk sites are in the same position. In fact one site, which always ranks #1 for my main search terms comes in a few places lower than me in the US.&lt;br /&gt;&lt;br /&gt;So the question is, what can I do to improve my search results? From the research I’ve done so far on the internet and by asking around, it’s been recommended I do 2 things:&lt;br /&gt;&lt;br /&gt;1. Host my sites on a US-based server with a .com domain name.&lt;br /&gt;2. Build US-based backlinks to my site.&lt;br /&gt;&lt;br /&gt;I’m not sure I understand the first point. If I post a duplicate of my site on a US-based server won’t this be seen as duplicate content? Doesn’t Google penalise for duplicate content?&lt;br /&gt;&lt;br /&gt;On the second point, what’s a US-based backlink? Does this mean I need backlinks from .com sites hosted on US-based servers. I can be polite when asking for a backlink but this seems like a tall order.&lt;br /&gt;&lt;br /&gt;Need to think this one through ….&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-7112833185538233024?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/7112833185538233024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=7112833185538233024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7112833185538233024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7112833185538233024'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/serps-outside-uk.html' title='SERPS outside the UK'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-875033697884363912</id><published>2008-05-04T13:39:00.000-07:00</published><updated>2008-11-19T14:54:35.534-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Design'/><category scheme='http://www.blogger.com/atom/ns#' term='SEO'/><title type='text'>How does Web Design differ from SEO?</title><content type='html'>Modern &lt;a href="http://www.jmd.eu.com/"&gt;web design &lt;/a&gt;tools, like Microsoft Expression Web or Dreamweaver, make the process of designing a website relatively easy. Using a template, a simple, presentable website can easily be written and posted online. However, getting a website found by people searching online involves more than just making the website look nice. &lt;a href="http://www.foursquareinnovations.co.uk/"&gt;Search Engine Optimisation&lt;/a&gt;, or SEO for short, is the activity of making a website rank well in searches on engines like Google and Yahoo.&lt;br /&gt;&lt;br /&gt;In some ways making a website look good is of secondary importance: everyone's idea of what looks good is different and nowadays people are used to a reading a range of websites with varying degrees of artistic accomplishment or &lt;a href="http://www.jmd.eu.com/"&gt;graphical design &lt;/a&gt;standard. What matters most is getting found in the first place and then having content that holds the visitor's interest.&lt;br /&gt;&lt;br /&gt;A good web designer will perform both activities – making a good-looking site and making sure the site is well-optimised.&lt;br /&gt;&lt;br /&gt;Most website designers will show you their portfolio of websites when you ask them to quote for your website. Good website designers should offer an SEO service too. Ask for examples of how well their client’s sites perform in searches.&lt;br /&gt;&lt;br /&gt;If a designer doesn’t offer an &lt;a href="http://www.foursquareinnovations.co.uk/"&gt;SEO&lt;/a&gt; service, think twice about using their services – SEO isn’t something that can easily be performed after a website has been written and the pages are online. Ideally, a website needs to be constructed from the beginning with SEO in mind. The choice of URLs, domain names and linking strategy between pages all affect the site’s optimisation and should be planned before the website is written.&lt;br /&gt;&lt;br /&gt;The amount of optimisation that can be performed depends on how much time and effort is put in. On-page optimisation (getting the page’s text and internal links to other pages on the same site) can be performed relatively quickly, but off-site optimisation will be an on ongoing task. Off-site optimisation mainly involves getting links from other sites. This can be a very time-consuming activity.&lt;br /&gt;&lt;br /&gt;If good ranking in SERPs (search engine result pages) is essential to the success of your site, and you can afford to do so, hire an &lt;a href="http://www.foursquareinnovations.co.uk/"&gt;SEO expert&lt;/a&gt;. If you hire someone to do SEO work make sure they explain their techniques to you – at some point you may want to perform your own SEO. In particular, make sure your hired SEO only uses white-hat SEO techniques and will not use so-called black-hat SEO techniques that could result in Google giving your website a penalty or even banning your site in the future.&lt;br /&gt;&lt;br /&gt;If you are looking for expert SEO advice and information, I would recommend the services of &lt;a href="http://www.foursquareinnovations.co.uk/"&gt;Four Square Innovations&lt;/a&gt;. They helped me with my website and set me on the road to ranking on page 1 of &lt;a href="http://www.google.co.uk/"&gt;Google&lt;/a&gt; for my major search terms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-875033697884363912?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/875033697884363912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=875033697884363912' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/875033697884363912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/875033697884363912'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/how-does-web-design-differ-from-seo.html' title='How does Web Design differ from SEO?'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5678690577657964339</id><published>2008-05-04T10:27:00.000-07:00</published><updated>2008-05-05T01:37:50.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shareware'/><title type='text'>SoftTester: Top UK Freeware &amp; Shareware Site</title><content type='html'>Distributing shareware is as important as writing the software in the first place – if people can’t find your software titles they can’t buy them. If your website is new and doesn’t perform well in searches on Google, the easiest way to distribute your software online is via one of the numerous shareware sites.&lt;br /&gt;&lt;br /&gt;Shareware sites will allow you to advertise your software for free. For each title, you will be able to post a short description and the shareware site will provide a link to your installable package.&lt;br /&gt;&lt;br /&gt;The majority of shareware sites are based in the US and are used by US customers. If your software is targeted solely for the UK, you may find that you are wasting download bandwidth from your site – since people in the US will download your package but will soon find that it isn’t appropriate for them. This happened to me with one of my software titles – I had to upgrade my hosting package to cater for the extra downloads.&lt;br /&gt;&lt;br /&gt;One of the best &lt;a href="http://www.softtester.com/"&gt;freeware&lt;/a&gt;/ &lt;a href="http://www.softtester.com/"&gt;shareware&lt;/a&gt; sites in the UK is &lt;a href="http://www.softtester.com/"&gt;SoftTester&lt;/a&gt;. SoftTester has been established for a number of years and receives up to several thousand visitors a day.&lt;br /&gt;&lt;br /&gt;SoftTester goes a couple of steps beyond the usual shareware site in that it tries to build communities amongst software developers, encouraging reviewing and testing of each others software.&lt;br /&gt;&lt;br /&gt;SoftTester accepts the submissions using the standard shareware PAD file and from personal experience I can say that the site owner is very friendly and helpful to new authors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5678690577657964339?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5678690577657964339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5678690577657964339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5678690577657964339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5678690577657964339'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/softtester-top-uk-freeware-shareware.html' title='SoftTester: Top UK Freeware &amp; Shareware Site'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5151642205780768670</id><published>2008-05-04T02:13:00.000-07:00</published><updated>2008-05-05T01:36:56.121-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SliQ Invoicing and Quoting'/><title type='text'>SliQ 1.4 Screenshots</title><content type='html'>These are screenshots of the software package being tested today. SliQ 1.4 is a big update on previous versions. At first glance not much looks different, but 1.4 supports service invoices, discounts on invoices and quotes, 9 different templates in a range of colours, enhanced payment tracking, configurable currencies and taxes plus more.&lt;br /&gt;&lt;br /&gt;This is the main Invoices &amp;amp; Payments screen from SliQ Invoicing and Quoting 1.4. The screen has been modified to incorporate the extra payments info.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_14DeN5hyQQ8/SB1_dmW7QFI/AAAAAAAAAAM/FF_CTK8P40Y/s1600-h/frontscreen.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196449691545059410" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_14DeN5hyQQ8/SB1_dmW7QFI/AAAAAAAAAAM/FF_CTK8P40Y/s320/frontscreen.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The template setup tab. On this tab you can choose different templates for your invoices, quotes, credit notes and so on. 9 templates are supported with a range of different colour schemes. 1.4 also allows custom templates to be created for different users.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_14DeN5hyQQ8/SB2ADWW7QHI/AAAAAAAAAAc/qMmTDuDFNX0/s1600-h/templateselector.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196450340085121138" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_14DeN5hyQQ8/SB2ADWW7QHI/AAAAAAAAAAc/qMmTDuDFNX0/s320/templateselector.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This tab allows you to enter your business details, select or specify a currency and enter the tax name and standard information like payment options.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_14DeN5hyQQ8/SB2AaGW7QII/AAAAAAAAAAk/CQW47YgmAPc/s1600-h/businessdetails.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196450730927145090" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_14DeN5hyQQ8/SB2AaGW7QII/AAAAAAAAAAk/CQW47YgmAPc/s320/businessdetails.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5151642205780768670?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5151642205780768670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5151642205780768670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5151642205780768670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5151642205780768670'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/sliq-14-screenshots.html' title='SliQ 1.4 Screenshots'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_14DeN5hyQQ8/SB1_dmW7QFI/AAAAAAAAAAM/FF_CTK8P40Y/s72-c/frontscreen.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-3353610340976219606</id><published>2008-05-04T01:53:00.001-07:00</published><updated>2008-05-05T01:36:15.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='product review'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Testing going well</title><content type='html'>Testing went well yesterday. Found few problems compared to the previous day.&lt;br /&gt;&lt;br /&gt;All in all the new release is looking good and stable. Decided to make some last-minute cosmetic changes. Now all I need to do is update the help file before letting the beta testers loose.&lt;br /&gt;&lt;br /&gt;I had a couple of potential customers asking about features. One needs a different invoice format. He loves the software but needs a different invoice template. It's reassuring that he liked the software enough to ask for an update rather than move on to try out someone else's package. Luckily the next version will include multiple invoice templates so I can give the customer what he wants. I emailed him PDFs from SliQ 1.4 and he OKed one of them as being suitable. Should get a sale with any luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-3353610340976219606?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/3353610340976219606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=3353610340976219606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3353610340976219606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/3353610340976219606'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/testing-going-well.html' title='Testing going well'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5437291378972636496</id><published>2008-05-03T00:58:00.000-07:00</published><updated>2008-05-05T01:35:45.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='product review'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Testing is hard work</title><content type='html'>Today I'm testing a major new release of software. The test/ review phase has been ongoing for about 3 weeks. We've been doing rounds of test interspersed with rounds of independent review by Sue the director.&lt;br /&gt;&lt;br /&gt;I don't find testing very interesting. These days I find it hard to concentrate for more than 20 minutes and the temptation to tweak and improve is fairly irresistible.&lt;br /&gt;&lt;br /&gt;If I'm lucky I'll get about 6 clear hours today to concentrate on testing. If we can clear the testing soon we should be able to release for beta test within the next fortnight.&lt;br /&gt;&lt;br /&gt;My biggest distraction is the internet. I'd get along better if BT cut me off.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5437291378972636496?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5437291378972636496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5437291378972636496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5437291378972636496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5437291378972636496'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/testing-is-hard-work.html' title='Testing is hard work'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-8592829342994106981</id><published>2008-05-02T13:36:00.000-07:00</published><updated>2008-05-02T13:38:34.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='business startup'/><category scheme='http://www.blogger.com/atom/ns#' term='small business'/><title type='text'>5 Things to Consider Before Starting Your Own Business</title><content type='html'>Have you ever felt like starting your own business? Do you want to be your own boss? Want to get away from the day-to-day monotony of your current job and be in control of your own life? Well, if you do, there is only person who can make the difference between your new business being successful and being a disaster – you!&lt;br /&gt;&lt;br /&gt;Before you begin your new life running a business, consider the following questions. If you can answer the questions honestly, you should be in a good position to start up a business.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;&lt;strong&gt;Are you starting a new business or running away from something?&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Don’t expect running a business to solve too many issues for you. Starting your own business may not turn out to be a route to a magically fulfilling life.&lt;br /&gt;For example, did you decide to set up a business while on holiday? Many people think about changing their lives while on holiday, especially when faced with returning home and getting back into their normal work routine. Be sure that you are considering starting a business for the right reasons. Television shows many programmes about people who sold up and moved to a new life running their own business. To me, unless these people have already retired from work, they often seem to regret the move.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Be honest about the amount of effort involved&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;If you work in a company and things go badly or run late, you can always fall back on your colleagues or your boss to help. When you run your own business you will have to rely on yourself. This may mean working late at night and at weekends. If you work from home you may find it difficult to switch out of work mode if your office is just across the hallway. In the early days, while getting the business up and running, you may be working long hours and seeing little profit. Are you the kind of person who has the discipline and self-motivation to carry on?&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;&lt;strong&gt;Will you make a living from your business?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Most people will need to make a living from their business. Have you written a business plan and worked out exactly how much profit your chosen business will realistically make? Don’t start your assessment by thinking how much money you need to earn each month to pay the bills. If you do this you may end up “adjusting” profit figures to meet your needs.&lt;br /&gt;&lt;br /&gt;Be honest about the likely profits. Do research. Get someone independent, in a similar business if possible, to talk through the likely costs and income. Work out your likely profit or losses in the months after you start your business. How long will it take you to make a living? How will you afford to live before the business is making a living wage?&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;&lt;strong&gt;Will you over commit yourself or your family?&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;When you start your own business it is likely you will end up working more hours than you did working for someone else. At the end of the day, the only person you can rely on to get the job done is you.&lt;br /&gt;&lt;br /&gt;Consider the effect this will have on your partner or children. If you have very young children, will they understand why you can’t spend as much time with them? Will your partner understand?&lt;br /&gt;&lt;br /&gt;Will you expect your partner, husband or wife, to help out when things get tough? Is this fair? Will they end up feeling pressured even when they have their own work commitments? Be honest with each other and discuss the possibilities before starting your business.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;How many roles will you play?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;If you work for a company, it’s likely – even though you may not think so – that you do only one job. When you work for yourself you will probably need to do many jobs. If you are setting up a one man business think: Who will do the marketing and advertising? Who will fulfil customer orders, e.g. by packing and posting goods? Who will deal with customer queries and complaints? All these roles require different skills. If you don’t have any experience in these areas, get training or advice and be prepared to learn quickly on the job.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;&lt;strong&gt;Conclusion&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;I hope you find this list useful. The list isn’t meant to put you off starting your own business. Rather it is meant to help you make sure you are being honest with yourself about your expectations and the possible pitfalls in working for yourself. If you plan up front, running your own business can be a rewarding and satisfactory venture.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-8592829342994106981?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/8592829342994106981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=8592829342994106981' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8592829342994106981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/8592829342994106981'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/5-things-to-consider-before-starting.html' title='5 Things to Consider Before Starting Your Own Business'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-7409407626305561958</id><published>2008-05-02T08:38:00.000-07:00</published><updated>2008-05-05T01:37:22.201-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='product management'/><category scheme='http://www.blogger.com/atom/ns#' term='customer relationship management'/><title type='text'>Cherish Demanding Customers</title><content type='html'>For a small business developing and selling software products, successful management of the product lifecycle is key to future growth and profits. Working out which are the most desirable features to add to your products presents a number of challenges and opportunities.&lt;br /&gt;&lt;br /&gt;If you are a small software business it is unlikely you will have a large budget to spend employing market research consultants. So how do you find new features for your products and, just as importantly, work out which features to add first?&lt;br /&gt;&lt;br /&gt;The simple answer is that your greatest resource in product management is your existing customers. Listen to your customer feedback and record their comments. By evaluating the feedback from your customers you will be able to:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Develop new features for your products&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Think up possibilities for new products&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Potentially charge more for updated, improved versions of existing products. &lt;/li&gt;&lt;/ul&gt;Customers fall broadly into two categories:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Customers who buy your products and you never or rarely hear from again.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Customers who contact you and tell you either what they’d like to see added to the product or what they see as the weaknesses. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This second type of customer can appear demanding – they may appear to expect you to make the changes they want as soon as possible. In some cases they may make you lose confidence in your products. However, if their feedback is handled correctly, their input can help drive your products forward. Here are a number of tips for handling customer feedback. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Record the comments&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Whenever a customer contacts you, make a record of the contact and any comments and feedback you were given. Keep a record of:- &lt;/p&gt;&lt;ul&gt;&lt;li&gt;The customer’s contact details &lt;/li&gt;&lt;li&gt;The date of contact &lt;/li&gt;&lt;li&gt;The comments as the user said them – not your interpretation of the comments. Resist the temptation to be dismissive of the comments until you’ve had time to think about them. &lt;/li&gt;&lt;li&gt;The specific product version the customer was commenting on. &lt;/li&gt;&lt;li&gt;Any response you gave to the customer, particularly if you promised to deliver something to them. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Explore the Root Causes of the comments &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;When a customer contacts you their thought process will often have gone past their original problem and have arrived at what they see as a solution. The problem they talk to you about will then be that there solution isn’t present – “the problem is that you need to add feature X”. &lt;/p&gt;&lt;p&gt;Talk with the customer about what made them think there was a problem in the first place. It may turn out that what they need is already provided by the product. Discuss with the customer whether the existing feature you see as a solution works for them. Even if there is an existing feature that provides what they need, think about why the user didn’t find it themselves – can you enhance usability? &lt;/p&gt;&lt;p&gt;Finding out what caused the original problem for the customer is essential. There may be a genuine problem or weakness but your solution may be different to the customer’s and be more applicable to a wider section of people. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Assess the Requests &amp;amp; Stay in Control! &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;When first getting feedback from the customer, resist the temptation to promise them an update. &lt;/p&gt;&lt;p&gt;Make sure the customer knows you are recording the comments and that you will actively consider them. However, do not make promises about if and when the feature will be included until you have had time to consider the comments. If you later decide not to implement a feature or to change the way the feature works you risk annoying and losing future sales to the customer. Explain to the customer that you need time to consider the feedback.&lt;br /&gt;This is particularly important when a new product has been released. You need to gather a range of comments over time before deciding which features to add and in which order.&lt;br /&gt;When assessing suggestions, look if competitor products already have the features. If they do then the suggestion is probably a good one. Even so, ask yourself if there is a better way of implementing the feature. &lt;/p&gt;&lt;p&gt;Always ask yourself if a new suggested feature is correct for the way you want the product to develop. Is the feature taking the product up a blind-alley? Can you see that you might have to drop or drastically change the feature in a future version? &lt;/p&gt;&lt;p&gt;The simplest solutions are always the best. It is better to release a simple implementation of a new feature than a very complicated one. Release a simple addition and get feedback before developing the feature further. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Build a relationship &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If the customer has made valuable suggestions, follow them up when you have had time to think the suggestions through. Run the possible new features past the customer. Do they think the new features are suitable? By building a relationship with the customer where they feel that their comments are invited you increase the chances of getting good ideas in the future. From experience I know that some customers are superb at providing suggestions and I sometimes feel I should be paying them! &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Keep the customer onboard &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If you have a good relationship with the customer, and their feedback is particularly good, ask if they would be willing to trial a new version of the product. This can be a valuable means of getting early feedback before exposing your product to a wider market. It can also be a good way of rewarding a customer, making them feel valued and continuing to build a relationship. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;Conclusion &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In any business, customers are a vital component – they buy your products and give you money! If customer feedback is handled correctly it can guide you in developing product lines.&lt;br /&gt;Always treat customer feedback carefully. Make sure you do what is right for the future of your company and products. Don’t overload a specific product with features. Think about whether there is the opportunity to create an additional superior product line with additional features and a higher price. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-7409407626305561958?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/7409407626305561958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=7409407626305561958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7409407626305561958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/7409407626305561958'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/cherish-demanding-customers.html' title='Cherish Demanding Customers'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4498544602373544056.post-5746101527890942637</id><published>2008-05-02T05:06:00.000-07:00</published><updated>2008-05-02T05:08:21.292-07:00</updated><title type='text'>First Past the Post</title><content type='html'>My first post on my brand new blog.&lt;br /&gt;&lt;br /&gt;I'm new to blogging but will be adding content on a regular basis about developing and marketing software products for my company &lt;a href="http://www.sliqtools.co.uk/"&gt;SliQTools&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4498544602373544056-5746101527890942637?l=software-product-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://software-product-development.blogspot.com/feeds/5746101527890942637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4498544602373544056&amp;postID=5746101527890942637' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5746101527890942637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4498544602373544056/posts/default/5746101527890942637'/><link rel='alternate' type='text/html' href='http://software-product-development.blogspot.com/2008/05/my-first-post-on-my-brand-new-blog.html' title='First Past the Post'/><author><name>Mike</name><uri>http://www.blogger.com/profile/09024718565669731258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
