An Interview with NEM Core Developer gimre
Part of the Catapult (mijin v.2) Preview Beta Launch Series With Alex Tinsman, Global Director of Communications for NEM
1. What’s your role on the development team?
UtopianFuture came with an idea of NEM chain, he initially wanted it to be a fork of NXT, but there were many things that we didn’t like in NXT’s codebase at that time. In Feb 2014 the first commit in NEM source code was made. We were working in our free time, so it took us quite some time to get to mainnet release in March 2015. Somewhere in 2015 Tech Bureau got interested in NEM blockchain. We’ve been working on tuning NEM chain to get most of it. Three of us got hired by Tech Bureau and 2016 we’ve started working on a catapult.
All three of us have similar duties: designing, developing, reviewing.
2. Important follow up question… how the hell do I pronounce your name? I’ve heard it pronounced as gim-reee, gim-ray, guy-mer…
hehe. like gimreh.
3. What has been challenging about the development process?
I had previous experience with C++ (actually much better than with Java), so switch from Java wasn’t traumatic. One of Java’s main strengths is its libraries. NIS1 is working on top of http — that was convenient, but is not very efficient. In case of catapult we were thinking about performance from the very beginning. There are libraries as well and catapult has quite some dependencies, but, i.e. we had to do whole network layer on top of Boost.Asio.
Similarly extensions, services, and plugins that we use in catapult, do not make everything straightforward, but they do improve modularity.
As Stroustrup himself put it “C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.” We’re trying to use strong types everywhere, which probably saved us multiple times already.
4. What are the biggest problems the NEM Blockchain can solve for?
I think actual question is “what problems blockchain technology can solve?” Although I would put it the other way around, and first ask: when NOT to use blockchain?
If you tend to think of a blockchain as a distributed database, then you probably have a pretty bad picture. Few features of non-anonymous blockchains that I value most are:
- decentralization — the failure of a single node, should not take down the whole system
- transparency, traceability, and trust — that is important for private chain usage
- limited supply of base tokens — this is important for public chain usage — no agency or government can add more, whenever it wishes
- reduced costs — even if we consider bitcoin and it’s pretty high fees, it’s still cheaper to send bitcoins to your family and friends THAN to use most of the FIAT-based ways (there are few solutions, but they have limitations or, user adaptation is poor)
- immutability — I placed this one as last one, cause this one might be disputable — in case of NEM, to rewrite recent blocks, attacking party would need to possess >50% of all XEM. (but if we consider someone owning so much, what would be the point of the attacker to hurt the network and possibly in result value of XEM itself)
What problem NEM blockchain tries to solve when it comes to blockchain technology itself?
Blockchain is NOT easy. Unlike bitcoin and its various forks, NEM does not operate on inputs and outputs but on accounts instead. This is something much more familiar to users and much easier to understand by developers. Trying to write middleware for bitcoin-based chains is really problematic.
Ethereum puts the bar high with Solidity, it’s very hard to find someone knowing solidity and moreover, someone knowing and understanding problems that Solidity might pose.
Regarding NEM, I think the best contribution of NIS besides APIs are multisig transactions, compared to other chains, they are super easy to use.
When it comes to catapult, probably the best thing that it (currently) brings are aggregate transactions.
Now when it comes to the actual question, what are the problems that NEM blockchain can solve — truly saying, I don’t know that yet, but I’ll get back to this in last question.
5. How can the community team best keep up with the developers?
As you might know, we’re not super communicative, mostly because there’s only three of us and we rather spend time working on the code than chatting. If you’re a programmer, maybe you’d like to work for foundation https://nem.io/jobs/ .
How to keep up — to be honest, right now I actually would NOT recommend anyone to develop on top of NIS. Instead, take a look at nem2-library-js and nem2-sdk’s that guys have prepared (https://github.com/nemtech ) and apply for http://mijin.io/en/catapult early access. I actually don’t know the details yet, but there probably soon will be publicly available test network to experiment in.
6. Can you share with us an inside story that isn’t widely known?
Not a funny/happy story. There was much more drama related to Makoto and Akitsu than it was visible on the outside. Remember that back in 2016 there was no foundation yet and it’s hard to predict what would happen with nem if it wasn’t for Tech Bureau. If it’s not obvious, there would be no catapult without Tech Bureau.
On the bright side: last few days (open sourcing) were pretty hectic. ^^
7. How will you know when NEM has really exceeded to your expectations?
I would like to see some non-obvious usage (or idea) of existing catapult features, that we haven’t have thought of (there probably are many), that would leave me with “wow, that’s really something.”