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

<channel>
	<title>Interconnect IT - WordPress Consultants, Web Development and Web Design &#187; development</title>
	<atom:link href="http://interconnectit.com/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://interconnectit.com</link>
	<description></description>
	<lastBuildDate>Fri, 27 Apr 2012 16:43:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>The Auditor, Closed Beta 2</title>
		<link>http://interconnectit.com/3818/the-auditor-closed-beta-2/</link>
		<comments>http://interconnectit.com/3818/the-auditor-closed-beta-2/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 15:39:09 +0000</pubDate>
		<dc:creator>Tom J Nowell</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Clients]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://interconnectit.com/?p=3818</guid>
		<description><![CDATA[Following on from our initial announcement, I&#8217;m happy to announce we have a new version! We&#8217;ve listened to feedback and made many improvements. We&#8217;re also making expanding the closed beta! One of the points mentioned in feedback was the potential for extending the plugin, examples including Google Analytics traffic widgets on the overview page etc. The second iteration now comes with&#8230; <a class="more" href="http://interconnectit.com/3818/the-auditor-closed-beta-2/">continue reading <span class="unicode">&#8674;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_3819" class="wp-caption alignright" style="width:320px;"><a href="http://www.interconnectit.com/wp-content/uploads/2012/03/Overview-‹-Blogs-—-WordPress.png"><img class=" wp-image-3819 " title="The Auditor" src="http://www.interconnectit.com/wp-content/uploads/2012/03/Overview-‹-Blogs-—-WordPress-320x431.png" alt="" width="320" height="431" /></a><p class="wp-caption-text">The Overview page, now shinier than ever</p></div>
<p>Following on from our <a href="http://interconnectit.com/3806/the-auditor-enters-closed-beta/" target="_blank">initial announcement</a>, I&#8217;m happy to announce we have a new version! We&#8217;ve listened to feedback and made many improvements. We&#8217;re also making expanding the closed beta! One of the points mentioned in feedback was the potential for extending the plugin, examples including Google Analytics traffic widgets on the overview page etc.</p>
<p>The second iteration now comes with more developer documentation explaining how to:</p>
<ul>
<li><span style="color: #353231;">Add your own events</span></li>
<li><span style="color: #353231;">Use multiple event logs</span></li>
<li><span style="color: #353231;">Custom logging outputs</span></li>
<li><span style="color: #353231;">Custom html for logtable events</span></li>
<li><span style="color: #353231;">Hook debugging tools</span></li>
</ul>
<div>I&#8217;ve also updated the UI, there are now:</div>
<div>
<ul>
<li><span style="color: #353231;">Nicer and more consistent colours across all graphs. For example, an Option Changed event is now the same colour in all graphs and tables</span></li>
<li><span style="color: #353231;">Additional charts showing attachments, published pages, and custom post types</span></li>
<li><span style="color: #353231;">Colour coded log table rows, matching the graph entries and line charts</span></li>
<li><span style="color: #353231;">Multiple Log listings support</span></li>
<li><span><span style="color: #353231;">A redesigned User filtering UI with AJAX suggestions, handles large user bases much better</span></span></li>
</ul>
<div>As well as many other small adjustments and additional log events. Additional hooks and filters have also been added to help integrate plugins and themes into the logging systems.</div>
</div>
<div></div>
<div><img class="aligncenter size-large wp-image-3851" title="auditlogtable" src="http://www.interconnectit.com/wp-content/uploads/2012/03/auditlogtable-680x291.png" alt="" width="680" height="291" /></div>
<div></div>
<div>Those in the closed beta group have a copy sitting in their email inboxes, and anybody with idea or thoughts please let us know in the comments below.</div>
]]></content:encoded>
			<wfw:commentRss>http://interconnectit.com/3818/the-auditor-closed-beta-2/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Spots for WordPress Developer Notes</title>
		<link>http://interconnectit.com/2906/spots-for-wordpress-developer-notes/</link>
		<comments>http://interconnectit.com/2906/spots-for-wordpress-developer-notes/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 09:26:10 +0000</pubDate>
		<dc:creator>Tom J Nowell</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[Spots]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://interconnectit.com/?p=2906</guid>
		<description><![CDATA[Our Spots for WordPress plugin is designed to make your content management life with WP even easier. Although there are developer notes on the WordPress.org repository, we&#8217;ve decided to maintain a page here where we can possibly show a broader range of information in the future, depending on the take-up of the plugin. Template tags Spots provides 2 template tags&#8230; <a class="more" href="http://interconnectit.com/2906/spots-for-wordpress-developer-notes/">continue reading <span class="unicode">&#8674;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Our <a title="Spots for WordPress" href="http://wordpress.org/extend/plugins/spots/other_notes/">Spots for WordPress plugin</a> is designed to make your content management life with WP even easier.</p>
<p>Although there are developer notes on the WordPress.org repository, we&#8217;ve decided to maintain a page here where we can possibly show a broader range of information in the future, depending on the take-up of the plugin.</p>
<h2>Template tags</h2>
<p>Spots provides 2 template tags for developers named <code>icit_spot</code> and <code>icit_get_spot</code>.</p>
<h3>icit_spot</h3>
<p>This template tag echos out a spot:</p>
<pre><code>icit_spot( $id_or_name, $template );</code></pre>
<p>It takes the following parameters:</p>
<ul>
<li><code>$id_or_name</code>: Required. A numeric ID or the name of a spot as a string.</li>
<li><code>$template</code>: Optional. A string used in a call to <code><a href="http://codex.wordpress.org/Function_Reference/get_template_part" target="_blank">get_template_part</a>()</code></li>
</ul>
<h3>icit_get_spot</h3>
<p>This template tag performs the same function, but it allows the developer to specify wether to echo the result, or return it as a variable:</p>
<pre><code>icit_get_spot( $id_or_name, $template, $echo );</code></pre>
<p>It takes the following extra parameter:</p>
<ul>
<li><code>$echo</code>: Optional. Defaults to false. A boolean to indicate whether to echo the spot content or just return it.</li>
</ul>
<h2>Basic Usage</h2>
<p>You can use spots to replace boilerplate text in your themes. If you have areas in your themes where typically you would hard code the text you could use the following code:</p>
<pre><code>if ( <a href="http://php.net/manual/en/function.function-exists.php" target="_blank">function_exists</a>( 'icit_spot' ) )
    icit_spot( 'Copyright' );</code></pre>
<p>The above code would output the contents of a spot titled &#8216;Copyright&#8217;. If the spot does not exist it will be created as a draft. Spots in draft mode are only visible to logged in users with editing capabilities.</p>
<h2>Templates</h2>
<p>The plugin will initially look for a file in your theme using the <code><a href="http://codex.wordpress.org/Function_Reference/get_template_part" target="_blank">get_template_part</a>()</code> function. If you have a file called <code>spot.php</code> in your theme that will be the default template for all spots. The <code>icit_spot()</code> function can take a second parameter for the template part to use for example:</p>
<pre><code>if ( <a href="http://php.net/manual/en/function.function-exists.php" target="_blank">function_exists</a>( 'icit_spot' ) )
    icit_spot( 'Copyright', 'copyright' );</code></pre>
<p>The above code will make the plugin look in your theme folder for a file called <code>spot-copyright.php</code> to use for the output. If not available it will fall back to <code>spot.php</code> and if that is not available it will simply output the spot contents.</p>
<p>Use templates when you want to display a featured image from a spot or if you require some additional/alternative markup for the spot. Spots are just like posts, so in the templates you retrieve the contents of the spot using <code><a href="http://codex.wordpress.org/Function_Reference/the_content" target="_blank">the_content</a>()</code> just as would in the loop.</p>
<h3>Basic spot template example:</h3>
<pre><code>&lt;div class="spot"&gt;
    &lt;?php <a href="http://codex.wordpress.org/Function_Reference/the_content" target="_blank">the_content</a>(); ?&gt;
&lt;/div&gt; </code></pre>
<h3>Spot template with featured image:</h3>
<pre><code>&lt;div class="spot-with-image"&gt;
    &lt;?php
    if ( <a href="http://codex.wordpress.org/Function_Reference/has_post_thumbnail" target="_blank">has_post_thumbnail</a>() )
        <a href="http://codex.wordpress.org/Function_Reference/the_post_thumbnail" target="_blank">the_post_thumbnail</a>( 'medium' );
    <a href="http://codex.wordpress.org/Function_Reference/the_content" target="_blank">the_content</a>(); ?&gt;
&lt;/div&gt; </code></pre>
<h2>Additional</h2>
<p>There are many filters and hooks available to get even more out of spots, so drop by the plugin homepage or use the forums if there is something you need to do with spots but aren&#8217;t sure how.</p>
]]></content:encoded>
			<wfw:commentRss>http://interconnectit.com/2906/spots-for-wordpress-developer-notes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>It&#8217;s Time to Grow Up About IE</title>
		<link>http://interconnectit.com/2025/its-time-to-grow-up-about-ie/</link>
		<comments>http://interconnectit.com/2025/its-time-to-grow-up-about-ie/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 16:24:10 +0000</pubDate>
		<dc:creator>David Coveney</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Progressive Enhancement]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://interconnectit.com/?p=2025</guid>
		<description><![CDATA[Using WordPress in enterprises with old browsers installed can be problematic.  Developers whinge about it (and should stop) and staff struggle with it.  Well, there's an answer to both that may surprise you.]]></description>
			<content:encoded><![CDATA[<div id="attachment_2026" class="wp-caption alignright" style="width:320px;"><a href="http://www.interconnectit.com/wp-content/uploads/2011/03/idestroyerjp.jpg"><img class="size-medium wp-image-2026" title="idestroyerjp" src="http://www.interconnectit.com/wp-content/uploads/2011/03/idestroyerjp-320x215.jpg" alt="" width="320" height="215" /></a><p class="wp-caption-text">Typically Snarky Image (source not known - found all over the interwebs, so let me know if it&#39;s yours)</p></div>
<p>Online snark towards IE, particularly in Twitter, is really common and I keep seeing comments in my timeline like these:</p>
<blockquote><p>Love that WordPress might be dropping IE6 support in 3.2. You might as well take care of IE7 while you&#8217;re at it.</p></blockquote>
<p style="text-align: right;">- @jschuller</p>
<p>or</p>
<blockquote><p>sometimes I wonder if going around the globe, uninstalling every single copy of IE, is less time-consuming than debugging</p></blockquote>
<p style="text-align: right;">- @RobPoort</p>
<p>or</p>
<blockquote><p>What&#8217;s sad is how much of a time suck #IE really is for developers. Think of the billions spent on just debugging for IE!</p></blockquote>
<p style="text-align: right;">@Dr_Overdose</p>
<p>And they used to really wind me.  Happily they don&#8217;t any more.  I&#8217;m over it.</p>
<p>So why did they wind me up?  Because the amount of time and energy expended in whinging about Internet Explorer in the industry is ridiculous.  It hasn&#8217;t changed in five years either.  The whinging is still there.  It just never stops.  And it needs to.</p>
<h3>It&#8217;s an Environment Problem, Stupid</h3>
<p>This is where I&#8217;m going to no doubt draw some criticism, quite possibly from my colleagues even, but here goes:</p>
<p>Internet Explorer, from version 6, is as much a limiting part of our web environment as the potholes and bumps in our roads are a limiting part of car design.</p>
<p>A car designer is powerless to change the roads in your city or country, just like you and I are powerless to make enterprises change their browser of choice.  They don&#8217;t care about whether it makes a bit of extra work for us, they care about how much extra work upgrading will be for them.</p>
<p>Of course we can take the moral high ground.  IE8 is more secure than IE7.  IE9 is faster and more standards compliant.  Good, solid reasons for upgrading.  But no more likely to be listened to than the advice a car designer from Lotus might give to Greece about the environmental and safety benefits that surfacing their roads to a higher standard might bring.  Greece has other priorities than listening to a car designer, and enterprises have higher priorities than listening to the advice of web developers.</p>
<h3>So What&#8217;s the Real Answer for Enterprise Users?</h3>
<p>We found a very real problem for our clients &#8211; the back-end of WordPress is a pretty poor place to work in with IE6 and sometimes poor in IE7.  It&#8217;s usually passable in the latter, but in some enterprises we found that IE7 installs were so locked down that some functionality, particularly within third party plugins, just wouldn&#8217;t work well or was so slow as to be unusable.</p>
<p>In the end we recommended that content teams should be allowed to use <a href="http://www.mozilla.com/en-US/firefox/new/">Firefox</a> or <a href="http://www.google.com/chrome">Google Chrome</a> internally.  In all cases so far this advice has been heeded.  With Chrome it even has the advantage that it can be installed by users even on Windows PCs with very locked down permissions because of the way it&#8217;s coded to not need any admin access.  That means you can probably get your content managers running a decent browser without any involvement from IT.  <a href="http://portableapps.com/">Portable Apps</a> on USB sticks can also be run, meaning Firefox and other tools can be made available.</p>
<p>But do check whether that might not be in breach of local IT rules &#8211; I wouldn&#8217;t want any of you to get into trouble now.</p>
<h3>And for Web Developers and Designers?</h3>
<p>In terms of web development we&#8217;re all going to have to do our best with <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a>.  The interconnect/<strong>it</strong> site works perfectly well in IE6, but has different features to when it&#8217;s view in Firefox, and different again if viewed in Chrome.</p>
<p>There are points when you have to make a judgement call.  Is it worth supporting that last 5% using out of date browsers?  Well, that depends.  It&#8217;s simple maths &#8211; if, say, the cost of supporting a browser with 5% share of your site&#8217;s traffic is less than the profit you make from those visitors then you continue to support it.  Don&#8217;t complain, just do it.  That&#8217;s the only possible business case you have to make.  It may not be fun, but if you&#8217;re a professional it&#8217;s the only thing you can do.  If you&#8217;re a hobbyist then support whatever browser you feel like &#8211; it&#8217;s entirely your choice, and don&#8217;t feel obliged to support minority browsers when you&#8217;re not making any money from your sites.</p>
]]></content:encoded>
			<wfw:commentRss>http://interconnectit.com/2025/its-time-to-grow-up-about-ie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top 10 Functions for functions.php</title>
		<link>http://interconnectit.com/1725/top-10-functions-for-functions-php/</link>
		<comments>http://interconnectit.com/1725/top-10-functions-for-functions-php/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 16:23:00 +0000</pubDate>
		<dc:creator>Robert O'Rourke</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://interconnectit.com/?p=1725</guid>
		<description><![CDATA[I thought I&#8217;d share some of the functions that go into most of our custom WordPress themes. If you have your own favourites then get commenting! Removing the auto capitalisation of &#8216;WordPress&#8217; When version  3.0 was released a fairly simple filter appeared called capital_P_dangit. This was committed to the core by Matt Mullenweg for the purposes of brand reinforcement. Suffice&#8230; <a class="more" href="http://interconnectit.com/1725/top-10-functions-for-functions-php/">continue reading <span class="unicode">&#8674;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I thought I&#8217;d share some of the functions that go into most of our custom WordPress themes. If you have your own favourites then get commenting!</p>
<ol>
<li>
<h3>Removing the auto capitalisation of &#8216;WordPress&#8217;</h3>
<p>When version  3.0 was released a fairly simple filter appeared called capital_P_dangit. This was committed to the core by Matt Mullenweg for the purposes of brand reinforcement. Suffice to say many in the community weren&#8217;t thrilled by this passive-aggressive pedantry for a multitude of very good reasons but that&#8217;s another story (you can read all about it in <a href="http://justintadlock.com/archives/2010/07/08/lowercase-p-dangit">Justin Tadlock&#8217;s article on the subject</a>).</p>
<pre>// remove capital_P_dangit
foreach( array( 'the_content', 'the_title', 'comment_text' ) as $filter )
    remove_filter( $filter, 'capital_P_dangit' );</pre>
</li>
<li>
<h3>Change excerpt length</h3>
<p>The default excerpts in WordPress are reasonable but rarely fit with the design you are working to. Alter the number of characters returned in an excerpt with the following snippet.</p>
<pre>function theme_excerpt_length( $length ) {
    return 80; // 80 characters long
}
add_filter('excerpt_length', 'theme_excerpt_length');</pre>
</li>
<li>
<h3>Change the excerpt truncation text</h3>
<p>You can alter the text that appears at the point of truncation, ie. &#8216;[...]&#8216;, to anything you want, including a useful link to the post page.</p>
<pre>function theme_excerpt_more( $more ) {
    global $post;
    return '&amp;hellip; &lt;a class="read-more" href="'. get_permalink($post-&gt;ID) . '"&gt;' . __('Continue reading') . '&lt;/a&gt;';
}
add_filter('excerpt_more', 'theme_excerpt_more');</pre>
</li>
<li>
<h3>Adding contact methods to the user profile</h3>
<p>On every recent project we have had there has been a need for extra user data, such as Twitter username, FaceBook URL and so on. The user profile screen can be edited using a combination of action hooks but WordPress also has a very simple way to add extra contact methods.</p>
<pre>function more_contactmethods( $contactmethods ) {
    $contactmethods['twitter'] = 'Twitter username';
    $contactmethods['facebook'] = 'Facebook URL';
    return $contactmethods;
}
add_filter( 'user_contactmethods', 'more_contactmethods' );</pre>
</li>
<li>
<h3>Removing the inline stylesheet from galleries</h3>
<p>By default WordPress spits out an inline stylesheet whenever the gallery shortcode is used within a post. The reasoning is that users can control the number of columns each gallery has and the sizes of the images within them as well as a few other options. While it is a noble quest to give users more power over their images it also allows them to screw things up in new and exciting ways when using a custom theme. Adding style tags within the body of an HTML document is also invalid markup.</p>
<p>Thanks to <a href="http://zeo.unic.net.my/remove-wordpress-gallery-shortcode-embedded-css/">Safirul Alredha</a> for this code:</p>
<pre>// remove gallery shortcode styling
add_filter('gallery_style',
    create_function(
        '$css',
        'return preg_replace("#&lt;style type=\'text/css\'&gt;(.*?)&lt;/style&gt;#s", "", $css);'
    )
);</pre>
</li>
<li>
<h3>Replacing the gallery shortcode handler</h3>
<p>While the above snippet does a good enough job in many cases I still find the built in gallery shortcode function to be questionable. For example you can change what HTML tags the gallery outputs with (the default being a semantically poor series of definition lists) but there is no way to set theme defaults without parsing post/page content and adding the attributes to the shortcode programmatically. This is a bad idea for general use themes because it will screw up peoples sites if they switch to another theme in future.</p>
<p>The shortcode can be rescued however by simply removing it and replacing it with your own callback:</p>
<pre>// replace gallery shortcode
remove_shortcode('gallery');
add_shortcode('gallery', 'theme_gallery_shortcode');

function theme_gallery_shortcode( $attr ) {
    global $post, $wp_locale;
    // create your own gallery output...
}</pre>
<p>You can alternatively use the built in shortcode&#8217;s internal filter &#8216;post_gallery&#8217; to change the output and handling of the standard shortcode attributes.</li>
<li>
<h3>Adding custom post types to search results</h3>
<p>Hopefully any custom post types that are set as publicly queryable will be included in the search results by default in future releases of WordPress but for now you can use the following code:</p>
<pre>function search_post_types( $query ) {
    if ( $query-&gt;is_search )
        $query-&gt;set( 'post_type', get_post_types( array( 'publicly_queryable' =&gt; 1 ) ) );
    return $query;
}
add_filter( 'the_search_query', 'search_post_types' );</pre>
</li>
<li>
<h3>Adding custom post types to the main RSS feed</h3>
<p>This can make sense for some sites if you want an amalgamated feed of all your content. We use an array filter in this case to get only those post types that have taxonomies so page-like content is ignored.</p>
<pre>function feed_post_types( $vars ) {
    if ( isset($vars['feed']) &amp;&amp; !isset($vars['post_type']) )
        $vars['post_type'] = array_filter( get_post_types( array( 'publicly_queryable' =&gt; 1 ) ), 'get_object_taxonomies' );
    return $vars;
}
add_filter( 'request', 'feed_post_types' );</pre>
</li>
<li>
<h3>Enable post thumbnails</h3>
<p>This is one is pretty straightforward. Make use of WordPress 3.0&#8242;s post thumbnail feature in your theme.</p>
<pre>add_theme_support( 'post-thumbnails' );</pre>
</li>
<li>
<h3>Enable shortcodes in the text widget</h3>
<p>This little trick makes the text widget into a much more powerful tool. It&#8217;s used on this site to add an author list to the widget space in the footer, avoiding the need to code a specific author list widget.</p>
<pre>add_filter( 'widget_text', 'do_shortcode' );</pre>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://interconnectit.com/1725/top-10-functions-for-functions-php/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>What Used to be Hard, Becomes Easy</title>
		<link>http://interconnectit.com/105/what-used-to-be-hard-becomes-easy/</link>
		<comments>http://interconnectit.com/105/what-used-to-be-hard-becomes-easy/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 10:20:13 +0000</pubDate>
		<dc:creator>Interconnect IT</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://liverpoolwebdesigner.wordpress.com/?p=105</guid>
		<description><![CDATA[One thing we talk a lot about is how important it is, for costs, to stick to problems which have already been solved. Get fancy and do something new, and your costs have rocketed away. A developer has just done a nice little piece on spellchecking. In 1984 it was ferociously hard. In fact, if you wanted a decent spellchecker&#8230; <a class="more" href="http://interconnectit.com/105/what-used-to-be-hard-becomes-easy/">continue reading <span class="unicode">&#8674;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One thing we talk a lot about is how important it is, for costs, to stick to problems which have already been solved.  Get fancy and do something new, and your costs have rocketed away.</p>
<p>A developer has just done a <a title="Spellchecking used to be hard" href="http://prog21.dadgum.com/29.html">nice little piece</a> on spellchecking.  In 1984 it was ferociously hard.  In fact, if you wanted a decent spellchecker in your custom application you had to pay dearly for the priviledge.  Today it can be accomplished in a few lines of code.<span id="more-105"></span></p>
<p>It means that what was once going to cost you £100k to add to an application is now a few pounds.</p>
<p>Similarly, when we develop we offer up lots of wonderful functionality at incredibly low cost, because we&#8217;re just pulling in something that&#8217;s already been done.  But if someone asks us for something custom, the price leaps up.  They don&#8217;t always get it.</p>
<p>So here&#8217;s how we do it:</p>
<h3>Step 1</h3>
<p>We don&#8217;t know if the problem&#8217;s been solved before, and we don&#8217;t know how long it&#8217;ll take us to solve it either, so we give what may be considered to be evasive responses.  We need time to research.  Someone has to pay for that.  Depending how interesting this research is to our business model, we may subsidise it.  Otherwise, the client pays.</p>
<h3>Step 2</h3>
<p>If we find the problem&#8217;s already been solved, we still need to test the solution to make sure it applies well to the client&#8217;s requirements.</p>
<h3>Step 3</h3>
<p>If all is well, and the solution is found quickly, the client gets a call to say &#8220;yup, no problem, it&#8217;ll take us x amount of hours.&#8221;</p>
<p>But if we found no solution, we have to estimate how long it&#8217;ll take to develop the solution.  And that&#8217;s hard in a commercial sphere.  People don&#8217;t expect to spend much on R&amp;D &#8211; they just want solutions.</p>
<p>So we do spend a lot of time trying to get people to understand the difference between solutions, and development.  Just like a DVD player is a £30 piece of kit if you buy one from Sanyo while it would cost millions if you tried to make one your own from first principles.  It shocks folk, but it&#8217;s an important message to get across that all developers need to take on board and to pass on to clients, or they end up stressed and trying to do the impossible on very low budgets.</p>
]]></content:encoded>
			<wfw:commentRss>http://interconnectit.com/105/what-used-to-be-hard-becomes-easy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How Much Does Code Cost?</title>
		<link>http://interconnectit.com/100/how-much-does-code-cost/</link>
		<comments>http://interconnectit.com/100/how-much-does-code-cost/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 14:56:48 +0000</pubDate>
		<dc:creator>Interconnect IT</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[costs]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://liverpoolwebdesigner.wordpress.com/?p=100</guid>
		<description><![CDATA[It&#8217;s hard to measure the cost of code.  Simple stuff can be ferociously time-consuming to develop, and bad coders often produce reams of poorly structured code. But let&#8217;s assume you&#8217;re dealing with a typical, decent developer who doesn&#8217;t take the long route, or dangerous shortcuts. There&#8217;s some nice research covering this, such as Boem, Abts Chulani [2000] which is worth&#8230; <a class="more" href="http://interconnectit.com/100/how-much-does-code-cost/">continue reading <span class="unicode">&#8674;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s hard to measure the cost of code.  Simple stuff can be ferociously time-consuming to develop, and bad coders often produce reams of poorly structured code.</p>
<p>But let&#8217;s assume you&#8217;re dealing with a typical, decent developer who doesn&#8217;t take the long route, or dangerous shortcuts.<span id="more-100"></span></p>
<p>There&#8217;s some nice research covering this, such as <a title="Software Development Cost Estimation Approaches" href="http://sunset.usc.edu/publications/TECHRPTS/2000/usccse2000-505/usccse2000-505.pdf">Boem, Abts Chulani [2000]</a> which is worth reading if you&#8217;re interested by this kind of stuff.  But it&#8217;s heavy going, and doesn&#8217;t give a nice neat figure for lay people to understand.</p>
<p>So now I&#8217;m going to give the answer that many want to hear:</p>
<p>For each line of code produced in a 3GL non RAD environment the cost of your development is likely to come to around £20-£25 per line of new code.  And about £100 per hundred lines of re-used code.</p>
<p>Doesn&#8217;t sound too bad&#8230; that includes testing, development, refinement, code reviews and so on.  It&#8217;s based on the idea that most good developers can produce around 50-100 lines of code in a day if left alone and in peace.  Some produce reams of code, but it&#8217;s often poorly optimised and thought out and likely to bite back in years to come.  The cost also takes into account the design of that code before anyone touched a computer, and the various support staff required.  If a developer is working entirely alone and is self-supported with his PCs and the like, then his productivity drops so the project takes longer, but the cost shouldn&#8217;t change too much.</p>
<p>And don&#8217;t forget that cheap code is often bulkier than expensive code.  Which means nobody can look at a 1000 line program and actually say &#8220;Oh yeah, that&#8217;s £20k&#8217;s worth.&#8221;  Somebody needs to assess the quality of that code.</p>
<p>What we will say is that in general, if we&#8217;ve written you 1000 lines of fresh code (ie, no cut and pasting or reuse) it could well have cost you £25k by the time it&#8217;s fully tested and delivered.  A really big project, like, say, implementing a worldwide global payroll system for a major corporation may have five million lines of code and a final bill (including analysis) of around £125 million.  Not at all unreasonable, believe it or not.</p>
<p>So yes, code is expensive.  And that quick report you&#8217;d like us to knock up?  Maybe it&#8217;s not so quick.</p>
<p>To save costs it&#8217;s worthwhile looking at RAD (Rapid Application Development) methods, but in that you&#8217;ll end up with slower, more bloated code.  However, it can be a perfectly adequate approach and we use it all the time for simple data management back-ends and the like where performance isn&#8217;t that critical.  Sometimes we&#8217;ll generate 20,000 lines of code from a three hour job&#8230; but it gets the job done.  Albeit a little slowly!</p>
]]></content:encoded>
			<wfw:commentRss>http://interconnectit.com/100/how-much-does-code-cost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coming Problems with Web Design</title>
		<link>http://interconnectit.com/86/coming-problems-with-web-design/</link>
		<comments>http://interconnectit.com/86/coming-problems-with-web-design/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 14:34:36 +0000</pubDate>
		<dc:creator>David Coveney</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://liverpoolwebdesigner.wordpress.com/?p=86</guid>
		<description><![CDATA[I just read an interesting article in A List Apart about how browsers that are forgiving of bad markup and css are bad for the web. And I totally get it. In fact, a failure of how standards apply to web pages is one of the reasons why, until really quite recently, I&#8217;d avoided having anything to do with Web&#8230; <a class="more" href="http://interconnectit.com/86/coming-problems-with-web-design/">continue reading <span class="unicode">&#8674;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I just read an <a href="http://alistapart.com/articles/forgiving" title="A List Apart - forgiving browsers are bad">interesting article in A List Apart</a> about how browsers that are forgiving of bad markup and css are bad for the web.</p>
<p>And I totally get it.</p>
<p>In fact, a failure of how standards apply to web pages is one of the reasons why, until really quite recently, I&#8217;d avoided having anything to do with Web Design.  I hated it.  I hated that even if you structured your code correctly it would look right only in half the browsers you tested in.</p>
<p>Well, this is going to change over the coming five years.  Standards will become far more important, and odd hacks will slowly fade into the background.  Browsers, my friends, are going to have to become a whole lot less forgiving.</p>
<p>And there lies the rub &#8211; with tougher browsers, building websites will become a lot harder for non-technical types.  In fact, it could become near impossible.  On the upside, tools like WordPress will be able to offer more choices to the user because the code will <em>know</em> that what it outputs to the browser will work.</p>
<p>So the internet&#8217;s going to get a lot better in the coming years&#8230; but if you&#8217;re not prepared to work hard at it then becoming a web developer or designer is going to become far tougher.</p>
]]></content:encoded>
			<wfw:commentRss>http://interconnectit.com/86/coming-problems-with-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safer Passwords &amp; Using PasswordMaker</title>
		<link>http://interconnectit.com/79/safer-passwords/</link>
		<comments>http://interconnectit.com/79/safer-passwords/#comments</comments>
		<pubDate>Thu, 07 Feb 2008 16:53:23 +0000</pubDate>
		<dc:creator>Interconnect IT</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[password maker]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://liverpoolwebdesigner.wordpress.com/?p=79</guid>
		<description><![CDATA[You may find passwords to be an unecessary chore. But they&#8217;re important. However, inventing strong passwords is difficult&#8230; and they&#8217;re hard to remember. So you need to be able to generate passwords on the go and the solution is Password Maker &#8211; a great way to have safe, difficult to crack passwords which works beautifully as browser plugins. The nice&#8230; <a class="more" href="http://interconnectit.com/79/safer-passwords/">continue reading <span class="unicode">&#8674;</span></a>]]></description>
			<content:encoded><![CDATA[<p>You may find passwords to be an unecessary chore. But they&#8217;re important. However, inventing strong passwords is difficult&#8230; and they&#8217;re hard to remember.</p>
<p>So you need to be able to generate passwords on the go and the solution is <a href="http://passwordmaker.org/" title="Password Maker">Password Maker</a> &#8211; a great way to have safe, difficult to crack passwords which works beautifully as browser plugins.<span id="more-79"></span></p>
<p>The nice thing is that if one password is found out because of a compromised website, because PasswordMaker generates a different password for each site, you&#8217;re still secure everywhere else. Of course, if someone finds out your master password <strong>and</strong> works out what your encryption settings are <strong>and</strong> knows that you&#8217;re using such a system then they can get in to everything.   But you&#8217;re not <em>that</em> careless are you?</p>
<p>You may want to reduce down the characters in use for passwords a little so that you don&#8217;t get characters that many sites don&#8217;t like &#8211; for example, WordPress doesn&#8217;t like slashes.</p>
<p>Make a note of the exact character set, encryption method, lengths and so on. You may need these at some point. However, without the master password, this information is of limited use, and you don&#8217;t have to write it in a way that can be understood by anyone else but you.</p>
<p>Make a habit of using this system wherever possible. You&#8217;ll find life a lot easier, and more secure, if you use it consistently.</p>
]]></content:encoded>
			<wfw:commentRss>http://interconnectit.com/79/safer-passwords/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bug Tracking</title>
		<link>http://interconnectit.com/52/bug-tracking/</link>
		<comments>http://interconnectit.com/52/bug-tracking/#comments</comments>
		<pubDate>Fri, 11 Jan 2008 17:26:13 +0000</pubDate>
		<dc:creator>Interconnect IT</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[bug tracking]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mantis]]></category>

		<guid isPermaLink="false">http://liverpoolwebdesigner.com/2008/01/11/bug-tracking/</guid>
		<description><![CDATA[Want to know how we keep track of all those websites and bugs? It&#8217;s quite simple &#8211; we use Mantis Bug Tracker.   It&#8217;s not as powerful as some, but we&#8217;re a three man company &#8211; a more heavy solution would probably simply be going over the top with things and would carry a support load that we simply wouldn&#8217;t&#8230; <a class="more" href="http://interconnectit.com/52/bug-tracking/">continue reading <span class="unicode">&#8674;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Want to know how we keep track of all those websites and bugs?</p>
<p>It&#8217;s quite simple &#8211; we use <a href="http://www.mantisbt.org/" title="Mantis Bug Tracker">Mantis Bug Tracker</a>.   It&#8217;s not as powerful as some, but we&#8217;re a three man company &#8211; a more heavy solution would probably simply be going over the top with things and would carry a support load that we simply wouldn&#8217;t be happy with.</p>
<p>In other words, it&#8217;s a great fit for our needs and requirements today, and for the next few years.</p>
]]></content:encoded>
			<wfw:commentRss>http://interconnectit.com/52/bug-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Wicked Problem</title>
		<link>http://interconnectit.com/51/the-wicked-problem/</link>
		<comments>http://interconnectit.com/51/the-wicked-problem/#comments</comments>
		<pubDate>Thu, 10 Jan 2008 17:41:46 +0000</pubDate>
		<dc:creator>David Coveney</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Clients]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[problems]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://liverpoolwebdesigner.com/2008/01/10/the-wicked-problem/</guid>
		<description><![CDATA[I was reading through some project management methodology just now (yay! My life is full of joy at last!) and came across the phrase &#8220;The Wicked Problem&#8221; in this line on Wikipedia: Steve McConnell in Code Complete (a book which criticizes the widespread use of the waterfall model) refers to design as a &#8220;wicked problem&#8221; &#8211; a problem whose requirements&#8230; <a class="more" href="http://interconnectit.com/51/the-wicked-problem/">continue reading <span class="unicode">&#8674;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was reading through some project management methodology just now (yay! My life is full of joy at last!) and came across the phrase &#8220;The Wicked Problem&#8221; in this line on Wikipedia:</p>
<blockquote><p>Steve McConnell in <em><a title="Code Complete" href="http://en.wikipedia.org/wiki/Code_Complete">Code Complete</a></em> (a book which criticizes the widespread use of the waterfall model) refers to design as a &#8220;<a title="Wicked problem" href="http://en.wikipedia.org/wiki/Wicked_problem">wicked problem</a>&#8221; &#8211; a problem whose requirements and limitations cannot be entirely known before completion. The implication is that it is impossible to get one phase of software development &#8220;perfected&#8221; before time is spent in &#8220;reconnaissance&#8221; working out exactly where and what the big problems are.</p></blockquote>
<p><span id="more-51"></span>It&#8217;s worth following the link.</p>
<p>I think software and design processes often end up trapped within this circle where nothing&#8217;s ever perfect.  The iPhone isn&#8217;t perfect, for example &#8211; it may be ever so pretty, but it&#8217;s quite rubbish at Bluetooth connectivity, for example, or sending texts.  In fact, it&#8217;s rubbish at a lot of things.  One of its smartphone rivals, the N95, has a habit of crashing in certain situations, and flattening its battery in two hours because it&#8217;s furiously running an application in the background.</p>
<p>Same with websites.  Our company site, <a title="Interconnect IT - developing code in Liverpool!" href="http://www.interconnectit.com">Interconnect IT</a>, will never ever, in my opinion, be perfect.  Unless we simply devoted all our energies to that site &#8211; but then we&#8217;d have no time to work on client projects.  We&#8217;re still a three man company, so we can&#8217;t have a £200k site.  But we can be clever and cover 95% of the requirements.</p>
<p>With client sites it&#8217;s even trickier &#8211; we have to interpret a clients&#8217; requirements, write them down, and send them back in a proposal with a rough mock-up, pricing and structure.  They&#8217;ll read it quickly and usually accept.  But once started they&#8217;ll look at the design, try it out, and realise that actually, the front page should have a simpler message.  That may mean a restructuring.  A week later, someone may point out that the colours they preferred have negative connotations in certain cultures.</p>
<p>All these require changes, sometimes at a late stage, and sometimes involving a lot of work.  At some point, someone has to simply say &#8211; &#8220;OK, that&#8217;s good enough!&#8221;</p>
<p>Other clients, however, quite like the waterfall method.  We have forms for certain business sectors, with consistent requirements, where they simply tick off what they want and like, choose an off-the-shelf design, and a couple of weeks later we deliver the website &#8211; all loaded up and everything.  They then sign-off, or they ask for some revisions &#8211; images changed, copy edited and so on.  It&#8217;s particularly suited where a small and busy firm needs a website, but it&#8217;s not really crucial to their business &#8211; it simply provides a service to people who already know them.  Dentists, for example.</p>
]]></content:encoded>
			<wfw:commentRss>http://interconnectit.com/51/the-wicked-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

