Lately @irrati0nal and I have been working on a C++ pet project: glowworm++
It is a C++ implementation of the Glowworm Swarm Optimization algorithm as described in the original paper from Krishnanand, K.N. and Ghose, D., Glowworm swarm optimization for simultaneous capture of multiple local optima of multimodal functions, published in Swarm Intelligence, 3, 2, June 2009, 87-124.
I wanted to practice TDD in C++ and was looking for an interesting pet project. So when I knew about @irrati0nal wanting to use GSO optimization for his research on protein docking, I asked him if he wanted to implement it in C++ with me and he gladly accepted. I had worked with genetic algorithms before and I thought that Bio-inspired algorithms were just beautiful.
We worked in short sessions once a week after work and in longer sessions during the weekend once a month, we called the long ones "hackathons". It wasn't difficult to follow the description of the algorithm in the paper, but we had to implement the coordinates and objective function code several times until we were happy enough with the result.
From the very beginning we wanted to release glowworm++ so other people could use it if they wanted. Now it's finally done. If you want to use it you can find the code here.
We applied TDD using the CppUTest framework and pair programming throughout the whole development. We are newbies in these two thecniques. We tried to do our best but, in the end, I think we did a nice job at TDD but not that good at pair programming. We had a lot of fun though. We need to read more about how pair programming works and how to do it well.
We also learn a lot of C++ and realize that we still have so much more to learn.
I'll try to improve my TDD and pair programming skills with my next pet project: I'm working with @remosu on a single page application using Backbone.js
In the near future, I'll have to devote most of my time after work to the UOC, so I won't have more time for glowworm++. However @irrati0nal is starting to use it in his research and will go on improving it to adapt it to his needs. Next summer, once the semester in the UOC is over, I'd like to use glowworm++ as well. I'll try to apply it to search special genetic networks.
@irrati0nal, thanks a million for all the good times we spent rubbing elbows together.
-----------------------------
Update:
I've continued evolving the code in this fork.
I mainly fixed a bug, simplified the code a bit and used some C++11 new features.
Record of experiments, readings, links, videos and other things that I find on the long road.
Registro de experimentos, lecturas, links, vídeos y otras cosas que voy encontrando en el largo camino.
Monday, March 26, 2012
Wednesday, March 14, 2012
Articles and Posts read
Inspiring and Curious
El fundador de Minecraft reparte 3 millones de dólares entre sus empleados
Interesting
Living up to your potential is BS
Life off the clock
The Journey of the Apostles, National Geographic March 2012
How to manage a career in 2012
Learning and Software Craftsmanship
Thoughts On Learning New Things
Comedic genealogy
The power of value objects
Anemic Domain Model
Las buenas maneras de un programador
Choose Your Tools with Care
Road Thoughts - Apprenticeship
Los "malos olores" del código
Are programmers born or made?
Understanding Test Driven Development with Python, Agile Record 9
Pair Programming Harmful?
What I learned from Google - You get fifteen years
Agile and Lean
Agile practices for revision control, Agile Record 9
Introduction to Scrum - An Agile Process, Agile Record 9
Every software project I’ve worked on has used the "Spanish Theory" of project management, and its likely yours have too
Scrum, Kanban y la matriz de Eisenhower
Optimizar la felicidad del equipo de desarrollo
C++
Trip Report: February 2012 C++ Standards Meeting
Sandwich Dilemma
Computer Science
Learning Natural Language Processing from Stanford — early review
Paradox of a CS major
Science
Depression Is Linked to Hyperconnectivity of Brain Regions, a New Study Shows
Death threats, intimidation and abuse: climate change scientist Michael E. Mann counts the cost of honesty
Atención, pregunta: ¿Puede una universidad española convertirse en un referente a nivel mundial?
Un famoso ecólogo congoleño pillado in fraganti por plagiar multitud de artículos científicos
El postdoc, entre el continuo de la ciencia y las rémoras del pasado
Entrepreneurship and Management
Instantaneous Feedback
Magical Transformation
¿Te han despedido? Consuélate, a tu empresa tampoco le queda mucho tiempo
Tú no tienes una startup (ni falta que hace)
Esta es mi vida, pero no soy yo
Guía para calcular el precio por hora que debes cobrar por tus servicios
7 ideas para emprender en Internet desde España
Fish On Fridays II
Deuda Gerencial
At work
General Born Model Based On Surface Integral Formulation
Building Static Libraries and Test Program with Eclipse CDT
Spain and Europe
Borrando el I+D
Los recortes amenazan al único centro español que estudia las malformaciones congénitas
España, capital Madrid
Consecuencias actuales de la guerra del Peloponeso
Alemania no ahorra tanto como predica
CARTA ABIERTA POR LA CIENCIA EN ESPAÑA
Is Spain Waking Up? Pharoahs, Culture and Protests
El fundador de Minecraft reparte 3 millones de dólares entre sus empleados
Interesting
Living up to your potential is BS
Life off the clock
The Journey of the Apostles, National Geographic March 2012
How to manage a career in 2012
Learning and Software Craftsmanship
Thoughts On Learning New Things
Comedic genealogy
The power of value objects
Anemic Domain Model
Las buenas maneras de un programador
Choose Your Tools with Care
Road Thoughts - Apprenticeship
Los "malos olores" del código
Are programmers born or made?
Understanding Test Driven Development with Python, Agile Record 9
Pair Programming Harmful?
What I learned from Google - You get fifteen years
Agile and Lean
Agile practices for revision control, Agile Record 9
Introduction to Scrum - An Agile Process, Agile Record 9
Every software project I’ve worked on has used the "Spanish Theory" of project management, and its likely yours have too
Scrum, Kanban y la matriz de Eisenhower
Optimizar la felicidad del equipo de desarrollo
C++
Trip Report: February 2012 C++ Standards Meeting
Sandwich Dilemma
Computer Science
Learning Natural Language Processing from Stanford — early review
Paradox of a CS major
Science
Depression Is Linked to Hyperconnectivity of Brain Regions, a New Study Shows
Death threats, intimidation and abuse: climate change scientist Michael E. Mann counts the cost of honesty
Atención, pregunta: ¿Puede una universidad española convertirse en un referente a nivel mundial?
Un famoso ecólogo congoleño pillado in fraganti por plagiar multitud de artículos científicos
El postdoc, entre el continuo de la ciencia y las rémoras del pasado
Entrepreneurship and Management
Instantaneous Feedback
Magical Transformation
¿Te han despedido? Consuélate, a tu empresa tampoco le queda mucho tiempo
Tú no tienes una startup (ni falta que hace)
Esta es mi vida, pero no soy yo
Guía para calcular el precio por hora que debes cobrar por tus servicios
7 ideas para emprender en Internet desde España
Fish On Fridays II
Deuda Gerencial
At work
General Born Model Based On Surface Integral Formulation
Building Static Libraries and Test Program with Eclipse CDT
Spain and Europe
Borrando el I+D
Los recortes amenazan al único centro español que estudia las malformaciones congénitas
España, capital Madrid
Consecuencias actuales de la guerra del Peloponeso
Alemania no ahorra tanto como predica
CARTA ABIERTA POR LA CIENCIA EN ESPAÑA
Is Spain Waking Up? Pharoahs, Culture and Protests
Thursday, March 8, 2012
Tuesday, March 6, 2012
Articles and Posts read
Inspiring
It's not what you cover
Los 7 trucos de Tamariz para hablar en público
Learning and Software Craftsmanship
What Does a Good Test Suite Look Like?
El poder de lo pequeño
Errores clásicos en las pruebas
De dónde viene esto de lean y kanban
El quinto valor ágil: “valoramos la artesanía por encima de la basura”
Why I Don't Do Unpaid Overtime and Neither Should You
El Currículum
O dilema da especialização
Learn by copy
El alumno maduro cambia el paisaje de la Universidad
The Gap Of Woe
What are you in for?
Clanthink, Groupthink, Spreadthink
Science
Alzheimer's Disease Symptoms Reversed in Mice
Do Men and Women Have Equal Prospects in Science?
How the First Plant Came to Be
Did Life's First Cells Evolve in Geothermal Pools?
Team Science
C++
A Dearth Of Libraries
Spain
Las seis posibles opciones de España
La renta básica garantizaría unos 500 euros al mes a cada adulto
1 euro=166,386 ptas, en el origen de la burbuja. Alemania, en el fin de la crisis
El triunfo de los mediocres
Una reforma laboral basada en un diagnóstico erróneo
It's not what you cover
Los 7 trucos de Tamariz para hablar en público
Learning and Software Craftsmanship
What Does a Good Test Suite Look Like?
El poder de lo pequeño
Errores clásicos en las pruebas
De dónde viene esto de lean y kanban
El quinto valor ágil: “valoramos la artesanía por encima de la basura”
Why I Don't Do Unpaid Overtime and Neither Should You
El Currículum
O dilema da especialização
Learn by copy
El alumno maduro cambia el paisaje de la Universidad
The Gap Of Woe
What are you in for?
Clanthink, Groupthink, Spreadthink
Science
Alzheimer's Disease Symptoms Reversed in Mice
Do Men and Women Have Equal Prospects in Science?
How the First Plant Came to Be
Did Life's First Cells Evolve in Geothermal Pools?
Team Science
C++
A Dearth Of Libraries
Spain
Las seis posibles opciones de España
La renta básica garantizaría unos 500 euros al mes a cada adulto
1 euro=166,386 ptas, en el origen de la burbuja. Alemania, en el fin de la crisis
El triunfo de los mediocres
Una reforma laboral basada en un diagnóstico erróneo
Friday, March 2, 2012
How to install cppcheck and use it in Eclipse CDT
I have to thank my colleague Dani for this post.
Cppcheck is an static analysis tool for C/C++ code that we are using at work.
It's helping us to detect some problems that the compiler can not detect.
1- Install cppcheck:
The next menus can be found in Eclipse, go to Project > Properties.
Cppcheck is an static analysis tool for C/C++ code that we are using at work.
It's helping us to detect some problems that the compiler can not detect.
1- Install cppcheck:
- Go to cppcheck project site and download the current version of cppcheck.
- Untar it and compile it (e.g. "make" in the corresponding folder).
- Move it to a convenient folder (e.g. /home/bscuser/ )
- In Eclipse, go to Help > Eclipse Marketplace
- Look for "cppcheclipse" in the bar and click in "install"
- In Eclipse, go to Window > Preferences. In the C/C++ > cppcheclipse select the binary path (e.g. /home/bscuser/cppcheck-1.52/cppcheck)
The next menus can be found in Eclipse, go to Project > Properties.
- The configuration in the cppcheclipse menu can be found in the following snapshot:
- In cppcheclipse > Problems choose "Use project settings" and unselect "portability" (we are still not interested in this point). Keep the other ones selected.
- In the Project Explorer (by default at the left of the screen) right click on "src" and select cppcheck > Run cppcheck. Alternatively, use the shortcut: Shift + Ctrl + c.
Subscribe to:
Posts (Atom)