I started in the summer of 2018, completing the cryptozombies.io tutorial. It took me about a week.
That was my first assignment as Blockchain Architect for now-defunct TechHQ.
I was given a month or so to retrain myself from being a corporate Solution Architect to design blockchain-based projects we could sell. I was the technical guy, in a three-person consultancy.
Our first chance was a few months later, in a deal to code @CementDAO
We had hired the great @obernardovieira, and he set to work. At some point he asked for some help with the math, and I rolled up my sleeves.
I just had to make Fixidity work, so that we could implement a custom AMM curve with logarithms.
Since I could code solidity now, and only Bernardo knew how to code a frontend, I continued and finished the contracts for CementDAO.
The technical debt from Fixidity being so expensive, plus other factors, meant that we never made it to mainnet.
While we looked for more clients, I wrote about what I had learnt, and experimented with some ideas to code a supply chain solution, that we would fail to sell to corporates. Wrote about that as well.
Without knowing, I was planting some seeds that would bloom the year after.
As a derivative of the supply chain solution, I had came up with a role-based access control contract, and coded it so I could write about it, as usual.
I learnt a lot with hq20-contracts, but eventually the company ran out of money and we all had to start looking for something else to do.
That's when the first of those seeds became something solid.
And that I don't know how to embed gifs properly on twitter really shows I'm not lying about being a boomer.
Looking through the @OpenZeppelin open issues, I found one that was easy for me. They needed something like a linked list, and I had done it for CementDAO first, then for hq20-contracts, and written a nice article even.
Some back and forth with @mrnventuro, and that became EnumerableSet.sol, published with one of their 2.x releases.
I had made it. My code was live. And with OpenZeppelin no less.
Then, I took on the larger issue OpenZeppelin had of redoing their access control contracts.
I had done cutting edge work on the topic for the failed supply chain app, perfected it with AllianceBlock, and again written a thorough article on the topic.
I knew I could do it.
AccessControl.sol was published as a major improvement in the 3.0 release of openzeppelin-contracts.
Next, I became a Blockchain Instructor for @Bskillstraining. Being paid was nice, I would learn how to record videos, and would learn everything about solidity, if I was to create the courses. That's how I learnt how to deploy to a testnet.
I was the one-eyed leading the blind.
Three months later, Portugal went into the first lockdown. I holed up in the mountains with the in-laws, and kept recording training videos in a damp basement or walking in the forest.
And just then is when the last seed, planted far back in the past, catapulted me here.
By then, I had coded Fixidity, published several articles about fixed point math, tested Math64x64, and tried to help both OpenZeppelin and the Solidity core team, unsuccessfully.
That's when @niemerg wrote to me, asking for help with some fixed point math.
@niemerg had both a solid idea and the funds to build it, which was rare in inbox. He might still be a crackpot, but I thought it worth giving it a shot.
That was the first time ever I had coded an application and deployed it to the mainnet, more than two years after completing the cryptozombies tutorial.
Had I made it?
Yeah, I had made it to the starting line.
With Yield v1 we learnt about our market, and I learnt about coding collateralized debt engines, integrating with other protocols, upgradability, more access control, rounding errors, oracles, AMMs, flash loans, respecting your frontend developers, and that all gas is sacred.
The problem with learning on the job and permissionless blockchain apps is that by the time you learn how to do things right, your contracts are already in the mainnet.
We were not hacked, our product was cutting edge from many angles, but we could do better.
I set up to code Yield v2 at the start of the second Portuguese lockdown, back in the mountains.
This time we all knew what we were doing, and critical features were implemented tight and fast. In three months we had Yield v2 ready for the auditors.
When people ask me how to become a smart contracts developer, I can't say that I knew what I was doing at the time.
I just kept failing, and learning, and writing, and doing it all over again.
I'm sure you can do the same.
Now, go code something.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Yield has free flash minting of fyDai, and very low fees for fyDai/Dai trades that are close to maturity. You can combine those for cheap Dai flash loans.
To use it you code a contract that inherits from it, deploy, and start flash borrowing. 💸
I deployed a dummy flash borrower in Kovan, that you can use yourself to practice. The fees are paid by the contract, so pump it with some Kovan Dai first!