It’s one thing clearing your tracks, but make sure you clear out index.dat too

Readers who are sensitive to shocking content should stop reading now – the following screenshot contains text that might offend!

I am asked on a rather regular basis to “fix” laptops and desktop. Typically they’ve started running slower or have started to automatically run applications that perform untoward actions. “Internet Security 20xx”-type of applications seem to be more common; certainly the last 5-6 laptops that I’ve been asked to fix have had some variation installed. If you’re running good anti-virus software, you don’t need anything else. If you’re browsing the web and are suddenly told “your computer is infected, click here to fix it”…it’s probably a hoax.

Today, I was invited to deal with a blue screen of death on a friend’s laptop. On the surface, it looked like it was a driver issue stemming from Nero. However further inspection revealed a sordid history!

I use CCleaner as part of my regular Windows maintenance. It’s a great application that will remove unwanted files from your PC, without actually breaking it. Fewer files on your hard drive mean that anti-virus, malware scanners, etc. can run a little faster – they’ve got fewer files to scan.

By default, CCleaner will clear any temporary internet files left behind by your browser of choice. My friend was using Internet Explorer…whilst the temporary files had been cleaned up, the index.dat file had not. If you are using Windows 7, the index.dat file can be found here: C:\Users\<>\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5 Essentially, it contains a list of the sites you’ve visited, even if you’ve cleared out your temporary internet files.

Upon inspection of the index.dat file, it was soon clear why the laptop was experiencing problems!

Busted. Next time, my friend will remember to check the index.dat box in CCleaner! I should note that this isn’t the most offensive list of sites that I’ve discovered whilst cleaning up a PC – I couldn’t bring myself to take a screenshot from that PC!

Further reading:

Browser history can help determine rebuild vs clean up, but can be revealing…
“It wasnae me” – browser history, real world example 2

DDD9 – Agenda and Session Abstracts #DDD9

DeveloperDeveloperDeveloper 9 is being held on the 29th of January 2011 at Microsoft’s Thames Valley Park campus in Reading, UK. Registrations filled up within 12 minutes – I think the only way we could better that is by throwing more hardware at it.

Thanks to everybody who submitted sessions, voted and took part in the registration process. It is worth getting on the waitlist as it’s actively managed – folks that cancel free up their place for others, there’s a queuing system in place so you can keep track of your position.

I am pleased to see a mix of new and old (as in spoken at previous DDD events!) speakers! DDD is all about community, it’s about sharing your learning experiences with your peers. New speakers are the life-blood not just of DDD events, but of user groups. DDD audiences are tend to be forgiving, new speakers are given the break they need to hone their skills and go on to delivery that second killer presentation!

There are some great topics, including a some from respected authors. A few of the sessions have been run elsewhere, which tells us how good the speaker is and how topical the session is too.

