Andy Lincoln
May 2, 2014


BestDNS times DNS request through several providers in order to give you the fastest DNS server


Concepts Demonstrated

  • 'Data abstraction' for the provider and server objects, with an interface and procedures to operate on them
  • The server's and provider's procedures are run via message passing and dispatch tables
  • Hash maps for storing key value/pairs (Provider name/provider combinations)

External Technology

Utilizes the Racket net/dns library to make DNS requests Also utilizes the Racket date library to use system time


A quick and easy way to find out how you can get faster internet speeds.

Technology Used Block Diagram

Create a simple block diagram of your software system that illustrates the major technical components and how they interact; e.g.:

As you can see in the structure diagrams below, each dns-provider object contains a list of server objects, each with an address and a status. Abstraction boundaries are made to ensure direct manipulation of underlying implementations of objects is not possible without the proper message passing.

The magic happens by mapping a procedure to the server lists that returns the speed of each server's queries to Results are then compared, first finding the best for each provider, and then comparing provider's best times. The fastest provider/server is then reported out to the user!