David Foster


HotlineProject is a client implementation of the relatively complex Hotline Connect client-server protocol. The codebase of this project consists of about 16,000 lines of code (LOC).

This has been my most challenging networking protocol implementation to date. During the course of this project, I taught myself and used design patterns and the technique of refactoring. Most software developers learn these techniques through college or the work force; I learned them on my own at the beginning of high school.


This protocol provides a multitude of services to its clients:
  • file/directory transfer (with resume support)
  • user chat
  • private messages
  • message broadcasts
  • threaded newsgroups
  • user permissions
  • simultaneous asynchronous requests
My client additionally sports the following unique features:
  • the ability to browse previously visited Hotline servers offline
  • a command-line interface to complement the graphical interface
  • extended server bookmarks that store extra information, such as:
    • what trackers the server is on
    • the time that the server was last seen (on a tracker)
    • the server's tracker description


Previous major versions of this project include:
  • HLToolkit (hlc, hlp, hlt, hlcVisual) (~11,000 LOC)
  • HLClient3 (~11,000 LOC)
  • HLClient2 (~6,000 LOC)
  • HotlineClient (~3,000 LOC)