<?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>Third Stone Software</title>
	<atom:link href="http://www.thirdstone.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thirdstone.com</link>
	<description></description>
	<lastBuildDate>Sun, 11 Dec 2011 13:50:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Scrum</title>
		<link>http://www.thirdstone.com/2011/12/scrum/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scrum</link>
		<comments>http://www.thirdstone.com/2011/12/scrum/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 13:50:11 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Design]]></category>

		<guid isPermaLink="false">http://www.thirdstone.com/?p=212</guid>
		<description><![CDATA[Scrum is an Agile framework for software project management. Scrum defines a set of roles, artifacts, and practices. Roles ScrumMaster: Responsible for facilitating the Scrum process. Directs meetings, enforces rules, keeps team focused, manages artifacts. Product Owner: Represents the stakeholders &#8230; <a href="http://www.thirdstone.com/2011/12/scrum/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>
Scrum is an Agile framework for software project management. Scrum defines a set of roles, artifacts, and practices.
</p>
<p>
<strong>Roles</strong></p>
<ul>
<li><strong>ScrumMaster</strong>: Responsible for facilitating the Scrum process. Directs meetings, enforces rules, keeps team focused, manages artifacts.</li>
<li><strong>Product Owner</strong>: Represents the stakeholders and the business. Articulates their needs.</li>
<li><strong>Team</strong>: Responsible for delivering the product. A cross-functional group that does the analysis, design, coding, testing, communication and documentation.</li>
</ul>
<p>
<strong>Artifacts</strong></p>
<ul>
<li><strong>User Story</strong>: A description of a feature to be implemented, and the acceptance testing criteria for that feature. Typically written by the Product Owner.</li>
<li><strong>Technical Story</strong>: A description of technical work that must to done to support the product. Typically written by the Team.</li>
<li><strong>Product Backlog</strong>: The collection of all stories that have not been completed.</li>
<li><strong>Sprint Backlog</strong>: The collection of stories to be completed in the current Sprint.</li>
<li><strong>Burndown</strong>: A chart that displays remaining work to be done versus time. It is intended to give everyone insight into the progress of the project.</li>
</ul>
<p>
<strong>Practices</strong></p>
<ul>
<li><strong>Sprint</strong>: The period of development, typically lasting 2 to 4 weeks. Scrum uses the term &#8220;Sprint&#8221; for the Agile concept of &#8220;iteration&#8221;.</li>
<li><strong>Sprint Planning Meeting</strong>: Prior to the start of the Sprint, this meeting is held to determine which stories from the Product Backlog will be entered into the Sprint Backlog. The Product Owner will prioritize the stories, and the Team will plan the Sprint.</li>
<li><strong>Daily Scrum</strong>: A 15-minute daily meeting for the Team, where each team member describes: what they did yesterday, what they are doing today, and any roadblocks encountered.</li>
<li><strong>Scrum of Scrums</strong>: Used when teams are not co-located. A representative from each team will attend this meeting that occurs after the Daily Scrum.</li>
<li><strong>Sprint Review Meeting</strong>: Review the work that was completed and not completed. Present (demo) the completed work to the stakeholders; incomplete work is not presented.</li>
<li><strong>Sprint Retrospective</strong>: Reflect on the last Sprint, in order to improve the process. Questions to ask: What what well in the last Sprint? What could be done better in the next Sprint?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.thirdstone.com/2011/12/scrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Agile Model of Software Development</title>
		<link>http://www.thirdstone.com/2011/12/the-agile-model-of-software-development/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-agile-model-of-software-development</link>
		<comments>http://www.thirdstone.com/2011/12/the-agile-model-of-software-development/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 13:50:02 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Design]]></category>

		<guid isPermaLink="false">http://www.thirdstone.com/?p=82</guid>
		<description><![CDATA[The Agile Model of Software Development evolved to address the problems that were encountered with teams using the Waterfall Method. The primary problem with Waterfall is that it makes the assumption that every requirement and function can be captured on &#8230; <a href="http://www.thirdstone.com/2011/12/the-agile-model-of-software-development/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>
The Agile Model of Software Development evolved to address the problems that were encountered with teams using the Waterfall Method. The primary problem with Waterfall is that it makes the assumption that every requirement and function can be captured on paper at the beginning of the project. Changes to the software requirements specification after sign-off are costly, especially if the project is well into the development phase. Anyone familiar with the phrase &#8220;I&#8217;ll Know It When I See It&#8221; can understand that a customer is likely to want to change how the software looks or functions after they have had a chance to interact with the software. The Agile solution to this problem is Iterative and Incremental Development (IID).
</p>
<p>
IID breaks down the development process into short iterations, where each iteration touches all the phases of the software development process: requirements are gathered, architecture and design decisions are made, code and tests are written. At the end of the iteration the customer is able to interact with functional code. By allowing the customer to prioritize the work that is done in each iteration, small increments of functional code are produced according to the customer&#8217;s business needs. Iterations are thus able to accelerate the delivery of initial business value; through continuous planning and feedback, that value can be maximized throughout the development process. In a typical Agile project the iterations will last from 2 to 4 weeks, and the number of iterations will be the project length divided by the iteration length.
</p>
<p>
Although incremental software development methods had been in use for years, Agile became formally described in early 2001 in the <i>Manifesto for Agile Software Development</i> <a href="http://agilemanifesto.org/">Link</a>. The Manifesto reads:</p>
<blockquote style="background: #ccc; padding: 10px; border: 1px dashed;"><p>
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:</p>
<ul>
<li>Individuals and interactions over processes and tools</li>
<li>Working software over comprehensive documentation</li>
<li>Customer collaboration over contract negotiation</li>
<li>Responding to change over following a plan</li>
</ul>
<p>That is, while there is value in the items on the right, we value the items on the left more.
</p></blockquote>
<p>
<a id="principles"></a><br />
The following Principles <a href="http://agilemanifesto.org/principles.html">Link</a> underlie the Agile Manifesto.</p>
<blockquote style="background: #ccc; padding: 10px; border: 1px dashed;"><p>
We follow these principles:</p>
<p>Our highest priority is to satisfy the customer<br />
through early and continuous delivery<br />
of valuable software.</p>
<p>Welcome changing requirements, even late in<br />
development. Agile processes harness change for<br />
the customer&#8217;s competitive advantage.</p>
<p>Deliver working software frequently, from a<br />
couple of weeks to a couple of months, with a<br />
preference to the shorter timescale.</p>
<p>Business people and developers must work<br />
together daily throughout the project.</p>
<p>Build projects around motivated individuals.<br />
Give them the environment and support they need,<br />
and trust them to get the job done.</p>
<p>The most efficient and effective method of<br />
conveying information to and within a development<br />
team is face-to-face conversation.</p>
<p>Working software is the primary measure of progress.</p>
<p>Agile processes promote sustainable development.<br />
The sponsors, developers, and users should be able<br />
to maintain a constant pace indefinitely.</p>
<p>Continuous attention to technical excellence<br />
and good design enhances agility.</p>
<p>Simplicity&#8211;the art of maximizing the amount<br />
of work not done&#8211;is essential.</p>
<p>The best architectures, requirements, and designs<br />
emerge from self-organizing teams.</p>
<p>At regular intervals, the team reflects on how<br />
to become more effective, then tunes and adjusts<br />
its behavior accordingly.
</p></blockquote>
<p><br/>
</p>
<p>
Agile is a conceptual framework for lightweight software development. While there are a number of software development methodologies that use Agile methods, two of the most popular are Scrum and Extreme Programming (XP).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thirdstone.com/2011/12/the-agile-model-of-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuring FTPS For WordPress Updates</title>
		<link>http://www.thirdstone.com/2011/12/configuring-ftps-for-wordpress-updates/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=configuring-ftps-for-wordpress-updates</link>
		<comments>http://www.thirdstone.com/2011/12/configuring-ftps-for-wordpress-updates/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 15:16:41 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.thirdstone.com/?p=166</guid>
		<description><![CDATA[WordPress has a convenient feature for updating itself and plugins through the Dashboard. Unfortunately it doesn&#8217;t support SFTP (SSH FTP), which would be provided by the excellent OpenSSH package. Instead, you&#8217;ll need to set up an FTPS (FTP over SSL) &#8230; <a href="http://www.thirdstone.com/2011/12/configuring-ftps-for-wordpress-updates/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>WordPress has a convenient feature for updating itself and plugins through the Dashboard. Unfortunately it doesn&#8217;t support SFTP (SSH FTP), which would be provided by the excellent OpenSSH package. Instead, you&#8217;ll need to set up an FTPS (FTP over SSL) server. This short tutorial will guide you through installing a secure FTPS server on Ubuntu 11.10.</p>
<p>
<strong>Step 1: Install vsftpd</strong><br />
APT (Advanced Packaging Tool) is the software package manager for Ubuntu.</p>
<div style="background: #ccc; padding: 10px; border: 1px dashed;">
> sudo apt-get update<br />
> sudo apt-get install vsftpd
</div>
</p>
<p>
<strong>Step 2: Shut down vsftpd</strong><br />
The service will be started immediately after installation. For security reasons, we will shut it down until it is properly configured.</p>
<div style="background: #ccc; padding: 10px; border: 1px dashed;">
> service vsftpd stop
</div>
</p>
<p>
<strong>Step 3: Configure vsftpd</strong><br />
Edit /etc/vsftpd.conf and make these suggested changes and additions.</p>
<div style="background: #ccc; padding: 10px; border: 1px dashed;">
listen=YES<br />
anonymous_enable=NO<br />
local_enable=YES<br />
write_enable=YES<br />
local_umask=022<br />
dirmessage_enable=YES<br />
use_localtime=YES<br />
xferlog_enable=YES<br />
secure_chroot_dir=/var/run/vsftpd/empty<br />
pam_service_name=vsftpd<br />
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem<br />
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key<br />
ssl_enable=YES<br />
allow_anon_ssl=NO<br />
force_local_data_ssl=YES<br />
force_local_logins_ssl=YES<br />
ssl_tlsv1=YES<br />
ssl_sslv2=NO<br />
ssl_sslv3=NO<br />
anon_world_readable_only=NO<br />
anon_upload_enable=NO<br />
anon_mkdir_write_enable=NO<br />
connect_from_port_20=NO<br />
listen_port=2112
</div>
</p>
<p>
<strong>Step 4: Restart vsftpd</strong><br />
Now that anonymous access has been disabled and SSL has been enabled, the FTPS service can be restarted.</p>
<div style="background: #ccc; padding: 10px; border: 1px dashed;">
> service vsftpd start
</div>
</p>
<p>
<strong>Step 5: Create FTPS user</strong><br />
It&#8217;s a good idea to create a separate account for updates through the WordPress dashboard. For simplicity, I created a system account with the same username I use for the WordPress admin account. In this example I&#8217;m using &#8220;ftps&#8221;; use whatever username works best for you. The last argument must be the path to the web server directory; ignore the warning about the home directory not belonging to the user. Be sure to give the account a strong password.</p>
<div style="background: #ccc; padding: 10px; border: 1px dashed;">
> sudo adduser ftps &#8211;home /srv/www
</div>
</p>
<p>
<strong>Step 6: Add the FTPS user to the www-data group</strong><br />
The new user will need to belong to the www-data group. Again, I&#8217;m using &#8220;ftps&#8221; as the example username.</p>
<div style="background: #ccc; padding: 10px; border: 1px dashed;">
> sudo vi /etc/group<br />
  www-data:x:32:ftps
</div>
</p>
<p>
<strong>Step 7: Give the www-data group read/write access</strong><br />
The www-data group will need read/write access to the web server directory.</p>
<div style="background: #ccc; padding: 10px; border: 1px dashed;">
> sudo chgrp -R www-data /srv/www<br />
> sudo chmod -R g+w /srv/www
</div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thirdstone.com/2011/12/configuring-ftps-for-wordpress-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Waterfall Model of Software Development</title>
		<link>http://www.thirdstone.com/2011/12/the-waterfall-model-of-software-development/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-waterfall-model-of-software-development</link>
		<comments>http://www.thirdstone.com/2011/12/the-waterfall-model-of-software-development/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 02:21:23 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Software Design]]></category>

		<guid isPermaLink="false">http://www.thirdstone.com/?p=114</guid>
		<description><![CDATA[The Waterfall Model is the classic Software Development model. The model consists of several distinct phases, which proceed in sequence with little to no overlap. It is so named because work flows from one phase to another in a downward &#8230; <a href="http://www.thirdstone.com/2011/12/the-waterfall-model-of-software-development/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>
The Waterfall Model is the classic Software Development model. The model consists of several distinct phases, which proceed in sequence with little to no overlap. It is so named because work flows from one phase to another in a downward fashion, like a waterfall.
</p>
<p>
The phases, and activities performed during the phases, typically consist of the following.
</p>
<div style="background: #ccc; padding: 10px; border: 1px dashed;">
<h2>Phases and Activities of the Waterfall Model of Software Development</h2>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Activites</th>
</tr>
</thead>
<tbody>
<tr>
<td>Requirements</td>
<td>Document all business requirements</td>
</tr>
<tr>
<td>Design
<td>Design the software architecture and user interface</td>
</tr>
<tr>
<td>Development
<td>Develop the software per the design and business requirements</td>
</tr>
<tr>
<td>Testing
<td>Verify that the software meets the design and business requirements</td>
</tr>
<tr>
<td>Release
<td>Release the software into production</td>
</tr>
<tr>
<td>Maintenance
<td>Fix bugs, add features, improve performance, etc.</td>
</tr>
</tbody>
</table>
</div>
<p><br/>
</p>
<p>
This model is similar to what is often used in manufacturing and engineering, and works well when the requirements gathered at the beginning of the project do not change (or change very little). The model became popular for software development for a number of reasons, including its structured approach, clear delineation of roles and responsibilities, and suitability to estimation and scheduling. Perhaps most importantly, it forces the development team and the business team to agree on the details and scope of the project before any code is written. This last feature is especially important for development teams that are working on a fixed budget or schedule; changes to the documented and signed-off business requirements would necessarily add cost, time or both to the project.
</p>
<p>
In practice, however, it is seldom the case that the business and project requirements can be correctly captured in the early phases. Frequently the business requirements or processes will change during the course of the project. When the customer finally has a chance to see and interact with the software, near the end of the development phase, it is very common to find that a business requirement was not correctly or adequately documented. The customer may also find that once they have had a chance to interact with the software, that they become aware of a multitude of changes for improvement. Changes at this stage of the project are very costly because the change must start in the requirements phase and then trickle down to the current phase. The Agile Model of Software Development, by comparison, maintains a tight feedback loop with the customer through frequent releases of working software.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thirdstone.com/2011/12/the-waterfall-model-of-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Howto Secure WordPress</title>
		<link>http://www.thirdstone.com/2011/11/howto-secure-wordpress/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=howto-secure-wordpress</link>
		<comments>http://www.thirdstone.com/2011/11/howto-secure-wordpress/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 03:09:22 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.thirdstone.com/?p=4</guid>
		<description><![CDATA[As a WordPress blog owner or provider, you want to ensure that your site is as secure as possible. An insecure site can mean downtime, defacement, and (worst of all) lost users. We present here a short list of steps &#8230; <a href="http://www.thirdstone.com/2011/11/howto-secure-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As a WordPress blog owner or provider, you want to ensure that your site is as secure as possible. An insecure site can mean downtime, defacement, and (worst of all) lost users. We present here a short list of steps you can take to lock down your site.</p>
<ol>
<li>
First, your WordPress site will never be more secure than the server on which WordPress is running. If the server is not secure, then the following advice may do nothing to actually enhance security. See the How-To guides on Securing Linux and Windows for more details.
</li>
<li>Keep your WordPress software up-to-date. When security holes in WordPress and WordPress modules are found, they will be addressed and new versions released. By using the most recent software versions, you will ensure that your platform is not exposed to known hacks.
</li>
<li>
The default user account that is created with every installation of WordPress is the <i>admin</i> account. Unfortunately everyone, including hackers, know this and can easily launch a dictionary attack on your website to try and guess your password. If a hacker already knows your username that’s half the battle. It’s highly recommended to delete or change the admin account username. You can do this during installation, or by manually changing the user_login value in the wp_users database table.
</li>
<li>
Always use strong passwords for the WordPress administrative and database accounts.
</li>
<li>
Enable SSL on your web server, and then force all logins to be done over SSL. This will encrypt passwords during transmission. You can generate your own or purchase a commercial SSL certificate. Add this line to wp-config.php (before the require of wp-settings.php): <i>define(&#8216;FORCE_SSL_ADMIN&#8217;, true);</i>
</li>
<li>
Protect your wp-config file. It should not be accessible from a web browser. Enter these lines into a .htaccess file in the same directory as wp-config.php:<br />
<code><br />
&lt;Files wp-config.php&gt;<br />
&nbsp;&nbsp; Order Allow,Deny<br />
&nbsp;&nbsp; Deny from all<br />
&lt;/Files&gt;<br />
</code></p>
<p>Then, set the permissions for both .htaccess and wp-config.php to <i>640</i>.</p>
<p>> chmod 640 .htaccess<br />
> chmod 640 wp-config.php
</li>
<li>
Generate unique authentication keys for wp-config.php. The keys provided by WordPress in your configuration file work fine, but your site will be more secure to attacks if you generate your own random keys (the important word being &#8220;random&#8221;). Visit <cite>https://api.wordpress.org/secret-key/1.1/salt/</cite> and copy the 8 generated lines into wp-config.php, overwriting the 4 lines that define AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY and NONCE_KEY.
</li>
<li>
Change the default WordPress database table prefix. This is to secure your installation against hacks, such as SQL injection attacks. Set $table_prefix in wp-config.php. Make sure to add an underscore at the end of the prefix. If you have already installed WordPress, the WP Security Scan plugin can be used to change the database table prefix.
</li>
]]></content:encoded>
			<wfw:commentRss>http://www.thirdstone.com/2011/11/howto-secure-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

