Improving developers enthusiasm for unit tests, using bubble charts

Here is a nice post from JAW Speak to learn how forcing…sorry… improving… ;-) your developers enthusiasm for unit testing ! 

Improving developers enthusiasm for unit tests, using bubble charts.

Posted in Blog | Tagged , , , | Leave a comment

WordPress : failed to write file on disk error ! when uploading images

Yesterday, without any change from my side, I wasn’t able to upload images on all my WordPress installations…
I got the following error : Failed to write file on disk error !
The first test I did was uploading a file by ftp… no error !
So, I tried to modify and did some tests on folder rights by changing chmod and even modify the htaccess file
But I wasn’t able to fix the problem…
Finally, after have lost a lot of time, I got on this post the solution :

This issue is purely 100% server side ! The problem occurs because WordPress is not able to access the server temporary folder because it is full and so, can’t upload images through it…

So, I contacted my hosting provider yesterday evening, and my problem has been fixed this morning…

Posted in Blog | Tagged , , , | Leave a comment

A feedback from the Project Management Meeting at Lausanne : PMBok vs Scrum

Every year, the PMI Switzerland Chapter and the SMP organize the “Congrès du management de projets” at Lausanne. As usual, it was great !
I just would like to share with you one of the workshop I attend to :

“PMBok vs Scrum : Is there an overlap”

presented by Silvana Wasitova from Itecor.

It was very interesting. More particulary, we spoke about how many features are actually used by the end users. This subject is aligned with one of my research priority : software lean management in a agile context.

Posted in Blog, Uncategorized | Tagged , , , , | Leave a comment

Link between common project plan and scrum planning

How to make the link between Scrum planning and traditional project plan ?
Very often in a company, some stakeholders (bosses…) ask for a classical project plan with resource mapping, etc…
If your team develops with the Scrum method, it’s not very easy to produce the project plan artefact.

Different levels of Scrum piece of work

The Scrum framework describes different levels of workpieces. A tips to build the project plan is playing with these levels.

Keep the flexibily

The project plan for your stakeholder should only show the Epic and Theme levels without explicit resource names. it’s essential that you “keep secret” the user stories and of course the tasks (This level should be only known by the team itself). If you don’t keep details from stakeholders, you will lose one of the most advantages of Scrum : the response to changes !

Defining the Scrum project plan

As explaning above, the idea is showing only the Epic and Theme levels.

Below, the process illustration shows the steps from high level backlog to the scrum project plan.  On the schema on the right, a team is an Epic. I will speake about this in another posts… ;-)


Posted in Blog | Tagged , , , , , , | Leave a comment

Callback as communication way between c++ and c#

The Goal is showing a example how to implement a kind of event mechanism between c++ (no managed) and c# by callback.

The first point is defining the callback mecanism in the c++ part :

//1) Constant for setting de calling convention
#define CALLING_CONVENTION  __stdcall

The typedef keyword can be used to define an alias for a function. In this use case, you must specify the return type of the function and its argument types. Moreover, you have to use a function pointer.

//2) define the callback
typedef void (CALLING_CONVENTION* Info)(double _InfoA);
//3) Declare a callback as a class member
Info m_pfSendInfo; // declare the callback
//4) Defining the function register using on the c# side to register 
//or unregister the function
#define EXPORT = __declspec(dllexport)
...
EXPORT void CALLING_CONVENTION cmodule_InfoCBRegister(Info _Callback);
//In the cmodule_InfoCBRegister function definition :
...
m_pfSendInfo = _Callback;
...
//5) Using the callback in the c++ code
double NumberInfo = 0.0; // parameter to send
....
if (m_SendInfo != NULL) // using the callback
{
m_pfSendInfo(NumberInfo);
}

Second point : c# code

//1) Declare the delegate (event emulation)
public delegate void CModuleInfo(double EventInfo);
//2) wrapping between c++ register and c# register
// dll import settings
[DllImport("cmodule.dll", EntryPoint = "InfoCBRegister",
CallingConvention = CallingConvention.StdCall)]
// dll function reference
private static extern void cmodule_InfoCBRegister(CModuleInfo _Callback);
// c# method mapping
public void InfoCBRegister(Info _Callback)
{
cmodule_InfoCBRegister(_Callback);
}
//3) Register on the "c++ event" from c#
CModuleInfo m_CModuleInfo = new CModuleInfo(CModuleInfoProcess);
...
InfoCBRegister(m_CModuleInfo);
...
//4) event process
private void CModuleInfoProcess(double Info)
{
 // process of double info when c++ "event" occurs !
}
Posted in Blog | Tagged , , | Leave a comment

It’s easier to dismantle an atom than a prejudice

I just did a management course entitled “motivating or manipulation ?

If I have to resume it in one sentence, it would be :

It’s easier to dismantle an atom than a prejudice      (Albert Einstein)

Our prejudices distort others speaking, then cause a lot of communication problems.

Posted in Blog | Tagged | Leave a comment

Confusion about “new modifier” in c# regarding c++ and others

