Project E: Seating Chart

Overview

The goal of this project is to automatically generate a seating chart based on network connected computers and phones.

Client: Scott Kay, eMoney Advisor

Background

Developers at eMoney organize into teams around small/medium scoped projects. Teams physically sit together to make collaboration and code review easier. As projects can last a few weeks to a few months and are on different schedules, we frequently move our desks around the office.

Manually maintaining a seating chart is difficult and time consuming, so instead we want to automatically generate a seating chart based on which network port an employee's computer and/or phone is connected to. In our offices, phones operate via the network and plug directly into a normal ethernet port.

We have been slowly developing this project in our free time. So far, we have written small applications in C#, which we call agents, to collect information about which devices are connected to the network and which employees own which devices. The agents run at a predefined schedule and store their results in a shared MS SQL database.

Objective

The goal of this project is to develop an application which correlates data from the agents to produce a mapping of which employees are sitting closest to which network ports. The mappings are to be stored in the shared MS SQL database. If time allows, we would like a web site to present the seating chart data visually.

The application may be implemented in any programming language, provided the compiled executable can run on Windows Server. Languages such as C#, Java, and Go will work fine.

Agents

We have developed 4 agents to collect information about network devices and their ownership from various systems. We will provide you with a sample database of their most recent output. You are welcome to alter the source code of the agents to collect additional information or store the data differently if you see fit, otherwise the inner working of the agents is not important. The 4 agents are:

Considerations

The data collected by the agents isn't perfect and your algorithm will need to smooth out the noise. For example, consider that not everyone's computer is always connected to the network (such as the case for laptops) and might be missed by the Computer Inventory Agent. We have a few shared computers in conference rooms and other public spaces which likely provide little or no meaningful seating chart information. Some people might show up in multiple locations, such as our CEO who has a desk at both our Conshohocken and San Diego offices. Some people might not be physically located within the office, such as our traveling sales staff.

Technology

* Should you choose to develop with C#, we can provide assistance to setup your server environment and tool chain.