Blog Posts

Week 13: SLDR Drafts and Gaffes

A word cloud of the 100 most common words in SyncAssist’s SLDR draft

We’ve shifted gears back into IPPD mode this week, with the SLDR (System Level Design Review) Draft and peer review presentation both due this Tuesday! At 8300 words long, the SLDR report was definitely a beast to tackle, but we managed to have a workable draft and got good feedback on how we can improve the formatting and content of the paper.

We also got great pointers on how to make our presentation better during the SLDR peer review event β€”some of the major points included making the use cases for the app a bit more clear, and emphasizing the human side of our project. This advice was great because as engineers, we can sometimes get caught up with the technical aspects of projects, so it’s nice to be reminded to that our projects are really human-centered, and thus our end users should be a big part of our process.

Since next week is fall break, we’ll be slowing down a bit, but after the break we’ll have our final SLDR presentation and draft due, so stay tuned for more updates to come!

Week 12: Prototype Presentations

SyncAssist and Coach Grant at Prototype Inspection Day!

Lots of exciting things for Team 5 this week!

First, we presented our project progress to judges at Prototype Inspection Day (as seen above)! We showed off all of the video conferencing features that we’ve implemented, like screensharing, chat messaging, and the star of the show β€” remote control. Though we had some hiccups here and there with the technology and were a little bit shaky at first, overall the presentation went well! The judges gave us great feedback and seemed impressed with all the work that we’ve been able to accomplish in such a short amount of time.

SyncAssist with our first round of judges at PID

The other exciting thing is that we may finally be able to slow down our development work and rest a bit πŸ˜…. During our liaison meeting this week, we were encouraged to work mostly on improving the features that we’ve already built, rather than implementing new ones. This is fantastic news for us, since the speed of our work has made our codebase a bit unwieldy, and having the time to work on refactoring and improving will help us have a solid foundation to build off of starting next semester.

Since we’re having our SLDR peer review event next week, we’ll be working on preparing for that presentation over the next few days, so stay tuned for updates on how it goes!

Week 11: PID Planning, Feature Frenzy

Team 5 coding together

This week, Team 5 has been working nonstop! We were able to implement screenshare in the Electron version of our app, have working mute and unmute buttons, display a participants list, and more! Here’s a snippet of what it looks like now:

Since our Prototype Inspection Day is coming up, we’ve been in a rush to also implement remote control. There are a lot of different flows that we’ve been considering how to implement, like the initial agreement between the controller and the desktop being controlled, as well as how to end the remote control session. During our liaison meeting this week, we also got a bit of feedback on which features to prioritize, since our main audience is blind or visually impaired people and the core of the app should be remote control.

Overall, though, we’re making good progress and we’re excited to see how this app develops!

Week 10: New Beginnings

Team 5 at our weekly planning meeting

You might recall from last week’s post that we planned to pivot our app development to modifying the source code of Jitsi Meet. About an hour after the post was published, we made another pivot back to developing our app from scratch using the API provided by lib-jitsi-meet. Although it might seem like we can’t stop changing our minds, we’ve made some huge progress in app development over the past week so it seems like this plan is here to stay.

Through lib-jitsi-meet, we were able to implement camera and audio sharing, screen sharing, chat functionality, and basic routing for different conference rooms in only a few days! Here’s a sneak peek of what our app looks like right now:

Meeting room page of our app

Over the next week, we’ll be continuing to add features to our app like remote control, as well as debugging existing features. One of the only downsides of starting a new app from scratch like this is that the codebase changes very frequently, and often drastically so. To get around this, we’ll be meeting to code together and keep everyone in the loop!

Week 9: Project Pivots and PDR Presentations

Team 5 prepping for our PDR on Wednesday!

This week has been full of planning and project discussions for Team 5. From last week, you may remember that we were having a bit of trouble working with Jitsi, primarily in getting any of our code to connect to our local instance of Jitsi on Docker. The good news is that we’ve managed to pretty much fix all of those issues! The main problem was that we needed an HTTPS connection, which requires an SSL certificate and thus a domain name. Our workaround for that was using port forwarding with ngrok, but this didn’t really work out too well, so we’ve instead set up Jitsi on an AWS EC2 instance. You can access it at https://ippd-jitsi.com (but don’t use it too much! It only has 1 CPU and 1 GiB of RAM so it may crash).

Because of this, along with some scope changes suggested by our liaison engineers, we’ve decided to try modifying the source code of Jitsi Meet for the UI, rather than building it from scratch using just lib-jitsi-meet. This makes almost all of our previous code unusable now, but it’s alright β€” at least now we have something structured to build off of.

Team 5 (minus Anh and Mai again) at dinner with Jake and Sriram

We also had our PDR presentation with our liaison engineers in person this week! Overall, it went fairly smoothly, though we had several suggestions from both Sriram and Jake for how to improve the clarity of the presentation. We also managed to somewhat convince them that our project pivot was a viable direction to go in, so hopefully over the next few weeks we’ll be able to follow through with our promises.

