June 26, 2008

Carousel 5.2: Images in RSS Feeds

This is one of a series of posts describing the new features in Carousel 5.2 which is currently in Beta test. Be sure to check out the other posts in this series so far:


Carousel's RSS bulletins are a fantastic way to get dynamic content on your digital signage system. The one drawback is that they're limited to textual content only... But not for long. In Carousel 5.2, RSS bulletins bust free from their text-only shackles and now display images embedded inside the RSS feed.

So how does it work? It's all thanks to the Web Picture block, which was born in Carousel 5.0. Web Picture blocks take in a URL to an image, and display that image on a bulletin, just as if you had selected a picture from Carousel's media management section.

This is definitely cool, but it does require you to manually enter a URL for any picture that you want to display. As it turns out, certain RSS feeds (like photostream feeds from Flickr) already contain URLs to images. What if RSS feeds could recognize those image URLs, and use the Web Picture block to display the image?

Well that's exactly how it works. Here's how to set it up for yourself:

Step one, find a feed that has image URLs. I'm going to grab a feed from one of my photosets on my own Flickr account.

feed_link

I've been taking pics of my patio project at home, and I'd like to share the progress with the rest of the gang here at TRMS. So, I'll use this photoset to create an RSS bulletin on our internal Carousel system.

Next, I'll hop into Carousel, create a new RSS bulletin, and paste the feed URL into the usual spot:

rss_bulletin_feed_entry

By default, the RSS bulletin template doesn't have a Web Picture block in it. So, we'll need to add one by editing the template for this bulletin. Click the "Edit Template" button near the top right of the bulletin's preview box:

template_editor_button

A complete discussion of Carousel's Template Editor is a bit beyond the scope of this post, so I'll make this brief. I added a new Web Picture block, deleted a couple text blocks that I didn't want, and moved some things around. In the end, I had a template with three blocks:

  • A text block at the top with default text of "#ChannelTitle#"
  • A text block at the bottom with default text of "#ItemTitle#"
  • A web picture block in the middle with a picture URL of "#ItemImageURL#"

These will correspond to the title of the feed, the title of the individual picture, and the URL for the image.

rss_template

Once the template is finished, we'll be taken back to the bulletin edit screen. Each of my blocks should have the default values that I set up in the Template Editor. (Since this is an RSS bulletin, the "#FieldName#" values will be replaced by the corresponding value from the RSS feed.)

bulletin_edit

Make any further changes to the bulletin that you'd like, then hit the "Continue" button and schedule the bulletin like usual. And we're done. Carousel will now start filling in the bulletin with data from the RSS feed.

To see what the bulletins look like, I can take advantage Carousel 5.2's new Web-based Channel Preview feature.

rss_image_preview

And as a bonus, since Carousel continually checks the feed for new information, any time I upload a new picture to my Flickr set, Carousel will automatically fetch and display the new picture throughout our office. I never have to touch the bulletin. That's pretty damn cool!

Note: I've set this bulletin up to only display a single item from the RSS feed at a time. But there's no reason why you couldn't display several feed items on a single bulletin. If there's room, Carousel will simply copy the set of blocks, place the new set underneath the existing set of blocks, and fill in the new blocks with data from the next item in the feed.

Granted, I might be a bit biased, but I think this is an amazingly cool feature. Imagine the possiblities: Maybe there's an RSS feed out there with weather information for the next several days, and it includes a little image of the forecasted conditions. Maybe there's a feed with stock quotes for individual companies, and each item contains a chart of the stock's performance for the day. Maybe your organization publishes an internal RSS feed of employee birthdays with their picture. Carousel can automatically display all of this stuff! Set it up once, and let Carousel do the rest of the work.

Truly, this is the stuff that makes my job fun. :-)

June 17, 2008

Carousel 5.2: Player Status Monitoring

This is one of a series of posts describing the new features in Carousel 5.2 which will be entering Beta testing very soon. Be sure to check out the other posts in this series so far:


For larger Carousel installations, managing several dozen Carousel Players can get a bit tricky. It's hard to know which channel they're displaying or even if they're running at all unless you're standing in front of the display. That's why we're introducing Player Status Monitoring in Carousel 5.2.

