<?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>Community Site News &#187; Web Development</title>
	<atom:link href="http://community.plus.net/blog/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://community.plus.net</link>
	<description>News and Updates on the Community.</description>
	<lastBuildDate>Sat, 21 Nov 2009 00:06:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP Testfest 2009</title>
		<link>http://community.plus.net/blog/2009/05/13/php-testfest-2009/</link>
		<comments>http://community.plus.net/blog/2009/05/13/php-testfest-2009/#comments</comments>
		<pubDate>Wed, 13 May 2009 15:03:17 +0000</pubDate>
		<dc:creator>Simon Westcott</dc:creator>
				<category><![CDATA[Innovation & the net]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[NorthWest]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpnw]]></category>
		<category><![CDATA[Testfest]]></category>

		<guid isPermaLink="false">http://community.plus.net/?p=13981</guid>
		<description><![CDATA[ The second annual PHP TestFest is currently underway and this weekend the PHP NorthWest user group met to make their contribution with Ben, Rowan and myself representing Plusnet.  The aim is to improve the amount of PHP source code that is covered by tests thereby giving developers increased confidence that unintentional behavior changes are [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-13980" src="http://community.plus.net/wp-content/uploads/2009/05/testfest_big-276x300.png" alt="PHP Testfest logo" height="200" /> The second annual <a href="http://qa.php.net/testfest.php" target="_blank">PHP TestFest</a> is currently underway and this weekend the <a href="http://phpnw.org.uk" target="_blank">PHP NorthWest user group</a> met to make their contribution with Ben, Rowan and myself representing Plusnet.  The aim is to improve the amount of PHP source code that is covered by tests thereby giving developers increased confidence that unintentional behavior changes are not made.  These tests are run frequency and the results are published on <a href="http://gcov.php.net" target="_blank">gcov.php.net</a>.</p>
<p>Having used PHP for a number of years to build a career and pay the bills, it  feels particularly satisfying to contribute something back to the project. Also, those people making significant contribution may apply for a $username@php.net email address which looks cool on a business card!</p>
<p>With the recent release of PHP5.3RC2, the main focus is on improving code coverage for the 5.3 branch.  PHP core developer <a href="http://www.macvicar.net" target="_blank">Scott MacVicar</a> started the day with an introduction on how-to compile from source as well as run the existing tests. After pizza, we got down to the business of writing tests, starting with a simple example which I&#8217;ll run through&#8230;<span id="more-13981"></span></p>
<p>First, download the latest 5.3 snapshot from <a href="http://snaps.php.net" target="_blank">snaps.php.net</a> and extract it.  NorthWestUG were only focusing on testing the Standard PHP Library (SPL) so we disabled all the extensions to speed up the compilation time. If you&#8217;re interested in other extensions, use the appropriate switch to enable it &#8211; see <em>&#8216;./configure &#8211;help | less&#8217;</em> for details. Note: you may need to install <em>&#8216;build-essentials&#8217;</em>, &#8216;<em>ltp&#8217;</em> and <em>&#8216;gcov&#8217;</em> packages before performing the following step.</p>
<pre>tar zxvf php5.3*
cd php5.3*
./configure --disable-all --enable-gcov &amp;&amp; make</pre>
<p>Once complete, you should now have your compiled PHP CLI binary in sapi/cli/php. Lets test it,</p>
<pre>$ sapi/cli/php -v
PHP 5.3.0RC2 (cli) (built: May  9 2009 19:48:19) (GCOV)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies</pre>
<p><a href="http://farm4.static.flickr.com/3610/3518363101_23fe425132.jpg"><img class="alignright" src="http://farm4.static.flickr.com/3610/3518363101_23fe425132_m.jpg" alt="" width="180" height="240" /></a>To run all the existing tests, approximately 5700, run <em>&#8216;make test&#8217;</em>.  To generate a code coverage report run <em>&#8216;make lcov&#8217;</em> and open lcov_html/index.html to see the results.  Both these commands also accept a <em>&#8216;TESTS=&#8217;</em> argument which is useful for testing individual directories and files when writing new tests.  For example, to only run the SPL tests, use <em>&#8216;make test TESTS=ext/spl/tests/&#8217;</em>. Now lets create our own test.  For this example, we&#8217;ll check that PHP can do basic addition.  PHP test files have a .phpt extension and consist of several sections.  Every test must contain TEST, FILE and EXPECT sections.</p>
<ul>
<li>TEST &#8211; a meaning description of the test</li>
<li>FILE &#8211; your test code</li>
<li>EXPECT &#8211; what the expected outcome of FILE is</li>
</ul>
<p>There are many other sections however, CREDITS is common and completing this will get your name/email address into CVS.  Refer to the <a href="http://qa.php.net/phpt_details.php" target="_blank">reference manual</a> and <a href="http://qa.php.net/write-test.php#basic-format" target="_blank">QA PHP site</a> for guidance. Here is the example test that Scott used (the new line at the bottom of the test is important!),</p>
<pre>--TEST--
Check that PHP can count
--CREDITS--
Your name/email address
--FILE--
&lt;?php
echo 10 + 10;
?&gt;
--EXPECT--
20</pre>
<p>Save the file using the .phpt extension and run the test, <em>&#8216;make test TESTS=/path/to/test/filename.phpt&#8217;</em>.  If for some reason the test fails a number of output files are created in the same directory as the test.  The most useful is the .diff file, this records the test&#8217;s actual output against what was expected. Assuming the test works as expected you get something like,</p>
<pre>=====================================================================
PHP         : /path/php-5.3.0RC2/sapi/cli/php
PHP_SAPI    : cli
PHP_VERSION : 5.3.0RC2
ZEND_VERSION: 2.3.0
PHP_OS      : Linux - Linux work-laptop 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686
INI actual  : /path/php-5.3.0RC2/tmp-php.ini
More .INIs  :
CWD         : /path/php-5.3.0RC2
Extra dirs  :
VALGRIND    : Not used
=====================================================================
Running selected tests.
PASS Check that PHP can count [/path/to/test/filename.phpt]
=====================================================================
Number of tests :    1                 1
Tests skipped   :    0 (  0.0%) --------
Tests warned    :    0 (  0.0%) (  0.0%)
Tests failed    :    0 (  0.0%) (  0.0%)
Expected fail   :    0 (  0.0%) (  0.0%)
Tests passed    :    1 (100.0%) (100.0%)
---------------------------------------------------------------------
Time taken      :    0 seconds
=====================================================================</pre>
<p><a href="http://farm4.static.flickr.com/3630/3518362143_d82d33dcf6.jpg"><img class="alignleft" src="http://farm4.static.flickr.com/3630/3518362143_d82d33dcf6_m.jpg" alt="" width="240" height="180" /></a>Now we know how-to write basic tests, we need to find some real code to test.  <a href="http://gcov.php.net/PHP_5_3/lcov_html/" target="_blank">PHP&#8217;s gcov site</a> reports all untested code in red, so just pick a section and write a test for it. Once the test passed, re-run the code coverage report to ensure the expect line(s) is now green. When you&#8217;re happy with the test follow the <a href="http://qa.php.net/write-test.php#whattodo" target="_blank">what to do next</a> instructions and submit it to the QA mailing list for review. It&#8217;s preferable to submit tests in batches rather then by drip-feeding them as the tests will be reviewed by the QA team, run on multiple OSes, hardware as well as committing to the 5.2, 5.3 and HEAD.</p>
<p>Thanks to <a href="http://www.ibuildings.com/" target="_blank">iBuildings</a> for sponsoring the event, <a href="http://www.salford.ac.uk/" target="_blank">Salford University</a> for use of their facilitiess, <a href="http://lornajane.net/" target="_blank">Lorna Mitchell</a> for organising the event, Scott for his mentoring and patience and to everyone that turned up and wrote some tests.  Currently NorthWestUG is in the lead with <a href="http://testfest.php.net/displayresults.php" target="_blank">95 tests</a>!  All the tests created by the NorthWestUG can be found <a href="http://testfest.php.net/repos/testfest/NorthWestUG/ext/spl/tests/" target="_blank">here</a>.</p>
<p>Credit to Lorna Mitchell for the photos.  The full set is available <a href="http://www.flickr.com/photos/lornajane/sets/72157617951221722/" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://community.plus.net/blog/2009/05/13/php-testfest-2009/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Blogging about Blogging</title>
		<link>http://community.plus.net/blog/2009/04/29/blogging-about-blogging/</link>
		<comments>http://community.plus.net/blog/2009/04/29/blogging-about-blogging/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 13:31:52 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://community.plus.net/?p=13882</guid>
		<description><![CDATA[I&#8217;ve never really been one for keeping a personal blog. I don&#8217;t like the thought that literally anyone could be reading what would essentially be a run down of how I&#8217;m feeling, what I&#8217;m thinking about and so on. If I wanted someone to know – I could just tell them.
Sure – I&#8217;ve made a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve never really been one for keeping a personal blog.<span> </span>I don&#8217;t like the thought that literally anyone could be reading what would essentially be a run down of how I&#8217;m feeling, what I&#8217;m thinking about and so on. If I wanted someone to know – I could just tell them.</p>
<p>Sure – I&#8217;ve made a few blog posts on this very website, about <a href="http://community.plus.net/blog/2007/07/02/broadband-speed-faults-how-to-diagnose/" target="_blank">speeds on IPStream Max</a>, <a href="http://community.plus.net/blog/2008/11/25/the-plusnet-csc-telephone-system/" target="_blank">the way our IVR works</a>, and so on, but I&#8217;ve never really been inclined to keep my own one until now.<br />
<span id="more-13882"></span></p>
<p>A friend of mine decided that I was constantly complaining about being bored at home and having nothing to do so he practically forced me into signing up for a domain name and to write about things that interested me. So, within a day, I had my own domain name and a basic Wordpress install, which we then customised the theme and off I went.</p>
<p>It&#8217;s actually really easy to do.<span> </span>You just need to download the <a href="http://wordpress.org/download/" target="_blank">latest version of Wordpress from their site</a> and save it locally on your computer.<span> </span>Then you can just upload the files to the root directory (eg <a href="http://www.mywebsite.co.uk/">http://www.mywebsite.co.uk/</a>) and then you just need to set up a database and follow the instructions you&#8217;re given.<span> </span>Wordpress have their own guide on <a href="http://codex.wordpress.org/Installing_WordPress#Detailed_Instructions" target="_blank">how to do this here</a>.</p>
<p>Since then, I&#8217;ve learnt about and written about various things, such as <a href="http://unlikely-perfection.co.uk/2009/04/15/my-eyesight-as-comprehensive-as-i-can/" target="_blank">what&#8217;s wrong with my eyesight</a>, <a href="http://unlikely-perfection.co.uk/2009/03/29/sleep-how-much-is-right/" target="_blank">sleeping patterns</a>, <a href="http://unlikely-perfection.co.uk/2009/04/20/why-do-we-yawn/" target="_blank">reasons why we yawn</a> and so on, not to mention some very basic reviews on a few games I&#8217;ve played. It&#8217;s essentially given me a reason to read up on some things that I find interesting, which I probably wouldn&#8217;t have done so otherwise.</p>
<p>Now I&#8217;m starting to get the idea of adding various plugins to Wordpress, such as one called <a href="http://alexking.org/projects/wordpress" target="_blank">Twitter Tools</a> (which I thought was excellent) which will automatically post any blog entries I make to my twitter feed – something Chris has recently adapted for the <a href="http://teh-r0x0rz.co.uk/" target="_blank">Comms &#8220;Commic&#8221; blog</a>. There&#8217;s almost always going to be someone that&#8217;s written a plugin that can do anything you want it to.</p>
<p>It really doesn&#8217;t matter what you&#8217;re wittering on about. As long as you find it interesting, it&#8217;s quite likely that your interest and enthusiasm will infect others and before long you&#8217;ll have your own following.</p>
<p>All you need is a <a href="http://www.just-the-name.co.uk/main.shtml">domain name</a>, <a href="http://www.payh.co.uk" target="_blank">some hosting</a> and a <a href="http://www.plus.net" target="_blank">decent Internet connection</a>. Did I mention we sell all of those things?</p>
<p>Have fun <img src='http://community.plus.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
James</p>
]]></content:encoded>
			<wfw:commentRss>http://community.plus.net/blog/2009/04/29/blogging-about-blogging/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Idea: Comment Aging.</title>
		<link>http://community.plus.net/blog/2009/04/02/idea-comment-aging/</link>
		<comments>http://community.plus.net/blog/2009/04/02/idea-comment-aging/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 12:52:49 +0000</pubDate>
		<dc:creator>Kelly Dorset</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://community.plus.net/?p=13669</guid>
		<description><![CDATA[We get quite a few comments on these blogs each week and I can&#8217;t actually remember a single comment that we haven&#8217;t approved for display. (with the exception of duplicates!)

Now, I can imagine having to do some selection where the comments would be considered defamation, but luckily we&#8217;ve never really had to deal with that. [...]]]></description>
			<content:encoded><![CDATA[<p>We get quite a few comments on these blogs each week and I can&#8217;t actually remember a single comment that we haven&#8217;t approved for display. (with the exception of duplicates!)</p>
<p><span id="more-13669"></span></p>
<p>Now, I can imagine having to do some selection where the comments would be considered <a href="http://en.wikipedia.org/wiki/Defamation">defamation</a>, but luckily we&#8217;ve never really had to deal with that. (There was a really interesting series of blogs by the BBC about how they deal with this sort of thing. Read them here: <a href="http://www.bbc.co.uk/blogs/bbcinternet/2009/03/bbc_moderation_the_law_and_cen.html">BBC Moderation, The Law and &#8220;Censorship&#8221;</a>) The rest, we all let though (edited for naughty language!) This means though that we&#8217;ve approved some comments which are less than complementary about our products or service. Getting these comments is great because it means we can identify a problem, or service issue and take action but they stick around on your posts, possibly casting a negative light on what is often a single user issue or something not typical of our service in general for a long time.</p>
<p>Now, before I get into my idea, I just want to make something clear. We aren&#8217;t about to change our moderation policy here, or try and &#8216;change the past&#8217;. If you&#8217;ve got a gripe about our services, get a comment on a post and we&#8217;ll do what we can to improve or fix, or even better, head over to <a href="http://community.plus.net/forums/">the forums</a> and see if our community can help you out. This is just an idea&#8230;!</p>
<p>I was just considering the concept of comment aging. When you are talking with other people about recommendations or things to avoid, those conversations fade away into memory. They are specific to the individuals involved and unless they come up in further conversation, don&#8217;t tend to spread unless really significant. Similar with email or instant message conversations, they may be archived, but aren&#8217;t immediately available to everyone else.</p>
<p>Would it work for comments to age? Fade them to indicate age? Archive them away over a certain amount of time? Apply it to all comments to make it fair?</p>
<p>If you did this, then only the most recent, and in principle, the most relevant comments would appear alongside blog posts. Consistent good or poor performance would mean that comments would still be there, but be current/relevant to the discussion.</p>
<p>Has anyone seen any examples of this being done? Do people think it&#8217;s a horrible idea? I&#8217;m not sure myself!</p>
]]></content:encoded>
			<wfw:commentRss>http://community.plus.net/blog/2009/04/02/idea-comment-aging/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Searching with Chrome&#039;s omnibox</title>
		<link>http://community.plus.net/blog/2008/12/30/searching-with-chromes-omnibox/</link>
		<comments>http://community.plus.net/blog/2008/12/30/searching-with-chromes-omnibox/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 16:20:53 +0000</pubDate>
		<dc:creator>Tamlyn Rhodes</dc:creator>
				<category><![CDATA[Industry News]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://community.plus.net/?p=13099</guid>
		<description><![CDATA[I&#8217;ve been using Google Chrome as my primary browser for several months now and the one feature that has really impressed me is the omnibox. It&#8217;s essentially the browser address bar and default search box combined but it&#8217;s more powerful than either on its own.

Address autocompletion
Firstly, unlike any other browser I&#8217;ve used, the URL autocomplete actually works and autocompletes to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://www.google.com/chrome">Google Chrome</a> as my primary browser for several months now and the one feature that has really impressed me is the <a href="http://www.google.com/googlebooks/chrome/med_18.html">omnibox</a>. It&#8217;s essentially the browser address bar and default search box combined but it&#8217;s more powerful than either on its own.<br />
<span id="more-13099"></span><br />
<strong>Address autocompletion</strong></p>
<p>Firstly, unlike any other browser I&#8217;ve used, the URL autocomplete actually works and autocompletes to the URLs I want and not some obscure deep page I visited weeks ago. For example this is what I get when I open a new tab in Opera and type &#8216;f&#8217; into the address bar:<br />
 <br />
<img class="alignnone size-full wp-image-13100" title="Auto-complete in Opera" src="http://community.plus.net/wp-content/uploads/2008/12/opera.png" alt="" width="600" height="355" /></p>
<p>Madness! The situation in Firefox is only marginally better and IE7 is even worse. Now compare this to Chrome:</p>
<p><img class="alignnone size-full wp-image-13101" title="Auto-complete in Chrome" src="http://community.plus.net/wp-content/uploads/2008/12/flickr0.png" alt="" width="600" height="159" /></p>
<p>Facebook and Flickr are the two sites starting with &#8216;f&#8217; that I visit most often and &#8216;film 2009&#8242; is a recent search I made starting with &#8216;f&#8217;. Chrome shows me just what I need and no more.</p>
<p><strong>Searching</strong></p>
<p>Searching Google from the omnibox is a doddle (just type in your search and press enter) but it also permits searching other websites. For instance, say I want to search for a photo on Flickr, I simply type &#8216;fl&#8217;:</p>
<p><img class="alignnone size-full wp-image-13102" title="Searching from the omnibox" src="http://community.plus.net/wp-content/uploads/2008/12/flickr1.png" alt="" width="600" height="161" /></p>
<p>&#8230;press tab&#8230;</p>
<p><img class="alignnone size-full wp-image-13103" title="Searching from the omnibox" src="http://community.plus.net/wp-content/uploads/2008/12/flickr2.png" alt="" width="600" height="143" /></p>
<p>&#8230;type my search terms&#8230;</p>
<p><img class="alignnone size-full wp-image-13104" title="Searching from the omnibox" src="http://community.plus.net/wp-content/uploads/2008/12/flickr3.png" alt="" width="600" height="86" /></p>
<p>&#8230;press enter and <em>voila</em>!</p>
<p><img class="alignnone size-full wp-image-13105" title="Flickr search results" src="http://community.plus.net/wp-content/uploads/2008/12/flickr4.png" alt="" width="600" height="435" /></p>
<p><strong>How does it work?</strong></p>
<p>It&#8217;s kinda magic but essentially each time you perform a search on a website, Chrome recognises the format of the URL and then allows you to search that site directly from the omnibox. This works for Amazon, Wikipedia, Plus.net&#8230; pretty much any site. And the neat thing is you can customise the keyword used for searching by clicking on the spanner icon and going to Options -&gt; Basics -&gt; Default search -&gt; Manage. I often have to look up functions on the PHP website and all I have to do in Chrome is open a new tab and type &#8220;php explode&#8221; and I&#8217;ll be taken straight to the manual page for the explode() function.</p>
<p><strong>The <em>really</em> clever bit</strong></p>
<p>That&#8217;s all well and good for sites that have good site search but it&#8217;s useless for sites with poor search. The Mozilla Developer Centre, for example, has rubbish search and yet I need it all the time to look up JavaScript functions. So instead I use the power of Google to search the site and take me straight to the first result.</p>
<p>To do this yourself, first you need to craft the URL to do the appropriate search. Use this URL</p>
<p><a href="http://google.com/search?q=site" rel="nofollow">http://google.com/search?q=site</a>:<strong>[url]</strong>+%s&amp;btnI=Lucky</p>
<p>but replace <strong>[url]</strong> with the URL of the site you want to search (for example community.plus.net/blogs/ for this website). The &#8216;%s&#8217; is a placeholder to tell Chrome where to insert your search terms and the &#8216;bntl=Lucky&#8217; tricks Google into thinking you clicked on the &#8220;I&#8217;m feeling lucky&#8221; button rather than the standard search button. Now click on the spanner icon in Chrome and go to Options -&gt; Basics -&gt; Default search -&gt; Manage -&gt; Add and enter a descriptive name, a short keyword and the URL you crafted above. For my Mozilla search I used</p>
<blockquote><p>Name: MDC JavaScript<br />
Keyword: js<br />
URL: http://google.com/search?q=site:developer.mozilla.org/En/Core_JavaScript_1.5_Reference+%s&amp;btnI=Lucky</p></blockquote>
<p>Now I can just type &#8216;js string&#8217; into the omnibox, press enter and I&#8217;m taken straight to the manual entry for the JavaScript String object.</p>
<p>I think the omnibox rocks. Now can comeone please write an add-on that replicates it in Firefox?!</p>
]]></content:encoded>
			<wfw:commentRss>http://community.plus.net/blog/2008/12/30/searching-with-chromes-omnibox/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How to write bad CSS</title>
		<link>http://community.plus.net/blog/2008/12/15/how-to-write-bad-css/</link>
		<comments>http://community.plus.net/blog/2008/12/15/how-to-write-bad-css/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 10:47:55 +0000</pubDate>
		<dc:creator>Tamlyn Rhodes</dc:creator>
				<category><![CDATA[PlusNet News]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://community.plus.net/?p=12960</guid>
		<description><![CDATA[Preface: This is a geeky post about web development markup languages. If you don&#8217;t understand HTML and CSS you can probably switch off now.
Cascading Style Sheets (CSS) have been with us for 12 years which, in internet time, makes the technology nearly as old as the Earth itself, and yet so many people still seem [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Preface</strong>: This is a geeky post about web development markup languages. If you don&#8217;t understand HTML and CSS you can probably switch off now.</p>
<p>Cascading Style Sheets (CSS) have been with us for 12 years which, in internet time, makes the technology nearly as old as the Earth itself, and yet so many people still seem to struggle with the most basic concepts. In this post I will give several examples of bad CSS along with an explanation of what is wrong in each case.<span id="more-12960"></span></p>
<p>Let&#8217;s start with an easy one:</p>
<blockquote>
<pre>&lt;p id="menu"&gt;
    &lt;a href="something.html" class="menuLink"&gt;Something&lt;/a&gt;
&lt;/p&gt;

.menuLink {
    text-decoration: none;
}</pre>
</blockquote>
<p>What&#8217;s wrong here?</p>
<p>Well, if you put a different class on each kind of element you want to reference you get a bad case of classitis which adds unnecessary markup to your pages. In this example, you don&#8217;t need the &#8220;menuLink&#8221; class because you can just use the CSS descendant selector instead:</p>
<blockquote>
<pre>#menu a {
    text-decoration: none;
}</pre>
</blockquote>
<p>How about this?</p>
<blockquote>
<pre>&lt;p id="errorMessage"&gt;Something went wrong.&lt;/p&gt;
&lt;p id="successMessage"&gt;Yay! All good.&lt;/p&gt;

#errorMessage {
    font-weight: bold;
    background-color: #f00;
    color: #fff;
}

#successMessage {
    font-weight: bold;
    background-color: #0f0;
    color: #fff;
}</pre>
</blockquote>
<p>The problem here is repetition. The messages share most of their style properties with only the background colour differing. This is what classes are for:</p>
<blockquote>
<pre>&lt;p id="errorMessage" class="message"&gt;Something went wrong.&lt;/p&gt;
&lt;p id="successMessage" class="message"&gt;Yay! All good.&lt;/p&gt;

.message {
    font-weight: bold;
    color: #fff;
}

#errorMessage {
    background-color: #f00;
}

#successMessage {
    background-color: #0f0;
}</pre>
</blockquote>
<p>This second example isn&#8217;t much shorter (in fact it&#8217;s a few bytes longer) but the real benefit is in legibility and maintainability. If you decide you want to make all your status messages larger you only need to do it in one place.</p>
<p>It&#8217;s also worth explicitly pointing out the difference between classes and IDs: IDs must be unique on each page and each element can have only one ID whereas classes can be applied to several elements and an element can belong to multiple classes. In the example above you can only ever have one error message on a page. If you want to be able to display several error messages at the same time, you need to use class names:</p>
<blockquote>
<pre>&lt;p class="errorMessage message"&gt;Something went wrong.&lt;/p&gt;
&lt;p class="successMessage message"&gt;Yay! All good.&lt;/p&gt;

.message {
    font-weight: bold;
    color: #fff;
}

.errorMessage {
    background-color: #f00;
}

.successMessage {
    background-color: #0f0;
}</pre>
</blockquote>
<p>This is one I see <strong>a lot</strong> and it really winds me up:</p>
<blockquote>
<pre>&lt;p class="center"&gt;Welcome&lt;/p&gt;

.center {
    text-align: center;
}</pre>
</blockquote>
<p>You can&#8217;t use presentational words in class names! CSS is all about the <em>separation</em> of content &amp; presentation. By using words like &#8220;left&#8221;, &#8220;red&#8221;, &#8220;large&#8221; in class names you&#8217;re mixing your presentation into your content. Instead, use names that describe the purpose of the elements such as &#8220;warning&#8221;, &#8220;introduction&#8221; or &#8220;important&#8221;.</p>
<p>That&#8217;s it from me &#8211; what CSS mistakes have you noticed in other people&#8217;s code?</p>
]]></content:encoded>
			<wfw:commentRss>http://community.plus.net/blog/2008/12/15/how-to-write-bad-css/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHPNW08</title>
		<link>http://community.plus.net/blog/2008/12/11/phpnw08/</link>
		<comments>http://community.plus.net/blog/2008/12/11/phpnw08/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 09:58:43 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[PlusNet News]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpnw]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://community.plus.net/?p=13060</guid>
		<description><![CDATA[The end of last November saw a very successful first conference for PHPNW08 with a little bit of sponsorship and attendance from Plusnet. PHPNW (there&#8217;s a clue in the name) is a group for PHP professionals in the North-West, normally they have monthly meet-ups much like GeekUp but this was a bit more ambitious. So, [...]]]></description>
			<content:encoded><![CDATA[<p>The end of last November saw a very successful first conference for <a href="http://conference.phpnw.org.uk/phpnw08/">PHPNW08</a> with a little bit of sponsorship and attendance from Plusnet. PHPNW <em>(there&#8217;s a clue in the name)</em> is a group for PHP professionals in the North-West, normally they have monthly meet-ups much like <a href="http://geekup.org/">GeekUp</a> but this was a bit more ambitious. So, given that PHP powers the majority of our platform it made sense to check it out, even though it meant getting up at 6:30 on a Saturday morning <em>(which is practically a holy day for me)</em>.<br />
<span id="more-13060"></span><br />
<a href="http://www.derickrethans.nl/">Derick Rethans</a>, author of the indispensable <a href="http://www.xdebug.org/">Xdebug</a> extension, kicked off the day with his KISS keynote which was a nice reminder of some user-friendly practices we should always have in our heads. He also included a cute localisation example which shows even Google gets it wrong some times, you can find the presentation on <a href="http://www.derickrethans.nl/talks.php">Derick&#8217;s Talks page</a> if you want to know more.</p>
<p>After some much needed coffee the conference split into two tracks and I went off to see <a href="http://akrabat.com/">Rob Allen</a> talk about <a href="http://framework.zend.com/">Zend Framework</a>. I&#8217;ve tinkered with a few of the tutorials before but never got too far into it, this was an encouraging kick to start looking at where we might be able to take advantage of some of their libraries. His <a href="http://framework.zend.com/manual/en/zend.cache.html"><code>Zend_Cache</code></a> example instantly made me think of an internal project that was one of my babies, but speed-wise has always been something of a problem child <em>(don&#8217;t worry, it&#8217;s a lot better now but there&#8217;s always room for improvement <img src='http://community.plus.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</em>. Next up was <a href="http://zoomsplatter.blogspot.com/">Zoe Slattery</a> with quite an in-depth comparison of the <a href="http://lucene.apache.org/java/docs/index.html">Lucene</a> indexing as implemented in PHP versus the original Java. This brought up some interesting statistics on the speed of method calls in PHP &#8211; they&#8217;re incredibly slow! There were two important lessons here: picking the right tool for the job, and playing to the strengths of your language. As one of our developers here is fond of saying, &#8220;If you&#8217;re going to code PHP that looks like Java, why don&#8217;t you just code in Java?&#8221;. While you might be able to write a pretty efficient indexer in PHP, you won&#8217;t be doing it using a heavily object-oriented approach. This was definitely a good talk to have just before lunch, as I think it fuelled most of the discussion through it.</p>
<p><a title="Discussion Panel by skoop, on Flickr" href="http://www.flickr.com/photos/skoop/3056679145/"><img class="alignright" src="http://farm4.static.flickr.com/3033/3056679145_11124022f5.jpg" alt="Discussion Panel" width="500" height="375" /></a></p>
<p>So, after a few more coffees and exchanging sticker space on my arm for a delicious jam doughnut from <a href="http://www.phpwomen.org/">PHPWomen</a> it was time to sit down for more talks. Next up was <a href="http://www.leftontheweb.com/">Stefan Koopmanschap</a> with a talk on refactoring, this was mostly familiar ground for me but it did a good job of fully defining the term and that people will often say &#8220;refactoring&#8221; when what they really mean is &#8220;rewriting&#8221; <em>(or occasionally &#8220;ripping it all down and starting again&#8221; )</em>. The final talk of the day for me was from <a href="http://www.stuartherbert.com/">Stuart Herbert</a>, one of our friends from <a href="http://www.gradwell.net/">Gradwell</a>. Those of you on <a href="http://twitter.com/">Twitter</a> will remember when they shut off their SMS service for the UK, Gradwell realised they were in a good position to jump in and fill the gap. Stuart&#8217;s talk provided a clear illustration of how they took this and went from concept all the way through to a launched product, not only looking at the coding of it but touching on the management, marketing, and financial aspects as well. As us engineers are never happy to admit, putting a successful product out there requires much more than just a solid technical solution!</p>
<p>With all the talks done, we finished off the day with questions to a discussion panel consisting of <a href="http://goytalk.blogspot.com/">Steph Fox</a>, <a href="http://www.jansch.nl/">Ivo Jansch</a>, <a href="http://www.macvicar.net/">Scott MacVicar</a>, and <a href="http://felix.phpbelgium.be/blog/">Felix De Vliegher</a>. We were tempted to run a little pool as to how long it was going to take before someone brought up the <a href="http://news.php.net/php.internals/41374">use of &#8220;<code>\</code>&#8221; as the new namespace separator</a>, but it took a fair bit longer than I expected. The discussion could have got ugly <em>(and we hadn&#8217;t even got to the bar yet)</em> until Scott <em>(in a voice that made me think he was about to go all <a href="http://www.imdb.com/title/tt0117951/">Trainspotting</a> on someone)</em> came back with, &#8220;Patches&#8230; are welcome.&#8221; Flawless Victory.</p>
<p>Had the day ended there, I would still be here giving the conference a glowing review &#8211; but we topped everything off with a trip to <a href="http://www.revolution-bars.co.uk/deansgate">Revolution</a> for <a href="http://www.mariokart.com/">Mario Kart</a> and what seemed like a near limitless bar tab <em>(Why yes, I will have another Russian Bride if you&#8217;re offering)</em>. Ludicrous drinks aside, it really showed how open and friendly the rest of the PHP community is &#8211; curious about the engine internals, just wander over and ask the people who wrote it! On top of that, we realised that some of the stuff we do here is also pretty interesting to the rest of the community &#8211; so we&#8217;ve been prompted to submit a couple of presentation ideas for <a href="http://www.phpconference.co.uk/">PHP UK</a>, so *fingers crossed* you might just see us on the opposite side of the podium there, and if not&#8230; well, I&#8217;m sure they&#8217;ll have a tab there as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://community.plus.net/blog/2008/12/11/phpnw08/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pair Programming</title>
		<link>http://community.plus.net/blog/2008/09/19/pair-programming/</link>
		<comments>http://community.plus.net/blog/2008/09/19/pair-programming/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 10:49:36 +0000</pubDate>
		<dc:creator>Pawel Kostecki</dc:creator>
				<category><![CDATA[PlusNet News]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Pair Programming]]></category>

		<guid isPermaLink="false">http://community.plus.net/?p=12860</guid>
		<description><![CDATA[Hi, In the last week we have been trying a pair programming concept with our Polish Software Development Team. Let me present some feedback from this experiment.
It was a two-day trial during which we had developer pairs working on code problems. The configuration was mostly: 2 people with one computer, but there were situations that [...]]]></description>
			<content:encoded><![CDATA[<p>Hi, In the last week we have been trying a pair programming concept with our Polish Software Development Team. Let me present some feedback from this experiment.<span id="more-12860"></span></p>
<p>It was a two-day trial during which we had developer pairs working on code problems. The configuration was mostly: 2 people with one computer, but there were situations that pair-mates worked separately at their own desk.</p>
<p>The most important thing we saw is that pair programming can increase efficiency of some problem investigation. Typically this would be problems which need a lot of digging, a very experienced developer or just a good debate to determine the solution.</p>
<p>Of course pair programming as an idea is intended to be used while <em>programming</em>, but then it gives benefits to the quality more than to efficiency itself, I think.</p>
<p>Another observation is that some investigation parts (like digging through many files or so) are more effective when using separate computers (work can then be split between developers).</p>
<p>Getting opinions from the team, I&#8217;ve noticed that while some of them said that pair programming improved their efficiency, some other claimed otherwise &#8211; that the efficiency was lower (even if they worked on the same problem). It&#8217;s quite obvious that this way of investigation/programming is good for some problem types and doesn&#8217;t provide any benefits for some other.</p>
<p>The problem can be keeping up. When you&#8217;re sitting in front of a screen somebody else is scrolling up and down, switching files,and so on, it is hard to remain focus and you tire very quickly. That&#8217;s why it&#8217;s really important to change the way of work during pair programming. You need to be constantly aware of that you&#8217;re not alone. Frequent active/passive developer switching is also important here and makes things slightly better.</p>
<p>Generally this method requires some time from people to get used to it. I&#8217;ve seen some &#8220;mouse battles&#8221; when developers wanted to do two different things at a time but that will go with practice.</p>
<p>Definitely investigation or programming in pairs lets you to learn a lot. Especially when an experienced developer is co-operating with inexperienced one. However there are people who don&#8217;t like to be teachers and they can get tired quickly.</p>
<p>Some other feedback was that this trial gave the developers more motivation. When you&#8217;re working on problems on your own, you can easily get distracted by many unimportant things (mails, forum posts, rss news, UFOs landing outside the office window, etc.). When you lose your focus it&#8217;s hard to find it again. When you work in pair, it&#8217;s easier to &#8216;keep the course&#8217; since you are constantly being watched and you have help that keeps you on track.</p>
<p>To sum up: Compulsory pair programming for every problem would have no sense at all, but working in pairs on problems that are hard to investigate, replicate or fix is something worth trying.</p>
<p>Cheers,<br />
Pawel</p>
]]></content:encoded>
			<wfw:commentRss>http://community.plus.net/blog/2008/09/19/pair-programming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>User Testing, Guerilla Style</title>
		<link>http://community.plus.net/blog/2008/07/08/user-testing-guerilla-style/</link>
		<comments>http://community.plus.net/blog/2008/07/08/user-testing-guerilla-style/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 13:20:21 +0000</pubDate>
		<dc:creator>Tamlyn Rhodes</dc:creator>
				<category><![CDATA[PlusNet News]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[prototypes]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[user testing]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[wireframes]]></category>

		<guid isPermaLink="false">http://community.plus.net/?p=12631</guid>
		<description><![CDATA[Myself, Sam &#38; Matt went out to Sheffield city centre yesterday afternoon for a spot of user testing. It&#8217;s the first user test I&#8217;ve run in the wild, previous times have been with friends &#38; family or work colleagues. It was an interesting afternoon and we certainly learned a lot.
Firstly, for those not familiar with [...]]]></description>
			<content:encoded><![CDATA[<p>Myself, Sam &amp; Matt went out to Sheffield city centre yesterday afternoon for a spot of user testing. It&#8217;s the first user test I&#8217;ve run <em>in the wild</em>, previous times have been with friends &amp; family or work colleagues. It was an interesting afternoon and we certainly learned a lot.<span id="more-12631"></span></p>
<p>Firstly, for those not familiar with the term, <strong>user testing</strong> is a design technique which involves watching people use the product you are designing and noting down their reactions, comments and any problems which arise. The term is a little misleading since it isn&#8217;t the users who are being tested but the product. It&#8217;s a particularly powerful method because it is all too easy for the designers and programmers who make websites to forget how &#8216;real people&#8217; use computers. In this case we were tesing wireframes (essentially pictures of a website) for the current My Account redesign.</p>
<p>So, after Starbucks turned us down, the manager of <a href="http://www.hahaonline.co.uk/your-haha-bar.asp?bar_id=22">Ha Ha</a> agreed to let us use a table in exchange for some increased custom. While I set up the laptop &amp; camera, Sam &amp; Matt went out into the street with placards offering &#8220;Free Coffee for 15 minutes of your time&#8221;. After a few minutes Sam returned with our first victim and over the course of 2 hours or so I went through the wireframes with 5 different people. It seems that free coffee is only a sufficient incentive to attract college students. Unfortunately this meant that all our participants were from a very similar demographic with a similar level of internet use (when I asked for favourite sites, all but one mentioned Facebook, Myspace or Bebo). Perhaps next time we should extend the offer to &#8220;Free coffee and a £5 book voucher&#8221; <img src='http://community.plus.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The first thing I noticed when watching users attempt the tasks I set them is that wireframes are awkward. Because they are images rather than real interactive web pages, I found myself constantly having to call on the users&#8217; imaginations. &#8220;Imagine that&#8217;s a real text box.&#8221; &#8220;That&#8217;s a sample error. Imagine that you&#8217;ve typed it correctly this time.&#8221; &#8220;Imagine that the address fields are real, what would you put in each one?&#8221; Most users were quite good at imagining but one imagined maybe a little too much: pressing backspace to delete some imaginary text in an imaginary text box, she was genuinely taken back to the previous screen (backspace is a shortcut for the back button in most web browsers).</p>
<p>I found that asking people what they think of a page out of context isn&#8217;t very helpful. After the introductions, my first question was to display the wireframe and ask the users &#8220;What do you think this site is and what does it do.&#8221; Responses ranged from complete incomprehension to comments on the colour scheme and graphic design. Although such a question is appropriate when testing a site home page, in the case of a control panel section it is reasonable to expect that real users would have been provided with some context from the previously viewed pages.</p>
<p>Every web designer knows that nobody reads instructions on the web but it&#8217;s still surprising to see users completely ignore your carefully written hints &amp; help. One guy even commented &#8220;It would be useful if the page said how long my password needs be&#8221; while staring at a big yellow box stating exactly that information. Of course, one of my mantras is &#8220;<a href="http://www.slideshare.net/tamlyn/thinking-about-usability-2020/3">If it needs instructions, it&#8217;s badly designed</a>&#8221; and the fact that people won&#8217;t read the instructions anyway is just one more reason to think carefully when designing web pages. If it&#8217;s self-evident then instructions aren&#8217;t needed.</p>
<p>Today, instead of updating the existing wireframes with the changes suggested by the user testing, we decided to move up to the next level of fidelity and start building XHTML prototypes. This will allow us to test again in a more realistic environment in which users can interact with all form elements and input real data.</p>
<p>Thanks to all our participants and special thanks to Sam &amp; Matt for braving the rain and finding those participants! I&#8217;m looking forward to doing it again.</p>
]]></content:encoded>
			<wfw:commentRss>http://community.plus.net/blog/2008/07/08/user-testing-guerilla-style/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>InfoSec - Security in a wired world</title>
		<link>http://community.plus.net/blog/2008/06/13/infosec-security-in-a-wired-world/</link>
		<comments>http://community.plus.net/blog/2008/06/13/infosec-security-in-a-wired-world/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 15:05:49 +0000</pubDate>
		<dc:creator>glennog</dc:creator>
				<category><![CDATA[PlusNet News]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[adware]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[infosec]]></category>
		<category><![CDATA[keylogger]]></category>
		<category><![CDATA[pgp]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[spyware]]></category>
		<category><![CDATA[trojan]]></category>
		<category><![CDATA[virus]]></category>

		<guid isPermaLink="false">http://community.plus.net/?p=12544</guid>
		<description><![CDATA[Behind every high-profile data loss there are a hundred or more that slip by under the radar, and most of them are people at home, blissfully unaware that their computer has been compromised and their identity stolen. Blissful, that is, until their next credit card or bank statement comes through. By then, it's too late.  So how do we protect ourselves in the Digital Age?]]></description>
			<content:encoded><![CDATA[<p>Much has been made lately of information security breaches&#8230; TJX, HMRC, HSBC to name a few have all come under the media spotlight &#8211; and they&#8217;re just the ones we get to hear about. Behind every high-profile data loss there are a hundred or more that slip by under the radar, and most of them are people at home, blissfully unaware that their computer has been compromised and their identity stolen. Blissful, that is, until their next credit card or bank statement comes through. By then, it&#8217;s too late.</p>
<p>So how do we protect ourselves in the Digital Age? Well, there are a few things we can all do &#8211; both to protect our identities on-line, and the more sensitive data we own. First, though, it&#8217;s worth a quick review of what your identity is. <span id="more-12544"></span></p>
<p><strong>Who are you?</strong></p>
<p>Your online presence may be small, or it may be great. You may have your own blog, you may be a member of a great many forums, you may be on FaceBook, eBay, linked-in, and MySpace. Or you may simply share your email address with close friends and family. Your Internet identity, therefore, is wholly your own to make, share and protect. Be careful how much information you publish about yourself, though &#8211; dates of birth, addresses, etc form your personal identity. How many times have you called your bank, or your insurance company, and they&#8217;ve asked you for your address and date of birth?</p>
<p><strong>Fortress You!</strong></p>
<p>Protecting your personal identity is half of the battle &#8211; the other half is protecting your access, keeping the PC or Mac you use to connect safe from the dangers of the outside world. Want to know how much you&#8217;re being scanned &#8211; every day? Enable logging on your router or firewall, or if you run a Linux firewall &#8211; such as Smoothwall &#8211; check the kernel logs. You&#8217;ll be surprised to see exactly how much traffic hits your router that never gets to your PC. That&#8217;s not the end of the story, though. Like the elephant-gun effect, hit your router with enough traffic and eventually something will get through. Something your router has open &#8211; because you have UPnP enabled and your router has kindly opened some ports for you, or because you&#8217;ve put your PC in a DMZ to help you host network games, or because you want to run your own web/mail/whatever server and have opened up ports yourself. If you must open your computer to the Internet, don&#8217;t keep any personal data on it and don&#8217;t use it for logging into your bank, building society, or anywhere that requires your authentication (such as the PlusNet portal, your Yahoo! mail account, etc). Keep your personal details and your open systems separate, and you&#8217;re almost there.</p>
<p><strong>Protect, Scan and Patch.</strong></p>
<p>Having your personal data on your machine may not necessarily be the worst thing in the world to do. Obviously don&#8217;t do it if you can help it, but there are ways you can protect the sensitive data you hold on your computer. PGP, or the open-source GPG software is the first step on this road. Encrypt your data, and use a VERY strong passphrase and encryption algorithm, and any data people grab from you will be useless to them &#8211; without the use of a seriously beefy system and a few years to crack it open.</p>
<p>Protecting your data is a good start, but you also need to protect the machine it lives on. Firewall/routers, and the firewall component provided by your friendly neighbourhood ISP are great, but they don&#8217;t go the whole way &#8211; they never can. Understanding this is the next step, and installing personal firewall software is the answer. Host-based firewalls are the next level of security for your home or business &#8211; be that Comodo, ZoneAlarm, or IPTables. It isn&#8217;t enough to simply install it though, if all you do is click &#8216;Allow&#8217; on any popups it throws up. Each pop-up from your firewall software is an attempt by somebody or something to gain access &#8211; either to your computer, or from your computer to some outside resource. Don&#8217;t be misled by the difference, either. It&#8217;s just as important to protect your outgoing connections as it is to protect your incoming ones &#8211; viruses and trojans frequently establish connections from your computer to deliver your data to a waiting hacker. So install and USE your firewall software.</p>
<p>The next step is to install some good Anti-Spyware and Anti-Virus software. Pay for them if you can, or get reputable free software if you can&#8217;t. Be wary of wolves in sheep&#8217;s clothing, though &#8211; some trojan/spyware authors have been known to embed their software into supposedly anti-spyware solutions. The same rule applies to these applications as applies to firewall software. Don&#8217;t just install them and forget them, run regular scans &#8211; the more complete the better &#8211; and scan all your downloads, automatically if possible.</p>
<p>Finally there are patches, upgrades and security fixes. If Windows says there are updates available, install them. They&#8217;re available because somebody has found a new vulnerability, or there&#8217;s a bug which will cause data leakage, or some other such problem which may compromise your system and undo all the hard work you&#8217;ve gone through to protect yourself. The same goes, of course, for Linux, OS X, Solaris, and any other operating system you run (unless you wrote it yourself, in which case you should probably scan your own work regularly, too). Keeping your system up to date will keep your fortress strong and your defences up.</p>
<p><strong>You are the weakest link.</strong></p>
<p>Security is all about finding the weakest link, and making it strong. Hackers will always go for the low-hanging fruit, and the weakest link in the chain is the point at which you&#8217;re most vulnerable. Protection of your data, your hardware and your software will protect you from the opportunists and the amateurs. This will also deter the more determined hacker, but remember new vulnerabilities and exploits are being discovered all the time. Don&#8217;t sit back and think you&#8217;re safe &#8211; keep on top of it, make sure you update your virus and spyware definitions/signatures regularly, update your software with any security and bug fixes that become available, and wherever possible don&#8217;t open yourself up to incoming traffic where you don&#8217;t need to. Protect that which is most valuable, and secure the rest. If you don&#8217;t, you may find the walls of your fortress start to crumble, and the cracks will grow from the weakest point.</p>
]]></content:encoded>
			<wfw:commentRss>http://community.plus.net/blog/2008/06/13/infosec-security-in-a-wired-world/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Time Management as a techie</title>
		<link>http://community.plus.net/blog/2008/06/02/time-management-as-a-techie/</link>
		<comments>http://community.plus.net/blog/2008/06/02/time-management-as-a-techie/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 09:26:53 +0000</pubDate>
		<dc:creator>Mike Grice</dc:creator>
				<category><![CDATA[PlusNet News]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[time management]]></category>
		<category><![CDATA[todo]]></category>

		<guid isPermaLink="false">http://community.plus.net/?p=12501</guid>
		<description><![CDATA[As a techie, one of the things that is most important to me Getting Stuff Done is to manage my time properly.  There&#8217;s always more work coming in than I&#8217;m able to do in a day, so it&#8217;s valuable to have a system that you can use to manage your workload.

Sysadmins in general are [...]]]></description>
			<content:encoded><![CDATA[<p><span style="small;">As a techie, one of the things that is most important to me Getting Stuff Done is to manage my time properly.  There&#8217;s always more work coming in than I&#8217;m able to do in a day, so it&#8217;s valuable to have a system that you can use to manage your workload.</span><br />
<span id="more-12501"></span><br />
Sysadmins in general are a strange bunch.  They&#8217;re often perfectionists, but this kind of behaviour leads to a certain &#8216;tunnel vision&#8217; that means that other things get left untouched.  Good time management is therefore essential to make sure that you don&#8217;t leave things behind as you plough on with the big tasks.</p>
<p>Though the years I&#8217;ve gone through a number of systems, but this is the one I&#8217;m currently using.</p>
<p>I have an A4 lined notepad (but you can use some electronic format if you prefer).  At the top of the page I write the day (Mon 2 June).  Then in the margin I write (in thirds down the page):</p>
<p><strong>Meetings<br />
To Do<br />
Notes</strong></p>
<p>My meetings columns are Time: Subject: Duration:, and I label each meeting with a letter.<br />
My to do columns are priority, name, carryover.<br />
My notes are generally from meetings; if they are I&#8217;ll write the letter I&#8217;ve assigned to the meeting next to them.</p>
<p>As I work through the day I&#8217;ll put lines through things I&#8217;ve done.  I&#8217;ll work on the todo list in priority order.</p>
<p>I&#8217;ll add extra todo items if anything has arisen from meetings I&#8217;ve attended, ad-hoc work has come in, or new things to work on have landed in my pile.</p>
<p>At the end of the day, I tally up what I&#8217;ve done.  I&#8217;ll fill in the next day&#8217;s page, and anything that wasn&#8217;t completed I put &#8216;carry over&#8217; next to, cross it off, and put it on the next day&#8217;s page.  Sometimes I&#8217;ll have to change the priority as things begin to niggle <img src='http://community.plus.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The system I use has evolved over time, but was based on things I&#8217;ve read, commercial systems I&#8217;ve bought, and logical additions.  I&#8217;m using this one because it&#8217;s simple, and works for me, but everyone is different.</p>
<p>The only disadvantage I find with this system is that I can&#8217;t plan significantly ahead, but I use this system in conjunction to our in-house project/task management system which is good for planning ahead.  I find the &#8216;needs to be done today&#8217; part the bit of task management that just doesn&#8217;t work online for me right now.</p>
<p>Systems I&#8217;ve used in the past are the excellent Time/System, things based on Tom Limoncelli&#8217;s Time Management for Systems Administrators, and the PHP application TaskFreak!  (I&#8217;ll provide links to these at the end).</p>
<p>My 3 time management golden rules would be:<br />
- Stick to your priorities<br />
- Plan the next day before you leave<br />
- Learn to tell people you&#8217;re too busy and reset their expectations</p>
<p>What time management systems do you use?  Do you find yourself changing systems a lot?  What do you wish your time management system had that it doesn&#8217;t?</p>
<p>Cheers,<br />
Gricey.<br />
(who didn&#8217;t have this on his todo list for today)</p>
<ul>
<li><span style="small;">Time/System: <a href="http://www.timesystem.co.uk/">http://www.timesystem.co.uk</a></span></li>
<li><span style="small;">Time Management For System Administrators: <a href="http://www.oreilly.com/catalog/9780596007836/">http://www.oreilly.com/catalog/9780596007836/</a></span></li>
<li><span style="small;">TaskFreak! <a href="http://www.taskfreak.com/">http://www.taskfreak.com</a></span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://community.plus.net/blog/2008/06/02/time-management-as-a-techie/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
