## Inspiration

We are a group of students passionate about automation and pet companions. However, it is not always feasible to own a live animal as a busy engineer. The benefits of personal companionship are plentiful, including decreased blood pressure. Automation is the way of the future. We developed routines using a iRobot Create 2 robot which can dance to music, follow its owner like a dog, and bring items from another room on its top.

## What it does

Spot uses visual processing and image recognition to follow its owner all over their home. He is a helpful companion capable of carrying packages, providing lighting and cleaning for his owner. Furthermore, his warm and friendly appearance is always welcome in any home. The robot platform used also has the capability for autonomous floor cleaning. Finally, Spot's movements can be controlled through a web application which also displays graphs from all the Roomba's sensors.

## How we built it

Spot was built using a variety of different software. The webpage used to control spot was coded in HTML and CSS with Django/Python running in the backend. To control the roomba and display the sensor graphs we used matlab. To do the image processing and get the roomba to follow specific colours the openCV library with python bindings was used.

## Challenges we ran into

One major challenge was being able to display the all the graphs/data on the website in real time. Having different APIs for Python and Matlab was a struggle which we overcame.

## Accomplishments that we're proud of

As a group of relatively new hackers who met at YHacks, we are extremely proud of being able to use our different engineering disciplines to implement both hardware and software into our hack. We are proud of the fact that we were able to learn about image processing, Django/Python and use them to control the movements of the Roomba. In addition to completing all 3 iRobot challenges, we were still able to accomplish 2 tasks of our own and learned plenty of things along the way!

## What we learned

Throughout the creation of spot our group learned many new technologies. As a group we learned how to run Django in the back end of a webpage and be able to control a roomba through a webpage. In addition, we were able to learn about the openCv library and how to control the roomba through image processing. We were also able to learn how to do various things with the roomba, such as making it sing, manipulating the sensor data to produce graphs and track its movements.

## What's next for Spot

Spot has many real world applications. As a mobile camera-enabled robot, it can perform semi-autonomous security tasks e.g. patrolling. Teleoperation is ideal for high-risk situations, including bomb disposal, fire rescue, and SWAT. This device also has therapeutic applications such as those performed by the PARO seal robot---PTSD treatment and personal companionship. As a generic service robot, the robot can include a platform for carrying personal items. A larger robot could assist with construction, or a stainless steel robot could follow a surgeon with operating tools.
## Inspiration

These days, we’re all stuck at home, you know, cuz of COVID-19 and everything.
If you’re anything like me, the lockdown has changed my online shopping habits quite a bit, and I find myself shopping on websites like Amazon way more than I used to.

With this change to my lifestyle, I realized that e-commerce is weirdly inconvenient when you really want to get the best price. You have to go check each retailer’s website individually, and compare prices manually. I then thought to myself, “Hey, it would be really cool if I had a price comparison tool to search for the best price across a variety of online retailers”. Before I knew it, I came up with Buy It, an application that does just that.

## What it does

Given a product name to search, Buy It will return search results from different online retailers giving you all the information you need to save money, all in one place.

## How I built it

Buy It is a mobile app developed in Android Studio using Java and Kotlin. The pricing data presented in the app is actually collected via web scraping. To do that, I leveraged the ParseHub API after training their scraping bot to search e-commerce websites with whatever product the user is interested in. The main issue is, the API isn’t easily compatible with Java, so I thought to host an API endpoint with Flask in Python to then make data available for my Java app to request. But I had a better idea: using Solace’s PubSub+ Event Broker. This made a lot of sense, since Solace’s event driven programming solution allows for easy two-way communication between both the client and the publisher.

That means my app can send the user’s product search to the Python script, Python runs the API on that search to initiate a web scraping action, then Python also sends back whatever data it collects. Meanwhile, the Java app was simply waiting for messages on the topic of the search product. After receiving a response, it can then process the pricing information and display it to the user.

Another cool thing about using Solace is that it’s an extremely scalable solution. I could make this app track prices real time from a large number of retailers at once, in other words, I’d be generating constant heavy network traffic, and the event broker would have no issue. By leveraging PubSub+, I was able to make a quick, easy, and powerful communication pathway for all the components of my hack to talk through, while also future-proofing my app for further development and updates.

## Challenges we ran into

Unfortunately, I was not quite able to get the finishing touches in for this hack. The app was even able to receive the pricing information, it was just a matter of parsing it and displaying it in a user-friendly manner. With my only team member not being available to work with me last minute, this ended up being a solo hack programmed in Java and Python, languages I’ve never used before. That being said, the majority of it is done, and I put an immense amount of effort into learning all this.

## Accomplishments that we're proud of

I'm super excited about how much I've learned. I used Solace which was very useful and educational. I've also never built a mobile app, never done web scraping, never coded in Python or Java/Kotlin, so lots of new stuff. I was also impressed with my progress as a solo hack.

## What we learned

As previously mentioned, I learned how to build a mobile app in Android Studio with Java/Kotlin. I learned more about programming in Python (particularly API endpoints and such), as well as web scraping. Last but not least, I learned about Solace event brokers and how they can replace REST API endpoints.

## What's next for Buy It!

I was thinking of creating a watchlist, where the user can save items, which will subscribe the app to a topic that receives real-time price changes for said items. That way, the user is notified if the item is being sold below a certain price threshold. Because Buy It is built off of such a strong foundation with Solace, there’s lots of room for new features and enhancements, so I really look forward to getting creative with Buy It!
I created a command line utility that allows the user to view a tagcloud of the terms used in the EDGAR documents for the annual reports. This utility creates a visualization that shows the most common terms, ignoring outliers with the color darkness relating directly to the relationship that term has to the argument. For example, if 'manufacturing' is the argument, the terms most related to manufacturing will be the brightest while the terms less important will be faded out.