Whitepages V3

A program to collect, organize, and distribute contact information

Quick start:

You'll need one of the following:

To run wp3 from the source (which is the only supported way to run it on Linux/OSX), you'll also need:

If you're running Ubuntu, the following line should get you what you need:

sudo apt-get install git-core python-ldap python-qt4 python-qt4-sql libqt4-sql-sqlite


Whitepages v3 is the third implementation of Whitepages, a program to collect contact information and photographs for the residents of the Texas A&M Honors Housing Community, to be published for said residents so they can get to know each other better. Knowing the faces of the people who live on your hall promotes community living, interaction, and security. This program was designed to be run on a computer during move-in day, to complement the check-in process.


Whitepages V3 is licensed and distributed under the GNU GPL version 3. If you have questions, either read the license or shoot me an email.



Coming soon

Background story

The year I moved into Lechner Hall at Texas A&M University, there was a program one of the advisors had written in Java on his PowerMac G4 to collect contact information and take a picture with a webcam. Since I didn't own a Mac, I decided I would reimplement the program for the following year. I wrote a (rather crashy) program I called Whitepages (later, Whitepages v1) in C++ with the Qt toolkit that could capture video from my own webcam in Linux. This was my first experience with using a kernel interface (V4L2) directly, and was a learning experience.

Due to the poor quality of the code and terrible UI, I decided to rewrite it the following year. With the help of my friend, Matt Mullins, Whitepages v2 was born. I ripped the webcam-interfacing code from Kopete, KDE's instant messenger client, and did the UI design, again with Qt on C++. Matt did the integration of the database backend. This program was stable, but still only ran on Linux, making it not very useful for anyone else. Also, since I still sucked at UI, the program had to be supervised, to ensure that people could figure it out in a reasonable amount of time.

My last year at TAMU, I decided that I wanted to produce something that would last beyond my time. This meant that a final rewrite would need to:

  1. Be cross-platform
  2. Have a simple, intuitive user interface
  3. Run stably
  4. Be simple to use and redistribute

As it had been my observation that webcams dealt poorly with the strange lighting conditions in the common areas in the dorms, I withdrew webcam integration in favor of intelligent photo file merging, which made task 1 easier. Task 2 was completed by writing out use cases and designing the program to use a familiar "wizard" style process for checking in, with explicit, simple instructions in the widgets. Since by this time I was quite familiar with the Qt toolkit, I wanted to continue using it (it's really a wonderful library!). To promote development speed and ease of memory-management, I chose to use Python and the PyQt bindings, which made it much easier to acheive task 3. I also received beta testing and UI testing from two of my friends. Finally, I acheived Task 4 by using a single database file (thanks, SQLite!) and packaging the Windows executable into a standalone executable (no installation needed) with all the necessary libraries, made possible with py2exe. I tried to force the whole app into a single .exe, but Qt's image plugin loading system didn't like that, and my program could no longer read/write JPEG files, so I changed my objectives to accept a single .zip folder instead of a single .exe file.

In short, producing this has been quite a learning experience for me, and I'm pleased with the final result.


Releases archive