Given the circumstances of the current coronavirus outbreak, what we've discovered across much of the world is repeated and incessant internet problems. Especially now, with most schools having transitioned to or in the process of transitioning to virtual instruction, the ability to quickly and easily load websites is essential for a smooth education.
What it does
Fasternet is a single app which comes in two versions for your Windows PC: feather, and falcon, which is either a one-time executable or a program that installs to your hard drive and which you can regularly use, depending on your preference. The interface is extremely simple - a single click on the button "Start" will automatically optimize your internet for you, with no further interaction necessary.
How we built it
The basic idea behind Fasternet is that DNS resolving - that is, turning a domain such as Google.com into an IP address which your computer can find on the web - is the bottleneck for much of internet loading times. Thus, our goal was to improve the DNS resolving process.
The foundation of our work is a (very old) open-source project called namebench, by Google, which uses a command line or GUI interface coded in Tlc and Tk to ping local DNS servers and determine the fastest ones. Our team built a Python and Windows shell script framework around namebench that automatically parses the HTML output from namebench and then changes your Windows PC's DNS configuration to use the best local DNS servers.
Challenges I ran into
We faced many, many issues in making this project possible. For instance, each time we had to test the project, DNS delays meant that tests took about half an hour to an hour and a half to return results to us, meaning we were limited in the number of times we could properly test our code within the 36-hour timeframe. Furthermore, it's exceedingly difficult to package Python projects as Windows applications, especially when that Python project relies on Windows resources such as dll and bat files.
Accomplishments that I'm proud of
The bulk of the coding was completed by late afternoon on Saturday, and the rest of the time was spent attempting to package the project in a satisfactory way.
What I learned
Python is quite a difficult project to build desktop applications in! Jokes aside, we learned immeasurable amounts about how networks work, as well as about the Python language (our entire team is comprised of Java developers, not Python developers).
What's next for Fasternet
We hope to come out of beta and release a solid application soon! That means - no freezing (currently the application tends to hang once the configuration is complete), and the console should only appear in a specified debug mode.
Additionally, once our main program is complete, we hope to create a simple Pi-Hole based deployment that can speed up DNS resolve times for an entire network and eliminate advertisements in the process.