There are two ways to keep tabs on your Carousel Players. Have a look:

configuration_players

First, we'll take a look at what's behind the Player Status section:

players_with_errors

Here you can see all four of my players that are registered with Carousel, including their hostname, IP address, and the Carousel channel that each player is "tuned" to. Additionally, you can see the version of the DisplayEngine software, and the last time that the DisplayEngine checked in with the server. (Under normal circumstances, the DisplayEngine will check in with the server around once a minute.)

As you can see, my system is having some trouble. My "Main Lobby" player hasn't checked in since 2 AM this morning, my "Conference Room" player is running an old version of the software, and although my "Hallway" player has checked in recently, it taking a little longer than usual for the next checkin to occur. Thankfully my "Back Office" player is running smoothly. Looks like I should investigate.

After plugging the network cable back into "Main Lobby" (an overnight maintenance person accidentally unplugged it), and installing the latest software on the "Conference Room" player, things are up and running once again. Looks like there was just a network glitch with the "Hallway" player, because it's checked in okay again without me doing anything.

players_fixed

Cool. So I can keep pretty close track on my players. But what if I'm not at my desk and a player gets its power cord kicked out? Wouldn't it be great if Carousel would notify me that there was a problem?

Of course it would! So, new in 5.2, you can tell Carousel to send you an email (or even a text message to you cell phone!) whenever a player goes AWOL. Head over to the Alert Settings section:

player_alerts

Here you can adjust the amount of "downtime" before Carousel decides there's a problem with a player. This is the same setting used to determine if there should be a "red X" in the Player Status screen. Once this period of time elapses without a checkin from a player, Carousel will send an alert email to the list of email addresses you've specified. And if you know the SMS email address for your cell phone, you can enter that address here as well and be alerted anywhere, anytime, without needing to be next to a computer.

Now you'll always know what your Carousel Players are up to.

whither markup?

I've been poking around with a couple of the hot new javascript frameworks making the scene lately. SproutCore had a giant splash at WWDC, and I've been trying to see what's going on with Objective-J from the guys at 280North, though there isn't much info out there just yet.

They each have some damn impressive demos, and the concepts behind them are intriguing to say the least. But what irks me is what you see when you take a peek at the source... What happened to clean clear "semantic" markup? A button isn't just a <button>, it's an anchor tag surrounded by some <span> tags. In general, the markup just isn't all that pretty to look at. I like being able to turn the css off, and see a nicely structured document.

I understand that this might all be a necessary evil which stems from generated code, and perhaps you can have a lot more control over the markup than what I've seen at first glance. It just makes me wonder... Is there a spot for beautiful markup in these up and coming days of "thick-client" web apps? Or does the capability to make ridiculously awesome front-ends somehow overrule the need/desire for clean markup? Maybe it's no longer important?

Update! I love Twitter. Within minutes of me whining out loud to the twitterverse, I got a reply from Charles Jolley. Apparently, they've working (today even!) on making the markup better. Gotta love that. :-)

June 16, 2008

Carousel 5.2: Web-based Channel Preview

This is one of a series of posts describing the new features in Carousel 5.2 which will be entering Beta testing very soon. Be sure to check out the other posts in this series so far:


One of Carousel's most impressive features is the fact that the entire user interface is web-based. This means that you can create and update your digital signage content from anywhere, as long as you have a web browser.

There is, however, one drawback to this feature... Unless you are near a Carousel Player running a DisplayEngine, you can't actually see what your signage channel looks like. Wouldn't it be nice if there was a way to preview your channel directly in your web browser?

Well, yes. It would! In Carousel 5.2, you can now see a full preview of your channel, including the layout of all the zones on that channel. Here's how.

From Carousel's Main Menu, click the "Configure" button, and bring up the Channel list:

channel_list

Next to each channel name, you'll see a little full screen preview button. Clicking on this button will open up a new browser window with your channel on display!

full_screen_channel_preview

