A common issue in application development nowadays is that people do not always test their application against devices and networks that have very low performance. This is somewhat understandable, especially when not everyone has the resources to setup a big testing rig testing high end, mid tier, and low end devices on a variety of different networks. This is not to mention that even when there are the means to test, people probably skip it as it is a giant hassle to do so.
During Shopify's Hack Days, the lovely @amecila and I worked on a project to simplify testing against slow performing networks. The basic idea is to be able to control the bandwidth, latency, and packet loss for individual devices connected to a special WiFi network. This system was named "Traffic Cop".
Traffic Cop is an application running on a router with OpenWRT that allows you to emulate different networks such as 3G, EDGE (2G) for individual devices connected to this router.
All a client has to do is connect to this network, go to the router's IP address (at port 8080 by default), and select a network profile to simulate. You can then watch the client's ping latency, bandwidth, and packet loss rate match the ones indicated for that profile.
The whole project is open source here: https://github.com/shuhaowu/trafficcop.
Spoiler! The finished product looks like the following:
Note: the UI text has been slightly updated in the current version, with "None" changed to "No profile" and the caption set to "Best available connection".