Had to start a project blog to appease Dumont, our beloved R&D director!
So, in some flash of 6AM brilliance, I decided I’ll be doing a seminar when I get back on programming different types of network architectures – i.e., traditional client-server architecture, peer to peer, multicast broadcast, etc. Sounds not so interesting, right?
So, the “flash of brilliance” part was inspired by my friend’s Scott and Angelo, as seen on Scott’s website. The idea is, I’ll give the seminar on Computer Science House, and give EVERYONE ON FLOOR some client programs to run; when my server programs touch communicate to these clients, they start the next “verse” of the song “Dueling Banjos”, all synchronized together. (i.e. A group of computers start playing the first part of the song, then it switches to another group of computers…)
Thus, in my demonstration of each architecture, attendants will be able to hear a deafening cacophony of dueling banjos, and even better, because it’s audible, they’ll be able to hear WHY some architectures are better than others for certain applications; for instance, broadcasting the server to a multicast address (two of which are available on floor) will result in the least variation in delay time, so the music will be more in-sync. They’ll hear for themselves that the peer-to-peer architecture, on the other hand, isn’t very well suited to this particular application, and results in very de-synced music in which everything is playing at once, eventually.
This will be awesome. I’ve already written the source code completely for two out of the three network architectures I want to go over, but I may want to add more architectures. The code is written in Java, because A) It’s what the freshmen know, because it’s taught in CS class, so it’ll be easier for me to explain each architecture, and B) By using Java’s audio classes (which are not very elegant at all, by the way) and compiling to Java byte-code class files, it’s very portable, meaning everyone on floor can run the application, especially important considering floor has a very high proportion of GNU/Linux and Mac OS X users, with a few misguided saps like my room-mate who run Windows.
Talking to R&D:
(09:36:57 PM) Me (AIM): for bar camp, I'm thinking I'll do a presentation on different kinds of networking client/peer architectures
(09:37:13 PM) Me (AIM): but the example programs I made are AWESOME
(09:37:18 PM) Dumont: oh?
(09:38:14 PM) Me (AIM): The example program plays "Dueling Banjos"; i.e. in one architecture, one computer plays a banjo line, then it sends a packet to the other guy who plays the guitar line, who sends a packet...
(09:38:18 PM) Me (AIM): It's awesome to see
(09:38:41 PM) Dumont: wow...
(09:38:44 PM) Me (AIM): And in the normal client/server architecture, it supports an near-infinite amount of clients connecting as either the bass or treble parts
(09:38:51 PM) Dumont: OMG
(09:38:51 PM) Me (AIM): so you end up with a roomfull of PCs dueling it out
(09:38:53 PM) Dumont: ALL OF FLOOR!
(09:38:53 PM) Me (AIM): musically
(09:38:54 PM) Me (AIM): YES
(09:38:55 PM) Dumont: ALL OF FLOOR!
(09:38:56 PM) Me (AIM): EXACTLY
(09:38:57 PM) Me (AIM): EXACTLY
(09:38:59 PM) Dumont: IT MUST HAPPEN!
(09:39:01 PM) Me (AIM): EXACTLY
(09:39:37 PM) Me (AIM): it took me FOREVER to cut up the audio in audacity
(09:39:39 PM) Me (AIM): but it was worth it
(09:39:51 PM) Dumont: that'll be awesome
(09:39:55 PM) Dumont: must do this when we return
(09:39:59 PM) Me (AIM): ^_^