I wrote my first year review in 2018 because I felt that a lot had happened and I wanted to reflect. And I feel the same about 2019. A lot changed in my life as I shifted from being a student to working in the cryptocurrency space. In this article I reflect on these changes.
I'm publishing this article rather late, given that we're already in the second quarter of 2020. I didn't manage to complete the article early in the year, but it is never too late to look back and reflect. Even three months later. I try to keep the focus on 2019, leaving events of the past three months for next year's reflection.
Last year I noted how my writing had slowed down in 2018 with just three articles. And this year my writing has not been more productive. But while I saw it as a negative point last year, I'm actually quite content with my writing the past year. I've decided that it's alright like this. There's no need to pump out new articles every month, and it's fine to take some time.
Last year I listed three articles that were still in the pipeline for 2019. And guess what? None of them got published. But I realise why. At first I wanted to write these articles just to help out people with the same problems as me. But while I was writing them, I realised that these posts would not be publish-and-forget.
They would need support and updates after publishing. And I was not interested enough in the topics to justify spending that time. So instead I focused on topics that did interest me enough to keep them up to date.
This led me to publish three different articles centred around smart contracts.
- Automatically verify Truffle smart contracts on Etherscan
- Creating Truffle plugins
- Smart Contracts on Ethereum, Bitcoin and Bitcoin Cash
This time around I won't be listing the articles that I might or might not publish in 2020. I've learned from my mistakes of last year. But if you're still interested to read about anything in particular, let me know in the comments below.
I've been a student for most of my adult life. I started my Bachelor's degree in Computer Science when I was seventeen, and completed it in 2018. I immediately continued with a Master's degree in Software Engineering.
I had some doubts going into the Master's program, as I'd rather spend more time on actual software engineering rather than lectures. But the degree I chose to pursue is very practical and is a only one-year program, so I decided to go for it.
Because the program has a practical focus, part of the work is doing a project at a company and write a thesis on it. I chose to do my project at Bitcoin.com, where I joined Gabriel Cardona's team to create a high-level smart contract language for Bitcoin Cash, called CashScript.
The project and thesis were well-received by the company and the graduation board. So after defending my thesis in late August I finished the project with a 9/10. My supervisor urged me to publish a paper, as I had done in 2018 with my BSc thesis. While this did interest me, the months that followed proved to be filled with many other exciting things. So in the end I decided to forgo another publication.
⛓ Blockchain & Cryptocurrency
As with 2018, this year was filled to the brim with blockchain and cryptocurrency projects. Besides my biggest project CashScript, I created truffle-plugin-verify and revoke.cash, and maintained my previous project, truffle-assertions. I also attended cryptocurrency events and was featured in several publications.
In early April I flew over to Tokyo to work on CashScript at the Bitcoin.com office. In the months that followed I researched Bitcoin, Bitcoin Cash and Ethereum, and I did a deep dive into Bitcoin Script, the VM that powers BTC and BCH transactions.
CashScript's syntax was inspired by Ethereum's Solidity to allow for more collaboration between the Ethereum and Bitcoin Cash communities. The CashScript SDK was also inspired by several Ethereum projects, including Truffle and web3.js.
Since then CashScript has greatly simplified smart contract development in Bitcoin Cash, and has made complex techniques like covenants accessible. The full compiler stack as well as the SDK were implemented using TypeScript for strong integration within Node.js and browser applications.
If you're interested in learning more about the differences in smart contracts on Bitcoin, Bitcoin Cash and Ethereum and where CashScript fits in, read my article Smart contracts on Ethereum, Bitcoin and Bitcoin Cash.
Around the same time I started working on CashScript I also created one of the first widely used Truffle plugins: truffle-plugin-verify. The plugin allows you to take any smart contract in your Truffle projects and submit its source code to Etherscan for verification. Read more about this process in my article Automatically verify Truffle smart contracts on Etherscan
Before this plugin, source code verification was only possible through a convoluted process that forced you to use Remix for contract deployment. And since Truffle has built-in functionality for contract compilation and deployment it would be unfortunate to throw that out of the window.
So instead truffle-plugin-verify adds a single command to the Truffle CLI that allows you to seamlessly verify the source code of any of the contracts deployed using Truffle. The plugin just needs to be set up with an Etherscan API key after which it can be used.
truffle run verify SimpleStorage --network goerli
The plugin slowly began to gain traction, but it was one of the few Truffle plugins that was actually being used. Since there weren't many resources and guides on how to create Truffle plugins, I decided to contribute some of my own knowledge.
I was asked to be a guest lecturer on Truffle University, a course for learning Ethereum smart contract development. I gave a hands-on workshop on Truffle plugin development, where we went through the entire process of developing a non-trivial Truffle plugin. The code for this workshop can be found on GitHub, and I later wrote an article about the same subject.
Later on in the year at Devcon V in Osaka, I finally met Paul Berg in person after previously having contact online. We talked a lot and one thing that stuck with me was the risk of ERC20 allowances in DeFi.
Many DeFi applications - like Uniswap, Compound or Sablier - need to spend ERC20 tokens on the user's behalf. This is necessary for the functioning of these platforms, but could be dangerous if left unchecked.
If a bug is found in one of the smart contracts that has an active allowance, tokens can be taken from the "safety" of your wallet. So while these allowances are necessary when using the DeFi applications, but it is good practice to revoke outstanding allowances when you're not using them. Revoke.cash gives you an overview of all outstanding ERC20 allowances so they can be revoked.
🐙 Open Source
Almost all of my personal and professional projects are open source. Especially in cryptocurrency open-source software is important. The software can be dealing with large amounts of funds and even users' keys (in case of wallets), so this code should be publicly auditable.
My open source projects have increased in popularity, with CashScript and truffle-plugin-verify getting close to 50 GitHub stars within the year and truffle-assertions doubling in stars. But more impressive is the fact that my NPM packages now get a combined 15k+ monthly downloads (mostly truffle-assertions). And that they're being used in big open source projects, such as Gnosis, Kyber and Ren.
All projects also attracted outside contributors, so I'd like to thank Andre Cabrera and Gabriel Cardona for contributing to CashScript, Leon Prouger for contributing to truffle-assertions and Jens Jørdre, Kata Choi, Vincent Au, Sean Casey and Tim Coulter for contributing to truffle-plugin-verify.
But while my own projects grew and many people contributed, I contributed less to other open source projects than I did in 2018. I did help out with some things on BITBOX, Kickback and Atomic Loans and I picked up my first Gitcoin bounty. Nonetheless, I want to contribute to some more open source projects in 2020.
The first time I spoke at a conference was in 2018 at TruffleCon. And a month later I participated won my first hackathon at the Amsterdam BCH Hackathon. I enjoyed these events a lot, so it's unsurprising that I continued this trend throughout 2019.
Just before I left for Tokyo, I went to EthCC in Paris, followed by ETHParis. The company I worked for at the time has housing in Paris so I was able to stay there the entire week 🎉! I repeated the talk I gave at TruffleCon 2018 in front of a new audience, and it was interesting to see the difference in reactions.
At ETHParis I hacked with people I had met at previous events, and we managed to win the JPMorgan Quorum prize. While I enjoyed the hackathon, we were too focused on winning a specific prize, rather than building something cool. So in the future my focus is on building an awesome product first, winning prizes second.
During my time in Japan I was mainly focused on my project, so I didn't attend any events there. But after leaving Japan at the end of July, I returned to TruffleCon in Seattle, where I gave a talk like the one I did for Truffle University. It was great to be back at TruffleCon this year. It remains one of my favourite events in the crypto space as it has a big focus on practical topics.
TruffleCon 2018 was in downtown Portland, so it was very easy to grab a bite or a drink after the talks. There were also some organised social events around the conference, making it easy to socialise. This year there were fewer official social events, and the conference took place outside the city, so it was more difficult to go out afterwards. Not that it stopped us!
After our time in the US we briefly returned home to Amsterdam. But this didn't last long, as I was invited to come over to Townsville, Australia for the Bitcoin Cash City conference. What I liked about this event is that it had the same developer focus that I was used to with events like TruffleCon. So it was great to share this vibe with some of the awesome people in the BCH community.
We decided to stay in Asia a bit longer and in October I attended Devcon V in Osaka, the quintessential yearly Ethereum conference. I met some great people and I reconnected with many people I knew already.
I gave some (slightly work-in-progress) talks at side events and the Devcon community stage about the differences between smart contracts on Ethereum and Bitcoin Cash. It's quite difficult to articulate the most important differences, since Ethereum, Bitcoin, and Bitcoin Cash are fundamentally different beasts.
After travelling around for a bit longer, my final event of the year was the London Bitcoin Cash meetup. By that time I had gone through several more iterations of the same talk, and I presented on the differences between ETH, BTC and BCH in terms of smart contracts. The talk was well-received and I published its contents in my article Smart contracts on Ethereum, Bitcoin and Bitcoin Cash.
While many things happened in 2019, the biggest change was spending more time outside of The Netherlands than inside. This started with my project in Tokyo, and continued with all the events I wanted to attend in the second half of the year. But in between those events we also decided to travel around for fun.
We traveled around Japan (Tokyo, Kyoto, Kamakura), with some smaller trips to Korea, Taiwan and Thailand. After leaving Japan we traveled through some of the US (Hawaii and the West Coast). After getting back to The Netherlands for two weeks, we flew over to Australia, then to Bali.
From Bali we traveled on to Osaka for Devcon after which we revisited Korea and the US again (Chicago, Denver and NYC this time). From New York we flew over to London, and finally completing our second time around the world back to Amsterdam at the end of 2019.
2019 was full of change for me. It marked an end to my 5 years of university and I went from living in Amsterdam to traveling the world. In my previous year review I wrote that I would speak at more conferences, travel to more places and graduate. And I did.
With the current situation around COVID-19 it is good to be steady in the same location for a while, so I can't look ahead and make those predictions again. It will take some time for travel to resume and many events have been canceled, postponed or moved to the virtual space.
This could be a nice opportunity to take part in more virtual events, but I don't think they are a real replacement for actual personal contact. In any case I am looking forward to an exciting 2020 (but perhaps not too exciting!).