If you're feeling really industrious, you can even include this preview directly into your website by creating an inline iframe on your site that points to the URL of your channel's full screen preview. Imagine Carousel's beautiful output in your hallways, on your computers (using the optional Carousel Screensaver), and on your website. Pretty neat!

There are a couple caveats to be aware of... Because this preview is displayed directly in your web browser, you won't be able to see the crawl, or other media types such as video, flash, powerpoint, live video, etc. Additionally, the new preview takes advantage of modern, standards compliant web browsers, so you'll need to be using a recent browser like Firefox 2+ or Internet Explorer 7+. Nevertheless, it's a great way to take a look at your channel when you're not near a Carousel Player.

Carousel 5.2: DisplayEngine Network Diagnostics

This is one of a series of posts describing the new features in Carousel 5.2 which will be entering Beta testing very soon. Be sure to check out the other posts in this series so far:


Problem: You're all set to launch your new digital signage system, when you discover that, for some reason, your player isn't (pick one):

  • Displaying bulletins
  • Contacting the server
  • Showing you a list of channels
  • Other strange behavior

Solution: No clue... Call Tightrope???

In Carousel 5.2, there's a much better way to diagnose strange communication issues between your Carousel Players and the Carousel server. Let me give you a first look at the DisplayEngine's new advanced communication test suite.

Here's the new DisplayEngine configuration screen, which you can access by clicking the "Configure" button when the DisplayEngine is starting up.

config_screen_success

Notice in the top left section, the server field and the green checkmark button. To run the diagnostics enter the address of your Carousel server and click the checkmark button. If all tests are successful, you'll see the following test results screen:

successful_tests

You'll find a list of each test that was performed, plus a green check for each test that passes. At the bottom of the screen, you'll find a short description of the test results. In this case, all of our tests succeeded, so we should have no problems with our Carousel system.

Great. Perfect. So what? What about if something goes wrong? Well, to simulate a common connection problem, I went in and forcibly shut down the Carousel Service, a critical piece of software that runs on the Carousel server. Without the Carousel Service, your players won't get any new content. Definitely not a situation you'd like to be in.

So what happens? I'll re-run the tests:

failed_tests

Ah ha! Some of the tests failed! You can see that this DisplayEngine wasn't able to connect to the Carousel server. And if you read the test results at the bottom, you'll see several possible reasons for why the test failed, and some possible solutions you can try to get it passing. I've highlighted the "Carousel Service has not been started" section because that's the exact cause of our failure. As soon as I started the service back up, all the tests passed once again.

Here's the list of tests that are performed:

  • Pings the server address that you've entered, to make sure that a computer is on the network that responds to that address
  • Connects to a Carousel Service running on that address
  • Downloads some data from the Carousel Service
  • Downloads some data from the Carousel Web Server
  • Checks the time on the server and compares it to the Player's system time (If these times are too far apart, bulletins might not appear on screen as you'd expect)
  • Checks the Carousel software versions on both the Server and Player, looking for a version mismatch.

Quite a lot of work for a single button. :-)

We hope this new feature of the DisplayEngine helps cure some headaches when troubleshooting connection issues.

March 24, 2008

Carousel 5.2: Bulletin Impression Tracking

We've been hard at work on the next version of Carousel, and I'd like to give a short sneak peak at what's coming up. This post will focus on what we're calling Bulletin Impression Tracking.

Here's the scenario: You're in charge of running the digital signage for your organization, and someone comes to you with a complaint. They're concerned that their bulletins aren't being shown on-screen. And if they're paying you to display their message, this is a justifiable concern. Wouldn't it be nice if you could tell them exactly how often their bulletin was displayed?

Enter Impression Tracking. In Carousel 5.2, you'll be able to track how many times the DisplayEngine has shown a bulletin (aka an "impression"), and the total amount of time that the bulletin was on-screen. Here's how it works:

Enabling Impressions Tracking

When you're creating a bulletin, after you have specified the bulletin's schedule, click the "More..." button.

impressions_more_button

