Since I mentioned that I started coding solidity three years ago, at the ripe old age of 38, many have asked me how to do the same.

There isn't a secret or a resource that is exceptionally better than the others, but here is my story.

giphy.com/gifs/dr-who-co…
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.

github.com/extraterrestri…
It took me about a month, with Bernardo teaching me solidity, and javascript, and git, and truffle.

My code was awful, overeengineered and expensive to run even in 2018, but we didn't know any better. I thought it was great.

medium.com/cementdao/fixe…
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.

medium.com/hackernoon/imp…
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.

medium.com/hackernoon/rol…
Just weeks away from bankruptcy, that code got us that next client

@allianceblock needed us to integrate those ideas into a blockchain issuance platform, and we set to work again.

giphy.com/gifs/thewhitep…
This was an application for a consortium blockchain, initially Quorum but since they only needed a PoC we downgraded to Geth and finally Ganache.

The code worked, although it stored too much data on the blockchain, and was a nightmare for the frontend developer to build upon.
That was not a massive issue, because they only needed a PoC running on Ganache. That code never went public, thankfully. It was awful.

Looking for clients again, I gave up my salary so we wouldn't go bankrupt. I was coding! I was having fun!
To pass the time, I started hq20-contracts with @uivlis. Coding simple solidity patterns and use cases, and writing about each one of them.

github.com/HQ20/contracts
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.

github.com/OpenZeppelin/o…
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.

I didn't stop grinning for weeks.

forum.openzeppelin.com/t/openzeppelin…
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.

Yeah, I didn't know who @paradigm were.
I was the first hire at @yield, and during that lockdown in the Portuguese hinterland we started work on Yield v1.

First, I brought over @mrbrucedonovan, the very solid frontend developer I had sorely mistreated when coding AllianceBlock.
With the help of @gakonst that had just been hired by @paradigm, and knew something just about everything, we released Yield v1 to the mainnet.

app.yield.is
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
 

Keep Current with Alberto Cuesta Cañada

Alberto Cuesta Cañada Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @acuestacanada

17 Dec 20
You can get Dai flash loans from @yield!

As cheap as 2.5 bps and 600K gas!

Let's flash!
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.

And you can do so just by using this npm package ⚡️
npmjs.com/package/fydai-…
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!

kovan.etherscan.io/address/0xDd6b…
Read 4 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(