Vincent Brouillet - Agile and Lean Web development

To content | To menu | To search

Saturday 23 June 2012

Shorten the deployment pipe part 1: create a model and find the bottlenecks

“How long would it take your organization to deploy a change that involves just one single line of code?” (Mary Poppendiecks)
Let's see why it is important to shorten the deployment pipeline, automated tests included.

AUAT environment

Continue reading...

Saturday 16 June 2012

A devop dream: environment on demand

If your software development teams has developed some automated functional tests, you might want to enforce a rule:

don't allow commits to the source control repository if any of the functional tests is failing.

This will help isolating the issues and facilitate troubleshooting. One issue is the creation of bottlenecks. Bottlenecks happen when developers can't commit and are waiting for the build to be fixed.

The solution resides in having one environment per commit:

  • every commit triggers a deployment that runs the whole automated tests suite
  • every code change can be monitored as it is isolated from the others

Continue reading...

TDD (Test Driven development) training with SoftEd Australia

A few weeks ago, I attended a test driven development training with my colleagues. The instructor was from SoftEd.

softed

This post does not intend to do a full review of the training but just give you an overview:

  • we all thought we knew TDD, but we all learn something
  • having the training in-house is an excellent idea. That way you can do some pair-programming with your colleagues
  • the instructor will walk you through exercices that you would not do by yourself, on your free time: they are annoying. But in a good way! By repeating the same tasks, over and over again, you learn how to get better
  • the training was a bit short because we could skip the automation testing and continuous integration part. Not much we learnt here, but it's always good to share experiences
  • I do feel confident I can write my tests first and my code after
  • I know and understand the value of TDD and I could myself help someone understand the benefits and the process

If you know what is TDD but you've never actually done it, this is a good training!

On commit VS on schedule AUAT (Automated acceptance testing)

Should AUAT tests be run for each code commit or should they run continuously, for instance every hour ?
The obvious answer seems to be: only if there is a new code commit, run the unit tests and then the automated user acceptance testing. No need to run the automated tests every hour.
The truth is, this might not be the best thing to do. Let see why.

auat.jpg

Note: the image has nothing to do with the topic, but this is what I found when I searched for AUAT in google images. I thought I would keep the image, I kind of like it...

Continue reading...

Wednesday 14 September 2011

Embed ActiveMQ and expose over TCP in Mule 3.1 (Spring config)

In this post we will describe how you can embed ActiveMQ in Mule. ActiveMQ is a well known solution and seems to integrate very well with Mule.

However it looks like up to date documentation is missing and, to be honest, I struggled a bit to accomplish this integration. here we are using Mule 3.1 (based on Spring 3.x) and Apache ActiveMQ 5.5.0.

Mule ActiveMQ

Continue reading...

Thursday 10 February 2011

Database schema synchronisation with RedGate

If you are in the process of setting up a continuous integration system, you might be wondering how to deploy your databases changes to your target environments. It's not an easy question to answer at first. Databases are not really files, neither code.

You could write migration scripts by hand and run them against the environment. It works, this is for instance what I was doing with Ruby On Rails and Capistrano deployment tool. It's is just not so "safe". Conflicts can be detected if you put your migrations files under source control. However it's very difficult to keep track of the version of your database schema and your code. When building you have to make sure you migrate to the right revision for the code you will deploy.

Today I want to do the same with Hudson (our continuous integration server) on Microsoft SQL servers, and avoid the writing of migration scripts. The solution is actually to put your database schema under version control, using SVN for example. Then, your schema becomes files and directories. This means you can manage versions, see the history, rollback, detect and resolve conflicts and so forth.

Red Gate SQL compare in continuous Integration process

Continue reading...

Watin: The requested resource is in use

Watin is a tool to run automated user acceptance testing by launching different browser like IE, Firefox to browse your web application. I use it conjointly with Spec-Flow, a kind of Cucumber implementation for .Net.

Using Watin on Windows server 2008 and you end up with that very annoying error from time to time:

Exception Source: Interop.SHDocVw Exception Type: System.Runtime.InteropServices.COMException Exception Message: The requested resource is in use. (Exception from HRESULT: 0x800700AA) Exception

AUAT automated user acceptance testing

Continue reading...

Wednesday 2 February 2011

Google is the Agile?

Wednesday the 9th of February. 5.30pm @ 347 Kent St Sydney.

I'll probably be there with other people from the company I'm working for. It's been a while since I went to an Agile/Scrum meetup. In fact the last one was sponsored by my company (Agile Open Space and Social - booze, pizza, prizes). We had to elect a winner for the Adrenaline prize!! And, it was great, amazing open space concept!!

Here is the description, simple Copy/Past from meetup.com

"Please come and join Google's Dhanji R. Prasanna while he compares his current project to several of the popular agile markers and asks "is this agile?".

Meetup logo

Here are some of his observations:
- We don't use stories
- Features can't always be user-centric
- We don't talk about spikes or iteration planning
- We don't have stakeholders, or even a board
- We don't do estimation or points or scoring"

Continue reading...

Sunday 23 January 2011

Sitecore, WCMS, the certification program

