Category: software engineering

A software maintenance tale gone bad

A long time ago… In 2011 I was hired by an e-shop owner to develop an addon for his e-shop. The software that powers his e-shop is a proprietary and well established program, we will refer to it as the Cart. It is not necessary to tell you names, companies and brands in order to […]

Reduce doctrine queries on hydration of related entities

Suppose you have a schema like the one in the next figure and in your repository class you fetch an MqProject entity and later in the code you traverse through all MqProject’s related MqJobs and each job’s related MqTasks like foreach($project->getJobs as $job) { foreach($job->getTasks as $task) { printf(“job: %s task %s\n”, $job->getId(), $task->getId()); } […]

Symfony – RabbitMq

Past few days I did some work on the software I use for my research. The analysis of the evolution of software projects can take some time if the code base gets big and there are many releases. Till now I was using JMSJobQueueBundle to run long jobs is the background. Excellent bundle, easy to […]

Gini index

WORK IN PROGRESS! Με μια φράση A low Gini coefficient indicates a more equal distribution, with 0 corresponding to complete equality, while higher Gini coefficients indicate more unequal distribution, with 1 corresponding to complete inequality Καμπύλη Lorenz πηγή EASYPOl, Charting Income Inequality The Lorenz Curve (11/11/13) Η καμπύλη Lorenz είναι ένα εργαλείο που χρησιμοποιείτε […]


CCN Ο αριθμός κυκλοματικής πολυπλοκότητας CCN είναι μια από τις παλιότερες μετρικές πολυπλοκότητας. Για πρώτη φορά αυτή η μετρική αναφέρθηκε από τον J. McCabe το 1975. Η μετρική αυτή μετρά τα διαθέσιμα μονοπάτια αποφάσεων σε ένα τμήμα πηγαίου κώδικα για να βρει την πολυπλοκότητα του. Κάθε μονοπάτι απόφασης αρχίζει με ένα statement από αυτά της […]

Hooks explained

The simplest implementation of hooks is to have a global array holding the registered hooks, a function to make hook registrations and finally a function to call the corresponding function handlers for a given hook, as shown in the next code segment. 1 2 3 4 5 6 7 8 9 10 11 12 13 […]

Diff output explainations

Source: [..] The 1c1 is a way of indicating line numbers and specifying what should be done. Note that those line numbers can also be line ranges (12,15 means line 12 to line 15). The “c” tells patch to replace the content of the lines. Two other characters with a meaning exist: “a” and […]

Agile modeling

Some keyphrases from the book “Agile Modeling”, Scott W. Ambler, 2002

This book is not how to model, but how to model in agile enviroments.