The Anternet: The Ants use TCP

Camille Baldock relatively recently gave a talk on collective nouns and finding one for developers (I’m still partial to either an array of developers or an archive of programmers).

Apart from introducing some very interesting social algorithms and unexpected correlations in developer behavior and the success of their open source projects, she mentioned Anternet - the discovery that ants use TCP-like protocols to forage for and harvest food.

Image of Ants in a row

When data is sent over the network, the payload is split into smaller packets. As packets arrive at their destination, they send back acks (acknowledgments) as a means of letting the sender know that the message was received. If acks start speeding up, that means the bandwidth is not congested and the packets can be sent faster. On the other hand, if acks slow down or disappear altogether, the bandwidth is congested and transmission should either slow down or the connection should be dropped. This algorithm for bandwidth congestion detection was what allowed the internet to scale to where we are now - billions upon billions of machines.

Abstract image of connections

Ants use this exact same mechanism when looking for food: the rate at which the harvester ants leave the colony looking for food and return corresponds directly to the available amount of food in the found stash. If they return quickly, there’s lots of it, and more harvesters are sent out. If they return slowly, or empty handed, the rate of harvester dispatches slows, or is canceled altogether. The ants implement another aspect we know well - slow starts. The initial push for foraging sends out many harvesters at once, to see how many return with a good bounty, thereby assessing bandwidth for future use. The colony is then able to evenly distribute a harvester force for maximum retrieval of the food, and adjusts the rate of sending accordingly as the discovered stash grows or shrinks.

They even have timeouts - if a set of packets (harvesters) doesn’t return for 20 minutes, the connection is dropped - no new harvesters are sent to the original destination. Kind of sad, when you think about it, but there is no “I” in an ant colony.

A single ant

Read the full and fascinating study here if you’re interested.

By the way, apropos the talk I mentioned at the beginning of this text - did you know a group of giraffes is called a tower? Really. There’s also the unkindness of ravens, a murder of crows, a flamboyance of flamingos, a pride of lions, a kindle of kittens (I’m melting right now!) and other hilarities. Discuss in the forum thread!

In other news - if I had to point out one post from the past fortnight, it’s the one about accessibility in PHP tools where one of our blind authors assesses the level of accessibility in various PHP editors and IDEs. You’d be surprised how badly some of the big players perform. It’s an important topic that warrants further discussion, so why not chime in and drop a comment or two on that post, letting us know what you are doing to make your public projects accessible.

1 Like

Collective noun suggestions:

For developers: a collection of developers; an object of developers; a string of developers; a protocol of developers; a stack of developers;

For programmers: uh… I got nuthin’…

A parse-l of programmers. :wink:
package of programmers

A class of programmers.

A void of programmers.

Coworker suggested that the collective noun for a group of programmers was a “merge conflict.” :stuck_out_tongue:

1 Like

An oop of programmers.

Scott

I’d go with a ‘Loop of Programmers’ myself…

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.