Probability Tree

The personal site of Joseph Agreda

Filtering by Category: Development

Digital Signage

One of the first tasks assigned to me at my new job, was to build a digital signage system for the main library on campus. They had already secured and spent their funding on several Mac minis, some Apple 30" Cinema Displays and a 55" Samsung TV. They had found a software solution that they wanted to use, Billboard CE, an offshoot of Billboard which is NC State's digital signage system. The one problem though, was that Billboard CE was mostly an unfinished port from their source and wasn't really ready for us to deploy, so my job now became to either find an alternative, or to build some software glue to tie this all together.

Some caveats. First, this was about a year ago, and the money had been spent much earlier, so the Mac minis were of the previous generation, which for our purposes means that they lack the graphics power of the most recent minis. We didn't have much more money to spend. We didn't want to BootCamp all of these to run an off-the-shelf solution, and this needed to be done quickly.


Before I dive into the software side, a few notes about our hardware implementation. Doing this all over again would be considerably easier with current hardware, but I digress. Each installation with one exception is comprised of a Mac mini and a 30" Apple Cinema Display, the exception being the main entrance setup on the second floor which has the large Samsung TV. Two components doesn't sound that bad, but then you have to take into account that the old Mac mini has a large external power supply, as does the cinema display, and the mini requires the use of a DisplayPort to dual-link DVI adapter to output to the 30" display. Also add in some wake from sleep and reboot issues with the dial-link DVI adapters, and so to be safe, we're powering them off of an independent USB power supply. Contrast this to using current equipment, where the current Mac mini employs an internal power supply, as does the 27" LED Cinema Display, and since the 27" LED Cinema Display has a mini DisplayPort cable to start with, no messy adapters to fiddle with.


My background in programming is a weird and long story that I'll get to someday, but the important part is that my recent experience in web development has largely centered around Django, a powerful Python framework. The systems department in the library is a mixed bag of programming experience, with plenty of very competent programmers with experience in say, Perl, PHP or Fortran. They've deployed a couple of WordPress installs to deal with certain parts of their main web site, but all-in-all, there isn't really an institutional standard here. So I jumped around and built some basic signage apps with Django, and toyed with a Rails apps that could accomplish the same thing. The basic requirements being that the app run in a fullscreen web browser, such a Plainview, and have the ability to rotate through what more or less amount to slides.

The design was pretty straightforward but took a lot of mocking up and some testing to get to a point where I felt comfortable with the visuals. I went through what books the library had, and did some reading online, but found surprisingly few definitive resources regard digital signage. The most useful book I found was written primarily for physical and static architectural signage. It was helpful primarily in font consideration, both for type faces, weights, and knowing when you need diversity. For the digital side, my best friend was the WCAG (Web Content Accessibility Guidelines) published by the W3C. I looked to the WCAG primarily for guidance regarding colors, contrast and color brightness. The WCAG also had some good advice regarding font selection, but for my purposes was mostly a mirror of what I found in print, which was to avoid scripted fonts.

As for what I ended up with, we have a clock and date in the upper right, set in Lucida Grande, and other titles and text are set in Helvetica Neue. There's something about times, dates and email addresses set in Lucida Grande that I like and find very readable. The overall theme is dark for a couple of reasons, the most obvious reason is to allow the slides to stand out. It's also dark to contend with the lighting conditions in the stacks, which is relatively dark to begin with.I want the displays to be as bright as possible without blinding our patrons. The perfectionist in me isn't satisfied with the design, so I'm continually making small adjustments and changes here and there. All of these changes will culminate in a new and hopefully more balanced font layout in the near future.

I've got an app more or less ready to go. Mission accomplished. Except for this minor matter of maintainability.

Problems of Maintenance

I was hired using federal stimulus funds, so my job is expected to exist for around two years. No one in my department has any experience with Django, and very very minimal experience with Python, to say nothing of Rails or Ruby. Crap.

Some discussions and a few meetings later, it becomes clear that if I'm going to be a Good Programmer™ and deploy something that they can fix and update themselves, it's going to at least have to be in PHP and ideally, based on WordPress. I've toyed with WordPress plenty of times, and I've set up several sites and blogs using it as a base, but I wouldn't have called myself a PHP programmer. It's not a terribly difficult language to pick up and use though, so it wasn't a big deal to replicate the core functionality of my Django app. Blend in a little mix of WordPress plugins, some template hacking, and now we have a functional digital signage system. It's not perfect, and can't be modified and extended in quite the same way as my Django app could, but it gets the job done, and will be able to stay alive without my continued presence.

Afterthoughts and Looking Ahead

Never underestimate the need for maintainability. This is a hard lesson I've been learning over the years. Even if it isn't asked for up front it's foolish to design without it in mind. The less someone asks about maintainability, the more screwed they'll most likely be a couple years down the road, and if you're out working somewhere else by then, it'll come back to haunt you. This encompasses everything from the frameworks and languages you use, to how you document your code. You do document all of your code, right?

This was just under a year ago and quite a few things have changed. I've made several modifications to the design since it was deployed, and continue to make more changes, especially on the front end. The hours display has always bothered me so along with another initiative to consolidate the way we hand hours information, that display will only display today and tomorrow's operating hours, leaving some more room for other bits of information. We may be getting another sign installation with actual professional-line digital signage monitors and a newer Mac mini.

Overall, I'm happy with how things turned out on the technical side. It's a stable solution that gets the job done, and is pretty easily managed. As always, things could be better given more ideal circumstances with regard to time, money and environment. But somtimes, you just have to go with what works.

© Joseph Agreda 2008-2015