From the foundations of my software programming skills, there is c++. Even if I used to develop with Java and now mainly use c# in a professional way and Objective-C and c++/Qt as hobbies.

A few days ago, I was in totally confusion about a type of use of the new keyword in c#.

New in c# has two different kinds of use : operator and modifier.

operator use

In C++, the new keyword instantiates objects on the heap. There are some differences in C# : With reference types, a new statement instantiates objects on the heap, but with value types such as structs or simple types, objects are created on the stack and a constructor is called.
if you don’t use new keyword with value type, the object is created on the stack, too. But be careful! New initializes objects. If you don’t use new, you must initialize all the values in the struct or simple type by hand before you use it or it won’t compile. (ref. microsoft).

Another difference between c++ and c# is : the new operator can’t be overloaded in c#.

So, in the operator use, there are some differences between c++ and c#, but all in all it’s the same.

modifier use

My confusion is about using new in c# in a modifier way… New keyword is used to explicitly hide an inherited member…And this use case is very confusing if you come from the c++…and even if not ! See below :

In order to “hide” an inherited member of a class, you can declare it in the derived class using the same name, and “modify” it with the new modifier…

class ABase
{
   public void DoJob() {}
}
class A: ABase
{
   new public void DoJob() {}
}

So, a call to A.DoJob(); will call the A method in all use cases…But honestly, what is the utility of this ?!

One more thing, the code will exactly work the same way without the new. The only difference is a warning like this :

“The keyword new is required on ‘A.DoJob’ because it hides inherited method ‘ABase.DoJob’.”

In my opinion, using new keyword in a modifier way is to be avoided absolutly ! Use “polymorphic compliant” code and “multi languages comprehensible” code using virtual and override keywords instead !

class ABase
{
   public virtual void DoJob() {}
}
class A: ABase
{
   public override void DoJob() {}
}

A lot of programmers will tell you…Thanks ! Starting by me… ;-)

Posted in Blog | Tagged , | Leave a comment

Transfering Apple Mail datas

I just bought a mac pro ( I know I’m a lucky man ;-) ). I make the decision to build a brand new system install. I mean without using Migration Assistant to transfer datas from my old machine.
So, moving Mail datas from an Apple machine to another one, as follows :

  1. Copy <username>/Library/Mail folder to the same location on your new computer.
  2. Copy the “com.apple.mail.plist” file from <username>/Library/Preferences to the same location on your new machine.
  3. Copy <username>/Library/Keychain folder on the same location on your new system (This step isn’t necessary but avoids you to enter the password for each of your mail accounts).
Posted in Blog | Tagged , , | Leave a comment

Making Scrum “sprint planning meeting” faster and more productive

With Scrum methodology, at the beginning of the sprint cycle (every 7–30 days), a “Sprint Planning Meeting” is held. Here are the general steps :

  • Select what work is to be done
  • Prepare the Sprint Backlog that details the time it will take to do that work, with the entire team
  • Identify and communicate how much of the work is likely to be done during the current sprint
  • Eight hour time limit
    • (1st four hours) Product Owner + Team: dialog for prioritizing the Product Backlog
    • (2nd four hours) Team only: hashing out a plan for the Sprint, resulting in the Sprint Backlog. (wikipedia)

I hold the role of Product Owner in my current company. We tried to apply precisely this pattern advised by the methodology. But…
I don’t know if you tried having a meeting of 8 hours…For me, and from experience, it’s not possible to spend so much time in meeting and be productive !
Moreover, It ‘s really difficult to determine in 1 day all the work for a 10 developers team taking into account of interdependences between items and others influences like undone items during the previous sprint…
So, we introduce some measures to limit the time of the sprint planning meeting.

  • Adding a “Follow-up Sprint Meeting” every week (it aims to detect some latenesses and to take fast corrective actions)
  • Adding a weekly sprint planning meeting. During the sprint x (4 weeks), we do a small sprint planning meeting for sprint x+1, every monday.

The effects are quit good. Our sprint planning meetings at the end of a sprint aren’t chores any more, but productive meetings !

Posted in Blog | Tagged , , | Leave a comment

Converting a string to an enum item in c#

Converting a string to an enum item wasn’t very obvious (actually for me ;-) )… But it’s quite easy after found the right method…Let’s see below :

enum FilmMakingSteps
{
      Development,
      PreProduction,
      Production,
      PostProduction,
      SalesAndDistribution,
} ;

FilmMakingSteps filmMakingStep = (FilmMakingSteps) Enum.Parse(typeof(FilmMakingSteps), "Production");
// filmMakingStep is the Production item !
// Problem, picking an invalid string throws an ArgumentException.
// So, call first Enum.IsDefined(), as follows:
string noneFilmMakingStep = "Photography";
if (Enum.IsDefined(typeof(FilmMakingSteps), noneFilmMakingStep))                                                                                                                                                                 
      filmMakingSetp = (FilmMakingSteps) Enum.Parse(typeof(FilmMakingSteps), noneFilmMakingStep, false);// false = case-sensitive
else
      MessageBox.Show("Not a valid filmmaking step !"); // is called !
Posted in Blog | Tagged , | Leave a comment