This will take you to the bulletin properties screen. You'll see a new checkbox at the top of the screen that will turn on the impressions tracking for this bulletin. In my examples, notice that I'm also specifying a manual duration for this bulletin; this is telling Carousel that I want it on-screen for 40 seconds, regardless of how much text is in the bulletin.

impressions_tracking_settings

After enabling impressions tracking, continue through the bulletin creation process as usual. That's all you have to do. From this point on, whenever a DisplayEngine shows this bulletin, it will report back to the server, and the impression will be counted.

Reviewing Impression Stats

So far, so good. But now how can you get at the tracking statistics? Simply head over to the "Manage Bulletins" lists, and you'll see a new attribute displayed on the bulletins that are being tracked. This is what you'll see immediately after creating the bulletin:

impressions_initial

Note the new "Impressions" attribute at the bottom. Since I just finished making this bulletin, it hasn't had a chance to be shown on the screen yet. So, the impression count is zero.

After waiting for the bulletin to come around in the cycle a couple of times, I reloaded the bulletin list in my web browser, and now I can see that my bulletin was shown twice. Additionally, I can see that it's been on-screen for a total of 1 minute, 20 seconds, which makes perfect sense since I asked it to be shown for 40 seconds at a time.

impressions_2hits

2 impressions * 40sec = 80sec = 1:20

So now, based on the information in this screenshot, I can report that this week, between the hours of 9am and 5pm, this bulletin has been shown twice, for a total of about 1 minute and 20 seconds.

As time goes on, you can get start to see some interesting data. Here's a bulletin that I've been tracking for a couple weeks now:

impressions_many_hits

It's been on the screen in our conference room well over ten thousand times, resulting in a full day's worth of on-screen time.

You can also start to get a look at how Carousel's automatic bulletin pacing feature affects the on-screen durations. Make two bulletins, each with the exact same same schedule, but with different amounts of text. As time goes on, you'll see that while both bulletins have the same impression count, the impression length favors the bulletin with more words, evidence that Carousel is adjusting the duration to account for the increased amount of text. Kinda neat!

In the coming days/weeks, I'll highlight a few more fancy cool new features of Carousel 5.2. Stay tuned!

March 22, 2008

Make no little plans

Saw this today on 37signals' blog:

Make no little plans. They have no magic to stir men’s blood and probably themselves will not be realized. Make big plans; aim high in hope and work, remembering that a noble, logical diagram once recorded will never die, but long after we are gone will be a living thing, asserting itself with ever-growing insistency. Remember that our sons and grandsons are going to do things that would stagger us. Let your watchword be order and your beacon beauty. Think big.

-- Daniel Burnham

I'm looking for some inspiration. I want in on something wild and new. I'd like to change the world somehow.

Maybe it's making "next generation" digital signage. Maybe it's community video like it's never been done before. These would be safe, as they're what I do already at TRMS. But maybe it's something completely different, something we've never done before. I'm not sure yet.

In any case, I want to be passionate again. It's been a while.

December 29, 2007

Brewing Beer is Fun

For Christmas, Katy gave me an awesome set of home brewing equipment. I don't think I'm overstating it when I say that this could be the best thing ever in the history of the world.

It only took a couple of days before I absolutely had to give it a go. Fortunately, Eric was in town for the holidays, and he's done this brewing thing before. Always looking for ways to exploit my friends, I quickly invited him over to help me get the first batch going.

I had a pretty well-stocked set of equipment, but I still needed to get a couple things before we could start. Namely, some ingredients and a big ol' pot to cook 'em in. So, off to Northern Brewer I went. (Side note: I can't believe how incredibly lucky I am to live only a mile or so away from one of the best home brew supply stores in the country. Why haven't I done this sooner?)

I decided a good first brew would be a simple Extra Pale Ale since it didn't seem particularly tricky, and was bound to be a crowd pleaser. I'll save the syrupy thick porters for later. I scooped up an ingredient kit, and inquired about a kettle. Little did I know that "official" brew kettles (complete with temperature gages and fancy ball valves) started at around $100, and quickly ramped up from there. Fortunately the friendly staff suggested I head over to Target and score a basic stainless steel stock pot, since they'll do the same job for about $60 less. Fine with me.