This week I attended the Sitecore training program: Sitecore developer fundations. Maybe you've never heard of it, but Sitecore is one of the world leader Web CMS at Enterprise level.

Sitecore world leader WCMS ?

It's a powerful solution. You can do pretty much everything, in 10 different ways. Meaning, you might end up with a dirty solution if your developers are not using some kind of best practices.

The target audience for this training was:

Continue reading...

Sunday 16 January 2011

.Net developers, champions in bad practices ?

Let me be very clear. My background is Php, Java and Ruby On Rails. Some time ago, I started to have a closer look at .Net development for an assignment. I went through a few books that were recommended on some forums.

I tried my best to convince myself that .Net can be a powerful solution for Enterprise level application. Well, may be ... But to be honest, I think C# is a bad copy of Java as a language. It's not even easy to read. But worse, I now think that .Net developers are 10 years late in best practice in terms of Web development. Tell me I'm wrong, please ..

.net good practices

I came across this in a book that was edited in 2010:

Continue reading...

Sunday 9 January 2011

Modern India

During my last trip in India, last December, I was pleasantly surprised by how modern is this country. I didn't have this feeling the first time I came, in 2009. May be the cultural clash made me blind.

Here is a post with a few pictures. I let you decide: India, modern or not ?

Society in Pune, India

Continue reading...

Thursday 8 July 2010

Log Rails production data to perform some audit (BI)

We want to keep track of production data of a Rails app, so that we can analyse them in a few months.

To be more precise, we have a few data Models with a "status" and dates column that can change frequently. The idea is to write somewhere a new line in a DB or log file every time the status or any other attribute changes. These line consists in a copy of all the attributes for this object.

I see different solutions:

  • using observer with after_save, and replicate the saved data to a reporting Mysql Db
  • using a logger system.
  • do it a different level, on the DB level, detecting changes in a table and copying the affected rows to the reporting DB.

It's easier to extract data then if they are stored in a DB. Log files are faster and don't slow down the process that much. I decided to go for the log files solution, using FasterCSV.



Continue reading...

Sunday 4 July 2010

Ubuntu Rails

If you want a simple recipe to install the Rails environment on Ubuntu, this article is for you. Just follow the steps, and you'll have everything ready to start coding.

We will install together the basics components, used by most people, like Mysql, Mongrel, RMagick.



Ubuntu rails

Continue reading...

Sunday 27 June 2010

Quelle solution de technologie Web ? Php, Java, .Net, Rails, Python ?

Post in French, sorry, no translation in English.

Quel est la meilleure technolologie de developement Wb ? Existe-il une reponse a cette question ?

Java .net php ruby

Continue reading...

Saturday 19 June 2010

Next Yow! nights

Next YOW! meeting in Sydney is on the 6th of July. Speakers:

Pam Fox, Google Google APIs: A-Z Over the past 4 years that I've worked at Google, we've gone from offering 8 APIs to offering 80, and our offerings cover everything from the open-sourced Android SDK to the just-released Google Fonts API, targeting everyone from web developers to research scientists. In this talk, I will attempt the impossible: introduce every API, show how they fit into your life as a developer, and why they exist.

Erik Dörnenburg, TDD Expert, ThoughtWorks Inc. Builds: from Good to Great Fully scripted builds and continuous integration have become more mainstream in the past years. In this talk I want to share some of the great ideas and best practices for builds I’ve seen on projects that take continuous integration a step further. I will examine build pipelines, fully automated acceptance test suites, information radiators, virtualised test environments, and software quality reports. In addition I will discuss a few do’s and dont’s that can make the difference between a good build and a great build.


Yow!

Continue reading...

Sunday 6 June 2010

Comparaison gestion de projet Agile VS traditionnel pour SAAS: (Partie 3/3)

This post is in French. There is no translation available. We are comparing Agile project management and Waterfall as well as explaining why Agile is a better solution for a SAAS.

The billet est en Français uniquement, Nous allons comparer la gestion de projet Agile avec les méthodes plus traditionnelles. Nous mettrons en avant pourquoi Agile est plus adapter a un logiciel de type SAAs.

Partie 1: Défauts des méthodes traditionnelles
Partie 2: Agile a travers Scrum

Partie 3 : Agile et outsourcing, bilan sur les processus de gestion de projet


Outsourcing in India

Continue reading...

Sunday 30 May 2010

Comparaison gestion de projet Agile VS traditionnel pour SAAS: (Partie 2/3)

This post is in French. There is no translation available.

Partie 1: Défauts des méthodes traditionnelles

Partie 2: Agile a travers Scrum

Le Mouvement Agile

Continue reading...

Sunday 23 May 2010

Comparaison gestion de projet Agile VS traditionnel pour SAAS: (Partie 1/3)

This post is in French. There is no translation available. I'm trying to compare Agile project management and Waterfall as well as explaining why Agile is a better solution for a SAAS.

The billet est en Français uniquement, Je tente de comparer la gestion de projet Agile avec les méthodes plus traditionnelles. Nous mettrons en avant pourquoi Agile est plus adapter a un logiciel de type SAAs.

Partie 1: Défauts des méthodes traditionnelles

SAAS

Continue reading...