Ending Community Bonding Period: Into the Code We Go

Hi everyone,

I am back with another blog—this time, it's not just bonding.... it's real work.
Last week I was on short break because of my end-term exams (yayy! Exams are over— and even better, they went well!). The summer vacations have been started now, and so has my progress on the project.  

What I've Been Up To

  • This week, I dove deep into the LSODA codebase—exploring classes, variables and helper functions.
  • I also spent a good amount of time trying to wrap my head around the mathematics behind the algorithm. And honestly, that "aha!" movement when things started clicking was incredibly satisfying. Some methods like ddot, dscal, daxpy, idamax are relatively straightforward but others like prja, dgefa, dgesl, correction and stoda—are on different level. It took hours of reading through documentations and articles, but eventually, I began to understand their intent and logic. The number of variables and the way they're used in the algorithm can be mind-boggling at first, but the challenge makes it even more rewarding. 
  • Based on my review, I refactored several methods in LSODAIntegrator, LSODAStepper, LSODACommon and LSODAContext, and made a pull request—yayy! (Look into the PR for more detail)
  • All these changes primarily involved aligning the behaviour of translated functions with the original logic and addressing subtle bugs and inconsistencies.
  • One key design decision I made, after carefully looking into the SBML parsing pipeline within SBSCL and the requirement of LSODAFunction, is to use DESystem interface from SBSCL in place of LSODAFunction. This implementation of LSODAFunction makes the code cleaner, more modular and follows the DRY principle. It could also simplify the, to be developed,  integration mechanism.
  • I also updated all the methods involving LSODAFunction to reflect the new changes.

Meeting with Mentors

  • I had meeting with my mentors on May 30, 2025 and we had discussions regarding my PR. I walked them through the PR and communicated my thought process behind the changes.
  • I have been advised to follow Test-Driven Development (TTD) methodology and write unit tests for all the functions I have written so far. 
  • At last, we discussed my concerns regarding the CVODE development and we finalized that I will primarily be developing a wrapper around the CVODE library (a relief!).

Final Thoughts

With this meeting, the Community Bonding Period officially comes to an end
During this time, I got to know my mentors better—we shared stories, laughs, and productive discussions. I learnt a lot by diving into the codebase and exploring a bunch of different concepts. 
But most importantly, I overcame my fear of this project. Yes, a few days after the selection, I had a waive of self doubt: "How will I pull this off? Do I even know enough?" But slowly, through constant interactions with my mentors and some real digging into the algorithm, I have gained my confidence and now I'm really looking forward to completing this project in the best way possible.

Here's to a productive coding period ahead!

Till next time,
Bye!

Comments

Popular posts from this blog

Week 7: Events, Exhaustion and Evaluations

My GSoC 2025 Journey Begins

Week 1: Coding Period Begins