Scrum-and-XP-from-the-Trenches#04: Sprint Demo & Retrospective

Last session we covered the following:

  • PART FIVE – How we Communicate Sprints
  • PART SIX – How we do Sprint Backlogs
  • PART SEVEN – How we Arrange the Team Room
  • PART EIGHT – How we Do Daily Scrums

You can check it from here Scrum-and-XP-from-the-Trenches Session#03: Sprint Backlog & Daily Scrum.

In this session we will cover the following:

PART NINE – How we do Sprint Demo

  • The Sprint Demo (Sprint Review)
  • Why we insist that all sprints end with a demo(Review)
  • Checklist for Sprint Review
  • Public vs. Internal Sprint Review
  • Dealing with indemonstrable stuff

PART TEN – How we do Sprint Retrospectives

  • Why we insist that all teams do retrospectives
  • How we organize retrospectives
  • What can we do better next sprint?
  • Spreading lessons learned between teams
  • To change or not to change
  • Examples of things that may come up during retrospectives

PART ELEVEN – Slack Time Between Sprints

  • Slack Time Importance
  • Slack Time Examples
  • Lab Days

 

Next session isA, we will cover the following:

  • PART TWELVE – How we do Release Planning and Fixed-Price Contracts
  • PART THIRTEEN – How we combine Scrum with XP

Thank You, and always keep it simple & straightforward 🙂

 

Scrum-and-XP-from-the-Trenches Session#03: Sprint Backlog & Daily Scrum

Last session we covered Part 3: How we prepare for sprint planning and Part 4: How we do sprint planning. You can check the previous session from the following links:

Scrum-and-XP-from-the-Trenches Session#01: Intro & Backlog

Scrum-and-XP-from-the-Trenches Session#02: Sprint Planning

In our 3rd session we will cover the following:

PART FIVE – How we Communicate Sprints

  • Sprint Info Page

PART SIX – How we do Sprint Backlogs

  • Wall-based Task Boards
  • How the Task Board works
  • How the Burn-Down Chart works
  • Task-board Warning Signs
  • Hey, What about Traceability?!
  • Estimating Days vs. Hours

PART SEVEN – How we Arrange the Team Room

  • The Design Corner
  • Seat the Team Together!
  • Keep the Product Owner at Bay
  • Keep the Managers and Coaches at Bay

PART EIGHT – How we Do Daily Scrums

  • Stand Up Meeting (Daily Scrum)
  • How we Update the Task Board
  • Dealing with Latecomers
  • Dealing with “I don’t know what to do today”

Next session isA, we will cover the following:

  • PART NINE – How we do sprint demos
  • PART TEN – How we do sprint retrospectives
  • PART ELEVEN – Slack time between sprints

Thank you and Keep it simple & straightforward! 🙂

MVC 4.0: Ajax Search with JSON and Client-Side Templates

I talked before about Ajax search but it was using Helper Methods, here we will see how to implement Ajax Search using JSON and Client-Side Templates.

Mustache Client-Side Template

The following code is an example using Mustache, a template library we will use in this post:

<span class="detail">
     Rating: {{AverageReview}}
     Total Reviews: {{TotalReviews}}
</span>

This template would work against an object with AverageReview and TotalReviews properties.
When rendering templates with Mustache, the templates place the values for those properties in their proper location. You can also render templates against an array of data. More documentation for Mustache is available at https://github.com/janl/mustache.js.

To begin writing templates, you can include a script reference to Mustache in the layout view:


<script type="text/javascript" src="~/Scripts/mustache.js"></script>

Now this is where templates come into play. A template is markup embedded inside a script tag. The following code shows a template, as well as the search result markup where the results should display:

<script id="artistTemplate" type="text/html">
<ul>
        {{#artists}}
	<li>{{Name}}</li>

        {{/artists}}</ul>

</script>
<div id="searchresults"></div>

Notice that the script tag is of type text/html.

Modifying the Search Form

We will not use Ajax.BeginForm helper method instead we will write it from scratch.

<form id="artistSearch" method="get" action="@Url.Action("ArtistSearch", "Home")">
    <input type="text" name="q" data-autocomplete-source="@Url.Action("QuickSearch", "Home")" />
    <input type="submit" value="search" />
    <img id="ajax-loader" src="~/Content/Images/ajax-loader.gif" style="display:none"/>
</form>

Without the helper you’ll also need to write your own JavaScript code to request the search result from the server. You’ll place the following code inside your view or place it in outside script file:

$("#artistSearch").submit(function (event) {
    event.preventDefault();
    var form = $(this);
    $.ajax({
        url: form.attr("action"),
        data: form.serialize(),
        beforeSend: function () {
            $("#ajax-loader").show();
        },
        complete: function () {
            $("#ajax-loader").hide();
        },
        error: searchFailed,
        success: function (data) {
            var html = Mustache.to_html($("#artistTemplate").html(),
            { artists: data });
            $("#searchresults").empty().append(html);
        }
    });
});

The to_html method of Mustache combines the template with the JSON data to produce markup. The code takes the template output and places the output in the search results element.

Thank you,
Keep It Simple and Straightforward 🙂
~:H}{H:~