## Description

**Speech2Code is a web application which records English speech and translates it into functional code. The backend is Turing complete and supports 3 languages - Python, JavaScript, Java - and it can handle function declaration and calling, several data types, conditionals, loops, and indentation**.

## Inspiration

When brainstorming for our project idea, we were looking to give beginning programmers a way to learn the syntax and coding fundamentals of new programming languages – a way for anyone to get involved with and quickly learn programming.

Access to AssemblyAI inspired us to use speech as an input to help beginner coders turn English phrases and ideas into code. We believe this is a super effective way to teach users programming syntax and coding fundamentals.

## What it does

*Ever start learning a language and give up after Hello World? Speech2Code is here to change that!*

Think of Speech2Code as training wheels you never had. Every language is virtually the same, so why spend hours and hours pouring over learning a new one? With Speech2Code simply say what you want to do and get it done almost as efficiently as a senior dev. With Speech2Code you no longer need to do System.out.println to get something printed to the console, just say print and get it done! We’ve implemented a new meta language that lets you talk in high level terms, the lines of a program, and watch them appear as quickly as you can C.

*Want to learn more? Head to the tutorial. Better hop on quick, before the next script kiddie overtakes your productivity!*

## How we built it

We built the frontend of the application using React and built the back-end using a Python flask server for the AssemblyAI API integration and Express.js for our code compilation.

The backend was made in Python and used some filtering to achieve a meta language that was then tokenized and parsed into a class abstraction that served as a language agnostic generating platform. This was then evaluated using a visitor pattern, which returned the code line we needed.

## Challenges we ran into

We had three main challenges that we ran into. Firstly, embedding a code editor into the website and supporting syntax highlighter for each code editor proved to be awkward in actually integrating and formatting to work on our website visually. We ended up adding a toggle to switch between an edit mode (the Monaco editor) and non-edit mode (the syntax highlighting).

We also had some challenges integrating express.js into our project, including figuring out how to create the post request in a way that aligned with the format of our input and working with the limitations of the open-source compiler API (CodeX) we used to run the code on our website.

Finally, when generating code, we faced problems with trying to indent the code based on previous lines, especially for Python, since it’s not easy to tell that a code block is finished (unlike Java/JavaScript which use curly braces).

## Accomplishments that we're proud of

We’re proud of creating a nice, consistent UI aesthetic across all three of our pages, especially given our limited experience with CSS design. We were also able to translate a wide range of user inputs into code and support a lot of the basic functionality of each language we included, which was the goal we wanted to reach by the end of this hackathon.

## What we learned

* Since some of us had minimal front-end experience, our heavy use of React (and to an extent, HTML, CSS, JS) for our project proved to be a great learning experience in UI/UX design.
* It was also our first time integrating APIs like AssemblyAPI and the Axios API in our website for the purposes of language interpretation and compilation, and it was satisfying to see each component work hand-in-hand.
* Meta-Languages, Class Abstractions, Visitor Patterns

## What's next for Speech2Code

Moving forward with Speech2Code, we hope to add further support for more languages and frameworks, much like other online compiler websites. Additionally, we hope to implement some kind of type Inference system, like Hindley-Milner Extension for imperative languages, and semantic similarity for reducing words closer to the meta language.
## Inspiration

Looking around at the younger generations can be saddening. Everyone is so attached to their phones, needing to be connected. Needing to update their status, needing to update their followers, needing to send questionable images on SnapChat. Being **so** connected can remove you from reality and all that it has to offer. If we'd just put down our phones for only a moment, we'd all see how awesome lasers are. They're like seriously cool.

## What it does

So we set out trying to make a file transfer mechanism that sends files via lasers. I know, COOL, RIGHT? Well, that didn't really work so we ended up making an instant messaging platform via lasers. Until that didn't work either so we made a "one-way, only really short sentences" transmitter via lasers.

## How we built it

Lasers.

## Challenges we ran into

Turns out laser based file transfers are not as practical as you'd think. A+ for style points, but it takes about a minute to send a word. And the receiver has to at least be within a line of sight and close enough that light dispersion doesn't affect the goods. There were so many challenges to this one. Syncing the clocks are a nightmare, reading and writing out of the same serial port is tough and Arduinos have less memory than that fish from Finding Nemo that has difficulties remembering things... what's her name again?

## Accomplishments that we're proud of

Lasers.

## What we learned

Lasers. And what they shouldn't be used for.

## What's next for Lazier Laser

Oh, this project is so retired.
NOTE: We have a new ZIP uploaded to the itch.io link.

## Inspiration

We're big fans of the hip-hop artist Gucci Mane, and we've always wanted to play around with Amazon's Alexa system. Voice controls are always a fun gimmick in games, so we decided to try out hooking up the Alexa with Unity.

## What it does

The game is a simple 2D stage, in the style of Nintendo's Super Smash Brothers. The player controls Gucci Mane with the arrow keys. Gucci Mane fires a stream of projectiles, which can be changed by voice commands to the Amazon Echo. For example "Hey Alexa, tell Gucci to set the lemons!" will make Gucci fire a stream of lemons. The available projectiles are: Bricks, Lemonade, and Ice. When the equipped projectile is switched, the background music changes. There's no real gameplay, but it's fun to mess around with it! We think of it as a proof of concept :)

## How we built it

A new Alexa skill was created using the AWS console, and we connected the skill to an AWS Lambda function which changed the state of a Firebase store. On the Unity side, we polled the Firebase store. The 2D game portions were built following different Unity tutorials. Most of the assets were designed with Photoshop.

## Challenges we ran into

We ran into difficulties at first setting up the Alexa skill. After that, the next issue was connecting the Lambda function with Firebase, and connecting Unity to Firebase. In the end, the hardest part was working with Unity to add enemies and projectiles.

## Accomplishments that we're proud of

The art came out really well, and the voice commands are really fun to play with!

## What we learned

Alexa skills are really powerful! Setting up new skills with all sorts of intents is actually not that difficult, it just has a little bit of a learning curve because the GUI is a little obtuse.

## What's next for Gucci Ice Party

Adding enemies, levels, and maybe more players!