My opinion on the « Best-so-far » architecture

This post is not to talk about something I have made, but to talk about something I have lived with.

First, what is it ?

« Best-so-far » (or BSF) means to work with the latest pieces of software each and every day.

It relies on several IT infrastructure components : a software factory, a source code management, a build scheduler and an integration monitoring.

The software factory

It is a software whose role is to collect all the libraries across a company and to release the binaries for the employees, partners and customers.
It can be implemented by a storage access on a platform, or a machine, or a shared drive.
It also contains archived binaries of the previous versions of each component (for redundancy purposes), but is mostly focused on providing the latest framework chunks, with the latest features and the latest bugfixes.
All of these binaries can be used dynamically to build and release other binaries, and so on…

The SCM (source code management)

It is a set of tools to optimize the branches code management in a team (allowing several users to commit on the same project with the least possible conflicts).
Most of the teams appreciate to use standard tools like git, svn, mercurial, cvs, ClearCase, perforce, bazaar. Some others wanted to create their own scm tool (thinking of adl,
It is often managed by having one single integration branch where every team member has to merge in after finishing a task.

The build scheduler

It has two modules : a batch whose role is to execute some actions on some files, and an UI to help the users to administrate the jobs to be run each day.
It uses the latest version from « the SCM » to build it and install the packages on « The software factory ». It also contains some details about the errors found while trying to build or release something.

The integration monitoring

It is a UI tool with red and green lights to inform all of the employees that a build failed or suceeded. The most common standard software existing are Jenkins, Bamboo, CircleCI, CruiseControl, or Drone. Some companies prefer to create their own, with better or worse usability (thinking of ReleaseWork). The integration monitoring collects data from « the SCM », « the build scheduler » and « The software factory » to gives an insight of what is working and what is not.

2. Why do we use it ?

The thinking behind this implementation is to wonder how different dev teams can work across a company on the same product without suffering from waiting for each other. The expectation is to « break the silos », and to get the teams in a rhythm.
Letting a dev team beneath another in terms of software dependencies will help the dependent team to update the subsequent code as soon as possible. For example, a team building a polygon extrusion lib will update every day the dependencies to benefit from the work of the maths library. As a consequence, each lib will get the « Best-so-far » state of each lib when it comes to releasing to the employees, partners, customers. And so on…

3. Is it good ? I don’t know. Is it easy ? NO, it is NOT.

This is where I will express opinions of that practice.
I have worked for a company using that practice since birth. The « break the silos » fantasy is far away from reality.
I have never worked in such a partitioned way of thinking company.
The thing that turned wrong is that the work streams who managed the frameworks were separated from those who managed the BSF architecture.
As a result, a lot of improvements in this architecture landed in a total contradiction of the dev teams practices :
– The team handling the integration monitoring is pressured to release the build. The team members try to identify who is late by seeing who has worked on « the SCM ». They identify some culprits, without any consideration about the team responsibility. This team is not appreciated because it is seen like a toilet lady to the developers. « Have you fixed your issue ? The next release must be submitted by noon. I won’t leave the office until it is fixed and working »
– The team working for « the SCM » delivers some features that are useful for some users. Not all. All the other teams are forced to work on ONE SCM that does not fit their needs (if the company uses cvs instead of git, no one is allowed to work with git, and the Internet proxy must forbid any request sent to github or bitbucket).
– « The software factory » uses a common repository which can work with any kind of project lifecycle tool. You must be able to package Java classes, C++ projects or DSL scripts at once and to send them on the same storage access. Do we know a PL tool which is working on anything ? Yes, but it is really primitive. « make » can do the job. That was the most awkard answer I could ever think of. To understand it, just imagine that I work on a Java project but I have to build and to release my software using the « make » C++ tool. And last that not least, just imagine that the choosen storage can be as clever as a Windows share (that is it, samba share) !
– « The build scheduler » is maybe the tool which is the least risky to maintain, because the responsibility lies on the dev teams. It basically consists in launching some tasks and display the logs. Here, no specific tool to an environment. Windows shells are launched, that is all. Neither any JUnit parsing, nor any performance report.

Last but not least,

what is the most disturbing item for developers in the BSF way ?

→ You are not going to believe it, but it is the principle itself. Working on snapshots itself is at once a good, and a bad practice. Imagine that your company makes yogurts. It wants to rely on a single milk provider, which is considered as the most talented milk provider locally. « We don’t need fallback providers, we use the best one, the best-so-far ». Now imagine that a brutal and unexpected disease cause the death of the whole livestock in one night. How the company is going to adapt to that situation ?
So does a company with a « Best-so-far » architecture. You cannot work with any other provider, and you cannot work with older but functional versions of the frameworks.
The activity stops in the hope that the situation gets better in the future. In my opinion, that explains why my previous company decided to release one product version per year at most.

Convertir votre modèle 3D en script JS

Aujourd’hui, je vous propose un exemple pour afficher votre objet CAO 3D sur une page web.
Oubliez des outils non open source tel Inka (qui ne fonctionne pas sous linux), c’est gratuit, et facilement reproductible.

Voici un bout de page html5 capable d’afficher une scène 3D Three.js avec un fichier object.js

<script type="text/javascript">
var renderer = new THREE.WebGLRenderer( { antialias: true } );
var scene = new THREE.Scene();
var mesh = null;
var camera = new THREE.PerspectiveCamera( 75, ($(window).width () - 45) / ($(window).height () - 25), 1, 1000 );
var canvasWidth = ($(window).width () - 45);
var canvasHeight = ($(window).height () - 25);
var lookAt = new THREE.Vector3( 0, 150, 0);
$('#scene').append (renderer.domElement);

function addLight (){
var dirLight = new THREE.DirectionalLight(0xffffff, 0.95);
dirLight.position.set(-3, 3, 7);

var pointLight = new THREE.PointLight(0xFFFFFF, 5, 50);
pointLight.position.set(10, 20, -10);

function setupCamera (){
camera.position.z = 60;
scene.add( camera );
function setGeometry ( geometry, geoColor ) {
var material = new THREE.MeshBasicMaterial( {
color: geoColor,
vertexColors : THREE.FaceColors,
mesh = new THREE.Mesh( geometry, material);

mesh.scale.z = 2;
mesh.scale.y = 1;
mesh.scale.x = 2;

function ajustSizes (){
renderer.setSize (canvasWidth, canvasHeight);
var jsonLoader = new THREE.JSONLoader();
jsonLoader.load( "object.js", function (geometry) { setGeometry (geometry, 0xA0A0B0);});

function loadRestOfScene (){
addLight ();
setupCamera ();

function animLoop (){
camera.position.y += .1;
lookAt.y = camera.position.y;
renderer.render(scene, camera);
requestAnimationFrame( function () {animLoop ();});
setTimeout (function (){animLoop ();}, 1000);
<canvas id="scene"></canvas>

Un exemple ? Allez voir mon cv animé, l’écran 9 montre des escaliers 3D.

Tu souhaites quelque chose très fort ? Dis le en jquery !

Je viens de voir un site très distrayant qui prouve que le temps de la page web inamovible et statique est bel et bien révolu.

J’ai l’impression de voir une œuvre d’art, ou bien une féerie, ou une fantaisie de l’esprit en regardant certains sites animés.
Par exemple, je suis tombé sur ce site de mariage qui est vraiment subjuguant.

Joignant l’admiration à l’envie, m’est venu l’idée de m’y essayer moi aussi.
J’ai donc créé mon petit cv accessible à l’adresse qui regroupe plusieurs anims faites maison que je trouve sympa.
Plusieurs utilisent canvas, une utilise Three.js (+ WebGL), une utilise SVG, et toutes utilisent scrollorama (basé sur tweenmax).

Bonne rigolade !

En attendant…




Plus d’ordi depuis le 18 janvier, car pas assez de motiv pour en racheter un autre.

Je vais juste vous montrer ce qui m’a interesse ce mois ci etant donne que je ne peux plus rien creer !

Pour commencer, rendez vous sur . C’est le site

d’artisans de restauration d’arts qui ont de l’or dans les mains. Ils reconstituent avec nos matières premières (fourchettes, couteaux, mais aussi metaux) de bien originales et burlesques creations, comme par exemple « la faim du monde » (globe fait de fourchettes). Passez les voir sur Nice ou decouvrez leur galerie en ligne sur

Sinon, actu du moment, c’est le festival du jeu a Cannes. De nombreux moments de convivialité et de communion autour du jeu avec des idées toujours plus etranges. Essayez par exemple de jouer a Dixit Odissey a 10 personnes (variante du jeu Dixit à retrouver ici :, tentez des jeux de rapidité en vous cassant les des dents au fast food ( Elaborez des stratégies de conquête de civilisations avec smallworld ( et achevez votre quête en vous battant entre monstres pour devenir king of tokyo (, par le créateur du jeu Magic)

Sinon, j’ai rien créé. Juste amusé sur une appli pour dessiner des androides (Androidify par google, ils ont pas plus serieux a faire d’ailleurs ?).
Hahaha, ahem. Hum.

Sinon c’est tout pour le moment mais il va falloir que je m’equipe a nouveau.
A plus.

2011 en approche

Quel désarroi pour ce blog… Jadis le centre de mes attentions, il a été laissé pour compte, puisque le rythme de mes visites est passé d’une par semaine à une par mois.
Fait étonnant : je ne pense même pas être le visiteur le plus assidu de mon propre blog ! Mais vous savez, il ne faut pas dire « plus jamais ». J’ai toujours l’envie de participer et de créer qui sommeille, cette même envie que j’exprimais en 2008 au début de ce blog (j’y écrivais à l’époque « c’est la fin d’une époque où je n’avais rien à dire, blablabla… »).

Je pense revenir aux sources en 2011 : j’aime la musique, pourquoi ne pas vous faire profiter de mes goûts et convertir certains parmi vous à ma religion musicale ?

Peut être aussi continuer à faire parler mes talents dans la création d’applis rigolotes ?

Éventuellement aussi, vous proposer d’autres créations de mon goût en images ou en vidéos ?

Dans l’attente, je vous souhaite une année épanouissante et pleine de bonheur. À l’année prochaine.

Plus de blog ?

Sisi, je ne l’ai pas abandonné.

Je fais plus d’image pour l’instant mais je sors un peu dans mon temps libre.

Par ailleurs je suis en train de faire un petit jeu de scrabble, comme prédit, avec la scène que je vous ai montré il y a quelques mois.

Ceci pour reprendre ce jeu plus ancien fait en C Win32 :

Scrabble XP

Voici donc le jeu en nouvelle version, fait cette fois ci en Java et en utilisant la technologie Java3D. Je donne une nouvelle dimension à ce projet en offrant la possibilité pour l’utilisateur de voir le jeu sous toutes les coutures.

Scrabble Java
Scrabble Java

Bien entendu, je n’ai pas le droit de diffuser un jeu sous brevet. Par contre, je peux vous en parler un peu plus, voire partager l’idée à l’occasion d’une « conversation électronique » (terme sous copyright hadopi).

Laissez moi un commentaire ci dessous dans ce cas là, que vous soyez intéressé pour collaborer ou juste par curiosité. (Votre adresse n’apparaîtra pas sur ce site .)

IT vs Business Management

Une petite blague fort à propos dans une période d’incompréhension de mon travail :

Un homme volant en mogolfière se rend compte qu’il s’est perdu. Il réduit son altitude et distingue un homme en bas. Il descend donc jusqu’à être audible et crie « Excusez-moi, pouvez-vous me dire où je suis ?»

L’homme sur Terre répond : «Oui, vous êtes dans un ballon à air chaud, et vous vous situez à 30 pieds au-dessus du terrain.»

«Vous devez travailler dans l’informatique» déduit laconiquement l’homme de la montgolfière.

«Oui, Je suis du domaine », répond l’homme. « Mais comment le savez-vous? »

«Eh bien», remarque l’homme du ciel, «tout ce que vous m’avez dit est techniquement correct, mais ça ne sert à personne.»

L’homme en bas sourit. «Vous… vous devez travailler dans la gestion des affaires.»

«C’est exact» répond le pilote, « mais comment le savez-vous ?»

«Eh bien vous ne savez pas où vous êtes, ni où vous allez, vous vous attendez à ce que je vous aide ; et voilà, vous êtes toujours dans la même situation qu’avant, mais maintenant tout est de ma faute.»

(version originale : )

Bonjour le monde…

Salut à toi, visiteur…
Voici la fin d’une ère où j’étais persuadé n’avoir rien à dire sur Internet.

Mais après tout c’est aujourd’hui devenu tellement peu coûteux en énergie et en temps que c’est devenu assez tentant. C’est cette volonté de dire que et de révéler ses talents qui peut, à grande échelle, apporter beaucoup aux autres.
Je pense que j’ai beaucoup appris des journaux électroniques que j’ai fréquenté et qu’il est temps à mon tour de collaborer en posant ma pierre à l’édifice.

Cette page Internet est ma page personnelle et regroupera des ressources picturales et musicales par ajouts incrémentiels. En gros j’ajouterai mes mixs, musiques et images pour votre plus grand plaisir…

Abonnez vous au RSS en cas, ou alors venez à l’occasion.

Bonne visite, que la fête commence !