# Development Update #2 09/07/2021 This is my second update for implementing uTP in Nim for the Fluffy client. It has been a while since my last post but I am back! Over the past week, I have been continuing to work on my implementation of uTP within the nim-eth client. I have also gotten into contact with one of the developers on the Nimbus eth1 and eth2 team, Kim. I am planning on meeting with her tomorrow to go over my code and get to learn more about the project. In addition, I recently opened up a draft PR on the Fluffy client which can be checked [here](https://github.com/status-im/nim-eth/pull/394). Since my last update, I have gotten a better understanding of the language Nim, itself and how I should go about structuring my code. I have also gotten a better understanding of how uTP works as well as learning more about the Discovery v5 (Discv5) library. This week, I mainly focused on the encoding/decoding of the packets that are relayed throughout the streaming protocol. As of now, I have decided to use the package created by status-im, stew/endians2 which is a better Endian library compared to the one pre-provided by Nim. For the encoding of packets, I am using the `toBytesBE` method to convert the unsigned integers into its corresponding byte sequence in Big Endian format and `fromBytesBE` method to convert it back to its corresponding integers. I am not sure if this is the best way to encode packets, so I plan on getting a better insight when I speak to Kim. As of now, I plan to just finish up the basics of an implementation of uTP in Nim. This code would eventually need to be compatible with the Discv5 protocol, sicne the uTP will be used as the new sub-protocol to replace UDP. The implementation that I currently have is still a work in progress, but I feel I have made good progress on scratching the surface as well as just getting to learn more about Nim. Something unrelated... So far, throughout the project I was using my MacOS primarily to code, but I have decided to port everything to a arch-based linux machine which has been much more helpful to work with. I am using the distro Garuda Linux to work on. # Final Thoughts Over this past week, I have spent most of my time reading about these new technologies as well as just messing around in Nim. As per my previous post, I had a list of goals that I feel I can cross off. I think I got a better understanding of Nim as well as the discovery protocol, but I still feel like I don't understand them 100% yet. I have begun my implementation, where you can checkout in the PR linked above as well as creating a draft PR so that the Fluffy team can review. The things that I plan on working in the following week include finishing up the encoding/decoding of packets, continuing to read on these technologies, and meet with Kim. - ~~Get a better understanding of BEP29~~ - ~~Get a better understanding of Nim~~ - Fully understand the discovery protocol - Come up with a solution to integrate it into the network - ~~Begin implementing BitTorrent's libutp in Nim~~ - ~~Create a libutp draft on the Fluffy repo~~ - Begin integrating the Nim libutp into the Fluffy repo - More goals to be added...