## Inspiration

My first programming experience came from Scratch and I learned a lot of Python by making Discord bots. block2discord allows others to learn programming principles while making something useful and tangible. Furthermore, since block2discord translates the block code to Python, it provides a gateway to learn Python.

## What it does

block2discord creates an interface to drag and drop blocks to create a program. The code is then translated to Python which you can modify and run. The more commonly used function, method, and attribute blocks are available.

## How we built it

The editor was built based on Microsoft MakeCode PXT architecture and augmented with Discord blocks. The translator was built in Python using regex, Python code formatters, and other string manipulation techniques.

## Challenges we ran into

Usually when building a block-based language, you would build an API around the blocks. However, since block2discord translates to `discord.py`, and intermediate program is needed to bridge the gap between block-based-Python to `discord.py`.

## Accomplishments that we're proud of

This is the first time I tried to solo a hackathon. I'm proud of the amount of progress and usable code I made.

## What we learned

I've learned a lot about how block based languages are constructed and how they work. I also learned some TypeScript syntax needed to make the blocks. Working with friends in a team is better :D.

## What's next for block2discord

More blocks! The `discord.py` library is massive and it would be impossible to convert the entire library in 36 hours. Furthermore, the translator engine should be modified to understand code syntax so it can translate more complicated code.
## Inspiration

The idea for Iris was born out of a mutual agreement on the need for interconnectivity between different languages. While technology has continued to allow more and more connectivity across far distances, one of the most significant barriers to this connectivity is the language barrier. We resolve this issue with Iris.

## What it does

Iris is a full-stack, web-based that creates translated transcriptions of live audio. A class instructor, keynote speaker, or any other user can make a room, have other users join the room, and immediately send live translated transcriptions to all of the users in the room.

## How we built it

The frontend of Iris was constructed using React, React-Router, and Javascript. The backend was made in Python and interacted with AssemblyAI API and the Google Translate API. The frontend and backend communicate with each other using WebSockets.

## Challenges we ran into

Due to the frontend and backend being written in different languages, converting the recorded audio to an acceptable format for the AssemblyAI API was challenging and took many hours of testing and debugging. While we made ample use of the documentation provided by AssemblyAI, there were no snippets that showcased inter-language interactions. Trial and error eventually prevailed, but not without a challenge.

Setting up Google Translate API was also a challenge. There was a tutorial on setting up Google Translate API, but we executed the code via the Google Cloud console. The commands given in the tutorial only worked with the Google Cloud SDK, and there wasn't a guide on converting those commands into Python. This was frustrating as we needed to debug the translation code outside of the Google Cloud console.

## Accomplishments that we're proud of

Iris accomplishes what we set out to do. It supports many languages and even allows for multiple simultaneous rooms displaying translated text. Overall, we are very proud of what we have accomplished with Iris especially considering the 36 hour timeframe.

## What we learned

We learned how to employ WebSockets for a continuous connection between the front and backend throughout this hackathon. Additionally, everyone also learned how to use the AssemblyAI and Google Cloud APIs and their documentation to help us build Iris.

## What's next for Iris

One potential avenue that we could take is implementing live video feeds in the future. Additionally, allowing hosts to upload recordings of their files for translation through an upload menu can further increase accessibility for Iris users.
## Problem

In these times of isolation, many of us developers are stuck inside which makes it hard for us to work with our fellow peers. We also miss the times when we could just sit with our friends and collaborate to learn new programming concepts. But finding the motivation to do the same alone can be difficult.

## Solution

To solve this issue we have created an easy to connect, all in one platform where all you and your developer friends can come together to learn, code, and brainstorm together.

## About

Our platform provides a simple yet efficient User Experience with a straightforward and easy-to-use one-page interface.

We made it one page to have access to all the tools on one screen and transition between them easier.

We identify this page as a study room where users can collaborate and join with a simple URL.

Everything is Synced between users in real-time.

## Features

Our platform allows multiple users to enter one room and access tools like watching youtube tutorials, brainstorming on a drawable whiteboard, and code in our inbuilt browser IDE all in real-time. This platform makes collaboration between users seamless and also pushes them to become better developers.

## Technologies you used for both the front and back end

We use Node.js and Express the backend. On the front end, we use React. We use Socket.IO to establish bi-directional communication between them. We deployed the app using Docker and Google Kubernetes to automatically scale and balance loads.

## Challenges we ran into

A major challenge was collaborating effectively throughout the hackathon. A lot of the bugs we faced were solved through discussions. We realized communication was key for us to succeed in building our project under a time constraints. We ran into performance issues while syncing data between two clients where we were sending too much data or too many broadcast messages at the same time. We optimized the process significantly for smooth real-time interactions.

## What's next for Study Buddy

While we were working on this project, we came across several ideas that this could be a part of.
Our next step is to have each page categorized as an individual room where users can visit.
Adding more relevant tools, more tools, widgets, and expand on other work fields to increase our User demographic.
Include interface customizing options to allow User’s personalization of their rooms.

Try it live here: <http://35.203.169.42/>

Our hopeful product in the future: <https://www.figma.com/proto/zmYk6ah0dJK7yJmYZ5SZpm/nwHacks_2021?node-id=92%3A132&scaling=scale-down>

Thanks for checking us out!