On my previous blogpost, I wrote about the experience of developing Encryptle, our privacy-preserving word-guessing game. What’s distinctive about Encryptle is that it makes use of Tandem, our Secure Multi-Party Computation (SMPC) engine that was just released. Encryptle serves to show how Tandem can be used in practice; to show the sort of collaboration over data that it makes possible and available to anyone. Tandem is fully open source (check our GitHub repository) and we are eager to know how others will use it!
With Tandem, we crossed an important landmark at SINE. This is super exciting and I must say I am proud of having contributed—in a manner proportional to my level of experience—to the development of Tandem. When I joined SINE, the engine was already at a very advanced stage of development, and its cryptographic details are beyond my current knowledge. Yet, I could help on those parts of the repository that make Tandem easy to use (which is one of its crucial features). Thus, with all the support needed, I worked on the ‘echo server’ and the playground (which allows for the use of the SMPC engine through a browser). I also worked on code maintenance and refactoring, as well as—and most importantly—on documentation.
My understanding of Tandem and my capacity to collaborate on the repository was marked by a pivotal and quite significant moment. As our team expanded, we decided to have a workshop about Tandem and how to use it. I found this a very good idea, but I could not have foreseen how important it would end up being for me. That’s because I did not expect to have the role in this workshop that I ended up having: conducting the initial presentation. I was quite surprised when this suggestion was made: this is not the task that we usually associate with junior developers. And I must say that, having joined SINE little more than one month before, the idea of giving an overview of Tandem and how it is used seemed frightening. But then I thought that if I was being trusted with this task it was because the team believed in my ability to deliver it, counting on their help when needed. Thus, I decided to embrace the challenge and trust in SINE’s trust. In so doing, I structured the knowledge I already had about the engine and learned more about it. I also got a clearer understanding on how to communicate to others how to use it.
The reaction of the team was quite positive. They seem to have quite liked the slides I had prepared, which were later also used in the video that accompanies Tandem’s release. Thus, not only was this an amazing opportunity to learn and structure my knowledge, but it even allowed me to contribute with material for the launch. I am very happy that SINE decided to trust me with this task!
The benefits of this exercise became noticeable in what followed: the preparation of high-level documentation. With the overview presented in the workshop in mind, I had an idea of how I could help writing clear and comprehensive README files. My recent experience as a junior developer coming in contact with our code was actually an advantage here: I could anticipate some of the difficulties others might face when approaching our code for the first time. Thus, I started thinking about how our documentation could help other developers. I got to think about developer experience and the importance of documentation. While easy from a technical perspective, writing good documentation can be demanding. It requires a taste for clarity, attention to the needs of developers and even some aesthetic sensibility. As we all like to have good documentation to read, including high-level documentation, we should not underestimate its importance when it comes to our code. In order to ensure that there is always good documentation, each of us must do their part. In my particular case, this was also quite rewarding, as it allowed me to see how much I had progressed since early September. Back then, giving my first baby steps in Rust, I struggled to understand the organization of our repository; now, I was able to provide an overview of our repository to others.
Not long after the workshop on Tandem, the technical staff decided to have a learning session about Fly.io, the platform we use to deploy Encryptle, the ‘echo server’ and the playground. Again, I was trusted to conduct the initial presentation and again I embraced the challenge. The session went quite well and it was another great opportunity to learn more, this time about Fly.io and how it compares with other services (both IaaS and CDN). (Fly.io allows us to reduce latency to a minimum—which is important when using Tandem—as the ‘echo server’ and Encryptle’s server are running in multiple locations at the same time.) This also had practical consequences, as I would soon redeploy all our apps and was now much better prepared for it.
In my first post, I noted that, despite being in my training period, I already felt like part of the team. This feeling became even stronger now. The workshop and the learning session, for instance, were occasions where I was treated as a peer, not as a trainee. Also, my contributions were incorporated in SINE’s source code and materials. Yet, I also got all the support I needed. This balance between training and being part of the team happens naturally at SINE. It is another way in which SINE is special. I am now eager to see what the developers’ community does with Tandem and excited about the adventures to come, of which I will tell you in due course.