I also snagged a 6 gallon glass carboy as a primary fermentation vessel, since it seemed easier to use, and definitely more fun than a plastic bucket, since it allows you to watch the goings-on as the yeast goes to town on the brew.

Fully stocked, we began the process.

Katy and the Kettle

Here, Katy keeps an eye on things as we begin to heat the water. Once it warmed up, we poured a pound of Dingemans Caramel Pils inside of a muslin mesh bag and steeped it much like you would a tea bag. After being fully steeped, the grain was removed, and the malty water was brought up to a boil.

Once boiling, we added 6 lbs. of NB's pre-made Gold Malt Syrup as a fermentable. This stuff is a lot like molasses, and provides most of the sugars that will be converted into alcohol during fermentation. It also has the nice side effect of being a lot easier to use than making an all-grain wort on my very first brew.

Hops on the boil

It was now time to start the "real" boil. The wort needs to be boiled hard for about an hour in order to release the various sugars from the malt, and to kill off any undesired bacteria which would turn the beer into a foul tasting swill.

As the boil started, we added an ounce of Chinook hops, which provide the bitterness needed to balance out the malt flavors. After a solid hour of boiling, we added an ounce of Cascade hops (to impart the classic hoppy aromas and flavors you expect to find in an extra pale ale) and continued the boil for an additional minute before taking the wort off the heat and cooling the whole thing with a water bath in the sink.

It's important to cool down the wort, since yeast can't tolerate extremely hot environments. Additionally, it must be cooled quickly, because the longer it stays in the "hot, but not boiling" range, the more likely it is to pick up some some gross flavors.

As the wort cooled down, we thoroughly cleaned and sanitized every piece of equipment that would come into contact with the beer. Once again, this is to prevent any nasty bacteria from ruining the batch.

Pouring into the carboy Straining the wort

After everything had been sanitized, we poured the now cool wort into the carboy, where it will remain for the next several days. After adding a batch of yeast, we sealed everything up, and called it a night.

Beautiful

That's the final product (for now), sitting peacefully in my basement. I'll be keeping it wrapped in a garbage bag, so that any stray sunlight from the windows doesn't skunkify the brew.

Rest assured, I'll be checking on it several times a day over the next week, watching the yeast do its thing. I haven't decided if I should do a secondary fermentation yet, or just go directly to bottling, but I'll be sure to give an update as things progress. ;-)

So far, this has been an extremely fun experience, and, assuming it turns out, extremely satisfying as well. As a bonus, the whole process is much easier than I expected! So what are you waiting for? Go brew a batch of your own!

December 12, 2007

I have a problem

While cleaning up my desk today, I came to the realization that I might have a bit of a problem.

I have a problem

That's our big secret, I guess. Tightrope is fueled by caffeine.

December 09, 2007

New iMac in the house!

Hoo boy. I've been annoying everyone I know for the past several months; hemming and hawing on and on about "I think I'm gonna get a mac today... Maybe this weekend... Perhaps a MacBook Pro, maybe an iMac, I dunno, what do you think... Maybe I should wait... Blah blah lame lame..."

Ugh, sorry about that. The good news is, you don't have to listen to me whine about it any longer, 'cuz I went out and did it. I'm now a proud owner of a new 24" iMac, and I've got the pictures to prove it. :-)

Here it is!

Opening the box

Packaging

Sweet

All the pieces

Removing the packaging

iMac Revealed!

Early Christmas!

It lives!

So, aside from looking like a total goober in those pictures, I'm about as happy as can be. And yes, I did choose to set the whole thing up in the middle of my living room. It'll probably find its way to my home office one day, but that's a good 30 feet away from the front door, and I couldn't wait that long before ripping open the box.

So, uh, I might be late to work on Monday. ;-)

Tumblr

TwitterStream

    follow me on Twitter

    What I'm Reading

    TRMS Links

    • TRMS Chat
      Have a quick question? Hop into our chatroom.
    • TRMS Forums
      A place to share ideas, suggestions, issues, and stories.
    • TRMS Website
      Find out more about Tightrope here.