Back to our Developer Showcase blog series, which serves to highlight the work and motivations of developers, users and researchers collaborating on Hyperledger’s incubated projects. Next up is Fernando Martin Garcia Del Angel, a project manager at Aabo Technologies. Let’s see what he has to say!
What advice would you offer other technologists or developers interested in getting started working on blockchain?
When I first started looking into blockchain, the way it was built, and the mathematical concepts that surrounded it I had the notion that by extension programming an application using this technology would be a technical and mathematical nightmare. However, once I started reading the Hyperledger Fabric documentation and built my first application I noticed how straightforward the whole process was; of course, it was different from any SDK I had used and it required me to think things differently but it wasn’t as hard as I first thought it would. So, my advice for any newcomers would be to lose the fear and just dive in, you won’t believe how much you’re able to do all out of the box.
My second advice to newcomers would be to read anything and everything you can about blockchain before starting. Starting out with almost no knowledge about blockchain would make you believe you’re setting up a distributed database application with confusing properties, but if instead you’re used to the concepts of blocks, transactions, consensus, and the technical reasons why blockchain is special then you’ll be able to take advantage of everything blockchain is capable of providing.
Finally, I’d really recommend to never start this journey alone. Even though this applies for any new technology you or your company would like to endeavor, creating a blockchain application requires some experience with distributed databases, networking and cryptography, which for a single person could potentially be too much to grasp. Having a team that can analyze the implications of the technology and discover possible use cases of it can potentially help you build a solid and valuable application.
Give a bit of background on what you’re working on, and let us know what was it that made you want to get into blockchain?
I’ve just finished programming a profiling application and tester for blockchain networks; this application would take any network topology attributes from a Hyperledger Fabric network and then it would proceed to launch a smart contract containing methods for creating accounts and making balance transfers as a way of measuring how many transfers could be done per second on different settings and situations (such having orderers and peers not working randomly or launching DoS attacks with invalid transactions). Our results show that this technology is incredibly robust and fast even when most peers and orderers are compromised on the network.
Another application that I’m personally developing is an open source point of sales and inventory management system built on Node.js called “Luna”. This application is looking to become a standard for many small stores here in Mexico City for store owners who can’t afford expensive POS software but still need a robust solution to keep afloat on a digitalized market. It’s being developed to support blockchain networks out-of-the-box to easily connect stores that have multiple locations and would like their product, sales, customers and other information synced for the owner’s convenience when taking decisions.
I wanted to get started using blockchain mostly due to the way a transaction or change within the network stays recorded forever as well as the distributed aspect of the network. This meant that an application built with blockchain in mind would be able to scale alongside the business with minimal effort and reliably, making it for me the future of business applications
What’s the one issue or problem you hope blockchain can solve?
Mexico is known to have a problem with government transparency and the way public funds and assets are being used, something that blockchain could be able to solve. We were struck by a 7.1 earthquake that strongly affected Mexico City, Puebla and Morelos taking the life of 370 people and collapsing 228 buildings just on the capital. Mexicans who were the least affected took upon themselves to help whoever they could with whatever they had in an unprecedented act of unity that was registered by several news organizations for the world to see. However, there was an issue with supplies from several sources being stolen by people who wanted to resell them and even more problematic, the government taking these supplies to relabel them as being a donation from the state when in reality it was all being donated by citizens; this led to people writing over the products to deter people from stealing and reselling them and the government to simply relabel them.
The way I see it, this whole scenario could’ve been stopped if there was a unified system that could transparently and efficiently track where each donation went, where it was, their destination and once it was given to a victim of the earthquake. This would’ve not only facilitated tracking, but it would’ve also allowed people to trust that their donations were given to the people who needed it the most. Even now that it’s been about 2 months after the earthquake, I think blockchain solutions could be used to a great extent for emergency situations where transparency, speed and accountability are greatly needed.
What is the best piece of developer advice you’ve ever received?
Overall, the best developer advice for me hasn’t been directly about code development but mostly about documentation. A teacher once told us: “Write down whatever you do on a project as if it were a diary and always comment it to your peers.” This advice has helped me track issues on a project easily and get a sense of how the project has changed once these have been mitigated; this has also helped me get out of trouble whenever external factors intervene with the development of a project and a deadline isn’t met, I’ve been able to show which actions were taken at a point in time to solve them and how that turned out, making sure I’m being penalized only by those actions for which I’m directly responsible.
However, one of the best pieces of advice I could give to anyone developing an application is to never underestimate the value of project management and documentation, it has to be the single most important thing to do after coding. If at any point in time you need to include new people to the team or you need to refactor a method efficiently, documentation can save you a great deal of time understanding what needs to be done every time. This would seem like common sense for most companies and teams, but there’s still a great amount of people who think management and documentation are not relevant when coding and most of the time they’re proven wrong.
What technology could you not live without?
Even though this is a really old technology, I can’t live without using paper notebooks and agendas. I know nowadays our phones and tablets have way more processing power than even most laptops in the market and that modern technology allows us to customize most of the note taking process, but using traditional notebooks has allowed me to unwind when sitting for over 8 hours in front of a computer or in times of stress by jotting down my thoughts, writing my feelings or even by drawing anything and everything I’m thinking about. The sole fact that it doesn’t have a screen or needs recharging helps me bring it anywhere I want without the need to worry whether it’ll stop working or anything else.