Building an application on a blockchain is a real challenge for developers who are seeking to leverage the power of the decentralized Web. With that in mind, dfuse is inviting experienced developers to share their journey of building these next-generation dapps. We are pleased to speak today with Nathan Rempel, CTO at KARMA and one of the early users of the dfuse API.
Could you introduce yourself?
I'm an Electrical Engineer who studied at the University of Calgary, now residing in Australia. My work experience has been very diverse: Video Distribution Engineering for Shaw Cable, Power Systems Engineering for Oil and Gas, Systems Engineering for Cloud-Based Equity Software, with various software contracting in between, and now a workaholic for the EOSIO Blockchain.
I started coding and scripting as early as 12 years of age, and have always been drawn to it as a hobby and passion. I studied Electrical Engineering to diversify my knowledge base - and so I could build robots - and yet my life keeps pulling me back to the world of software.
Could you present the vision of Karma?
KARMA began as a social media platform that would reward people for being altruistic and doing social good.
As the platform develops, it has become apparent that KARMA can tackle many of the controversial issues that face social media platforms today. Rather than the social media platform itself benefitting from the content others create without sharing of any of those rewards, KARMA gives nearly all rewards directly back to content creators in a deterministic, fair, and verifiable way through the actions of the community upvoting and downvoting content. This transparency and fairness is enabled through the use of blockchain.
Blockchain provides the guarantee that both we the creators of the platform, and the community that uses it, may be held accountable to our intentions and promises.
What are the main challenges when developing on a blockchain?
The current state of blockchain technology is rapidly improving, but limitations still exist. The key challenge for an application like KARMA is onboarding users: the elusive "mass adoption". While key technologies are being developed by the community as a whole to make this even easier and invisible, KARMA needs to find solutions now to maintain momentum.
With the initial iteration, users must provide their own EOS accounts which have sufficient "CPU resources"... in the near future, this will no longer be necessary due to custodial mechanisms.
Due to the sheer size and quantity of video and photos being posted by even a small number of users, we required centralized servers to host this data in a persistent and accessible fashion for the mobile app. However, the EOSIO smart contract remains the entry point for all interactions. All token interactions are fully decentralised. The dfuse API has made the development and reliability of these centralized aspects significantly better and easier than past options.
Will it be obvious to a user that they are on a blockchain?
The initial iteration of KARMA still exposes "blockchain aspects" such as providing a private key and indicating that transactions were successful or not. As KARMA progresses and our custodial account mechanics are developed, users will no longer be aware that blockchain is involved at all.
Our goal is to completely remove the limiting aspects of blockchain and provide a world-class seamless user experience. Those who are passionate about the advantages of blockchain may have "power user" features, such as auditing transactions and "seeing the matrix," but for everyone else who wants to benefit from the platform, we want blockchain to be as invisible as the internet.
What advice would you give to a developer who wants to build a project on blockchain?
My key advice would be forget about blockchain. If you are developing a project, your solo focus should be on discovering the best APIs available and understanding the limitations of the protocol. Beyond this, nothing changes. If you are familiar with best development practices, through reading the documentation for APIs, and asking coherent questions when you get stuck, there is no reason you shouldn’t succeed.
EOSIO is a new protocol and many people around the world are developing the tooling that is already available for much older technologies, and you too can be part of that. If you need a team to develop a project - don't focus on "blockchain developers". Just hire good, reliable, honest developers and they will figure it out!
My best resources:
If you are a developer and want to share your experience to build on the blockchain, please feel free to contact us. We would be happy to integrate your interview in our series "In the Eyes of a Blockchain Developer".