Question for Factable Solutions from Paul Bernier

Michael Lam

Core Committee
Core Developer
Factable Solutions
Hi Paul,

Short answer yes, I plan on continuing to do what I've been doing. The rate may vary through the year based on different factors, but I have no current plans to alter my course, which if I did, I would post the appropriate update in the contributions section.

I'll explain a bit of background on how I've chosen this role for now. Coming into the Factom ecosystem as an outsider to blockchain in general, I started looking into the code to learn Go and also learn the factomd codebase. What I found myself constantly doing when looking at system level files was continually going all the way back to the common directory / primitives directory to understand the basic elements of the system. What I found was that I had to read the code to understand what was going on, since there was very minimal comments. So once I read the functions and understood what was going on, I just started writing comments in Go-lint style so when I hover over a function in my development environment, I could see the comments. I admit that some of my comments are perhaps less interesting as the naming scheme for functions generally follows reasonable guidelines. However, I've found lots of places where documentation was lacking. One example is in random.go with the functions named "func RandIntBetween(min, max int)". The function may seem obvious what it does, but there are details missing. The function actually returns a random number from [min,max) where the max is excluded from the available numbers. Its not obvious that this is so, and in fact I've found many times in the testing functions where someone assumed it was [min,max] (inclusive of max) which meant the test wasn't actually doing what was intended, or there was potentially a corner case which never got tested.

What I currently like about this role, is it allows me to continue to operate independently of others. Essentially, I've found an area where I can contribute and am doing it. The small refactors in some functions allowed me to practice Go. So I plan on continuing my lowlevel tour of the common directory and finish that. Then when I eventually move to more system level files, in theory, all the primitives and low level code will have been documented, and that will enable me to better and more quickly understand the higher level functions. I'm not making the low levels perfect, but I feel like they are much better after my passes through them (comments added, receiver names matched, small refactors for code duplication, a few more functions tested in the unit tests, and occasionally a bug fix). As I've mentioned previously, these types of contributions are not really 'fun' coding, and I hope to eventually do more interesting things, but I think for now I think they are solid contributions to the ecosystem given our efficiency level and our level of engagement in general in the Governance area. As with everything, the contributions are fluid, with perhaps more time spent recently on ANO standing system and responding to various things items related to it. I do currently have a 20 file check-in that is almost ready to go, which has another minor bug fix in it.

Anyways, hopefully that answered your question.