Home » Tools » MPD-helper post-mortem

MPD-helper post-mortem

MPD-01

It’s post mortem time~! Finally I have enough time to describe my longest – for now – project: MPD-helper. You can get source code from repository on my github.

It is – as name suggests – helping tool for Modeling of Discrette Processes (in polish Modelowanie Procesów Dyskretnych). Purpose was to automatise solving simple, offline scheduling problems for two, or three machines. It supports:

Motivation:

At first it was simple project for laboratories of modelling of discrette processes. I had to implement Johnson’s algorithm, with proper solution plotting. I chose C++ and Qt framework, and decided to write plotting from the scratch (instead of using e.g. qnuPlot) – it seemed more rewarding.

After receiving grade I forgot about this project for about one year, and discovered it in deeps of my hard drive while searching for something to train refactoring skills. After basic cleaning up I decided to keep going and see if my changes do anything good to simplyfy further developement.

What went wrong:

  • It took one eternity to implement basic algorithms I wanted to feature and still I resigned from including some, e.g. Liu algorithm – I just got soo bored with this tool. In the meantime I participated in two Ludum Dares, and created prototypes I look forward to work with (Treasure Seeker!).
  • I made too much breaks, some dragged for weeks…
  • I feel quite guilty I didn’t used Qt translation features, interface is written in polish language, and you can’t change it.
  • I forgot to keep UML charts updated all the time. It was boring and annoying to go from 6 to 14 class diagram…

What I learned:

  • I tested some recipes from Fowler’s Refactoring
  • Played around with some basic C++ stuff like templates (for Tree container) or static fields.

Future
If I ever get interested in this project again I’d like to:

  • Stretch strategy pattern for plotter class, and for preparing data (maybe add ‘ProblemToSolve’ class?)
  • Add Liu algorithm…
  • …and some basic cycling scheduling algorithms – I never used them!
  • add english translation for interface.
  • And some more features…

And I think I mentioned it before, but I really need to learn how to organize my time when I don’t have strict deadline (end of jam or sth), or working hours.

Some statistics:

  • I started around January 19th, and finished 12 of September (with huuuge breaks).
  • Made 72 commits on 1 branch.
  • Was starred 1 time on github!
  • Was found by 1 job recruiter!
Posted in Tools and tagged as ,

Comments are closed.