<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.8.4" -->
<rss version="0.92">
<channel>
	<title>Programming Practices</title>
	<link>http://bolour.com/blog</link>
	<description></description>
	<lastBuildDate>Mon, 14 Sep 2009 18:17:57 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>Update Succession in Replicated Key-Value Stores</title>
		<description>In an earlier blog we looked at the use of vector clocks for keeping track of temporal relations between events in an asynchronous event system. To recap:
In an asynchronous event system each event is marked by a node-clock pair; intra-node temporal relations between events are based on clock values at ...</description>
		<link>http://bolour.com/blog/2009/09/update-succession-in-replicated-key-value-stores/</link>
			</item>
	<item>
		<title>Vector Clocks for Representing Temporal Relations between Distributed Events</title>
		<description>In this blog I'll review the use of vector clocks for comparing the times of occurrence of dispersed events in a distributed system. Vector clocks are well-known in the literature, and there are plenty of resources on the net about them. See, for example, the Wikipedia entry about them for ...</description>
		<link>http://bolour.com/blog/2009/09/vector-clocks-for-representing-temporal-relations-between-distributed-events/</link>
			</item>
	<item>
		<title>The Google App Engine Data Model</title>
		<description>Decades ago in my college database class we learned about relational databases, network databases, and hierarchical databases. Back then, relational was cool. And hierarchical was definitely passé. Today, hierarchical is making a comeback with the Google App Engine (GAE). Here is a brief overview.

In GAE, persistent data for a given ...</description>
		<link>http://bolour.com/blog/2009/06/the-google-app-engine-data-model/</link>
			</item>
	<item>
		<title>Iterative Time-Boxing</title>
		<description>Iterative time-boxing, or ITB for short, is the strategy of strictly time-boxing successive stages of work on a software requirement. In this note, I'll contrast ITB as a planning technique with conventional estimation planning for iterative and incremental development (IID), and consider its effective use.

Agile IID typically works like this: ...</description>
		<link>http://bolour.com/blog/2008/08/iterative-time-boxing/</link>
			</item>
	<item>
		<title>Monads through Pictures</title>
		<description>Here is an excerpt from the introduction to my recent write-up on monads.

Monads in functional programming provide a framework for aspect-aware computations to be composed to build higher-level aspect-aware computations. An aspect-aware computation is some basic computation that has been enhanced, augmented, or, more generally, just transformed, to become aware ...</description>
		<link>http://bolour.com/blog/2007/02/monads-through-pictures/</link>
			</item>
	<item>
		<title>Some Consequences of Pull</title>
		<description>There's been a lot of interest recently in the application of lean principles to software development.  See for example the 2003 book Lean Software 	Development: An Agile Toolkit for Software Development Managers by Mary and Tom Poppendieck. A basic principle of lean thinking is pull. In pull, the materials ...</description>
		<link>http://bolour.com/blog/2006/10/some-consequences-of-pull/</link>
			</item>
	<item>
		<title>Task Dependencies in Plans</title>
		<description>The GANTT chart, as embodied in Microsoft Project, has become the de facto method of representing software development plans in many organizations. This is unfortunate. For, the precise temporal positioning of all tasks within a timeline is seldom necessary for managing the progress of a software project.

GANTT charts reinforce two ...</description>
		<link>http://bolour.com/blog/2006/10/task-dependencies-in-plans/</link>
			</item>
	<item>
		<title>Code Stewardship</title>
		<description>The benefits of collective code ownership are well-known.  Everyone in the team needs to be able to contribute to every part of the code base. But collective code ownership has an Achilles heel. The quality of the code can degrade as team members try to evolve unfamiliar parts of ...</description>
		<link>http://bolour.com/blog/2006/10/code-stewardship/</link>
			</item>
	<item>
		<title>Iteration Pipelining</title>
		<description>Iterative and incremental development (IID) is the established practice for dividing software projects in time. IID is often interpreted  to mean a succession of complete development cycles, meaning that each iteration includes within its temporal boundaries the analysis, design, implementation, and deployment of the features produced in that iteration.

But ...</description>
		<link>http://bolour.com/blog/2006/10/iteration-pipelining/</link>
			</item>
	<item>
		<title>A View of Development Roles</title>
		<description>Specialization in teams allows team members to do what they are good at and what they like to do. There are at least three types of specialization in software development teams: functional specialization, subsystem specialization, and technology specialization. Here I'd like to focus on functional specialization. A role is a ...</description>
		<link>http://bolour.com/blog/2006/10/a-view-of-development-roles/</link>
			</item>
</channel>
</rss>
