A great deal was accomplished this week, we have finally chosen a name, TransferMe! We are hoping to get the URL Transfer.me but it’s unclear whether it is available. The team agreed that this name is equally descriptive of the product, short enough to remember, and rolls well off the tongue. We used our Trello board to brainstorm names and this is the one we collectively decided on. We have started using our communication platform Teams and Trello collectively. Turns out, the Trello board has an extension for Teams that allows us to do everything within the Teams app. I’m loving the setup so far!
The First Conflict
This past week we developed some of the project requirements. We had a team assignment that required us to write a 2000-4000 word document that described goals needed to complete the project in more detail. This also required that research be done on different frameworks and technologies we will use, as well as brainstorming some UI concepts and overall flows of the program. We encountered our first minor ‘conflict’ as a group, at least it was a conflict in my eyes; but I am proud of the way we handled it. I sent out a message to the Team 5 days prior to the due date about collaborating on the document and long story short, I received no response until 2 days prior to the due date. I stated that we need to communicate better going forward, and coordinated a meeting time to go over some of the group decisions, in the end I think we all contributed to the assignment equally and we will be a better team going forward because of this!
Moving Forward
After completing the project documents, we are onto the next iteration of planning. We scheduled a meeting and discussed some of the technologies we will need to use for the project. To me, the most daunting part of the project isn’t writing the code, but knowing where to begin and what pieces of the project to work on first. During the meeting, we discussed the cryptography method we plan to use, as well as the database, the framework, the source control, and the IDE we will be using for the project.
For cryptography, we plan on using Diffie-Hellman Key Exchange and ElGamal. We are hopeful that we can use Diffie-Hellman once to establish a secure connection between two people, then on future transfers, we can use ElGamal to achieve adequate security and efficiency. I’m sure there will be challenges as we implement this, but we plan to use a Framework called BouncyCastle which has a highly regarded cryptography library for C#, the language we will be using for the project.
For the database to store files, one of our team members is familiar with an open source database platform called MariaDB. MariaDB acts as a MySql databse so the language will not be difficult for newcomers to work with assuming they have had a small bit of Sql experience (which I have)! The framework, as discussed in the previous blog will be Blazor, a C# web framework that will allow us to build our site using WebAssembly. WebAssembly will be beneficial to us because all C# code is run as assembly language locally on the system. This makes for a fast, responsive web page as well as generating code that is not viewable in the devtools in the browser.
For source control, we will be using Git and GitHub to manage our project. I’m really excited to work with multiple developers on a large scale project. As of now, I’ve only used source control for projects that I have been the sole developer. I can imagine on a large scale project with multiple developers, things could get complicated if not everyone is in agreement with how to use the product. Once we get the development environment setup we will have to have another meeting to discuss how we will utilize source control in the most efficient manner. The IDE we will be using is Visual Studio. This seemed like the simplest choice since the program, the framework, and the language are all written by Microsoft. I believe this is the best choice.
What’s To Come
Our next assignment for the course is an individual assignment, but will aid in a better understanding of the different technologies we will use. This is the first time we will begin setting up the development environment together. I will plan to try coordinating a meeting with the team to discuss who wants to work on what. What I think the team needs most is to develop some type of diagram that will give an overview of the different components and their functions. Something like this diagram, but with specs relevant to our project.
I’m hoping that soon we will all get the development environment setup, a diagram drawn, source control established, and have a final meeting so that we can really start planning the development of this project. I get the feeling it may take longer than we expect…