Some time ago, I stumbled upon Ahmad Awais' website after finding his recent VSCode course. Since 2015 Ahmad writes yearly review posts on his blog that outline the important achievements of the year. I enjoy these articles a great deal and they inspired me to start a similar practice on my own website.
In this article I will outline my experiences of 2018, and how they have changed me. Every year when I look back, I'm in awe of how much I can change in such a short time. This is the first year I'm writing this review down, which makes 2018 feel even more eventful than the previous years.
I've maintained a personal website for several years, but I only started this blog in Q4 of 2017. I started off my blog on a separate subdomain, but last October I had enough of it, so I moved everything to a single website on the kalis.me domain. This was a huge improvement, but it did cause a slight drop in SEO and organic traffic.
When I started, the focus of my blog was on my system setup, with Dotfiles: automating macOS system configuration as the cornerstone. In 2018 I shifted towards Ethereum and Blockchain, as you can see in my most-read article Checking events when testing Solidity smart contracts with Truffle. I only wrote three articles in 2018, a steep drop from four articles in Q4 of 2017 alone. But I did add two new pages with information on myself and my public speaking experience.
While the writing slowed down, the readership of my website is still growing, and I currently get between 300-400 unique page views a month. A big part of this is organic traffic, which is growing despite the drop I mentioned. In 2019 I want to further improve the organic traffic by researching more SEO techniques.
I'm currently writing three new articles that I plan to finish in the coming year:
- Automatically back up your Linux server to webDAV cloud storage with Borg Backup
- Testing Oraclize callback functions with Truffle
- Become a verified Brave Publisher and receive BAT Payments on your website
Tell me what articles you're looking forward to in the comments.
2018 has been all about blockchain for me. I started my blockchain journey when I decided to write my BSc thesis about data validation using blockchain. I built an audit trail that leveraged blockchain as a way to detect tampering with application data. I had to research the possibilities and limitations of blockchain, and I had to change the direction of the project several times. After these hiccups I ended up with a working prototype and a comprehensive thesis.
During my thesis I took some courses on edX and Coursera to better understand Ethereum and blockchain in general. Along the way I found the ConsenSys Academy, which started a new cohort just as I was finishing my thesis. I signed up, and got accepted for the summer program on a scholarship.
In this bootcamp I learned everything I needed to become a smart contract developer. I was able to apply these new skills in the final practical assignment of the bootcamp. The project I came up with was a decentralised autonomous casino that runs on the Ethereum blockchain.
This project features a roulette game using an oracle to generate a winning number. The casino house is funded by an unlimited number of investors who buy the Roscoin token. The value of this token is always derived from the balance of the casino. This means that all token holders share in the profits and losses of the casino contract.
In my Ethereum projects I employed full unit tests, but it proved difficult to test Ethereum-specific functionality such as events and reverting. I decided to fix my own problems by creating the truffle-assertions library, that solves these issues. It turns out I was not the only one with these problems, as the package currently gets around 3000 monthly downloads on NPM.
In October I attended TruffleCon to connect with other people in the Ethereum space. I gave a presentation there, titled Using events to unit test smart contracts. It included several ways a smart contract developer can use events in their unit tests, and I explained how the truffle-assertions library helps with this.
At the conference I participated in a workshop about Drizzle and I upped my smart contract security game through several smart contract hacking challenges. I also attended talks by other professionals in the blockchain and open source space. Most importantly though, I met a lot of amazing people from all around the world and all kinds of different backgrounds.
TruffleCon was the first conference I ever attended, but it will not be the last. It felt inspiring to be among so many people and to be able to learn from them. At the same time it felt great to be able to share my own knowledge with these people in a meaningful way.
At TruffleCon I met David Truong, who happened to live in Amsterdam like me. He organises monthly Ethereum developer meetups called BUIDL Amsterdam. When I was back in Amsterdam I joined his meetups, and I loved the setup of these events. They are fully focused on developers, and include sessions on all different aspects of Ethereum development. I got more involved with the meetups and I gave a lightning presentation at BUIDL 4.
At this point I was confident in my Ethereum abilities, but I had almost no experience in the larger blockchain space. I was happy that an opportunity arose to get more involved with other blockchain projects as well. BTC.com organised the Amsterdam edition of the BCH DEVCON hackathon at the end of October. I decided to take part, and I ended up winning as well.
I came to the hackathon to learn more about the wider blockchain space, and to see what Bitcoin Cash development looks like. As it turns out, the BCH development ecosystem is way behind Ethereum's, but it does have a lot of potential. At the hackathon I met Adrian Barwicki, Bryan Lee-A-Leong and Nikolay Manolov, and together we set out to make our own contribution to this ecosystem of developer tools.
We created PandaCash, a local development blockchain inspired by Truffle Suite's Ganache. It allows BCH developers to quickly test their applications against this local blockchain. This eliminates the need to connect to a public test network during the initial development stage. You can spin up and shut down clean versions of this development blockchain, which makes it a great tool for running unit and integration tests.
Adrian and I continued working on PandaCash after the hackathon to expand its functionality, while trying to get funding for continued development. Unfortunately this didn't turn out to be fruitful in the chaos of the Bitcoin Cash hard fork and the continued crypto downturn.
In the aftermath of the hard fork we did see a different opportunity in the fact that Ryan X. Charles left Bitcoin Cash in favour of Bitcoin SV. At the same time his content platform Yours.org started censoring users, and shut down. Adrian immediately started Honest.cash as an open source and censorship-free version of Yours.org and it picked up steam very fast. I joined Adrian later on when I had more free time, and we're currently working on improving the platform.
I have always been a big fan of open source software, and a large part of my professional projects at Eurocommercial are already available on GitHub. Many personal projects (such as my ionic-soundboard and my minesweeper game) are also open source. Yet part of the open source philosophy to me is also contributing to the open source projects of other people.
My personal projects have also continued to gain traction. My dotfiles repository reached more than 75 stars, and my truffle-assertions library got 40 stars and is getting more than 3000 monthly downloads.
Both of these projects have also attracted outside contributors, so I'd like to give a huge shoutout to Zachary Nawar, Nick Barry and Zulhilmi Zainudin for contributing to truffle-assertions and to Emanuele Mazzotta for contributing to my dotfiles. I also want to thank everyone else that uses my open source projects and opens issues or comments on my repositories.
For most of my day to day life, I'm a student, so academics plays a big part in my life. This was a big year in that regard, as I graduated from my Bachelor program in Computer Science last July. After graduation, my thesis supervisor approached me about publishing my thesis work at a conference in December. Over the summer I condensed my 40-page thesis into a 6-page paper for publication, while trying to appeal to a broader audience as well.
Luckily, the hard work paid off, as the paper was accepted at the RBchain Workshop at CloudCom 2018 in Cyprus, where I presented it last December.
This year I also started my one-year Master's degree in Software Engineering at the University of Amsterdam. As it's only a one-year program, 2019 will be my final year as a student. After studying for five years this is something look forward to. In April I'm starting my graduation thesis and internship at Bitcoin.com, which lasts until August. So starting September 2019 my student days will be over.
2018 was an exciting year for me. I graduated from my Bachelor's degree, started my Master's degree, learned Ethereum and blockchain development, spoke at two conferences, won a hackathon, published a paper, created a successful NPM package, and loads more.
I enjoyed 2018, and I'm looking forward to an even more exciting 2019. This year I will speak at more conferences, and compete in more hackathons, I will finish my Master's degree, keep contributing to the open source community, and I will travel to more places.
Let me know about your own 2018 in the comments below and share your goals for 2019 with the world. Happy new year!