Presenting: Crescendo
The past few week or so I've been hard at work on something a bit outside my area of expertise: a peer-to-peer file sharing program called "Crescendo." From the documentation:
The distribution of nodes is a direct result of connecting users (clients) who build the network by connecting to broadcast nodes manually and request to be added to the list of broadcasted nodes. After a while, broadcast nodes will learn the list of nodes on the network, and can distribute entire lists of running nodes (broadcast or non) to connecting clients who don't have a view of the network. Thus, each client has a unique view of the network which is based on the network model distributed by any broadcast nodes the client is connected to.
Overall, it's been a fun project. My friend Josh has also contributed his own theme for the GUI:

His fork can be found here.
My GUI (which is the default) looks like this:

I've found that in coding this, I've forced myself to work a bit differently than normal, and have picked up a few new skills along the way.
Although I'll be posting more info later, everything you could possibly want to know can be found here, or in the "docs" folder included with the repo.