About Me
Blockchain Dev on the Road to Mastery
Hi
My name is Darko Kolev. I work as a Full Stack Blockchain developer at Request Finance, building a financial suite of blockchain applications.
I also work on side-projects in my free time, such as this blog.
My (programming) life Story
First Programming Book
I got my first programming book when I was 13 years old. It was called Introduction to Programming with Visual Basic, by a Macedonian author. I remember reading through it all and it completely made sense. I was almost too literal person, so programming is very natural for me, the computer does “exactly” what you tell it to do. And if something doesn’t work, it’s always your fault.
So I learned all about if statements and for cycles, wrote one or two classes etc. Actually I don’t think I had a reliable internet connection at the time and StackOverflow certainly didn’t exist. So the most valuable lesson I got from my first book is debugging and in general sticking to a problem until I found a solution because there was no one to ask. At this time I was in primary school still, one or two years before high school, so I had an advantage by the time they started teaching programming at school.
Languages used: Visual Basic.Net
Concepts learned: If-statements, For-cycles, Classes, Objects, Debugging.
High School programming
In high school, programming was completely new for most of my classmates, so I felt like I was The Man lol. I knew all the answers without even looking at the book. So I felt pretty good about myself and I was definitely the best at my school, but I still hadn’t discovered the online Algorithm competitions.
I discovered those in my last year of high-school, and I realized I can only solve the easiest level, so I felt like a complete loser. But this opened my eyes to what real algorithms and applications look like and the level that I’ll need to reach to become a professional.
Languages used: Pascal, Delphi
Concepts learned: Simple Algorithms, Desktop programming.
University years
University was a blast in terms of having fun while programming. It was challenging, but fun.
In Year 1: we started of with basic algorithms in C. All the knowledge that I thought I previously had, we learned that in the first week here 😂.
In Year 2: We started learning some real algorithms at last: Graphs, Dynamic programming, Recursion, Searching, Sorting, etc. However every test that we made was handwritten, we didn’t touch actual computers during tests because no one would finish the program without errors at this point.
In Year 3: Here we got closer to the real world. We learned web development Java servlets, vanilla Javascript (there was no Angular or React at the time), and CSS for design. It was fun, not as much as the algorithms, but we finally saw what it would take to build an app users would use.
In Year 4: This is the year I got introduced to Prolog and Python, two of my favorite languages. Prolog is just a genius language, actually, it’s logical and declarative. This means that in your programs you just explain the problem and the compiler has a mind of its own and solves it for you, my mind was blown. But I knew this couldn’t be used in the real world, it’s not general purpose. However, it was used in the IBM Watson project. And then Python 😍, it is basically plain English but for computers to understand. It has such short and eloquent syntax while maintaining all capabilities that Java has.
Languages used: C, C++, Java, JavaScript, Python, CSS, Prolog, Lisp.
Concepts learned: Algorithms (Graphs, Dynamic, Recursion, Search, Sort, Web development, Testing, TDD, Functional programming)
Professional Career
First project
During my third year of university, I got an opportunity to develop a fitness website for an actual client for the company that I interned with at the time. I was going to get paid sweet $300 for “just a few months” of work 🤣, but hey, in student money that’s a lot.
They were mainly using PHP at the time (I never touched PHP before that or ever since), but they said it was easy to learn so I said why not.
The architecture of the app was as follows, I wrote 0 classes, 0 tests, and 0 modules. There was a PHP file for every page of the app, at the beginning of every PHP file was the backend code, followed by the CSS code, and finally the HTML 🤣.
It was a disaster of architecture, but it worked flawlessly, there were 0 imports 🤣.
Languages used: PHP, JavaScript, CSS.
Concepts learned: Building an app from start to finish.
First official developer job
My first official full-time developer job was with a local web dev agency called Medical IT Revolution, working on medical software for hospitals. I learned how to work in a team, we were 4 people in our team, with 15 total devs in the company. I stayed there for a year and a half, learned about Web development a bit more, learned Angular as well, but things started getting really boring really fast.
Languages used: Java Servlets, Angular.
Concepts learned: Professional development, testing, working in a team.
Web3 Introduction
After about a year at my first company, I started missing Python for some reason. So I started looking on Upwork for some side gigs. I got burned a few times (working without getting paid), but I had momentum, and I was getting projects.
One day I landed a bid for a project called BitcoinAverage, I had only heard of Bitcoin from afar, but had no idea what it was.
The point of the app was to compute the average price of Bitcoin by averaging prices from multiple exchanges. And the future plans were to build an API to provide this data programmatically and charge for it.
I worked on fixing some bugs at the beginning, and after a few months, in January 2016 I officially quit my job and started working full-time at BitcoinAverage.
I was the only developer here, the highest ranked and the lowest, the junior and the CTO, so I learned a lot. I developed the full API product, implemented micro-services, Web sockets, API rate limiting, Angular and a million other things.
But in regards to Blockchain programming itself, I was still on the fence. I wasn’t doing any smart contract work or any interaction with contracts, this was still a regular web app.
Languages used: Python, NodeJS, Linux shell.
Concepts learned: Building micro-services, scaling, making tech decisions, building a payment system, interacting with APIs, and cryptocurrency exchanges concepts.
First Smart Contract
I developed my first smart contract out of necessity, I had to save enough money for a downpayment on my apartment 🤣. So I found another gig on Upwork in the summer of 2017 for Blockchain programming. This was the year of the biggest crypto bubble when everyone was building their own token and doing ICOs. The project was to develop a token for a company that does genome research, something similar to 23AndMe.
Honestly, I think I got the job because I spent the first 30 minutes of our interview trying to convince them that they didn’t need to make a token at all. But they had a business plan and funding in mind so I accepted. The project didn’t see the light of day actually, after a few months of development they just shut it down. But I made some money and bought an apartment.
Languages used: Solidity, Truffle.
Concepts learned: Blockchain and Smart Contracts.
Request Finance
After my short project in 2017, I went back to building BitcoinAverage, but around 2021 I knew I needed a change, the company wasn’t growing, and it wasn’t getting anywhere actually. So I developed a few personal Blockchain projects and then started applying to Web3 job positions. I was fortunate to join Request Finance in October, 2021 because they’re an amazing team that has been in the game since 2017.
They did an ICO in 2017 as Request Network, a protocol for an open financial system. But just a protocol is not enough, you need projects built on top of it. So as a next step, they formed Request Finance, a company that started developing an Invoicing app built on top of the Request protocol. When I joined, it was only the Invoicing app, but now we’ve expanded into Salaries, Expenses, Streaming payments, Escrow, and much more.
During my time here I worked on two big topics, developing an Escrow contract and integrating with Superfluid to provide streaming invoices. Currently, I’m working on an Organizational feature that is required by big crypto companies where many people are involved in their payment processes.
Languages used: Solidity, Hardhat, Ethers, NodeJS, TypeScript.
Concepts learned: Professional Blockchain development.
Future Plans
As we all know, Smart Contracts don’t change very much, so there isn’t that much Solidity programming in my current job. That’s why I started this blog: to keep my Solidity skills sharp, to teach while learning, and to get better at all aspects of Blockchain programming.