Different areas of NUS have an atrocious WiFi strength problem – and as students, we're expected to stream looooong online lectures and study on this very WiFi??? 1 Bar ... are you kidding me?
What if we told you, you could go Ghost Bustin' for strong WiFi for a hot sec before settling down to grind?
Presenting to you, WhereFi.
What it does
WhereFi is a geiger counter for WiFi signal strength. It BEEPS with higher frequency as you move towards areas of more robust WiFi and beeps with lower frequency in horribly connected regions. All you need to do is
- Connect to your WiFi of choice
- Whip the app out
- Start moving and listening to beeps
How we built it
TLDR: we checked how fast we can fetch a dog. Yes, you read that right.
WhereFi repeatedly retrieves a hosted, uncompressible (JPEG) image of a dog while keeping track of request-response times. That means, we retrieve this information every second. We compute a rolling average of these times with a window size of 5 recent timesteps. This is a popular proxy for WiFi performance. Finding this proxy took quite a bit of research into networks and existing libraries that allow us to do this directly from the browser, making this app way more accessible and faster than existing native apps.
To bypass the overhead of caching, we appended a unique string to each request. This is called cache busting (we are not kidding). This allows us to continually get WiFi signal strength without having the user wait in an area for too long (as commercial WiFi analysers do).
Challenges we ran into
Finding libraries that work on a browser (with their limited hardware access due to privacy) that were able to access the relevant network information to compute the appropriate metrics.
Accomplishments that we're proud of
These sorts of network coverage apps are mostly native desktop applications meant for IT Administrators when placing routers around offices or buildings. Even those "WiFi analyser" apps on the app stores are meant for single use, ie, you need to sit down and wait for 30 seconds for it to calculate all the information you need.
We find appropriate metrics that are proxies of WiFi signal strength – something we can find in seconds and give you immediately as you move around.
What we learned
Networking is hard. Really hard. We had to dive into the depths of the internet trying to find information about how browsers go about measuring certain metrics about signal strength. For instance, we spent 5 hours debugging a library not updated for 3 years, essentially trapping ourselves in dependency hell.
We had to deal with concepts we had only briefly covered in past classes, giving us very little "starting information" to begin with. Our extensive search led to many deadends before we scrambled a few APIs together to allow WhereFi to do what it does.
What's next for WhereFi
Adding real-time heatmaps of your immediate vicinity based on wherever you've around. It'd be useful to add crowd-sourcing to aggregate information about relative WiFi signal strength from areas as well.