Graphinder – Monthly Progress Report – March

I’ve come to think of this project as a simple way of having fun, coding and maybe learning a new thing if possible in a such range of time. I’ve ended up much profitable (in many terms) though.
I’d like to discuss progress on a project, but also progress on myself, as Daj Sie Poznac was (I think) meant to deliver both.

Current state of project in numbers

Feature progress: 5/10 features from roadmap met.

  • Porting current solution with Simulated Annealing and Genetic algorithms working on Minimal Vertex Cover problem from initial, console application to library.
  • Further decoupling for future IoC in ASP.NET MVC project.
  • Implementing missing unit tests for part of the code.
  • Reporting problem solving progress once upon a time.
  • Parallelizing problem solving.

Github repository status:

  • Commits: 121
  • Average commit time: 10 P.M. – 2 A.M.
  • Days with no commit: 7d

Related Trello tasks:

  • Done: 20 tasks
  • Refactoring backlog: 7 tasks
  • Feature backlog: 10 tasks
  • Feature icelog: 3 tasks

Things I’ve learned

Wow. So.. I’ve wanted to start with the fact that I’ve never wrote anything that should (and by the time, everything should) scale horizontally. I wrote a WebAPI, I wrote ASP.NET MVC twice, I wrote WPF application twice but they always went with linear, vertical structure from front-end to database.

First of all, during recent month of working on Daj Sie Poznac project, I’ve used up my free time between coding, working and spending time with family for reading. And by reading I mean LOTS OF READING.
I’ve focused mainly on microservices concept in current software development. Besides reading tons of articles where most of them made sense and some of them didn’t, I’ve taken a lot of knowledge (and what’s important: clarification) through talking with one of the Daj Sie Poznac competitors, that is Michal Franc (current Lead Developer @ JustGiving).

Also, I’ve learned immensely lot about Actor model, that is strongly promoted by Akka and it’s .NET port Akka.Net. Although my interest currently flows slightly towards Microsoft Orleans solution, I highly doubt I won’t try out both of them as proof-of-concept in Graphinder project.

Last, but not least – Reactive extensions aka System.Reactive aka Rx.Net. A super powerful tool for introducing reactive programming into your current application. I’ve already used it a lot via UniRx implementation for Unity3D in Regalia – Of Men And Monarchs, but now I can see how little I knew using it until now. I’ve also already implemented some of the features using System.Reactive in Graphinder, ie. async yielding from IEnumerable, but I will cover it up soon in separate post.

Discipline I’ve enforced

Even though it’s a side-project for Daj Sie Poznac (and I hope, further on!), I’ve ended up with leaving my comfort zone and forcing myself to introduce an everyday discipline on:

  • How often do I write code for project? I did my best to make sure it’s at least 3-4 times a week + some documentation writing/project organization
  • How often do I write posts? This requirement of project made me think of reserving time for my thoughts to be persisted at last. I’ve also went over 2-posts-a-week schedule and even found some time to write posts covering other programming issue I’ve had on my work project.
  • How far can I go with spaghetti or unreasonable code in my project? Well that’s always a tricky one but I’ve made sure that every decision I make to my project composition, is thought over twice and maybe even discussed with other Daj Sie Poznac participants on Slack. I guess I just don’t feel that MVP idea is an excuse of bad design at all. That change also made myself more cautious and disciplined about how I wrote my code at work
  • Do I feel comfortable with TODO in my code? I’ve made myself come back to this little annotations many developers tend to leave around their code. I’ve used to accept that many of them will be left behind but I try to arrange my project schedule, so that there is a room for reasonable refactoring

One thought on “Graphinder – Monthly Progress Report – March”

Leave a Reply

Your email address will not be published. Required fields are marked *