App/Website Projects

I've always had a passion for design and creativity. Designing and developing apps and websites have allowed me to express that creativity in so many ways.

I've been making websites for long, long time now. First using drag-and-drop tools like Weebly, Wix, RapidWeaver, and WordPress, then transitioning to developing with pure HTML/CSS/JS, and most recently gaining experience with full-stack frameworks like Angular, React, and Flask, I love the process of designing and developing websites. From adding rounded corners, to making a site fully responsive, to ensuring the user has the best experience possible, it is all very satisfying to me.

I first started developing iOS apps in 11th grade. I had always wanted to learn to make an app, but I didn't know enough coding and didn't really know where to start. But as SwiftUI came around, I knew it would be a great time for me to learn. Spending hours following HackingWithSwift and CodeWithChris tutorials, I was able to create my first real, full-functioning SwiftUI app — Wash Your Hands Streaks. Then, onto my first major app encompassing authentication, network requests, and databases: QTutors. Since then, I have learned a lot and have published a number of apps on the App Store!

Below are many of the apps/websites that I've made. Unfortunately, I cannot share the more advanced projects I worked on, such as through my internships with BloomX and Spotify.

Cornell Computer Reuse Association Website

December 2022 – Present

For the final project of INFO 1300, an introductory web design and development class, we had to design and develop a static website for a client. My group and I choose the Cornell Computer Reuse Association, a club that I am a part of that repurposes and donates computers to those in need.

Over the course of a few weeks, we interviewed members of our audience to discover their goals, created sketches of the site, and coded it in HTML/CSS/JS. It was a fun group project.

During the winter break, I decided to redesign and re-code our website, this time using a CSS/JS framework called Bootstrap. This made the site look and function a little nicer.

Overall, this was a really fun project! It was the first site I fully designed with HTML/CSS/JS. In the future, I hope to re-write the site using a dynamic framework like PHP to make it easier to update certain components like the menu bar.

You can check out the site here: https://cornellcomputerreuse.org

Image
Image

Engineers for a Sustainable World Fume Hood Project

September 2022 - Present

As part of my project in Engineers for a Sustainable World, I am leading the design and development of a web dashboard to display energy usage information about fume hoods that are left open on campus.

First, some background - fume hoods, found in most laboratories, are one of the most energy-wasting devices on campus (not because they consume lots of energy, but rather because they continuously vent heated/air-conditioned air out of the building, requiring new unconditioned air to replace it). While fume hoods are necessary to be opened during experiments, many people forget to close them after they are done, contributing to wasted energy.