There will be two guests making appearances: Barry Dorrans (author of Beginning ASP.NET Security) and Jon Skeet (author of C# In Depth and Real World Functional Programming)

In the interests of saving the planet and keeping costs down, it’s unlikely that we’ll have copies of the session abstracts available. If you need to, please print this information and take it with you to DDD9!

I will print the abstracts out and will stick copies on the doors to the respective rooms.

09:30 – 10:30
Go Asynchronous With C# 5.0 – Liam Westley
Anders Hejlsberg announced the Visual Studio Async CTP at PDC 2010.

This CTP means you don’t need to create callback functions anymore and can write code in the same way as if it were synchronous. The compiler will do all of the heavy lifting for you.

public async void GetDDD9Sessions()
{
var ddd = “http://ddd.com/ddd9/Sessions.aspx”;

var sessions = await new WebClient().GetSessionsAsync(new Uri(ddd));
}

In this session we’ll see how the GetDDD9Sessions method works and why it allows you to make a pot of tea while it runs.

More info on the Visual Studio Async CTP, including download details at:
http://blogs.msdn.com/b/csharpfaq/archive/2010/10/28/async.aspx

.Net Collections Deep Dive – Gary Short
The .Net framework provides a rich set of collection classes, but how much do you really know about them? In this presentation we’ll take a deep dive into the .Net 4.0 collection classes and examine which are best for what scenario and why. By the end of the presentation, you’ll no longer be happy just reaching for the same old collection you always had before. Instead, you’ll be armed with the information required to pick the best collection for your needs.

Functional Programming in C# – Oliver Sturm
C# introduced a number of language features that finally make it very easy to employ a functional style of programming. However, from the perspective of an imperative programmer, there are lots of questions surrounding functional programming. Why would I want to do it at all? Should I drop all state information in my apps? What useful functional patterns are applicable to C#? This session uses many practical examples and some theory to answer these questions, and it requires a good understanding of C# 3.0 language features.

AJAX with jQuery – George Adamson
Getting started on AJAX with jQuery:
We’ll hurtle straight into using jQuery to handle your AJAX; Rummage about in code, ‘hijaxing’ links and doing fashionable things like Progressive Enhancement; JSON and JSONP; solutions to get around the ‘Same Domain Policy’. We’ll work through a bunch of examples to POST and GET data from various sources. If there’s time we’ll explore more of jQuery’s AJAX methods and events and maybe even look at live ajax event handling in large single-page apps.

George’s presentation style is entertaining and leaps along at quite a rate. (If you’ve attended George’s Get Going with JQuery session then you have an idea what you’re in for.) There will be a few minutes’ refresher on jQuery basics then it’s non-stop AJAX. Some experience with JavaScript will help but if your world is C# and curly brackets then I’m sure you’ll be as happy as a pig in, er, shift+]

10:40 – 11:40
Monads! What are they and why should I care? – Mike Hadlow
Or: How to bend Linq syntax to your will.

These days, monads are the “celebrities of programming language theory”. But they also inspire fear in the hearts of lowly imperative programmers like myself. However they are a very useful and powerful abstraction and they pop up everywhere. C#’s Linq syntax is Monadic, for example. Having an understanding of Monads will give you the conceptual tools to greatly simplify many programming challenges, from dealing with nulls and managing state, to asynchronous programming and parsing. This talk will be mostly C#, but I will also be introducing a little F# and even some Haskell.

Real World Application Development with NHibernate, FluentNHibernate and Castle Windsor – Chris Canal
In this session we will look at how we can use a number of popular .Net OSS projects to develop a real world application. Based on production code, we will look at how using a combination of NHibernate, FluentNHibernate, Castle Windsor and a number of other OSS (AutoMapper, MvcContrib, FluentMvc) to reduce the friction of application development and remove a lot of infrastructural concerns. We will explore how we can leverage these tools to drive a convention based development experience and make it easier for ourselves and team mates to write applications and deliver what the client wants.

CQRS, Fad or Future? – Ian Cooper
Command-Query-Responsibility-Seperation (CQRS) is the new ‘hotness’ but beyond a desire to use the latest ‘fad’ what might actually lead you to adopt this approach over a conventional layered architecture. We will look at the business drivers behind command and query separation as well as a technique known as event sourcing. We will also look at steps to begin moving your application to CQRS

Rewriting software is the single worst mistake you can make – apparently – Phil Collins
Joel Spolsky once said that rewriting software from scratch is the single worst strategic mistake a software development company can ever make.[1] We all know of the Netscape story and the never-released v5.0. So as a developer how do you react when you’re faced with the fact that there is little other choice than do exactly what you’re told you should never do.

During this session I will describe how as a team we are managing to beat the odds and rewrite our main flagship product from a legacy platform into VB.net; as well as describing the decisions behind the choice of language, the choice of development methodology, how we built the project plan, how we learnt from our mistakes and our successes, how working with Bournemouth University and their study of our rewrite has helped us, and whether or not we still think it’s something you should never do.

[1] Joel Spolsky, Things You Should Never Do, Part I
http://www.joelonsoftware.com/articles/fog0000000069.html

12:00 – 13:00
A Primer to RavenDB – Rob Ashton
RavenDB is a relatively new document database written by Ayende Rahien as an open source .NET project.

This is quite exciting as it means a focus on being able to talk to a document database with your chosen .NET language and support for writing custom map/reduce functions in your chosen .NET language too.

This means up front queries written using familiar LINQ syntax, and the ability to write plug-ins for RavenDB in a familiar environment.

In this session, I aim to give an introduction as to what RavenDB is, how to use it, and give a brief comparison to the other popular NoSQL projects that have appeared on the .NET scene in recent times.

Functional Alchemy: Tricks to keep your C# DRY – Mark Rendle
C# 3.0 and LINQ have made anonymous delegates and closures a hot topic. C# 4.0 improves on them. But these “functional” features have applications beyond messing about with IEnumerable. In this session I’ll present 10 simple and not-so-simple uses of first-class functions to help cut down on repeated code and improve maintainability; hopefully you’ll discover a new and exciting way of approaching coding problems.

The main thrust of it is that F# is cool and groovy but there’s a lot of mileage in functional-style programming in C#, which people are using every day, so let’s look at some cool examples there.

Learning from the HTML5 Boilerplate – Dan Maharry
The best place to start your development is on solid foundations and in the web world, that means with a sound knowledge and understanding of HTML and script and those little browser quirks and tweaks which mean you can wrestle the best performance once server-side code has done its job. This session looks at the HTML5 Boilerplate project, the tips and tricks we can learn from it (cross-browser normalization, performance optimizations, even optional features like cross-domain Ajax and Flash) and suggests some additions we can add to it on the server-side.

Writing Maintainable Tests for Selenium – David Burns
Selenium is one of the most widely used testing frameworks in the world. It has great support for driving a wide range of browsers and writing tests for it is extremely easy. People with little to no Selenium experience can write/record tests with little to no effort.

It can be very easy to write brittle or hard to maintain tests – simple UI changes can require large amounts of work on the tests.

Imagine that you have 1000 tests and all your tests require you to login before completing a bit of work.

If someone on your team changes the ID of the username text box and all your tests will start failing.

Updating 1000 tests is going to be a lengthy, tedious process – something that you would want to avoid!

This talk will show how to create maintainable Selenium tests using the Page Object Model, with the goal of allowing even non-technical members of the team to be able to write new tests.

14:00 – 15:00
What’s New In ASP.NET MVC 2.0 and 3.0 – Andy Gibson
ASP.NET MVC has been making waves over the past 2 years within the ASP.NET community and quite rightly so with features such as promoting separation of concerns, strongly typed views and a great routing system but it doesn’t stop there. ASP.NET MVC 2.0 is now publicly available and is also being shipped with Visual Studio 2010 and hot on its heels is version 3.0 which adds Microsoft’s new Razor view engine to the mix. But what new features have been brought to the table? What has changed? And most importantly, how will you be affected by upgrading from 1.0 or even 2.0?

This session will bring you up to speed with all the information you need to know delivered through slides and more interestingly, live demos. Topics covered include (but not limited to)
– Razor
– Model-Validator Providers
– Optional URL Parameters
– Template / HTML Helper improvements
– Improved Dependency Injection / Inversion of Control integration
– NuGet Package Manager
– Additions and updates to MVC Attributes
– Visual Studio integration improvements
– Breaking changes from MVC 1.0/2.0
– Pros and cons to MVC
– To upgrade or not to upgrade (or simply, Advice)

We will look at features brought in by both v2.0 and v3.0 of the MVC framework and provides a good source of information for those looking to learn more or to upgrade existing projects.

Is your code S.O.L.I.D ? – Nathan Gloyn
Everybody keeps on about SOLID priniciples but what are they? and why should you care?

In this session I’ll aim to walk through each prinicple telling you about that prinicple and examing why you should use it.

Once we’ve talked about the principle in theory we’ll look to how we can put it into practice.

Behavioural Driven Development (BDD) with F# – Phillip Trelford
BDD is an Agile methodology that aims to get business and development folks collaborating.
F# is the powerful new programming language from Microsoft bundled with Visual Studio 2010.
Use both to test your .Net code for fun and profit!

Scenario: Deliver customer value
Given collobaration with customers to produce user stories and acceptance tests
And some awesome .Net code
When a BDD framework that executes plain text specifications like SpecFlow or TickSpec
And F# to write the tests
Then profit!

Writing tests with F# is a great way to learn the language, this talk will take you through common steps with live code examples.

Computer, earl grey tea, hot – John Price
Ok, so this is a little more difficult to arrange with home automation, but controlling lights, heating, curtains and just about every other device in your house just by talking to it, is actually Science Fact. Take a tour around our automated house and see whats possible with a little effort.

15:10 – 16:10
CSS is code, how do we avoid the usual code problems? – Helen Emerson
CSS has a lot of the same problems that application code has but none of the language features that help us keep out of trouble. Start writing anything complicated and you end up with problems like dependencies, cohesiveness and creating the right abstractions. It’s pretty easy to end up with CSS that is impossible to predict unless you understand it all. I’m going to tell the tale of my team’s journey to write CSS that is flexible, easy to understand and easy to change.

From .NET to Rails, A Developer’s Story – Colin Gemmell
In May 2010 I changed jobs, leaving the land of .NET to the world of Ruby on Rails. In this talk I will go over what I found easy, hard or just completely misunderstood when starting with Ruby and Rails. While focusing on my experiences we will also look at the differences between .NET development and Ruby development.

Expression Blend for WPF and Silverlight Developers- Sam Bourton
Not many WPF/Silverlight developers are using Expression Blend yet; but those that are, couldn’t do without it…

In this fast-paced talk and demonstration I will be showing how to use Blend in your everyday design and development tasks to rapidly create visually engaging User Interfaces and controls, and dramatically increase your productivity in building WPF/Silverlight front-ends.

We will cover real-world practical tasks such as: How to use the Blend environment, access key functionality, and use the different types of controls; Create and manage Resources and resource dictionaries within Blend; Create, edit, and apply Styles and Control Templates to different controls; Bind controls to sample and runtime ViewModel data and Commands; Make your applications stand out with Animations, Visual States, Effects, Fluid Layouts, and Behaviors; and some random tips and techniques I’ve learnt along the way.

While the presentation is targeted at developers with WPF/Silverlight experience who have not yet gotten to grips with Blend, if you’re new to WPF/SL it will be a great introduction, and if you’re familiar with Blend already then hopefully you will pick up something new.

Enforcing Code ‘Beauty’ With StyleCop – Guy Smith-Ferrier
n May 2008 Microsoft released StyleCop. StyleCop does for C# source code what FxCop does for assemblies – it applies ‘good practice’ rules to your source code. This means all those controversial code beauty issues like spaces, where to put curly braces, how and when to use blank lines and over 150 similar rules. This session gets you started using StyleCop, investigates a selection of rules, shows how to integrate StyleCop into Visual Studio and your build process and finally shows how to write your own custom rules. This is a low tech session on an essential tool that all C# developers should be using.

16:20 – 17:20
Beginners Guide To Continuous Integration – Paul Stack
As developers who work in a team, we need to continually make sure that code we check in to source control works integrates with our existing code. In order to do this we need to get feedback from user check ins. If we don’t test code integration how do we know that our code still works?
CI processes and CI tools can help us to do this in an effective way. In this session I will cover

  • Benefits of CI
  • Different types of CI tools
  • Tips on choosing the right CI tool
  • CI as a form of feedback to development teams
  • CI as a tool for release preparation

Developing Windows Phone 7 Applications using Silverlight – Kris Athi
This session will look at using Silverlight as your weapon of choice to target the Windows Phone 7 platform. This session will focus more on the platform specifics including:

  • Theming
  • Input & Navigation
  • Push Notifications
  • Location Service
  • Connected Apps (WCF)
  • Lifecycle (Tombstoning etc)
  • Launchers, Choosers

We will also take a look at how to architect an application using the MVVM design pattern.

Introduction to PowerShell – James Boother
So you’ve heard SysAdmins and DBAs discuss PowerShell but you’re not sure what it is or how to use it. Powershell is a powerful scripting engine that can be used to automate admin tasks making more efficient use of your time. This session will introduce Powershell so that you can add it to your toolbelt. I’ll discuss some general admin tasks that can easily be automated with PowerShell and look at some developer specific tasks that can benefit from PowerShell knowledge.

Mobile Panel – From iPhone to HTML 5 to Windows Phone 7 to Android – Chris Hardy
A mobile panel featuring some of the top mobile application developers in the UK. Should create some interesting discussions!

DDD 9 – voting closes 24/12/2010

With over 80 session submissions, DDD9 promises to be every bit as good as the last eight events and the regional DDDs too!

But we need your help!

What?
DeveloperDeveloperDeveloper 9

When?
29th of January 2011

Where?
Microsoft Thames Valley Park, Reading

How much does it cost?
Nothing. Nada. It’s totally free to attend. You’ll get a free lunch and coffee/tea throughout the day. And we’ll try to get some t-shirts and swag to throw at you (within the bound of Health & Safety of course!) Computer Manuals will be there too, so you’ll be able to buy discounted books on the day!

Who?
Well, it’s up to you! Please head over here and vote for the sessions you’d like to see make it on to the agenda. DDD is a democratic event, we don’t pick the sessions, you do!

Here’s what we’re asking you to vote for (in alphabetical order!):

.Net Collections Deep Dive
A Beginner’s Guide to Microcontrollers
A Primer to RavenDB
A Quantum of Computing
AJAX with jQuery
Asymptotics and Alogrithms – What You’ve Forgotten Since University
Automating Testing With Windows Virtual PC
Azure and the new Application Lifecycle Management
Azure Table Service – getting creative with Microsoft’s NoSQL datastore
Before and Beyond Scrum
Beginners Guide To Continuous Integration
Behavioural Driven Development (BDD) with F#
Being Dynamic with Ruby
Building a Silverlight BI Dashboard
Cache Out with Windows Server AppFabric
Chaotic World of Async Programming
Clone Wars – Application vs SQL Cluster
Computer, earl grey tea, hot
Concurrency using functional patterns in C#
CQRS, Diving Deeper?
CQRS, Fad or Future?
Cross-eyed mobile development
CSS is code, how do we avoid the usual code problems?
Data Mining the Social Web
Database Administration for the Developer
Developing Windows Phone 7 Applications using Silverlight
Documentation driven development
Dynamic C# 4.0 – the provider side
Dynamic Consumption in C# 4.0
Dynamic Data – what is it and why should I care?
Elegant MVC with Spark – The way views were meant to be
Enforcing Code ‘Beauty’ With StyleCop
Enforcing process through source control
Expression Blend for WPF and Silverlight Developers
Fitting a new kitchen sync – oData, oData, oh oh oh!
From .NET to Rails, A Developer’s Story
From The Malverns, From The PC, To the Phone
Functional Alchemy: Tricks to keep your C# DRY
Functional Magic
Functional Programming in C#
Get cracking with jQuery
Getting dirty with AppServer Fabric and WF4
Go Asynchronous With C# 5.0
Going crazy with StructureMap
Guerrilla tactics – Performance Testing MS SQL Server Applications
Haml and Sass
How can I add my own custom step to a TFS 2010 build, or do I even need to try?
How To Achieve World(-Ready) Domination In Silverlight 4
How to create Data Driven Silverlight Apps with no Code!
How to Eat an Elephant
How to Manage Your Manager
HTML5(.2) : The language of the cloud?
Hudson
Intro to jQuery Mobile
Introduction to Android Development using Monodroid
Introduction to PowerShell
Is NoSQL The Future of Data Storage?
Is the free lunch back ?
Is your code S.O.L.I.D ?
Its a Kind of Magic
Learning from the HTML5 Boilerplate
Lucene as a primary data store
Media Center and Windows Home Server – Marriage in your living room
Mobile Panel – From iPhone to HTML 5 to Windows Phone 7 to Android
Monads! What are they and why should I care?
NLog – Getting the Best From Your Logs
Open Web Standards: democratising and future-proofing the Web
PRISM 4 with a dash of MEF
Real World Application Development with NHibernate, FluentNHibernate and Castle Windsor
Real-world Dynamic C#
Rewriting software is the single worst mistake you can make – apparently.
Scaling out your data for Reporting
SharePoint 101 – The Ghostables in the Machine …
Snake Charming : IronPython for fun and profit
So you want to try scrum
Something kind of Oooh
Taking Efficiency One Step Further – F#
Testing Ruby and Rails
The dark parts of Mono
Touch Me, Stretch Me, Squeeze Me: The Windows 7 WPF Multi-Touch Story
WF4 Deep Dive
What your apps get up to when you’re not watching
What’s New In ASP.NET MVC 2.0 and 3.0
Writing Cross-Platform XAML Applications with WPF, Silverlight and WP7
Writing Maintainable Tests for Selenium

Phew! That’s some list! Now, could you imagine and event with all of those sessions on the agenda? We can! However, we’ve only got capacity for 25% of those – please vote for your favourite sessions!

More details can be found here:
http://developerdeveloperdeveloper.com/ddd9

Vote here!

Event: DDD Dublin 9th Oct 2010, NDRC #DDDIE10

What?
DeveloperDeveloperDeveloper Dublin – the second outing for the DDD brand to Ireland!

When?
9th of October 2010

Where?
The event takes place at the NDRC, Crane Street, The Digital Hub, Dublin 8.

How much does it cost?
Nothing. Nada. It’s totally free to attend. You’ll get a free lunch and coffee/tea throughout the day. The event is made possible by the kindness of Microsoft, the NDRC and the Digital Hub. There’s even free WiFi available, so you can tweet during the event!

Who?
Ben Hall -TDD Painkillers
Jackie Pollock – Developing Workflows : Things I’ve learnt along the way
Mark Rendle – Functional Alchemy: Tricks to keep your C# DRY
Niall Flanagan – The Incidental DBA
Colin Gemmell – From .NET to Rails, A Developer’s Story
Micheal O Foghlu – Cross Platform Apps (Windows Phone 7)
Anne-Marie Charrett – Discovering your inner Tester
Liam Westley – Commercial Software Development : Writing Software Is Easy, Not Going Bust Is The Hard Bit
Billy Stack – A Practical View of Domain Driven Design
Daniel May – Learning Software Development the ‘right’ way
Craig Nicol – HTML5(.1) : The language of the cloud?
Nathan Gloyn – So you want to try Scrum?

DevExpress and Telerik have kindly provided us with swag in the form of wearables and product licenses – register and attend the event for a chance of winning a high-value prize! We should have plenty of wearables, so your chances of going home with something are high!

More details can be found here:
http://developerdeveloperdeveloper.com/dddie10

Event – UK – 16/07/2010 – Bournemouth Pier! #nxtgenug

NxtGenUG are pleased to announce their annual conference Fest10 will be taking place on Bournemouth Pier this year on Friday the 16th July 2010. It’s a great opportunity to take the family to the Seaside for the weekend, and catch up on technology. The best thing is attendance to the conference is free to members and just £59.95 for non-members.

Speakers
We have a great speaker line up this year, Google’s Jon Skeet will be talking about C#, Microsoft’s Glenn Block is coming over from Redmond to talk about MEF, Ryan Simpson will be giving us the lowdown on F#. We’ll also be having NxtGenUG veterans Mike Taulty, on OData and Chris Hay on Azure, Plus Marcus Perryman will be talking about one of the hottest technologies this year Windows Phone 7.

You can find a list of speakers and their sessions here:
http://www.nxtgenug.net/fest10/Sessions.aspx

To register simply click here and follow the instructions on screen.

Parking, Hotels and Timings
Full details about parking, hotel accommodation and timings for the day can be found on the Fest10 site. The nearest parking for Bournemouth Pier is either in the Bournemouth International Centre (BIC – 20) car park, the Bournemouth Pavilion car parks (19/24) or the car park next to the Royal Bath hotel (18). However, there is also further car parking available at Eden Glen car park (21), Winter Gardens car park (22) and Beacon Road car park (25).

For Hotels, the RusselCourt is where the evening entertainment will be. Quote: NxtGenUG when booking, otherwise Bournemouth has a large amount of hotels, including the Best Western Hotel Royale.

Geek Dinner
It’s the Fest10 geek dinner – normal rules apply – pay for your own food/drink, and engage in great conversation, and eat fish and chips at Harry Ramsden’s. To register for the geek dinner, click here.

Post Fest Party
We’ll also be having a post Fest Party at the RusselCourt Hotel – If you’ve brought your family down for the weekend feel free to bring them along. Just register on the site and drop us an email on how many people you’ll be bringing with you to enquiries@nxtgenug.net

Sponsorship
NxtGenUG would like to thank DevExpress, our gold sponsor, along with Microsoft, RedGate, PluralSight and Apress for their support in making this event possible.

26th – 30th July 2010 – London – Professional Scrum Developer (.NET) – 50% discount

On the 26th – 30th July in Microsoft’s offices in London Adam Cogan from SSW will be presenting the first Professional Scrum Developer course in the UK. Martin Hinshelwood will be teaching this course along side Adam and it is a fantastic experience. You are split into teams and go head-to-head to deliver units of potentially shippable work in four two hour sprints.

Update 18th June 2010SSW is offering a massive 50% discount to make this 5 day course only £1,168…I have been told that this depends on availability so it may go back up.


ProfessionalScrumDeveloper_200px[3]

The Professional Scrum Developer course is the only course endorsed by both Microsoft and Ken Schwaber and they have worked together very effectively in brining this course to fruition. This course is the brain child of Richard Hundhausen, a Microsoft Regional Director, and both Adam and I attending the Trainer Prep in Sydney when he was there earlier this year. He is a fantastic trainer and no matter where you do this course you can be safe in the knowledge that he has trained and vetted all of the teachers. A tools version of Ken if you will Wink
LondonCallToAction[1]

If you are outside the UK you can find out where this course is being run near you. Make sure you have a look at the scrum guide from Scrum.org and the syllabus from Accentient.


What is the Professional Scrum Developer course all about?

imageProfessional Scrum Developer course is a unique and intensive five-day experience for software developers. The course guides teams on how to turn product requirements into potentially shippable increments of software using the Scrum framework, Visual Studio 2010, and modern software engineering practices. Attendees will work in self-organizing, self-managing teams using a common instance of Team Foundation Server 2010.

Figure: Sam and Ken discuss the PSD Course

Who should attend this course?

This course is suitable for any member of a software development team – architect, programmer, database developer, tester, etc. Entire teams are encouraged to attend and experience the course together, but individuals are welcome too.

Attendees will self-organize to form cross-functional Scrum teams. These teams require an aggregate of skills specific to the selected case study. Please see the last page of this document for specific details.

Product Owners, ScrumMasters, and other stakeholders are welcome too, but keep in mind that everyone who attends will be expected to commit to work and pull their weight on a Scrum team.

What should you know by the end of the course?

Scrum will be experienced through a combination of lecture, demonstration, discussion, and hands-on exercises. Attendees will learn how to do Scrum correctly while being coached and critiqued by the instructor, in the following topic areas:

  • Form effective teams
  • Explore and understand legacy “Brownfield” architecture
  • Define quality attributes, acceptance criteria, and “done”
  • Create automated builds
  • How to handle software hotfixes
  • Verify that bugs are identified and eliminated
  • Plan releases and sprints
  • Estimate product backlog items
  • Create and manage a sprint backlog
  • Hold an effective sprint review
  • Improve your process by using retrospectives
  • Use emergent architecture to avoid technical debt
  • Use Test Driven Development as a design tool
  • Setup and leverage continuous integration
  • Use Test Impact Analysis to decrease testing times
  • Manage SQL Server development in an Agile way
  • Use .NET and T-SQL refactoring effectively
  • Build, deploy, and test SQL Server databases
  • Create and manage test plans and cases
  • Create, run, record, and play back manual tests
  • Setup a branching strategy and branch code
  • Write more maintainable code
  • Identify and eliminate people and process dysfunctions
  • Inspect and improve your team’s software development process

What does the week look like?

This course is a mix of lecture, demonstration, group discussion, simulation, and hands-on software development. The bulk of the course will be spent working as a team on a case study application delivering increments of new functionality in mini-sprints. Here is the week at a glance:

image

Monday morning and most of the day Friday will be spent with the computers powered off, so you can focus on sharpening your game of Scrum and avoiding the common pitfalls when implementing it.

The Sprints

Timeboxing is a critical concept in Scrum as well as in this course. We expect each team and student to understand and obey all of the timeboxes. The timebox duration will always be clearly displayed during each activity. Expect the instructor to enforce it.

Each of the ½ day sprints will roughly follow this schedule:

Component Description Minutes
Instruction Presentation and demonstration of new and relevant tools & practices 60
Sprint planning meeting Product owner presents backlog; each team commits to delivering functionality 10
Sprint planning meeting Each team determines how to build the functionality 10
The Sprint The team self-organizes and self-manages to complete their tasks 120
Sprint Review meeting Each team will present their increment of functionality to the other teams ≤ 30
Sprint Retrospective A group retrospective meeting will be held to inspect and adapt 10

Each team is expected to self-organize and manage their own work during the sprint. Pairing is highly encouraged. The instructor/product owner will be available if there are questions or impediments, but will be hands-off by default. You should be prepared to communicate and work with your team members in order to achieve your sprint goal. If you have development-related questions or get stuck, your partner or team should be your first level of support.

Module 1: INTRODUCTION

This module provides a chance for the attendees to get to know the instructors as well as each other. The Professional Scrum Developer program, as well as the day by day agenda, will be explained. Finally, the Scrum team will be selected and assembled so that the forming, storming, norming, and performing can begin.

  • Trainer and student introductions
  • Professional Scrum Developer program
  • Agenda
  • Logistics
  • Team formation
  • Retrospective

Module 2: SCRUMDAMENTALS

This module provides a level-setting understanding of the Scrum framework including the roles, timeboxes, and artifacts. The team will then experience Scrum firsthand by simulating a multi-day sprint of product development, including planning, review, and retrospective meetings.

  • Scrum overview
  • Scrum roles
  • Scrum timeboxes (ceremonies)
  • Scrum artifacts
  • Simulation
  • Retrospective

It’s required that you read Ken Schwaber’s Scrum Guide in preparation for this module and course.

MODULE 3: IMPLEMENTING SCRUM IN VISUAL STUDIO 2010

This module demonstrates how to implement Scrum in Visual Studio 2010 using a Scrum process template*. The team will learn the mapping between the Scrum concepts and how they are implemented in the tool. After connecting to the shared Team Foundation Server, the team members will then return to the simulation – this time using Visual Studio to manage their product development.

  • Mapping Scrum to Visual Studio 2010
  • User Story work items
  • Task work items
  • Bug work items
  • Demonstration
  • Simulation
  • Retrospective

Module 4: THE CASE STUDY

In this module the team is introduced to their problem domain for the week. A kickoff meeting by the Product Owner (the instructor) will set the stage for the why and what that will take during the upcoming sprints. The team will then define the quality attributes of the project and their definition of “done.” The legacy application code will be downloaded, built, and explored, so that any bugs can be discovered and reported.

  • Introduction to the case study
  • Download the source code, build, and explore the application
  • Define the quality attributes for the project
  • Define “done”
  • How to file effective bugs in Visual Studio 2010
  • Retrospective

Module 5: HOTFIX

This module drops the team directly into a Brownfield (legacy) experience by forcing them to analyze the existing application’s architecture and code in order to locate and fix the Product Owner’s high-priority bug(s). The team will learn best practices around finding, testing, fixing, validating, and closing a bug.

  • How to use Architecture Explorer to visualize and explore
  • Create a unit test to validate the existence of a bug
  • Find and fix the bug
  • Validate and close the bug
  • Retrospective

Module 6: PLANNING

This short module introduces the team to release and sprint planning within Visual Studio 2010. The team will define and capture their goals as well as other important planning information.

  • Release vs. Sprint planning
  • Release planning and the Product Backlog
  • Product Backlog prioritization
  • Acceptance criteria and tests
  • Sprint planning and the Sprint Backlog
  • Creating and linking Sprint tasks
  • Retrospective

At this point the team will have the knowledge of Scrum, Visual Studio 2010, and the case study application to begin developing increments of potentially shippable functionality that meet their definition of done.

Module 7: EMERGENT ARCHITECTURE

This module introduces the architectural practices and tools a team can use to develop a valid design on which to develop new functionality. The teams will learn how Scrum supports good architecture and design practices. After the discussion, the teams will be presented with the product owner’s prioritized backlog so that they may select and commit to the functionality they can deliver in this sprint.

  • Architecture and Scrum
  • Emergent architecture
  • Principles, patterns, and practices
  • Visual Studio 2010 modeling tools
  • UML and layer diagrams
  • SPRINT 1
  • Retrospective

Module 8: TEST DRIVEN DEVELOPMENT

This module introduces Test Driven Development as a design tool and how to implement it using Visual Studio 2010. To maximize productivity and quality, a Scrum team should setup Continuous Integration to regularly build every team member’s code changes and run regression tests. Refactoring will also be defined and demonstrated in combination with Visual Studio’s Test Impact Analysis to efficiently re-run just those tests which were impacted by refactoring.

  • Continuous integration
  • Team Foundation Build
  • Test Driven Development (TDD)
  • Refactoring
  • Test Impact Analysis
  • SPRINT 2
  • Retrospective

Module 9: AGILE DATABASE DEVELOPMENT

This module lets the SQL Server database developers in on a little secret – they can be agile too. By using the database projects in Visual Studio 2010, the database developers can join the rest of the team. The students will see how to apply Agile database techniques within Visual Studio to support the SQL Server 2005/2008/2008R2 development lifecycle.

  • Agile database development
  • Visual Studio database projects
  • Importing schema and scripts
  • Building and deploying
  • Generating data
  • Unit testing
  • SPRINT 3
  • Retrospective

Module 10: SHIP IT

Teams need to know that just because they like the functionality doesn’t mean the Product Owner will. This module revisits acceptance criteria as it pertains to acceptance testing. By refining acceptance criteria into manual test steps, team members can execute the tests, recording the results and reporting bugs in a number of ways. Manual tests will be defined and executed using the Microsoft Test Manager tool. As the Sprint completes and an increment of functionality is delivered, the team will also learn why and when they should create a branch of the codeline.

  • Acceptance criteria
  • Testing in Visual Studio 2010
  • Microsoft Test Manager
  • Writing and running manual tests
  • Branching
  • SPRINT 4
  • Retrospective

Module 11: OVERCOMING DYSFUNCTION

This module introduces the many types of people, process, and tool dysfunctions that teams face in the real world. Many dysfunctions and scenarios will be identified, along with ideas and discussion for how a team might mitigate them. This module will enable you and your team to move toward independence and improve your game of Scrum when you depart class.

  • Scrum-butts and flaccid Scrum
  • Best practices working as a team
  • Team challenges
  • ScrumMaster challenges
  • Product Owner challenges
  • Stakeholder challenges
  • Course Retrospective

What will be expected of you and you team?

 
This is a unique course in that it’s technically-focused, team-based, and employs timeboxes. It demands that the members of the teams self-organize and self-manage their own work to collaboratively develop increments of software.

All attendees must commit to:

  • Pay attention to all lectures and demonstrations
  • Participate in team and group discussions
  • Work collaboratively with other team members
  • Obey the timebox for each activity
  • Commit to work and do your best to deliver

All teams should have these skills:

  • Understanding of Scrum
  • Familiarity with Visual Studio 201
  • C#, .NET 4.0 & ASP.NET 4.0 experience* 
  • SQL Server 2008 development experience
  • Software testing experience

* Check with the instructor ahead of time for the exact technologies

Self-organising teams

Another unique attribute of this course is that it’s a technical training class being delivered to teams of developers, not pairs, and not individuals. Ideally, your actual software development team will attend the training to ensure that all necessary skills are covered. However, if you wish to attend an open enrolment course alone or with just a couple of colleagues, realize that you may be placed on a team with other attendees. The instructor will do his or her best to ensure that each team is cross-functional to tackle the case study, but there are no guarantees. You may be required to try a new role, learn a new skill, or pair with somebody unfamiliar to you. This is just good Scrum!

Who should NOT take this course?

Because of the nature of this course, as explained above, certain types of people should probably not attend this course:

  • Students requiring command and control style instruction – there are no prescriptive/step-by-step (think traditional Microsoft Learning) labs in this course
  • Students who are unwilling to work within a timebox
  • Students who are unwilling to work collaboratively on a team
  • Students who don’t have any skill in any of the software development disciplines
  • Students who are unable to commit fully to their team – not only will this diminish the student’s learning experience, but it will also impact their team’s learning experience

 


LondonCallToAction[1]

If you are outside the UK you can find out where this course is being run near you. Make sure you have a look at the scrum guide from Scrum.org and the syllabus from Accentient.

059 – Claudio Perrone (@agilesensei) on presentations using storytelling

Podcast feed – subscribe here!

In this show, where no beer had been consumed (a-may-zing), I’ve taken Claudio Perrone aside and forced him to give me a one-2-one presentation! Claudio delivered an awesome lunchtime session at the Irish Software Show: Crafting Outstanding Presentations – Storytelling Techniques. I really wished that I had taken my camcorder to record it, it was amazing. However, fear not, Claudio was kind enough to share his skills in this audio recording!

This podcast: http://www.craigmurphy.com/podcasts/059-ISS2010-Claudio-Perrone.mp3

Resources
http://www.agilesensei.com/
http://www.slideshare.net/cperrone
http://www.slideshare.net/cperrone/outsanding-presentations-4351640
http://www.presentationzen.com
http://www.beyondbulletpoints.com
http://www.istockphoto.com
http://www.garrreynolds.com

Books/Videos

epicenter Open XML Slides and C# Code #ISS2010

On Tuesday 8th June 2010 I ran my Introduction to Open XML session at the Irish Software Show in Dublin.

My Slides and C# demo code are available for download!

I have updated the demos to use the Open XML SDK 2 RTM and have provided a more advanced example of the Content Controls demo. Remember, you can view the original Content Control demo here.

Photos from the event (day 1) can be found here: http://www.flickr.com/photos/craigmurphy/sets/72157624106633205/

Attend the Irish Software Show 8-11 June for 50 Euros per day!

The Irish Software Show http://epicenter.ie begins next week in Trinity College Dublin. It’s a four day event with around 80 tutorials given by over 50 international speakers.

There’s some great Microsoft development sessions throughout the event, and particularly on Wednesday. I’ll be there on Tuesday talking about Word & Excel 2007 / 2010. I’ll be explaining how the Open XML SDK helps us write C# code to create and work with .docx and .xlsx files. I’ll also be showing off “Content Controls” which are an awesome feature that often goes overlooked!

I have been given 10 tickets allowing you to book for just €50 per day – 1, 2, 3 and 4 day options are available. There’s more information here: http://epicenter.ie/2010_Craig_Murphy_Page

To book, simply email epicenter@irishdev.com or call 01 443 4131 (In Ireland!) and the organisers will give you further instructions.

If you are unable to make the show but have a spare hour first thing on Tuesday, you are also invited to go along to Dr Chris Horn’s keynote presentation which starts at 9am. Chris is the co-founder of IONA Technologies and now sits on the Government’s Innovation Taskforce. In his keynote, he will be explaining the rationale behind their strategy, which should give clues to CEO’s on how to position their businesses to take advantage. See http://short.ie/chrisjhorn for more information. To reserve a seat, email epicenter@IrishDev.com with Chris Horn in the subject line.

Free-to-attend sessions at the Irish Software Show 8-11 June #ISS2010

The 4-day Irish Software Show, epicenter.ie, kicks off in Trinity this Tuesday (8th June) and
there are a number of free-to-attend sessions open to the general public.

They are:

Tuesday 09:15 (arrive for 8.30)
Chris Horn – Keynote, the Government’s Innovation Taskforce Strategy

Wednesday 12:45 (arrive for 12:30)
Claudio Perrone – Crafting Outstanding Presentations – Storytelling Techniques

Friday 09:15 (arrive for 8.30)
Fergal O’Connor – Global Cloud Survey Results Revealed

Friday 12:45 (arrive for 12:30)
Aidan Finn – C Infinity Cloud Infrastructure Vendor Session
David Quirke – Sybase Afaria, a Mobile Solution

To register, please send an email (with the name of the speakers in the subject line) to events@IrishDev.com

Feel free to share these sessions with your colleagues.

Hope to meet you at epicenter!

epicenter 2010 : 8-11 June 2010, Dublin

2010 heralds the second Irish Software Show #ISS2010 also known as epicenter!

What: epicenter 2010: http://epicenter.ie
epicenter is designed to be both an educational and a meeting hub for the Irish software community; a place where technologists can hear experts, see the latest and greatest products in the market, connect with fellow industrialists or meet new business connections.

When: Tuesday 8th through to Friday 11th June 2010

Where: Trinity College, Dublin

Cost: One day €129.00. Two Days €189.00. Three Days €229.00. Four Days €239.00 – discounts are available!

Keep up to date:
Follow epicenter2010 on Twitter: http://twitter.com/epicenterIE or on Facebook: http://facebook.com/irishdev

epicenter 2010 is kindly sponsored by…

Craig Murphy: author, blogger, community evangelist, developer, speaker, runner