In the next few days, we’ll be diving into the Jitsi Meet repo to fully understand its structure and build new components specific to our application. It’s a fairly large codebase, which makes it a little bit intimidating, but with the help of Jitsi’s community and our friendly AI assistant, we have the tools we need to make this work.

Week 8: Jitsi Realities, Plan Revamps

Team 5 at the new IPPD lab!

Team 5 is running into some roadblocks…

In the last post, I mentioned that we started working on integrating Jitsi servers into our project by running it locally on Docker. Unfortunately, trying to get Jitsi to do what you want it to do has got to be one of the most unbearable tasks. Out of the box, it works like a charm β€” all of the things that you’d expect from a video conferencing platform, like sharing your screen or using the chat, work beautifully. The problems start arising when you try to customize it in any way β€” which is bad news for us since we’d likely need to change a lot. We’ll still try to get Jitsi working, but in the meantime we’re also looking into other SFU options like mediasoup.

Though we’ve had some technical issues, organizationally we’ve made some huge strides. At our Monday meeting (pictured above), we finally set up our rotational leadership structure, released our Kanban Board 2.0β„’, and solidified what our minimal viable product should look like. We’ll be holding our PDR presentation with Sriram and Jake (hopefully!) coming into town, but until then, see you next time!

Week 7: PDR Peer Review, stormy weather

Team 5 after the PDR Peer Review

This week, our team delivered our draft Preliminary Design Review Presentation for our peers for feedback and suggestions! Since we’ve had some practice in presenting this content for our liaisons Sriram and Jake beforehand, it overall went pretty smoothly and we received some good advice from our fellow IPPD students and coaches.

We also started working on integrating Jitsi Meet into our application by running it locally through Docker. Though we had some initial trouble deciding how we wanted to go about making our adjustments to Jitsi, we were able to get some great help from Jake regarding its setup and are now experimenting with adjusting Jitsi Meet to fit our needs.

Hurricane Milton in the Gulf of Mexico

Because of Hurricane Milton, our weekly liaison meeting was cancelled as well as our classes on Wednesday and Thursday. Fortunately, Gainesville wasn’t hit too hard by the storm, so we’re still able to make steady progress on our project.

Week 6: Big plans in the works…

SyncAssist’s printed logo in the IPPD classroom

This week, we’ve made some exciting progress on our project! First, we’ve finalized the architecture diagram for our project! Here’s a snippet of it:

SyncAssist Product Architecture Diagram

For the frontend, we’ve decided on React with TypeScript, along with Electron for the desktop app and React Native for the mobile app. This will communicate with the signaling/SFU server to connect users and serve media streams, which we will implement with Jitsi Meet. To allow discovery of other users, we’re using coturn, an open source implementation of a STUN/TURN server. And we’ll handle any session data and analytics with an optional database. If all this sounds a bit technical, it does to us right now too! But over the next few weeks we’ll be implementing each of these components and hopefully will have some deep dives on each part on this blog as well.

Here’s an unsolicited update on our Kanban board:

Clearly we have lots to do, but we’ve become a lot more organized this week and are more than prepared to get things moving!

Week 5: Wetter Weather

Hurricane Helene β›ˆ

It’s stormy season! Gainesville was hit by Hurricane Helene this week β€” fortunately, our team’s workflow hasn’t been too terribly disrupted by the storm.

In the past week, we’ve started to make some concrete progress with our project. Using guidance from some online resources, we were able to implement screen sharing and remote control of a desktop from another machine β€” one of the most important features of our project! Though we will likely have to make some changes to this implementation in the future, we are starting to get a solid understanding of how WebRTC fits into our app as well as what the architecture of the app should look like.

We’ve also started using some important planning tools β€” Kanban and Figma β€” to better organize our team. Here’s a sneak peek of what our preliminary designs look like:

Lastly, we’ve finalized our logo design! We added some details to the desktop screen to better reflect the remote control/collaborative aspect of our project, and made some adjustments to the gator’s appearance. Take a look!

Next week we plan to further flesh out the project architecture, set up our project’s CI/CD pipeline, and debug some of the features that we’ve implemented. Until next time!

Week 4: In-Person Meetings and Coding Beginnings

Team 5 (minus Mai, Johnny and Anh) with Sriram and Jake at Sohao Cafe

Lots of exciting events this week!

First, we’ve finalized our team name and logo: we are officially Team SyncAssist! We’ve made adjustments to our logo based on our classmates’ feedback, and you can see our newest design below. The main changes that we’ve made are removing the glasses from the gator to make it more inclusive of blind and visually impaired people, as well as adding our team name to the logo.

Team 5’s new logo

We also met our liaison engineers Sriram and Jake in person for the first time! In this meeting, we did a live walk-through of JAWS’ Tandem feature and discussed some of its advantages and limitations. We also nailed down plans to do a live demo of our WebRTC and Electron findings in our meeting next week, and had dinner at Sohao Cafe afterward!

In more concrete measures of our project progress, we’ve set up our team’s GitHub repo and have split into frontend and backend teams to streamline our research process. We’re planning to demo screen-sharing and remote access functionalities next week, and look forward to seeing our project come to life!