September Update and Efficiency Reduction to 50%

Previous Updates
Welcome to the first edition of the Factable Solutions ANO contribution update!

Summary (if you don’t want to actually read the larger comments):
  • Factable Solutions pledged as a high efficiency infrastructure ANO (60%) doing some core development
  • Factable Solutions incorporation and business setup completed
  • Factable Solutions mainnet servers onboarded after passing full audit 7/10/2019
  • Michael is actively learning Go, Git, and all the other tools required for core development
  • Pledged initial estimate of 6-9 months before actively contributing to the code base realized in a bit over 1 month, as Michael made his first pull request ( to incorporate changes in 7 files
  • Note: The above code modifications are all code cleanup: adding comments, removing duplicate code via refactoring, making receiver names consistent, adding tests for untested functions. Expect this level of contribution to continue until Michael more fully learns the larger system, which will still take quite some time.
  • Active in governance processes on both Factomize and discord since being elected

Main Update:

It seems appropriate to post our first update now that we have definitive milestones achieved since our announced election at the end of May. I’m unsure of the frequency with which we will post updates here, but will do so at least quarterly, if not monthly. If the community has a strong feeling one way or the other, please let us know. Factable Solutions was elected as a high efficiency infrastructure ANO (60%) that will contribute to core development.

Almost all of our attention since the election announcement has been on getting Factable Solutions up and running as a business, which includes the company’s incorporation, signing up for various business accounts, getting our servers up and running, etc. All that hard work has paid off with our servers finally passing the full audit and coming on boarded on 7/10/2019. Despite this taking a considerable amount of time, it’s the most straightforward and boring part of the update, so we won’t focus much on it.

Michael has only recently started working on his pledged core development contributions: learning Go and contributing to the core codebase in 6-9 months time. Michael has found that he can make tangible contributions to the code base almost immediately while he reads code and learns about the system architecture and this has resulted in generating his first Pull Request for 7 files. While reading code, he realized that much of the code base is missing relevant comments about what is going on. So his game plan for helping him learn both Go and the whole system will consist of: 1) adding appropriate comments to all the files he reads, 2) refactoring / deleting any duplicate code he sees, 3) general code cleanup wherever possible. While the timeline for contributing to the code base has been dramatically sped up over the initial 6-9 month estimate, standing parties can expect similar levels of code contributions moving forward for the foreseeable future. These code contributions are individually small, but I expect that they will slowly move the code quality of the codebase in a better direction. It will still take some time to learn the system and contribute more meaningfully than just code cleanup. Michael is also taking notes on the entire process, and will hopefully condense these notes into an onboarding document which will be useful to any new developer looking to contribute to the Factom Protocol.

Factable Solutions has also been active on governance, contributing opinions and voting on relevant/required topics on both Factomize and discord when we feel we have something to contribute to the conversation. If you would like Michael’s opinion on anything, please feel free to tag him on Discord. Discord ends up being too much of a distraction to monitor constantly given the nature of our pledges (core development). Tagging our team members is a better way of getting our attention on specific Discord discussions.

That pretty much sums up the craziness of the last month+, which we hope will calm down somewhat now that the business and server setup is passed, and we can begin to more fully focus on our pledges of contributing to the core codebase.

If you have any questions/comments/concerns, feel free to reach out to Michael.
Current Update: September Update and Efficiency Reduction to 50%
I’ll address right away the efficiency reduction part, since I’m sure that caught your attention. We campaigned as a 60% infrastructure node, with a pledge that I learn Go and be contributing in 8-9 months time. The 60% efficiency rating was due to the 8-9 month expected delay in doing any contributions to the core codebase. I was asked by Tor during the campaign if I planned to lower my efficiency once I had learned Go, and I said it was difficult to say at the time, but that I would be transparent and clear if I were to drop my efficiency in the future. Fast forward to today, I have been able to contribute almost immediately to the code base while I learn Go and the Factomd system by reading code, updating comments, doing minor refactorings, and fixing small bugs when I come across them. When I read through the other 60% efficiency ANOs contributions, it is clear that Factable Solutions is contributing at a higher level than others within the 60% efficiency tier, and seems to be more in line with the 50% tier. What my efficiency should be is certainly up for debate, and I’m not sure I truly know where Factable Solution’s contributions lie on the sliding scale of efficiency, but I know they are above the 60% level. So my plan is to drop our efficiency on both servers to 50%. I welcome criticism, discussions, concerns, etc.

It has been almost 2 months since my last update. First the boring and obligatory information:

  • Servers had constant up time
  • Upgraded on time
  • Quick response during the network pause
  • Reasonably active on discord and factomize, adding where I felt appropriate

Now to the ‘core’ update, if you will:

A total of 3 pull requests made. In general comments, receiver name changes, refactoring, unit test coverage improvement, etc.

  1. Pull request touching 20 files:
  2. Pull request touching 12 files:
    1. Fix panic by RandInt64Between if spread is larger than Int64Max
    2. Fix problems with RandIntBetween() and RandInt() on 32 bit systems
    3. Fix tests which had problems due to assumption the 'between' functions produce [min,max] when in fact they are [min,max)
  3. Pull request touching 44 files:
    1. Potential bug fix where missing JSON quotes were found