Learn How to Contribute to Ethereum with Phil Ngo & Matthew Keil (Cohort 3, Week 2)
Women in Ethereum Protocol Study Group · 20 Feb 2025 · 1:01:58
In week 2 of the WiEP study group, Phil Ngo presents how to start contributing to Ethereum, pointing to good first issues and contribution guidelines in the Lodestar consensus client. Matthew Keil then shares his own journey into Ethereum client work, and the session closes with homework for participants. It targets newcomers who want to move from learning to open source contribution.
Speakers
Topics
From Women in Ethereum Protocol Study Group, hosted by ECH Institute.
Transcript
welcome everyone thank you for joining us today this is week two of ethereum uh women in ethereum protocol Cort 3 and um today this is uh if you if you already joined us this is our first week when we start working on issues so you didn't me miss anything and uh today we have our special guests from lar F go and Matthew kale they are our mentors for this Cort we invited them to help you start um hey guys welcome and uh our agenda for today uh Phil will give us a talk about open source contributions
about lar and uh contributors guide and Matthew uh will sh will give us a demo on how to solve an issue and at the end of the session uh we will look at our repo again and I will explain you your home task all right let's get started before we start guys could you please um tell us a little bit about yourself your experience uh how did you get into the protocol and load star who wants to be first yeah I can start I I'll give a very brief one because it's also in my presentation as well oh oh so okay yeah but it's very quickly I I'm the project manager over
at loadstar we work at chains saafe uh I've been with the client team since July 2021 and uh I'll explain a little bit more later about how I got to where I am today okay great great thanks M you and my name is Matthew Keel uh thank you very much for having having me as well um I am a protocol engineer on the lowstar team I'm actually the newest protocol engineer on the lowstar team um and we're a very stable team so and I've been there just coming on two years now uh so it's a a great place if you guys want to come out I'd love to just shill us come on over uh we'd love to have uh give you guys a hand um and get your feet wet in a
protocol yeah I can definitely say your team is so friendly all right so okay Phil the stage is yours I think we can start all right let's uh see if I can share my screen here look see Okay g try full screen now everything looks okay yeah yeah perfect you can get one okay great yeah thanks everyone for having me here um I'm going to also just go a expand a little bit as well just so you get a bit of an understanding of what it's like to you
know work on a team full of protocol Engineers as well cuz this might be a path that you might pursue one day there's many different things that you can do in ethereum and this one will you know specifically address being a protocol implementor in an ethereum client like ours so why am I here first of all female software Engineers are super hard to find and part of the reason why like I I like to show myself at at you know places like women the the protocol is because we need to you know be better at being more inclusive and trying to get more female Engineers to uh to contribute so in general in Tech it's
already very low like uh from this Dev ecosystem report from jet brains I think it even States here like you know females are comprise of like 6% of software engineers and it's even worse when you look at something like protocol Guild so protocol Guild is you know a part uh it's it's a guild that pretty much all the core devs are part of that contribute to layer one ethereum and um you can even look at the membership list you can probably count like with two hands how many females we have on that list so uh just to you know that's the reason why I'm here to uh to also help see if uh if something like this interests you um so you know
protocol is built for everyone it deserves more female contributions uh so how I got here well uh first of all I've been with chains saafe uh since July 2021 uh I'm currently the technical project manager at loadstar I did some work previously on web3js um before that I was part of a failed startup we did stuff on the blockchain for security tokens and and more in the regulated Financial instrument space which obviously we were way too early for um and then before that I was in the Canadian military I did uh a lot of stuff with them uh with the Air Force and the Army I I found that blockchain was pretty easy for me
to grasp because of uh my background doing like it stuff with the military so cryptography and stuff like that was you know just came a little bit more naturally to me and then how I got involved well I started looking at blockchain in uh 2013 um it was really just out of curiosity and I find a lot of people that end up finding themselves in this space had something or some reason that kind of made them go huh I wonder what this stuff is uh for me was the mount GX hack uh back in 2013 I was sent Bitcoin as like a demo to kind of get an understanding of what Bitcoin was trying to do back then and luckily for me I grew up uh in Toronto and there was a lot of meetups um back in the day for
Bitcoin and then you know you kind of just need to put a little bit of initiative and with that Curiosity uh just start getting yourself involved and that's how you generally meet people and how you learn more about things like blockchain a lot of the times like you're going to need to do a little bit of initiative um to to really get yourself out there and uh like you know no one's going to like push you into blockchain in fact I'd be skeptical those types of people where they're you know just trying to like sell you on blockchain like you should go in there and you know learn it yourself and and have like a bit of an interest at least in in stuff like this before you get involved with it um and yeah I've been
following Bitcoin then eventually ethereum uh in 2015 so um pretty much went down the rabbit hole from that point on so why does this all matter is that everybody has their own story of getting into blockchain nobody can really say they've been studying blockchain especially like pre 2009 when Bitcoin was launched so uh nobody really ever like necessarily went to like a blockchain development school to be a protocol engineer it's not something like many kids just grew up and were like yeah I want to be a protocol engineer where I grow up you know like you kind of just fall into this and a lot of the people even on the loadstar
team uh which is H shown here you know are people that came from various backgrounds um you know I came from like a military background uh I think Matthew came from like a construction background um you know uh not everybody necessarily even studied software engineering um this is something that you know people are able to grasp because of just like how easy it is to like learn stuff online now um another uh backstory to this is it's really hard to find people that are willing to contribute in protocol and sometimes like they show up in like the most random places so uh like Cayman and twean uh and gaj Jinder all kind of
stumbled into our Repository and uh just started contributing you know like they they didn't look at like a job application or anything or job post and just started doing things they kind of just looked at the code everything's open they just jumped right in and that's like the case for a lot of things in ethereum ethereum is permissionless so anybody can just look at stuff contribute great work and get involved like no one's going to say no unless like of course like ideas are bad and stuff like this but that's whole other thing uh but like you know if you have you know the will to contribute good stuff um you can easily get yourself
involved um I think like Matthew and Nico we both met at um we we met them at Devcon that's how we actually um uh got to know them uh they came to our booth in Bogota and uh from there started contributing to our repository and then it just the relationship kept building from there that we eventually hired them NC is a uh engineer that was part of the third cohort of the ethereum uh protocol Fellowship so it is a great way to also uh start learning about the protocol and then being able to like kind of front run yourself in terms of uh what you need to know to be successful on a
client team so yeah theor is permissionless everybody can contribute we're all open source it's not just load star it's pretty much like all the different client teams and such too so what makes like a good protocol engineer there's like a mix of like hard skills and soft skills uh obviously like software engineering we are the typescript implementation of ethereum consensus um so ethereum uh protocol is basically there's two layers there's an execution layer and there's a consensus layer and we are a consensus client team that basically aims to you know um we Implement all the specifications that make uh ethereum come to consensus
on the canonical chain basically or yeah so software engineering is important we are typescript based um but you know a lot of the times when I'm interviewing people it's it's been difficult to find uh really good protocol Engineers because a lot of people just come from like a full stack background um doing like web development and stuff but I will say that like at least with load star it's more uh you also need to have a little bit more of a focus on like backend uh type skills uh more lower level type problems um so that's why generally like even though we target like a very common language
there's like a small portion of people that actually work on uh the type of problems that we do at load star so obviously problem solving is a good hard skill to have um we're kind of at the bleeding edge of this technology so a lot of the times you won't necessarily have answers to your questions sometimes we have to be the ones to create the answers to those questions um and that's like a responsibility I guess of of people on the bleeding edge of protocol engineering so eagerness to learn multiple disciplines as you can see like if you have some time in blockchain here there's people you know who are really good at like uh not just computer science but they're great at like Game
Theory they're great at economics they're great at mathematics um so you know being a good protocol engineer is like a a mix of these different hard skills you just need to be willing to learn that's you know the key thing here soft skills if you've ever sat and listened to like an all cord devs call you know like communication advocacy is uh part of the job it's a bit of a soft skill to be able to like you know convince people why like an e EIP makes sense what or explaining your ideas to how to make like ethereum better through one of your ideas so that's important self-starter um no one's necessarily going to tell you what you need to do a
lot of people just come up with great ideas and start executing on them that's how uh ethereum generally kind of works and having a collaborative attitude so doesn't matter if you're contributing to a load star or to Lighthouse or to prism or anything like that we a collaborative group of developers that's trying to build the same thing we trying to build like a world computer um so at the end of the day we don't see these other teams as like competitors we're very collaborative type of environment trying to push the Forefront of ethereum together so that's kind of the way to look at things uh very quickly um if you do want to get involved in protocol engineering and into the cordev
community eth research is a good place for you to um look at some of the research that people are debating about people are proposing stuff like this uh it's a good source of information to really understand like different bleeding edge ideas uh people are proposing to ethereum e magicians is a good discussion platform for like proposing uh ether or discussing ethereum proposals doing like protocol coordination working uh working discussions um and then of course the EIP process which the ethereum cat H herters help to uh to push forward as well is also a great source of information and uh you know there's a
lot of contributions that can be made there as well um generally the way that we communicate is uh through uh a bunch of different mediums for different reasons um Discord is uh one of the the most common ones this is where we do a lot of like coordinating between the community so if you're not part of the eum R&D Discord server um there's a great wealth of information there um telegram is sometimes used um for more like direct messaging um between like uh people in the community client teams and such generally used for like coordination for like events when we're like at Devcon and stuff like this or if you need like
to have private conversations with uh other other parts of the community um and then GitHub is our main contribution platform for repositories um so everything that um that we pretty much develop is you're probably going to find on GitHub so best to get started there the ethereum PM repo is the main coordination hub for the project management aspect so if you go in there look at the issues you'll see that there's a bunch of different meetings there's always like breakout groups there's always um coordination stuff for like allore devs and and other things in there that uh are free and open for any anybody to join and that's like a great way for you to start
getting yourself involved um so us as a consensus client team we maintain our Beacon node and our validator clients and then of course help to shepher the specifications um that we use for ethereum consensus so the main repository that contains these specifications is really the ethereum consensus specs repo this is where you'll find all the information you need um if you're building a client of your own um you'll be able to understand like the specifications of how ethereum works on the consensus side through this repository and a lot of the changes are proposed through there uh through poll
requests and such so make sure you check that out there's a lot of like upto-date stuff there for you um and of course like as we do hard Forks we do new releases of these specifications so another place for contribution as well Beacon apis is uh is basically the specification for the beacon nodes uh we need a common standard to be able to like talk to each other so there's a lot of information there um it's very useful for if you're tinkering around and wanting to like play around with Beacon apis these are the standards that we all follow here and we contribute to that as well there's this other cool thing recently that's uh Justin traglia from the EF uh recently developed for for uh
consensus developers and basically like you can get an idea as to you know what changes were made throughout the hard Forks on different things that we standardize on so if you ever get a chance to take a look at that it just makes it so much easier to see like how certain containers have evolved through different hard forks and just makes it easier for us to know what changes came with like the next hard fork and the hard Fork after that it's cool because it kind of tells its own story about uh ethereum's development um so to give you like a grand ideas to like protocol development when it comes to uh ethereum protocol you basically have like consensus client
teams those would be like gath nethermind and such who work on the execution side of the node um and then we work on the consensus layer side um and this is where like our main area of responsibility is at loadstar and that's where we maintained like the beacon node and the validator so um this is where most of your your contributions will lie if you're contributing to to load star however it's great to understand as much of this as you can because that will only make you a stronger uh protocol engineer now this might look slightly intimidating uh this is in our documentation but basically what load
star has is we have a monor repository and this monor repository contains a bunch of different packages that all kind of intertwine and and interact with each other to make the beacon node work so um obviously like the thing you'll notice here most commonly is the beacon node itself but in order for the beacon node to work it requires all these different packages and stuff and it's all kind of bundled together in that main um mono repository and then of course we have external dependencies that we manage that allow a beacon note to function so these are things like JS lbtp which is the main networking protocol that we use to um to communicate uh with with each other um
so there's stuff like this that are also you know open for contributions as well um they're obviously like not like they're more specialized and the thing is a lot of the times when people start contributing they look at this and they're like oh my goodness I'm over overwhelmed this is like there's so much to learn and one thing that everybody just needs to like realize is like yes that is true but we all came from somewhere and we all had to start somewhere so generally what happens is uh you know you start learning about one thing whether it's through like a good first issue or something and then that generally touches multiple parts of the beacon node and then as you slowly like
fix things and start learning about how everything interacts with each other that context just builds right so it will take some time obviously but the thing is like you know not everybody kind of learns how a beacon node works in the same way you might be more interested in like um networking as an example and you might want to try to tackle a problem that touches the LI P2P stack a little bit um and then from there you start learning about a bunch of different things um you know like whether that's the the handshake protocols you might learn um you know about gossip sub and then maybe yamuk and then expand from there when it starts touching other things as
to like how we manage peers on our Beacon node so you know it might be intimidating at first but just you know understand that it's a learning process you learn things piece by piece and uh you get better at it so that's pretty much what this is trying to tell you um this will likely be the Cas with other client teams as well um and and just know like you're not alone like we if you are trying to tackle an issue on at loadstar um you know we're on Discord uh you can find us there and we find that generally the most successful firsttime contributors are people who are just in communication with us because we can
give you more of the context that you need to solve the problem um so yeah these are just some ideas on like how you can get started right like a lot of the the people who join our team have like actually run nodes before they actually joined our team so Nico uh was a uh was a ethereum Staker before he joined uh the load Star Team he ran his own node so he really understood like how a beacon node works as so we always suggest you know like run the node and get to and Tinker with it because that's how you you start learning about how to uh like like the stuff that we work on basically join discussions as I mentioned like earlier before you're only going to like get as
much out of it as you put in and that really depends on like your own initiative and how involved you're trying to get yourself so join ACD our standups at loadstar public we do it on Tuesdays at 2 pm UT or sorry 3 pm UTC um and they're they're fully open for anybody to join um start learning uh load Star as a team is always learning we're no longer just like a typescript type client a lot of our protocol Engineers understand rust they are um they some of them understand C++ and eventually some of them are going to start knowing Zig because we do have like a bit of a road map where we are
trying to Target more lower level programming languages so you know if that kind of stuff interests you that will be very very helpful um in in terms of joining our team and contributing to our issues so please contribute to fixed issues we have like 200 and something open issues um and just generally not enough people to uh to help bring that down so uh yeah those are just some ideas on how to get started um it's not I'm not going to tell you that it's going to be easy uh the kind of people that you know Thrive very well here are looking for a challenge as I mentioned before um we are likely going to be the
people that will solve for problems you may not necessarily get answers um for your questions because there is no answer yet we're here to help answer like create the answers to those questions and that's what's like really cool it's really rewarding to uh to work on a team with protocol Engineers like it almost feels like being um part of developing like the HTML of the internet um so if here's all my contact details if you are interested in getting involved please reach out to us um Discord is probably the you know the most accessible way because it's so open um and yeah I'll hand it off to Kya or Matthew to
basically continue with the conversation thank you the thank you so much uh the stats at the beginning was really sad but this is why we're here just to change it and uh yeah the other part was really inspiring and you're right uh mostly the developers the contributors start from here where we are start uh like from good first issues yeah thank you could you please share your slides with us yeah definitely I I'll post the link here yeah okay thank you now we can move forward to Matthew are you ready I I am are are you ready for me oh of
course of course hello on hello hello how's everybody doing um that was an awesome intro fil that was great um and uh just to reiterate uh I'll tell you a little bit where I came from and it really will uh bring home the idea that we all started where you guys are today um so I I apologize I'm not familiar with everybody on the call but um uh I'm assuming some uh some of us have some programming background or interested in programming uh interested in blockchain interested about the ethos and a lot of these uh wonderful ideals and dreams and vision of where where this whole
ecosystem is going to and that is by far the most important thing is the drive the hunger the interest in order to push the ecosystem forward this is absolutely the Secret Sauce that makes a great protocol engineer um and uh where I came from I did construction like I wore a hard ha hat for uh for half of my career and I I found blockchain and realized what it was uh from a philosophical perspective and I taught myself to program so like I was not a programming anything uh and I taught myself to code and spent a few years working for a
number of other startups and other companies and uh after I had gotten my feet wet for several years in the industry I met the loadstar team at um at Devcon uh and this takes a little bit of luck and a lot of hard work and that's kind of the piece uh that I really want to emphasize with everybody today is that you're already here you are sitting with us and we are eager to have you and that's the luck part that we've been able to come to this uh come to the same place the same time in order to make something happen and this is where the the the rubber hits the road and really uh just to to to Really bring home this this idea that uh Phil
mentioned was is this is um and this is a place where learning is critical uh because what we do is so uh so Cutting Edge and really is is is not something that is written in stone it's not something we've been doing forever and it's really like what is true today may not even be true tomorrow so being able to be flexible and eager to learn and being uh interested in changing what that Dynamic and that Future Vision of what ethereum is and and all blockchain and because really ethereum is the driving force in the blockchain industry
and don't let anybody tell you otherwise uh we are the ones that pave the future for what the world will look like tomorrow um I started uh as not really knowing blockchain like I knew a lot about blockchain I worked for an nft company and I uh did stuff around blockchain and smart contract development and smart contract deployment uh but I was not a protocol engineer I had to learn that so I am I was when I started in the same position that each of you are sitting in today uh so again we understand where you're coming from and we're eager to help you like there were people who were there
willing to take me under their wing and say hey let me show you this let me teach you that let me kind of get you some good uh advice in order to kind of steer my my own ambition in being able to learn and grow and develop myself and that really again is the part that is so important is that this is an internal drive that you guys uh that way that we really re re relish uh now this is the piece though that I want to really I think is is most important is what Phil had mentioned is we are here to to help guide you uh do not be shy to reach out to the protocol teams uh we're very friendly we're all very
nice uh I will say we're all I'm kind of a nerd I have to admit sometimes I'm not the best at communication I'm I'm okay but like the rest of us also kind of you know so don't feel bad like just give us a little poke and say hey what are we what how do I do this or what are we doing here and uh I promise you everybody's really nice uh we're all gonna want to help you uh for sure we we that is absolutely it we're a very inclusive and very eager group of uh people that want to bring new fresh Talent into the space uh so thank you all for joining us and and being able to uh go along on this Journey with us um so uh Discord is your friend like we're going to look at some
of the uh the pieces of how to select an issue how to uh get wet in the like get your get your toes wet in the like in the code base and like dip a toe in and try to figure out how uh and why the code works the way it works we'll look at some of that we're going to look at some of the processes around um how do you do a uh a PR and how do you integrate with the teams in PR review and we're going to look at some of the pieces of um how do you communicate with the teams while we're doing this process because nobody's going to know or at least at least for me I didn't know when I first started what I needed to do
first so I basically had to reach out to the team and say hey how can I help and then we talked about you know this is a great idea what are your skill sets what are your favorite things to do what are the pieces of the protocol that are most interesting to you and that was an answer I didn't have at the time so that was one of the things that lion uh who at the time was my mentor was able to TI me under his wing and say hey let's uh let's dip your toe into the blst repo and and see how that uh how that feels and get that get that kind of uh you know just a a snippet a snippet in order to figure out what uh what I really liked and that was that's really the first question is what piece of the
protocol do you like first and then how can that tailor into some of the issues that are uh up on the ISS good first issue board we'll look at that in a minute and then uh from there actually great segue let's look at the good first issue board um so uh something that Phil elaborated on was um sorry need to pick my screen screens that's the one okay and is everybody seeing uh GitHub yep yep okay great so um as Phil
elaborated is there is a huge amount of code that we look at all right these all of these clients and it doesn't matter if you're talking about the execution layer or the consensus layer have a large code base and what we do as a protocol engineer is uh is fairly complicated uh and this is why the eagerness in order to take off a bite and just and just gnaw through it until you can really kind of get to the heart of the issue and then work on how do you actually solve the problem and really like understanding what is the problem sometimes is the first challenge that you guys are going to run across and that's where these issues and talking on G Discord is really going to help you narrow down on where in the
code base I even look uh so uh if you come to the load star uh repo you'll see that there's a ton of issues up here and then if you filter on labels for good first issue uh this will bring up another list that basically shows you all of the good first issues that we have um I believe the other client teams also have this good first issue tag uh you may need to reach out to uh them at at Discord um and ask them what are their good first issues it might have a different name uh but again that's that is the key that I want to emphasize is that communication with the team these are your team members these are the people that you're going to interact
with every day uh if you want to be uh moving into protocol development on a long-term basis uh so making relationships and being able to build that camaraderie in order to feel comfortable uh just saying hello and and we all want to help uh is is really a great first step so feel free reach shout ask us how do I find the good first issue if it's not this good first issue uh so with that in mind uh here is one I went through the list already before we got here so I I won't uh I'll spare you on um you you can look at them yourself and if you find one that's interesting to you uh feel free to go ahead and just reach out to us uh with an issue number and and we can take it from there uh but in this case uh this
is the line uh remove usage of number Constructor um and there's pretty good explanation of what exactly he's talking about uh what it is that we need to do in order to fix the issue and then what are some challenges uh that might pop up uh as you're going through the process of being able to fix this that you need to be sure to pay attention to uh so that you don't get stuck with uh these sticky wickets um so the number Constructor is very unsafe because takes in any parameter um and then and you will be able to compile it but you might get an N not not a number out and then uh from there we want to
look for this number Constructor uh there are plenty of instances and we want to see what is getting passed into the number Constructor so uh uh if we can switch it over to parsent uh because it's a string uh we want to do that and then if it's a big int we can use uh one of these helper functions and even says which helper function to use um in order to switch that over and then in particular we want to make sure that if there's any untrusted data we want to verify that uh it's not going to return naan uh so there is some pretty good information here uh now one thing I will say is that um it may not be your language like
typescript may not be the language that you use all right and this is an important thing like we are the typescript client but this process will be the same whether you're talking about go or you're talking about Java uh or you're talking about rust um going to the issue figuring out what the issue is there will be some specific details about uh what in that issue you need to pay attention to what are some of the pitfalls related to that issue and then what are the goals to consider a success for fixing the issue and like those those are the pieces that really matter is uh what am I looking for uh how do I go about attacking that problem uh what
are the metrics to success in order to be able to consider it done and then what are going to be the acceptance criteria and we're going to talk a little bit more about that acceptance criteria after uh but for now let's just look quickly at uh uh some of the conditions uh that were talked about in this PR um so uh again it basically said uh let's look for the number Constructor now this is where having a basic understanding of the language that you're going to attack really comes in um there are clients in most of the Prime most of the big languages out there today whether it be go rust Java JavaScript uh there there's plenty of
options and there are others as well uh that you can uh attempt to work on uh but but really your best chance for success is to pick the client that you have a good fundamental understanding of the language in uh this will make your life so much easier because you're not going to have to learn the nuances of the language at the same time as learning the nuances of the protocol so picking the one that really fits your skill set I think is a great great first step to success um and then from there you'll find the issue and we're going to go through and try to solve this now again this is Javascript this is our typescript codebase uh so we'll focus on that today and here it is a number Constructor so I went through I made
sure I looked for uh both uh case sensitivity and uh specific length sensitivity so that we're going to narrow in on just the number Constructor and bring up a lot you can see there's a lot of places where this codebase is using this number Constructor uh and from there let's look at some of the examples and try to figure out how we're going to solve this uh so here we go we're using the number Constructor in order to pass it to this get Fork uh Fork name this thing is going to take a fork name it takes a slot All Right Slots are numbers uh this is just one of those things you'll have to be able to uh go through and figure out function signatures as you go uh I just know it off the top of my head but uh let's look
real quick uh click through to that one and we're going to see get for name it's passing in a slot and you can see there type slot equals number so here we go we're looking for numbers this Fork uh this number Constructor is being used to type tast into a number and the data that we're passing in is uh a big in so slot is represented as a big int and we're using this number in order to type cast back now I remember when we looked on this issue that it actually talk specifically about big int so if the number ARG is a big int use a custom util uh that types like big into number uh can be type task
with and this is a great example of what I'm talking about is that you should find good information in the issue of how to solve the issue now this one is particularly easy uh so it really does spell out exactly what you need to know now if you get to your first issue and you find that is not as explicitly stated like this this this is another great uh place where you can reach out to the team and say you know I've got a general understanding I've gone through and looked at some of the pieces of information that are in the fish first issue I've reached out to the code base I've pulled it down I've got on the right branch which is actually things
that I've kind of glazed over as I didn't say clone the repo uh and I didn't say get to the to the uh Master Branch uh or or the trunk Branch uh as it's normally called and then then um that that you know should be the basics uh and I I don't want to uh uh get too deep in the weeds of the details uh because being a protocol engineer does require having a basic understanding of how to use uh how to use uh basic tooling meaning Git You should be relatively familiar with GitHub uh you should be relatively familiar with vs code or an IDE and some of the pieces that are uh uh required in
order to get your ID functional ID functional as far as uh uh extensions Etc now if those are questions that you still have we have some great if you in particular you can reach out to me uh and I've got some great resources in order to to teach you the basics of programming to get you to the next level where some of tackling the issue uh might be a more attainable goal uh but we'll assume that that is already behind you now and you're ready to actually start digging into the issues okay so I can here we go could you please your zoom in a little bit oh sure sure thank you okay let me
just okay is that better yeah it looks great thank you okay awesome uh so uh this first instance that we see here is we are type in a big int uh into a number because remember we looked at slot equals a number so that was a type cast there uh now let's see some other instances same function name so it's going to be the same thing uh we're going to be also typ casting a big int into a number all right so that will be the same fix whatever fix we come up with is going to be the same fix for those two situations uh here is that same exact thing so we're basic
basically again type casting a big int into a number uh here is a uh so we have a gas limit uh and gas limit input is either a string or a number uh so you can see here that we're passing in the the function signature is a string or a number probably this get parsed out of a Json pack uh a Json object that came across the wire um so this is another actually uh if let's look back at the issue this is another one of those conditions that we actually we talked about is if number AR is a string use parent so right there boom we know what we need to do okay
that's an easy fix we can come back and we'll look at that in a few more minutes okay now same thing here we've got uh passing in that same function we're looking for a number we've got a big int uh ID is a string and we want it to be as a number if type of ID equals number okay and here we're expecting uh un dat array all right so uh this one looks like we're going to be typ casting into a number uh and we're doing it from a string so again that would be a great
location we can use parcent and number we're using observe observe is passing a value equals number you can see that here so value equals number and format way to eth is going to be giving us a string so again another one of the same issue uh where we're going to look for a string to a number so Parson is a great solution there um and you'll just go on and on and on going through uh each one of these locations in order to be able to figure out what uh what I'm changing from what I'm changing into and then go ahead and make the change uh so let's actually do a
couple of these now this one we're going to do parent all right because we know that was a string and we need a number let's do this one here and that was a string or a number and we've got a number so we are going to okay so if that's not clear what I just did uh we have either a string or a number we basically check to see is it a number if it's a number just go ahead and pass it back as a number and if it's a string we're going to parse it into an in integer in order to be able to make sure that we get back to our uh back to that that type we need is a uh a firm number
all right so now uh we do also want to double check uh was that going to be uh should have been parse float should have been a parse in uh I know for a fact this should be a a string or excuse me it should be an integer uh but if you had that question that would be a great question that we can look at the specifications for um this is where the uh consensus spec comes in is it will Define for you uh is that number going to be uh a digit-based number is so it's a floating Point number or is it going to be an integer uh that has no uh no type of rounding issues uh okay so like in this case we'll just we're going to assume it's an integer for um for the
time being I know it is uh and then if you have any questions and you look at the spec and you're not sure what the spec has to say or where to look in the spec this is again a great opportunity in order to reach out on Discord and find one of us and say hey I'm tackling this problem I've got an instance I fixed 99 of the locations I've got this one location where I'm not sure if it's supposed to be a float or a number I looked in the specifications I'm not really sure where in the specifications uh to find that information and uh we'll be able to help you and walk you through that process um we're actually running short on time so I'm g go a little
quicker here I want to basically put these two things up uh let's do uh just going to quickly add here while you're doing that Matt um you'll see we have a contributing.md on our repository which outlines a lot of information that you need to know as a firsttime contributor or as a contributor in general uh generally what people will do is they'll Fork a repository make the changes and then pull uh open a PR into our repository to merge it and then through that PR process we review it and then we we give feedback and suggestions
through there but because Matthew is a maintainer on our repository he will generally just make a branch um of his own within our repository to put a PR in that's a that's a really great Point thank you for that bill um you can generally find those at the the root of the repo all uh all of the repositories in the uh ethereum ecosystem have this you'll see a contributing.md and you also see the readme.md uh once you get to the part where you're actually creating a branch like we did there this is when reading that like you you might want to read it beforehand in order to figure out there might be Branch naming specifics or uh some other details uh you might have to sign um a
uh contributing uh license agreement that basically says you understand you're doing open source contribution all of that will be outlined um and uh you can go through that in those uh so now we're going to come back to here uh if you forked the repo uh obviously you won't be pushing directly to this repo you'll push to your fork you'll create a pull request from your fork and then from here there'll be some good information about why you want to make the change uh it's great to reference the issue uh that you were you were fixing a description of what you fixed uh and then go ahead and click the pull request button now this is where oops how do I how do I stop sharing there we go okay
so now we've gone through the nitty-gritty you make a PLL request you fix the issue you've dug through the code base in order to figure out what you want to fix uh now how do you get it across the Finish Line because that's really the goal is how do you get your code merged through the pr process and this is where a lot of the soft skills that Phil had talked about really come into play is this is a collaborative process and I will say that we are very proud of the code that we write and so are the other maintainers and it's very rare that you're going to put up code that's perfect on the first time and do not let that put you off you will uh you
will find that there will be a couple rounds of discussion where someone will make some review comments you can address the review comments and please please please a lot of these devs here and I'm not just talking our team we actually have a very nice team so if you guys want to comment we're actually very polite on our PRS not all PR review is like it is like very very very kind do not let that put you off all these devs are very busy like the the the core development team is we have four schedules that meeting we've got lots of pressure in order to be able to move this codebase forward uh and Emoji use is not real real hit we don't really use
a lot of emojis uh but I promise you I promise you they want to help and they have your best interest at heart and the codee's best interest at heart so do not take it to heart if you're like oh that was kind of brusk it it might be again they want help that's really the goal of what we're here to do so uh feel free in order to uh respond back and like oh well what buch do that for it's like well I did that because I thought that this is what I was supposed to do that's okay that is totally part of the process and you'll find that if you become a protocol engineer for the long term like I love Nico Nico is one of our team
members I love a guy we stay in hotel rooms whenever we go to protocol uh uh protocol BG or we go go to conferences we tend to be like because uh we just our corporate policy is you know we share rooms uh to cut costs and love the guy he is the most nitpicky person on the planet when I tell you he wants the code perfect and I love that about him and I promise you that that is the goal that is the goal of the pr process they're not easy but do not let it push off because that is the whole purpose is this code is driving the forward edge of what the internet is going to be
tomorrow and this is what we're here to do is make the best product possible and in the process help to mold and shape the protocol Engineers that are carrying this protocol across the Finish Line in that process the goal is to make everybody a better developer the goal is to make the the code better and more effective Ive and more efficient and this absolutely is the unspoken thing like do not fear do not fret we are here to help it may not sound like it sometimes but I promise you I promise you everybody's eager and excited to have you contributing so with that uh
we're getting towards only few more minutes I want to give Kata some time back in order to wrap things up please reach out to me on Discord I am more than happy to help you I promise promise you promise you promise you I started where you are and I will be excited to get you up to speed in order to to to make you as excited as I am I love this job it is it is it is humbling and invigorating these protocol Engineers that we work with are the best in the industry they are the best and in particular on our team are the best JavaScript developers I've ever worked with they are phenomenal and they are eager to help you get to that same exact
level thank you Matthew thanks thank you so much it's is so inspiring I feel like we have the best mentors we could ever have and um it's important to know that you communicate with our mentors in their Discord in loadstar Discord we will provide you all the links um every client has its own channel for Developers for contributors so please ask your questions in this channel uh guys do we need to create a thread for an issue or no or just go as it goes um you know oh s good yeah please go
ahead uh that is just ask the team because again you may not be working with only us but that is the key to all of this and it will make your life so much easier just talk to us we're we're very nice people yeah we we are going to have clientwise uh channels and in each clientwise we can have different issues so it will be organized by today or tomorrow but from next week every everything will be sorted we will be dedicating different channels for different clients so we'll be organized there and another important thing that we need to run tests right uh how it works uh it's actually in the contributors guide so um you will go through it but yeah this is the part um
of the process and U thank you yeah do you have any questions ladies to our wonderful mentors I think they just nailed this session yeah maybe maybe you want to ask ask something please feel free to turn on your mic or ask in the CH in the chat we can also answer them async as well through our Discord which you'll get to um so no pressure to to think of anything right now either sure thank you very much it was really really helpful thank you guys we are staying here a
little bit more for five minutes to um to discuss our homework um and U we'll see you in the Discord thank you everyone thank you bye by bye bye see you guys on Discord come on over yeah don't be shy say hello bye thank you okay uh I hope you love this session um girls and um what I would love to share with you is um look quickly through our repo again so um I will take five minutes more from this session and uh share the
screen can you see my screen yeah so uh again the main communication is in our repo uh we have this um sessions file where you can see all our sessions and recordings and your home assignments this all in cohort 3 folder uh we also have a progress tracker this is what where your home assignment for this week lies so as you can see uh we already have some names here uh this these names are from the intro thread you you had your first assignment and here are the names and
your assignment will be to add um GitHub links to this name feel free to change your name as you want it to be here and add the link to this name so how to do this so here is the week two assignment just read it carefully and follow every step and uh you will also need uh need our GitHub guide this is file number three if you already have this experience it will be easy for you just quickly do it and that's it but if if you are new to it please follow all these steps at least try if you stuck somewhere don't worry
we will um get back to it on the next session uh and just follow these steps how to clone the repo how to create your branch Etc um until uh you should open a PO request until weekly updates so steps one to four you need to follow them and what you need to do is to add your GitHub name so here is how it looks like in the vs code you can see the um the table and the file looks like this so the table is really tricky uh to work with what you need to do you find your name you wrap it into the square
brackets and you add here the GitHub thing and that's it you don't need to align uh the table um because you can easily break it just don't do it only paste your link because when you paste your link um MD files are aligned automatically so you don't need to align everything in the table okay and then you open pull request and that's it that this is your um home assignment do you have any questions about the assignment please feel free to use this repo the read the assignments ask in the
Discord any questions on this no all right then we will stop here our next session will be um only for you so we will discuss uh do you have any bugs or or have you stuck with something uh from the home assignment if you already um feel confident about issues if you have this experience please feel free to choose your issue this is all also in your home assignment uh if you feel quite comfortable you can start choosing issue and work on it assign yourself Etc if you know all the process if not
please do it step by step don't worry we will come to it okay the question um what if your name name isn't there yeah good question if your name isn't there you need to go back to your first assignment and in the Discord um I I will quickly show you starting my Discord again because all these names I took from the first assignment this is why it is important to to work on it um don't don't please don't create U any additional uh table I will put your name into the table as soon as you put
it into the week one assignment thread uh let me share the screen again so uh here is our Discord study group and uh you can find here this threed um how can I move it on this threed is here week one assignment so you just go right into it and uh add some words about yourself introduce yourself and from here I will grab your name and put
it into the table it might take like a couple of days one two days um so you can um you can check as soon as you see your name please uh start cloning uh start working Etc okay if you do it quickly uh I will update it quickly one two days okay any other questions okay that's it thank you for coming thank you for joining us um we'll see you on the next session um next Thursday have a good day by