A good friend of mine got married last weekend on PEI. It was a great time with good friends, both new and old, at a really nice resort that had some great golf. Two weeks before the wedding when he got home he mentioned that he had setup a “hashtag” for the wedding, and that’s when I went and opened my big mouth…
A quick backstory: I met Scott when I first moved to Halifax. We worked together at theRedSpace and became friends pretty quickly as we were the only two at the office who were really into sports. His career has since gone in a bit of a different direction, as he now owns a gym in Yellowknife. He runs a fitness blog, and is very active on social media, which is why the hashtag idea for the wedding made sense.
As we gathered at a friends for a BBQ he was explaining the hashtag, tagging photos and posts on Twitter, Instagram and Facebook. I told him I had had some experience recently with the Twitter Streaming API (more on that coming in a blog post in the near future!), and I could probably figure out how to create him an app that we could project that would run throughout the evening on the night of his wedding. He thought it was great, so I set about doing it as somewhat of a wedding gift for him.
I setup a quick Express server in NodeJS. I used a module that some friends at the office and I were using to connect to the Twitter Stream API to track their hashtag, “#ScottAndGina2013″. I then added SocketIO to the project, and would have that send a “tweet” message with the tweet data to the client side every time a tweet was made, giving the app an “up to the second” feel (note: the stream API with Twitter is SCREAMING fast).
On the client side, I wanted to keep it simple and really let the tweets/photos be the focus of the app. As tweets would come in, I’d add them to the “front” of the screen, so the most recent updates would be seen first. Tweets with photos would automatically bring in the photos and display them above the message on the tweet, along with the person’s avatar and Twitter name who had sent the happy couple the message.
I used one of my absolutely favorite jQuery libraries, Isotope, to render the photos on the front end. This would give a subtle animation effect to the updates as they were being added to the screen. This would ensure you would notice a new tweet/photo coming in, but it wouldn’t be so overbearing that you would get sick of looking at it.
I then set up a simple AJAX poll with jQuery to query the Instagram API every minute to search for new photos tagged “#ScottAndGina2013”. These photos would act the exact same as the Twitter photos would, only because they were coming from Instagram, I knew there would always be photos.
The app was well received by both the bride and groom (most important) and the wedding attendees. I had the color palette match the colors of their wedding (well, at least the blue they were using), and once people realized what was happening with their tweets/photos as they sent them in, they would post more and more. I had two friends at the wedding who didn’t understand the concept of hashtags posting all through the night.
Stupidly, I didn’t get a photo of the app in action, but luckily one of the other wedding go-ers did…
I was very happy with the result. I kind of wish that I had had more time to do more tweaking, but all in all, with two busy weeks leading up to the wedding, with a bachelor party, a couple of project launches (including a night of work on support until 2:30 am the day after said bachelor party), and a few rounds of golf, I can’t really be upset with the result! I do wish I could have had time to incorporate Facebook photos and status updates, but the issue there is that with everyone’s privacy settings being so jacked up on Facebook nowadays, there weren’t enough (read: any) images/updates coming through, so I thought it wouldn’t be worth the time to include and I could spend more time fine tuning what was working.
I’m hoping to clean up the codebase a bit, possibly create an administrative panel and put the code up on GitHub, although I have a couple of other projects on the go right now that have more of my interest, so that may have to wait for now…