2024 in Learning and Building
Tags: webdev, rust, beginners, backend
Published: 2024-02-19 19:02:31

Since writing my first line of code in my second year of a liberal arts degree in college on freecodecamp, I have spent a significant portion of my days almost without fail writing what humans understand as machine-readable text to instruct a computer on what it needs to do for me. Code and later software engineering has been with me through highs and lows, through the hobbyist phase to being paid to increase shareholder value and so much more. Understanding how the data flows through a codebase and the implications of moving, first fiat now magic internet money, has moved me from frontend lead to developer relations director in my career, but entering into my 11th year writing all things web, I knew the inevitable was here. It was time to get bare metal.

These days I care a lot about performant and predictable computing. I love the flow of data. I want to get as close as possible to tweaking bits of the machine for the perfect human/computer communication. I love the dream of engineering highly scalable projects that do not break under pressure. So when I crash back to earth and I'm asked to come consult - as seems to be my thing these days - on creating and implementing a developer relations battle plan for a new project, I've on very few occasions come away with engineering concerns. We cannot promise the developers lightning-fast tps, fast network finality, or ethereum equivalence if the very system developed does not do what it promises to do or even worse, does it and fails at crucial points for developers. That is a leakage in the developer interest, acquisition, and retention paradigm. I also care about cryptographic tools. I love topics like Hash Functions and Digital Signatures, Public Key Infrastructure (PKI), Cryptographic Protocols based on zk-SNARKs or zk-STARKs et.al. But as always, I'm in love with this web3 space we're land stage

So I have drawn up a plan for 2024 to learn all my interests as a product and software engineer and speak on things that excite me as a developer relations engineer in this space



**Learning**

_Stage 1 -  Rust Programming Language Beginner_
This is where I am right now and the plan here is to finish The Rust Book as found here. Full disclosure, at the time of publication, I am 5 chapters deep in here presently toying with the concept of Structs. The book is an amazing compendium of the concepts that make Rust the right language for the type of code I want to write at this stage of my career. Provided I can wrap my head around Lifetimes, Borrowing, Ownership et.al. Lovely read and I will be providing updates under a hashtag on my beginner learnings with Rust. 

My project here will be a basic rust utility that performs basic arithmetic operations.


_Stage 2 - Rust Programming Language Intermediate_
Next up I'll work through "Rust by Example" to deepen my understanding of Rust features. I'll be exploring concurrency with threads and asynchronous programming in Rust. 

Focus topics:
Structs, Enums, and Patterns
Generics and Lifetimes
Concurrency with Threads
Asynchronous Programming with async/await
Testing in Rust

_Stage 3 - Rust Programming Language - Advanced_
Next up. Delve into "The Rustonomicon" to understand unsafe Rust, advanced ownership, and macros. My plan here is to learn about interfacing with C code and Foreign Function Interface (FFI).

Focus topics:
Unsafe Rust
Advanced Ownership (Smart Pointers)
Macros and Meta-Programming
Interfacing with C code
FFI (Foreign Function Interface)


_Stage 4 - Cryptography Basics and Zero-Knowledge Proofs_
Learning
Study "Coursera Cryptography I" for basics. I'll be diving into resources on zero-knowledge proofs (e.g., "Zero Knowledge Proofs - An illustrated primer").
Next up, complete "A Gentle Introduction to Zero Knowledge Proofs" to understand the basic concepts of zero-knowledge proofs.

Focus topics:
Hash Functions and Digital Signatures
Public Key Infrastructure (PKI)
Cryptographic Protocols


_Stage 5 - Zero-Knowledge Proofs_
Study "Zero Knowledge Proofs - An illustrated primer" for a deep dive into different types of zero-knowledge proofs (zk-SNARKs, zk-STARKs). I'll be learning how to construct and verify zero-knowledge proofs.

 
_Stage 6 - Proof-of-Physical-Work Systems_
Research papers and literature on proof-of-physical-work systems. I'll be seeking to understand the principles and cryptographic techniques behind proof-of-physical work.


Stage 7 - Advanced Cryptography and Security Topics_
Explore relevant research papers and publications in advanced cryptography.
Understand security considerations and vulnerabilities in the proposed system.





**Writing**

As you can imagine, every stage has a fair amount of knowledge that I shall be taking on. This of course means that there is a fair amount of articles I shall be taking on to spread out this knowledge. Every week will have a small run down of the learnings in Rust and Zero Knowledge proof distilled down for developers for the week. The aim is to create a knowledge base for the community from the concepts of Rust to writing that absolutely simplifies the internal architecture of what it takes to anonymize transactions on the blockchain.



**Show and Tell on Youtube**
For now, I can only think of one project each for the first three stages. My thinking here is at the end of each stage, I'll build out the project and then do a video walkthrough talking through the engineering and learning from the the mini-project.  

_Stage One - Basic Rust Utility_
A simple command-line utility in Rust that performs basic arithmetic operations.
Stage Two - Multi-threaded File Processing Tool
Stage Three - Create a Rust library for a custom data structure or algorithm.




**Web3 Protocol Deep Dives on Youtube**
The 2024 bull run is almost here and I couldn't be more excited for the new narratives that are coming to the fore. From Account Abstraction to Sharding, Zero Knowledge proving systems, builders have been hunkered down and crafting the new paradigms that will lead to a more permissionless world for us all. And it's time to tell their stories. Starting from this week, every week I'll be picking up a narrative, and three or four leaders in the space and shooting tutorial videos on their individual offerings. 

In practice, that will mean alongside my learning with Rust, I shall start alphabetically with videos on deep dives about Account Abstraction -  an awesome new paradigm in our space that promises Smart Accounts instead of EOA, Social sign-in like web2 does, abstraction of gas, multi-call support et.al. 




I can't wait to explore the theory and the thinking behind these paradigms and then walk through the present offerings by a few of them. This year, to the builders I will be a builder, to the developer relations engineers, I will be a developer relations engineer and to the crab, I will be a crab. So adios! And see you in the first installment of learning and building!