Developer Showcase Series: Antonio Mota, Vice President, Applications Developer and Lead Analyst, DLT Centre of Excellence, Citi Innovation Labs

Developer Showcase Series: Antonio Mota, Vice President, Applications Developer and Lead Analyst, DLT Centre of Excellence, Citi Innovation Labs

Back to our Developer Showcase Series to learn what developers in the real world are doing with LF Decentralized Trust technologies. Next up is Antonio Mota, Vice President, Applications Developer and Lead Analyst, DLT Centre of Excellence, Citi Innovation Labs.

Give a bit of background on what you’re working on and how you got into decentralized technologies.

I have developed extensive experience with several distributed ledger technologies (DLTs), including Ethereum, VeChain, Corda R3, Avalanche, Bitcoin and more. I was exposed to DLT when I joined the Deloitte Blockchain Lab and following that I joined the Citi Innovation Labs and Citi’s DLT Center of Excellence. As the Citi Innovation Labs focuses on multiple emerging technologies (Generative AI and DLT), I also learned how to integrate Generative AI into my research and further develop PoCs and PoTs related to Blockchain and GenAI, while working on a few projects in production.

How are you involved in the LF Decentralized Trust community?

The Citi Digital Assets team were members of the Hyperledger Foundation, and in the past year I have contributed to the Besu project. Especially since Citi uses this technology as part of the foundation for Citi Integrated Digital Assets Platform “CIDAP,” it has allowed me to gain great exposure.

Why did you choose to become involved?

During my time at Citi, I came across some bottlenecks while working with a vendor. This influenced my work and motivated me to contribute to the following to Besu:

  • The first project was the implementation of the “Empty Block Period Seconds" network configuration. By default Besu creates new blocks every “x” number of seconds using a configuration setting named “blockPeriodSeconds” (e.g., blockPeriodSeconds=2 will create a block every two seconds). This may cause a proliferation of empty blocks on the chain that do nothing except occupy storage space and potentially degrade performance. I developed a solution by implementing a new setting called “emptyBlockPeriodSeconds. Now you can still create blocks every two seconds if they contain transactions. However, the system will create empty blocks if there are no transactions to commit in the interval defined by means of the new setting. For instance, with blockPeriodSeconds=2 and emptyBlockPeriodSeconds=60, in one day 42,200 blocks would be created, empty or not, while with one day without transactions it will create only 1,440 blocks, ultimately saving storage space but also improving the overall output.

  • The second project included my contribution to Jemalloc. Besu recommends using Jemalloc, a memory allocation library, to improve block processing performance by three times in relation to the OS native library. My contribution was to make the Jemalloc use as an optional feature. Prior to my contribution, the Jemalloc was automatic – if it were installed on a system, it would automatically be activated and if it were not installed the native one would be activated. This is fine, but in certain situations, like in testing periods or in older systems that do not support Jemalloc, there can be various errors because of incompatible versions. With my contribution, while the same default behavior is still happening, there is now an environment variable to enable or disable Jemalloc.

Tell us about your experience contributing to the LF Decentralized Trust community.

The experience I gained during my contributions while working alongside other experts proved to be beneficial for my professional career and to my personal interests. Upon starting the two projects, I was focused on my own use case and needs, but I slowly understood that there were so many experts with various backgrounds that it forced me to learn and challenge my own skills and presumed technical solutions. Fortunately for me, the people who reviewed both of my projects were quick to notice my gaps in the technical solutions and provided me with intel and guidance to complete the project. I really felt humbled when I finalized the contributions knowing that it included multiple experts in the field.

Why is contributing important?

Contributing is important since we can always learn something new. To learn about the limits of your own interests, to learn from experts and people in the field, to learn about technical skills and where you can improve and to explore new exciting technologies. And, as a bonus, to achieve the great satisfaction of contributing to a larger cause that will improve the Blockchain industry. That is always something that I will be proud of.

What developments are you most excited about?

I would be extremely excited to work in applications that integrate Blockchain, GenAI and IoT.

How can others get involved?

To get involved in Blockchain developments is quite easy. With a bit of interest and patience you can search the variety of Open Sources projects available online. There are many topics with associated communities. Once you discover a good fit, look at the closed topics to feel what issues were solved and at the open topics to see if you can contribute and volunteer for one. With a minimum level of experience, you can contact the contributors and start coding. One piece of advice - do not be afraid of making errors. You will always have the support from the other contributors and making errors and learning how to avoid them is one of the best ways to learn.

What is the best piece of developer advice you have ever received?

I was lucky enough to be around smart people throughout my career and received great advice! One of my favorites is a simple one - “be humble don’t take yourself too seriously.Or, like CS Lewis would say, “Humility is not thinking less of yourself but thinking of yourself less.”

Also, one of my favorite books, “An Introduction to General Systems Thinking" written by Gerald M. Weinberg, was one I read in the early phase of my career back in the 80s. It opened my eyes and mind to the way I saw writing programs. I stopped being a coder and started to be, lacking a better name, a “problem solver.” It was my new blueprint; I still have the book today on my bedside table.

What technology could you not live without?

I have been passionate about technology since my early exposure to COBOL and Assembler. Over the decades, I have worked with a wide range of emerging technologies, from the very first commercially available computer with a Graphical User Interface to modular, event-driven architectures. My experience spans building early browser-based applications, modernizing monolithic Java systems into distributed microservices, and developing rule engines and inference systems. I have also designed custom domain-specific languages and tools to empower both developers and end users. More recently, my focus has turned to blockchain and generative artificial intelligence, with a strong interest in exploring their convergence. I continue to enjoy solving complex technical problems and making the seemingly impossible possible!

Back to all blog posts