# BlockOJ

>
> Boundless creativity.
>
>
>

## What is BlockOJ?

BlockOJ is an online judge built around Google's Blockly library that teaches children how to code. The library allows us to implement a code editor which lets the user program with various blocks (function blocks, variable blocks, etc.).

![Figure 1. Image of BlockOJ Editor](https://i.imgur.com/UOmBhL4.png)

On BlockOJ, users can sign up and use our lego-like code editor to solve instructive programming challenges! Solutions can be verified by pitting them against numerous test cases hidden in our servers :) -- simply click the "submit" button and we'll take care of the rest.

Our lightning fast judge, painstakingly written in C, will provide instantaneous feedback on the correctness of your solution (ie. how many of the test cases did your program evaluate correctly?).

![Figure 2. Image of entire judge submission page](https://i.imgur.com/N898UAw.jpg)

## Inspiration and Design Motivation

Back in late June, our team came across the article announcing the "[new Ontario elementary math curriculum to include coding starting in Grade 1](https://www.thestar.com/politics/provincial/2020/06/23/new-ontario-elementary-math-curriculum-to-include-coding-starting-in-grade-1.html)." During Hack The 6ix, we wanted to build a practical application that can aid our hard working elementary school teachers deliver the coding aspect of this new curriculum.

We wanted a tool that was

1. Intuitive to use,
2. Instructive, and most important of all
3. Engaging

Using the Blockly library, we were able to use a code editor which resembles building with LEGO: the block-by-block assembly process is **procedural** and children can easily look at the **big picture** of programming by looking at how the blocks interlock with each other.

Our programming challenges aim to gameify learning, making it less intimidating and more appealing to younger audiences. Not only will children using BlockOJ **learn by doing**, but they will also slowly accumulate basic programming know-how through our carefully designed sequence of problems.

Finally, not all our problems are easy. Some are hard (in fact, the problem in our demo is extremely difficult for elementary students). In our opinion, it is beneficial to mix in one or two difficult challenges in problemsets, for they give children the opportunity to gain valuable problem solving experience. Difficult problems also pave room for students to engage with teachers. Solutions are saved so children can easily come back to a difficult problem after they gain more experience.

## How we built it

Here's the tl;dr version.

* AWS EC2
* PostgreSQL
* NodeJS
* Express
* C
* Pug
* SASS
* JavaScript

*We used a link shortener for our "Try it out" link because DevPost doesn't like URLs with ports.*
# Excus.us: Fostering Diverse Connections Across Tech Events

## About Excus.us

Excus.us is an innovative networking app designed to transform how professionals connect at tech events such as conferences and hackathons. Born from the observation that truly diverse interactions often lead to the most creative and impactful outcomes, Excus.us aims to break down social barriers and encourage connections between individuals with complementary yet different skills, interests, and backgrounds.

### Key Features

1. **Cross-Event Persistence**: Unlike traditional event-specific apps, Excus.us stays with users across multiple events, building a comprehensive profile and network over time.
2. **AI-Assisted Diverse Matching**: Utilizes Cohere's embedding model and Groq's reranking capabilities to connect participants with those who have different backgrounds and complementary skills.
3. **Real-Time Event Navigation**: Helps users easily locate and meet their matches at crowded venues.
4. **Continuous Learning**: The app refines its matching process based on user interactions and feedback.
5. **really...really fast user growth**: Within a span of 4-5 hours there were 30 users actively using and chatting on the platform with 61 total registered hackers; just showing it's potential and value add in this space!

## How Excus.us Works
6. **Profile Creation**: Users create a detailed profile highlighting their skills, interests, and background.
7. **AI Analysis**: Excus.us uses Cohere's embedding model with R+ to create embeddings based on user bios and interests.
8. **Diverse Matching**: The app uses Groq for quick reranking, utilizes Cohere's embeddings on Chroma to assist in matching users with those who have diverse profiles (based on their bios and interests) compared to their own.
9. **In-Event Connections**: Users receive suggestions about potential matches and can use the app to locate and chat with them during the event.
10. **Cross-Event Networking**: Excus.us maintains connections post-event, allowing users to build a diverse network that grows with each new event attended.

## Technologies Powering Excus.us

* **Cohere's Embedding Model with R+**: Creates embeddings based on user bios and interests, and assists with translation when needed.
* **Clerk**: Authentication!
* **Convex**: Manages real-time chat and persistent user data across events. Also handles the auth tokens.
* **Groq**: Provides quick reranking capabilities for efficient diverse matching.
* **ChromaDB**: Stores and queries vector embeddings of user profiles for efficient matching.
* **Mappedin**: Provides real-time navigation within event venues.
* **Next.js**: Builds the responsive and intuitive user interface.
* **FastAPI + Defang**: Handles backend operations and API calls, with efficient deployment.
* **Posthog & Databricks**: Analyze user behavior and app performance for continuous improvement.
* **Flutter**: Powers the admin mobile app for managing user issues and communications.
* **Cloudflare Workers**: Used in conjunction with Resend for efficient email communications. Every time a match is made, a call is fired to the Cloudflare worker!

## Challenges and Insights

* **Balancing Diversity and Relevance**: Ensuring suggested matches are diverse yet still beneficial to users' professional growth.
* **Cross-Event Data Management**: Maintaining user data across multiple events while ensuring privacy and security.
* **Real-Time Scaling**: Managing the app's performance during high-traffic event periods.
* **Encouraging Diverse Interactions**: Designing features that motivate users to connect with individuals outside their usual professional circles.

## Future Roadmap

1. **Enhanced AI Assistance**: Improving the AI's ability to suggest relevant diverse connections without generating content.
2. **Virtual and Hybrid Event Support**: Expanding capabilities to cater to various event formats.
3. **Diversity Impact Metrics**: Developing tools to measure and visualize the impact of diverse networking on professional growth.
4. **Multilingual Support**: Leveraging Cohere's R+ for improved translation capabilities to facilitate connections across language barriers.
5. **Expanded Language Support**: Introducing support for additional languages to cater to a global audience and foster international connections.
6. **Interactive Icebreakers**: Implementing AI-generated conversation starters and questions tailored to each match, helping users initiate meaningful discussions.
7. **Booth-Attendee Matching**: Developing a feature to connect attendees with relevant exhibitor booths based on interests and potential business opportunities.
8. **Post-Event Follow-up Assistance**: Providing tools to help users maintain and nurture connections made during events.

## Booth Interactions and Footfall Optimization

During our research, we discovered that exhibitors at tech events often struggle with inconsistent booth traffic and difficulty in attracting the right audience. To address this, Excus.us is expanding its functionality to include:

1. **Booth-Attendee Matching**: Using our AI-powered matching system to connect attendees with booths that align with their interests and potential business needs.
2. **Booth Traffic Analytics**: Providing real-time and post-event analytics on booth traffic, helping exhibitors optimize their strategies.
3. **Scheduled Booth Visits**: Allowing attendees to book short meetings with booth representatives, ensuring a steady flow of interested visitors.
4. **Interest-Based Notifications**: Sending targeted notifications to attendees about relevant booth presentations or demos.
5. **Virtual Queue Management**: Implementing a virtual queuing system for popular booths to reduce crowding and improve the experience for both attendees and exhibitors.
6. **Feedback Loop**: Collecting and analyzing attendee feedback on booth interactions to help exhibitors refine their approach for future events.

By addressing both attendee networking and booth interaction challenges, Excus.us aims to create a more holistic and efficient event experience for all participants.

Excus.us is committed to creating a more interconnected and diverse professional community, one event at a time. By leveraging advanced AI technologies to assist in fostering unexpected connections and optimizing event interactions, we aim to spark innovation, broaden perspectives, and create a more inclusive and efficient tech ecosystem.
## Inspiration

We got the inspiration while solving some math questions. We were solving some of the questions wrong, but couldn't get any idea in what step we were doing wrong. Online, it was even worse: there were only videos, and you had to figure all of the rest out by yourself. The only way to see exactly where you did a mistake was to have a teacher with you. How crazy! Then, we said, technology could help us solve this, and it could even enable us to build a platform that can intelligently give the most efficient route of learning to each person, so no time would be wasted solving the same things again and again!

## What it does

The app provides you with some questions (currently math) and a drawing area to solve the question. While you are solving, the app can compare your handwritten solution steps with the correct ones and tell if your step was correct or false. Even more, since it also has educational content built-in, it can track and show you more of the questions that you did incorrectly, and even questions including steps you did incorrect while solving other questions.

## How we built it

We built the recognition part using the MyScript math handwriting recognition API, and all the tracking, statistics and other stuff using Swift, UIKit and AVFoundation.

## Challenges we ran into

We ran into lots of challenges while building all the data models, since each one is interconnected with the others, and all the steps, questions, tags, etc. make up quite a large variety of data. With the said variety of data, also came a torrent of user interface bugs, and it took *some* perseverance to solve them all as quickly as possible. Also, probably the one of the biggest challenges we dealt with was to deal with the IDE itself crashing :)

## Accomplishments that we're proud of

We are proud of the data collection and recommendation system that we built from the ground up (entirely in Swift!), and the UI that we built, since even though the app doesn't have a large quantity of educational content inside yet, we built it with the ability to expand easily as content gets added, in mind.

## What we learned

The biggest thing we learned was how to build a data set large enough to give personalized recommendations, and also how to divide and conquer it before it gets too complex. We also learned to go beyond what the documentation on the internet offers while debugging, and to solve things by going from examples, without documentation on how to implement.

## What's next for Tat

We think that Tat has quite a potential to redefine education for years to come if we can build more upon it, with more content, more data and even the possibility of integrating crowd-trained AI.