Skip to content

Latest commit

 

History

History
9 lines (5 loc) · 3.6 KB

Laura-Tebben.md

File metadata and controls

9 lines (5 loc) · 3.6 KB

Flock is about bringing distributed computing to the browser. As it stands, there is a large need for distributed computing, but it’s primarily being done on designated servers, which can be expensive, and can be overkill for the project. Flock will make use of the large quantity of under-utilized hardware to offer a browser-based solution. People will be able to add their device to a cluster, which will receive work from a master node. This has the potential to drastically increase the amount of computational power available to the general public. Flock will be most useful to projects that would benefit from a larger number of lower-powered nodes.

During this semester, I think the course that I will draw from the most is Software Engineering (EECE3093C). Software Engineering put a large focus on requirements, planning, use cases, and documentation. We had a semester-long group project, where the first 2 months were spent on collecting requirements, drawing use-case, class, and technical design diagrams, and creating other documentation. We then spent the last month developing the application. Based on this course’s description, it sounds like we will be following a similar pattern and completing many of the same tasks. Courses I’ve taken (or am taking) to prepare me for the technical work include Operating Systems (EECE4029), which discussed topics of threading and concurrency, and Parallel Computing (CS5168), which will teach me how to design parallelizable and distributable programs.

My work at GE Digital as a Digital Technology Intern involved distributed computing. The application I worked on was hosted on three servers under a load balancer. I created API endpoints to interact with shared data, which will come in handy for this project, as we will also need APIs to interact with shared data. As a Software Engineering Co-op at Siemens PLM Software, I learned how to code as a member of a team. As an Application Engineering Co-op at Siemens PLM Software, I learned how to thoroughly test software. As a whole, my co-op experiences have improved my programming skills, taught me how to use version control, and taught me how to prioritize and manage my time effectively, which will be necessary to complete this project on time.

My motivation for this project is that I find the project interesting. I think the opportunity to create a distributed computing platform that anyone can use and be a part of is unique and interesting. I am passionate about the computing community so I think projects that lower the barrier to entry for different technologies are exciting and worthwhile. I also think that we will face many technological challenges throughout this project. I am excited for these challenges because I think I'll be able to learn a lot from them. I'm also looking forward to learning the new programming paradigms that will be required to complete this project.

Our preliminary approach is to have a central node that dispatches jobs to workers, which are the web browsers in the cluster. We need to create a way for people to add their hardware to a cluster. We also need to design the algorithms that split the work and distribute it to the workers. Once we have a working product, the expected result is that we can submit a job and flock will utilize the browsers in the cluster to distribute the work and then return an accurate result. We will know if we've done a good job if we can get an accurate result from flock faster than we can get an accurate result without distributed computing. If time allows, we can work on further optimizing, as well as providing incentives for people to add their browsers to the cluster.