The objective of the fume hood dashboard is to inform lab managers, lab members, and the general public of fume hoods that have been left open for an extended period of time, especially in unoccupied lab spaces. To do this, we are querying the WebCTRL API (WebCTRL is Cornell's building controls system) to gather fume hood sash position, airflow, and room occupancy data from 1,500+ fume hoods across campus.

By querying trend history of these data, we have done some calculations into how much energy was wasted from fume hoods over the past year, and how much could have been saved had the sash been closed during unoccupied periods, and the results are significant.

We are currently developing the dynamic dashboard using Plotly Dash (essentially you write code in Python for querying/processing the data and you can display it in nice Plotly graphs, along with standard HTML elements). I have never developed a dashboard quite like this and it certainly is challenging! Additionally, we are working on designing and implementing a DynamoDB database to store information about buildings, labs, and fume hoods that is necessary for the dashboard.

One thing you may be thinking is, "well, Reid, you could build an amazing dashboard, but if no one will use it, then you did not solve the problem!" And you are completely correct. To supplement the dashboard, we are planning to run inter-lab competitions with a prize given to the labs which use the least energy. We are also planning to develop signage to place next to fume hoods and send automated emails to labs which are using the most energy.

If you are interested in learning more details, please reach out to me!

Image
Image

Cornell University Sustainable Design - "Currents"

September 2022 - May 2023

As part of my project in Cornell University Sustainable Design, I designed and developed an app to control and optimize Cornell's HVAC systems based on room occupancy. Essentially, the app connects to an occupant's Google or Outlook calendar and will control the room's heating or cooling system according to whether they are in their room or not. We envision this being used mainly for single-occupancy rooms, such as professors' offices.

You are probably wondering a few things, such as how the app can control the HVAC systems and what happens if the occupant does not follow their calendar.

I'll address the first point. Interestingly, much of Cornell's HVAC systems are already controlled by "smart" connected systems from AutomatedLogic. We are simply tapping into AutomatedLogic's API to control these equipment through an app. It's actually really cool!

For the second point, the goal of this project is to eliminate as much hardware as possible, which is why we don't consider motion sensors. To account for edge cases, the app has a manual override feature in case occupants don't leave or arrive earlier than expected. However, we understand that this isn't enough, so there is a team working to develop a ML model to predict and respond to these edge cases. It will continuously learn from user behavior as well. We also designed a few questions for users to answer before use, such as whether they typically attend online meetings in or out of their office.

Overall, this was a cool project to be a part of! You can view some of the screenshots of the app here.

Image
Image

MyAce

December 2021 - January 2023

This is an app I worked on with some friends at Cornell aimed at improving communications between coaches, students, and parents in tennis clubs. One of my friends in the group is passionate about that and initiated the idea.

This was my first experience working on an app as part of a team, rather than individually. I could focus on the design and frontend development while my teammates focused on the backend development, which was nice. This was also the first time I was shipping an app to potential customers, so I ensured that my work was top-notch. I learned a lot about fetching and loading data efficiently and concurrently, which was very useful. We worked really well as a team, and we ended up making a very good product!

However, as entrepreneurs, we were a bit naive. We didn't do much market research or user interviews, so upon releasing the app, we didn't get much traction. So, we decided to go back to the drawing board and instead design an app specific to tennis clubs' needs rather than a catch-all social network. After showing our designs to some clubs, we received generally positive feedback, and were ready to develop!

Well…not quite. We are now, in January 2023, realizing that our product is a bit too niche and will require too much customization for each club. So now, we are thinking of other entrepreneurial ideas. I'll keep you posted!

You can check out MyAce on the App Store here.

CUDormReviews

November 2021 - December 2021

This was a web project I made with two other students in the Trends in Web Dev class at Cornell University. CUDormReviews aims to be the central place for Cornell students to review dorms around campus and retrieve information about them as well.

This was a fun project for me, especially since this was my first real web project — real as in using React with Firebase, which enables endless customization.

You can check it out at https://cudormreviews.herokuapp.com (Note: the link may no longer work since we do not have a paid Heroku subscription)

Quarantine Tutors App

December 2020 - December 2021

This was a fun app I made for Quarantine Tutors, an organization which coordinated free virtual tutoring services during the COVID-19 pandemic.

I was tasked to make an app to facilitate student-tutor communications. This was a challenging app to make, as I didn't have much experience with backend. I decided to use Firebase for a login/backend/database, and while it was initially very hard to set up, it worked well! The most challenging aspect was integrating it with SwiftUI, as at the time Firebase's docs were exclusive to UIKit.

The hardest part was actually releasing the app to the App Store. It was rejected for containing the word "Quarantine," which apparently was not allowed to be used in an app during the pandemic. So, I had to remove all traces of the word and call it "QTutors."

My girlfriend at the time and I had a lot of fun adding tutor data into the app and testing it with each other. We also hid a small Easter Egg in the app. If you can find it, send me an email!

Overall, it was a successful app. While it didn't receive as much traffic as I would have liked, it was a great learning experience for me, and is still an app I revisit on my home screen time to time!

You can check out the app here.

SHS App

August 2020 - December 2020

Since entering high school, I had always wanted to re-make my school's app. It honestly wasn't very useful at all and I wanted to make it much better.

So after teaching myself how to make an app for Wash Your Hands Streaks (scroll down), I decided to bring my skills to a much more complicated app.

I wanted to make this app cloud-based, so it could provide information to students in real-time. To do that, I used Apple's CloudKit, which is very fast and easy to use.

I spent about two weeks straight, 10 hours per day making this app, and it was incredibly fun to do. Like, really, really, REALLY fun. I loved working through all of the issues I had along the way, and I had learned to make my code shorter and more re-usable (compared to Wash Streaks).

The app can provide users with the following:
1. LIVE updates to the school calendar, morning announcements, upcoming events, and important info.
2. Notifications on what type of school day it is
3. Easy way to view and contact all faculty and staff
4. Important schedules and websites
5. …and much more!

Designated users can also update information within the app, and publish it to every single student's iPad. That's pretty cool if you ask me.

Currently, I am trying very hard to actually get this published. The building principal and owner of the old app has approved my new app. I am trying to get in touch with the administrator who runs the Great Neck Public School's App Store Connect account in order to upload the app to the App Store.

In the meantime, you can see screenshots of the new app here on this webpage.

SavetheFrontline

May 2020 - May 2021

I am very proud to be part of SavetheFrontline, an organization made up of Cornell undergraduates/alumni that donates face masks to underserved residents in communities around Long Island and New York City.

I spent a week or so working to redesign the entire site from top to bottom. I taught myself WordPress and built up the site, one page at a time. It was quite fun, especially since this was my first web project for something very important. The GoFundMe campaign ended up being a success, and many people commented that the website looked nice, which made me really happy.

Since that time in May, I have been constantly updating the pages of the site and adding some other ones along the way as well. In order to speed up the process of updating the donation numbers on the front page, I created a PHP script that parsed a Google Sheets file and put that data into the site. That way, all that I needed to update was the Google Sheets file.

As of 2023, the website is decommissioned. Please do not visit the old URL, as it is compromised. I am currently working on maintaining an archive of the website for showcase; stay tuned!

Wash Your Hands Streaks

March 2020 - April 2020

I had always wanted to learn how to make an app. No, not like half-make an app. Like, really make an app. And what better time would it have been for me to teach myself than when I was locked inside my house with, quite frankly, not much else to do (school had just closed down due to COVID-19).

I needed to start small. So, everyday from March 15th, 2020, I worked on Swift and SwiftUI courses from an amazing site called HackingWithSwift. If I had done the 100 days of lessons, I would have had the knowledge to build an extraordinary first app. But I wanted to do something now, I didn't want to have to wait till June.

Then It just hit me — why not, for a small app, create one to remind users to wash their hands during COVID-19? After all, at the time, people thought that washing hands would end the pandemic, so I thought it would be a genius app!

So I looked through the App Store for any apps like that…and nothing. Great! (While developing the app a few others came out, though).

I started conceptualizing the idea in my head and decided to make it into a streak system — the more people washed their hands, the more they were rewarded. I had known just enough SwiftUI at that point that I was confident I could make the app, and so I set to work.

I soon found that it wasn't easy. Designing the UI was pretty simple, but actually getting everything to work properly was very hard. I had to work with dates a lot, and account for every possible thing the user would do — whether it was open the app during their streak, close it while they were getting one, wait a few days after washing hands, not have internet connection to download the current total streaks, and so on. My code resulted in a ton of if statements and copied and pasted code (I was not aware of the idea of writing once and using everywhere yet!). I also wrote the entire app in a single view 😅.

But in the end, after a week or so of 10-hour days working on it, it was complete. I went to submit it to the App Store, crossed my fingers, aaanndddd…rejected!

I really had no idea why it would get rejected. Was it not "unique" enough? Did it not work on their device? Did they not like the idea??? But when I opened the Resolution Center, I was really quite surprised at what the issue was. Apparently they did not allow any references to "COVID-19" in the app since they only wanted COVID-19-related apps to be published by official organizations, not some high schooler on Long Island. So all I had to do was delete any references to "COVID-19" in the app by marketing it slightly differently, and…accepted!

The app has about 120 hundred downloads as of August 20, 2020. Not very many, but enough that I am satisfied. It was a very fun app to build, and I am looking forward to building many more later in life.

Scouting App UI

December 2019

It's way too hard to explain here, but basically my robotics team (and all of FRC for that matter) does something called Scouting, which is essentially keeping track of other teams at competitions so that if we had to pick them for our alliance, we would know their stats/strategies/weaknesses etc.

Most teams just use pen and paper. But we wanted to get creative and make a mobile app to do the trick.

So I set to work on a UI, and this is what I came up with. It's a much more visual version of anything that's already out there.

Over the next year, the Rebel Robotics App Team did a phenomenal job coding the app using React Native. Since then, we've used the app for all our scouting and it's been a success! We expect to continue to update it for each season.

You may view the app on the App Store here.

Image

2638 Stickers

May 2019

What's more fun than an iOS iMessage Sticker Pack???

Well, probably lots of things. But at the time (and still now), I thought that creating one of those little iOS iMessage Sticker Pack things that you use every once in a while would be pretty cool.

So I set out to do it for my robotics team. It was actually super easy to do — it was literally just drag-and-drop the images to a folder and Xcode did the rest.

But with all easy things, there were sneaky things too. After importing all of the images, I soon realized that they needed to be transparent so that when a user places it on a text bubble it doesn't look ugly. So into Photoshop I went.

Then, just as I thought I was done, I realized that the larger you made the image, the smaller it appeared when dragged onto a text bubble by the user (weird, huh?). So into Preview to resize all the images I went.

Finally, it was done! I archived the file, uploaded it to App Store connect, waited a few days, aaaaanddd…rejected.

They said that the logo I used for the app was too similar to my other app I had already published, which was a scouting app for iOS. Haha. So into Photoshop again I went, this time to produce a cool sticker-like effect which ultimately allowed the app to get approved!

This wasn't too much of an exciting project, but people on the team definitely do like it and definitely do use it. I still update it time to time with new stickers as well.

You may view this sticker pack on the App Store here.

Robotics Website Redesign

April 2018

After getting my Synology server (see here), I had come up with the idea of redesigning the website for my robotics team. Not necessarily redesigning it as in changing how it looked, but more changing how it functioned and moving it from Wix to a Mac exclusive called RapidWeaver.

I spent about 10 hours each day during the entire April break of my freshman year in high school doing this, building each page from scratch on RapidWeaver. The intention was to make the site more consistent and responsive, so it would look good on not just a desktop computer but also a phone.

Now that I set up my server, I figured that I would figure out how to host the site on the server — so I did just that. After another week of configuring that by playing around with DNS and SSL and a bunch of other annoying things, I finally got it working. I would say the hardest part was dealing with the DNS and the way it caches on your computer. There were many changes that I made, and I soon found myself using 5 different web browsers to make sure things with the DNS worked. The SSL was also tricky, as my Synology server did not want to use any SSL certificate I gave it at first.

Now gnsrobotics.com was hosted on my server! Not only did I find that to be super cool at the time but also realized that it saved our team about $70/mo on website costs. But self-hosting a website (properly) is much harder than you think.

To this day, I still manage the website and host it on my Synology. While it is quite time consuming at times, I really do enjoy managing the site. In the last picture here, you can see how I edit the site.

The one thing about this that is not ideal is that the website only works when my power is on — which is a huge majority of the time, but nevertheless it will go out every once in a while and make the website inaccessible. Yet, I think the virtually unlimited storage I get (and also the ability to just drag and drop a file via Finder to have it accessible with a web link) greatly outweighs that drawback.

When I first got the site up and running, it was only running on a 75mbps upload/download speed. It was fine for the site itself, but made downloading videos hosted on it quite slow. So a couple months later, we upgraded our Internet speed to Verizon's 1gbps upload/download speed (for actually $200 cheaper/mo compared to the old speed (don't even get me started about why. I may do a blog post about that in the future)) and that improved things dramatically.

Overall, the whole website redesign experience was an exhausting one but a fun one nonetheless. I've taught a couple other people how to manage the website when I'm done with high school, and I can't wait to see how they take the site to the next level.

Here is our old site: https://gnsrobotics.wixsite.com/2638
And here is the new, current site: https://www.gnsrobotics.com

Image
Image
Image
Image