Twitter Feed: @definition6

DEFINING INSIGHTS

We Got LUCK-Y!

Monday, January 30, 2012 by Darcey Topham
Over the last few months, I have been privileged to work with a talented group of people onHBO Luck Chips a new project for HBO Luck. Working together with the HBO Marketing team, Civic Entertainment Group and Live Stream, we created an application for Facebook that allowed people to become involved in the dark, seedy world of horseracing by practicing making bets on old races before accessing the real betting experience that would lead to a 6-race live Race Day event. An event that would not only be Facebook’s first live racing event, but only the second live sporting event aired over streaming video through their site.

And just saying that we all worked hard is a complete understatement. When you’re dealing with any event that has a live component, there is a definite element of the unknown to contend with. So many “what-ifs” to consider that you have to have a back-up plan for your back-up plan. (Or a “what if our lead developer gets kidnapped by aliens” plan, right PH?) But when you’re dealing with a live event that involves multiple remote locations, having that video fed into a streaming player, that aired on Facebook, and then the data sent through separately to be updated in a quick-turn fashion, you almost feel like you can never be prepared enough.

Luck
When it all comes together, however, it is exhilarating. And when you are lucky enough to have your favorite bar host a viewing/monitoring party to celebrate it, it doesn’t get any better. Unless you’re this guy who got really excited when “Mucho Macho Man” won in the fifth race.

Edited by Ryan Kantor to fit the new blog template 5/4/2011

Big thanks to Justin and all the folks at Diesel Filling Station for their hospitality, support, and participation – seeing people enjoy something we created makes the hard work worth it.

Darcey and Dana at Diesel

d6ers at diesel

PromaxBDA Emerging Media Trends: Social TV, Data, Google+

Friday, January 27, 2012 by Rachel Conforti
PromaxBDA event at Definition 6 with ConnectTV
Last night, Definition 6 hosted the PromaxBDA Emerging Media Workshop to talk about trends for 2012.  Presenters ConnectTV, Crimson Hexagon and Google+ talked about what the broadcast community needs to know as they plan for 2012, including how social TV will become more integral into programming, how data (especially social media data) will evolve and the importance for communication planning - right message, to the right audience, at the right time. 
Definition 6 PromaxBDA eventWhat truly came out of the event (besides great networking and an excuse to eat pizza while drinking beer and wine) was that unified marketing is critical to the success of any brand.  Whether it's on-air content, social media or other owned media online properties, by leveraging the data we can now gather, unifiying your marketing message into the proper channels will exponentially amplify your message and increase awareness around your show, promotion, event or any other marketing objectives.

Google+ showed examples of this by using a simple story about a guy who had just visited Boston, and was asked "how was the trip?"  By Google's explanation, the answer is dependent on the person asking the question. If it was the guy's mother, his response would probably be drastically different than the answer he gives to his buddies, or even his co-workers.  This idea of the right message to the right audience and the right time, is exactly how we look at marketing and branding at Definition 6.  Our unified marketing approach is just that - leverages data to communicate brand messages appropriately to its core customers, in the proper environments and at the right time. 

Jonathan Block-Vert at the PromaxBDA event at Definition 6

Thanks again to PromaxBDA for hosting their event here at our offices!

Crimson Hexagon presents at PromaxBDA event at Definition 6


'Immortalize Yourself' Listed as one of AdAge's Top Social Media Campaigns of 2011

Tuesday, December 13, 2011 by Rachel Conforti
It's pretty cool when you get to work on a project that you know is a hit, a project that you know the client will love, and a project you know will get their fans talking.  And sharing.  But then you look at your glass and think, "Wow, this Kool-Aid is really great!" and sometimes you forget about what the people out there really think about your work.

And then your project gets listed on AdAge's Top 10 Social Media Campaigns from 2011, and you remember - yea that really WAS awesome.  And if your project was anything like our Facebook application "Immortalize Yourself" created to launch season four of HBO's hit show True Blood, then your conversations had something to do with any or all of the following: "vampires, witches, werewolves, Alan Ball, Anna Paquin, Alexander Skarsgard, Ryan Kwanten, Kristin Bauer, Deborah Ann Woll, HBO, Social Media, Facebook, complex Flash layering, detailed motion design, great creative, great script, personalization in full motion video, high availability, cloud farms, CDN's, open source, high performance where every millisecond in processing counts, and integration with multiple SaaS providers and their API's" (quoted from our CTO Paul Hernacki).

True Blood: Immortalize Yourself Facebook Application

Thanks to all those folks at HBO and Definition 6 who worked on this project. And a special thanks goes to the fans - who shared this and have Immortalized Themselves and friends in countless videos over the course of this campaign.  In the end, it's all about creating content that is shareable, likeable and "tweetable." We are glad this one did.

Since season four of True Blood is over, we have moved the application from HBO's page to the Definition 6 Facebook page.  If you have not already IMMORTALIZED YOURSELF, go there today and make your video.  Share with friends.  And live on into eternity. 




Check out this video that shows some of the Definition 6 team integrated into the "IMMORTALIZE YOURSELF" Facebook Application.

Happy Green Week! Make your check-ins count with the Green Square App for iPhone and Droid

Wednesday, November 16, 2011 by Jeremy Bromwell

On Sunday November 13, 2011 Green Week began and to help support the Green is Universal mission to raise Green awareness and effect positive change to the environment, my company built a new mobile application for iOS and Android devices, Green Square.

Green Square - Splash Screen
My team at Definition 6 was tasked to create the application that would integrate foursquare technology with a “Green” twist.

The Green Square app gives users the ability to easily spot “Green Scenes” nearby and learn site-specific "green" information about the location, or view eco-friendly tips from NBCUniversal talent.  From a user (and foursquare addict) point of view, I love the fact that I can easily see how Green my existing network of friends is, check-in to any foursquare location, and earn custom Green Badges. 

Green Square - Intro Screen If you are a “Greenie” or an eco-savvy person you can also nominate locations to be deemed Green Scenes by the NBCU team from the app.  Of course, for my fellow foursquare addicts, you continue to earn points on your leaderboard and can keep or claim your mayorships by checking-in from Green Square.


By harnessing the power of the mobile, social, and location-based ecosystem, we were able to develop this app as a way for NBCUniversal to build a stronger, more personal connection with its audience during Green Week.

It was a great project to work on with my team at Definition 6, and the NBCUniversal team, and I’m thrilled with the way the app turned out.  In fact, I look forward to new features and functionality that may be added in future releases, taking into account the feedback and reviews we are gathering this week as more and more users download Green Square.

Take a look for yourself, download the app today for free, and see what’s “Green” near you! http://greensquare.greenisuniversal.com


What the New Facebook Timeline Means for Marketers

Thursday, October 13, 2011 by Ashley Reed
There's been a lot of coverage regarding Facebook's recent changes, but what do these updates mean for marketers?  Overall, the key features that Facebook announced place a huge emphasis on engagement. The key takeaway is that it will be increasingly important for marketers to create and share compelling content and experiences on a consistent basis in order to stay relevant. 

Below is an overview of the main changes and their relevance for marketers.
   
Timeline: Timeline will replace users’ old profile pages, and allows users to aggregate and organize all actions taken on Facebook that matter most to them. Users can highlight important life milestones and group content and actions (videos/photos/posts) with that milestone. It also allows users to edit their timeline, even back to the time they were born. Facebook applications can also display actions taken with that app in the timeline (if user permission is granted). 

What it means for marketers: Actions that are most important to users will appear on the Timeline – think status updates and photos rather than day-to-day actions like ‘Liking’ a brand. These day-to-day actions will be shown in the Ticker (see description below). That means that brands will need to find ways to appear in the timeline, and one way to do that is by creating social applications that engage their audience. 


FBTL
Timeline cover: (increased image space to customize)
Source:  Facebook.com/about/timeline

Social Apps: Social applications allow users to add storytelling into their timeline. Think verbs instead of nouns. Instead of ‘liking’ a band, users can express they are ‘Listening’ to that band; ‘reading’ a book, ‘running’ 3 miles, etc. Additionally, now brands can create custom social actions like ‘flying’ ‘cooking’ ‘drinking’ or any other verb. These apps all utilize Facebook’s Open Graph, and users can give permission for these apps to post their activity on the Ticker and Timeline. 

What it means for marketers: Brands have the opportunity to create social actions through branded applications. The action won’t only say “Ashley ran,” but “Ashley ran 3 miles with Nike+.” All of these actions will appear in the Ticker (see below), but brands can request that the actions appear in the Timeline (increasing exposure). The goal for brands will be to generate frequent actions within users’ timelines.

In addition to creating branded applications, advertisers will be able to deliver sponsored stories against social actions, and even segment for more accuracy. For example, it will be possible to promote to all "listens" from the band Coldplay. The new sponsored stories will only be generated from applications, but advertisers don't need to own the app where the action takes place to target against the behavior. 
 

FBTL2

Example of social apps within a user’s Timeline: 
Source: Facebook.com/about/timeline

News Feed update & Ticker: Facebook updated the news feed, changing how stories are presented to users. The Facebook homepage is now organized by Top Stories and Recent Stories, with Top Stories being displayed much more prominently than recent stories. The first updates that a user will see when logging in are the most relevant posts since their last visit – whether that was 3 days or 3 months ago.
   
Facebook’s algorithm will play a role in determining what are “Top Stories,” but users are able to edit their feeds, either by unmarking a Top Story, or marking a Recent Story as a Top Story. (Screenshot below). Facebook will then learn from this behavior and serve the most relevant content as Top Stories. 
 
FBTL3

Ticker – Facebook has also added the “Ticker” to the top right corner of the newsfeed. The Ticker streams live updates – think day-to-day activities like tagging a photo, liking a brand, commenting, and other Open Graph actions. The thought here is that less important updates are displayed in real time, and don’t distract users from the more relevant stories. Users can join the conversation by clicking on one of the stories in the Ticker.

FBTL

What it means for marketers: Users now have more control over their news feed, so it becomes more important for brands to share compelling content (rich media, like photos and videos, help to naturally boost EdgeRank – Facebooks algorithm). Brands with irrelevant updates will have lower visibly (but will still appear in the Ticker). Facebook's EdgeRank algorithm will play a major role in determining whether brand updates are seen, but branded social applications and sponsored stories can increase the likelihood of a brand message reaching a mass audience. 

FBTL


Here are some resources for more information:

http://www.brandchannel.com/home/post/2011/09/22/Facebook-f8-Timeline-Announcement.aspx


http://mashable.com/2011/09/22/facebooks-changes-marketers/

http://www.brandchannel.com/home/post/Facebook-Timeline-Social-Apps-Branding.aspx

http://www.allfacebook.com/facebook-feedback-loop-2011-09

What do you think about Facebook's changes?  Let us know in the comments below, or reach out to us on Twitter at @ashleyhreed or @accarrino.

Brand Emails on Mobile – Should you care? How do you justify program optimization?

Wednesday, September 28, 2011 by Jeremy Bromwell
Last week I attended a great interactive marketing conference in Indianapolis (and yes, got a side dish of Katy Perry while there!) Of all the things I learned about unified marketing, one of the most interesting sessions I attended was about Email Design in the Mobile Inbox Age.  The presenter was Chris Studabaker from ExactTarget.
Definition 6 team at the Katy Perry concert at ExactTarget Connections conference
The Definition 6 team at the Katy Perry concert from ExactTarget Connections 2011.

Chris answered the question “What is mobile email?” with the following explanation: Email + mobile.

From this perspective a mind shift starts to occur and move away from thinking about designing email templates and brand communcations for a mobile device, or for any singular device at all which makes complete sense.  As a “connected consumer” just think of the places you are likely to consume email content: computer, tablet, mobile come to mind immediately.  Intuitively receipients interact different with messages based on the device they are consuming it on.  
Connected consumers

Will I click through email links (or even load images) on my cell phone? Maybe not.
 
On my iPad? I am likely to click through and browse/shop and even purchase on the tablet.
 
Desktop? Standard behavior applies!



As you’d imagine, we can really easily over complicate the issue and instead of inspiring improvement in a campaign become paralyzed and less clear with our goals than when we started so let’s break this down into a few tips, steps, and data points that will help us actually DO something!

Here are a few images of the data that Chris shared:

Email opens by environment graph


Mobile opens by platform graph


Where do subscribers open graph


Email click through chart
The graphs above were created by ExactTarget and distributed to Connections 2011 attendees.

Now that you know more about the landscape, let’s talk about the solution!  There are three things to consider in crafting the solution: The code (technology), visual presentation (content), conversion path optimization (experience). You must balance all of these with the level of investment and projected return. 


I’m going to focus on the content portion of the solution in this post but feel free to contact me if you’d like to talk more about the technology or the experience!

There are 2 major considerations:
- Small screen
- Touch

The mobile inbox has some different display restrictions that are important to consider with your content strategy.
- Subject Line – Display ~35 characters
- Preheader content – Accommodate between ~40 to ~80 character.

Try the following layout guidelines when you look at how you organize your content.
- Make sure the content is readable on a small screen
- Use a grid layout that you can “train” your subscribers and creators to expect
- Try a single column layout for primary content
- Strong language & visuals for primary call to action (CTA)
- No more than 3 columns for secondary content and beyond

Scaling and Text Size Guidelines
- 22px or more for Headlines
- 16-22px for body copy
- iPhone’s automatically scale up text under 12px

In the end it all comes back to your goals and your audience.  Email marketing gives the sender the great ability to data and easy A/B testing on changes so look into your performance, talk to your subscribers, develop an approach, and test!  That’s the only way our campaigns will improve over time because there is no “one size fits all” solution.


Data is Sexy - How to turn metrics into insights

Monday, August 29, 2011 by Bryce Kervin

Jamie Christner, our Director of Analytics, took to the podium last Tuesday with the International Association of Business Communicators (IABC) to speak about data. Being my first event as a Definition 6 employee, I was truly psyched to take it all in, including the Maggianos. 

So what exactly IS sexy about data once your strip it down? As marketers, we see a lot of data ranging from click through rates and conversions to engagements and social media ROI.  But what makes that data "sexy," Jamie says is when that that data in turn produces an appealing body of facts which call out applicable and actionable insights. 

Sexy Data Professor
And once you have collected the data as it relates to your business goals, the real gem is what you can forecast with that data.  But, NOT all data is sexy. Poorly tracked, lost, incorrect, un-trusted by users and knowingly repurposed data skews results and is of no use in trending actionable insignts. Keep the reigns tight on what exactly your analytics should be tracking, always referring back to your client's KPIs. Some key takeaways include:       

• Every business rates “applicable” or “actionable” in a different way. Sexy is in the eye of the beholder
• In this economy, announce your successes.  Let the numbers tell the story. Company budgets are being slashed left and right, so speak up on the positive effect you are bringing in
• Budget justification must be sexy enough to catch the interest of stakeholders
• Start pulling data out from analytic software applications if you haven't already 
• Web analytics can help close the gap between cross-channel marketing tactics
• Data reports should be short & sweet
• Don’t provide the client with unnecessary information but if you need more reduce your KPI’s   


Data isn’t going to be beneficial or attract the listener if it focuses on one single feature. Evaluate and measure performance across all brand interactions and your client will feel more like you slipped them a Maxim Magazine than a data report.

Online Beauty Retail: How Birchbox is changing the experience

Wednesday, July 27, 2011 by Natalie Dold
On July 19th, Definition 6 in New York City hosted a great event for the Advertising Women of New York (AWNY) group out on our patio where we gathered to hear Katia Beauchamp, CEO/Co-Founder of Birchbox and Gwen Flamberg, Beauty Director of Us Weekly talk about how the online beauty retail marketplace is changing rapidly and what "subscribing to beauty" means to this new brand.

Birchbox is a gift that just keeps on giving. I think that whether you’re a male or female, we can all agree that there is nothing better than getting a present every month that is chock full of surprises. And, believe me when I say that Birchbox is a fantastic gift.

So, just what exactly is Birchbox you ask? (No, we’re not talking about trees or shrubs here.) We’re talking about a gift that comes in a neat little package to your doorstep every month, and inside this box you’ll find an amazing selection of beauty-related products that are tied to the things that you desire. For a mere $10/month, consumers get 4-5 deluxe samples of high-end beauty products. But, before you get your first box, you will be asked to fill out a beauty profile where you can select the types of products you’re interested in. Birchbox wants to get to know their customers better so that they can help increase the amount of products that are purchased on their site.



Birchbox Beauty Profile



All of the great brand partnerships and products they offer are tied to an online Birchbox Magazine, so that everything matches an editorial calendar with monthly themes to create further Birchbox community interaction online; things like hair issues during the summer, or how to’s for travel.  They’re in the “business of delight” as CEO Beauchamp indicated. They came up with the idea for this kind of online beauty business model because they felt that beauty can’t completely live online. There is a tangible aspect that needs to happen at some point because people want to get their full five senses involved when choosing beauty products.  At first, the founders had to knock on high-end brands’ doors to get them involved and try something new, but now brands are knocking on their door, with a growing client base and over 16,000 likes on their Facebook page. The Birchbox business model also uses social media channel activation, but has that “retro” feel since their product is sent through the mail (that thing called USPS we all forget exists).


Rich media and editorial content about every product and brand they work with is a gold mine of information that sits within Birchbox.com:

 Birchbox Magazine

The products included in the monthly box range from skincare items, to makeup, hair / body products, and fragrances. They’re sometimes full-sized items or they’ll be sample-sized items, but the best part is that if you absolutely adore any of the items you receive, you simply go to Birchbox.com and buy them there. I need to mention as well that they have developed a great loyalty rewards program. As you buy and share Birchbox with your friends, you see $10 gift cards come your way.  

Personally, I’ve been a Birchbox subscriber since January 2011, and they had officially launched only in September of 2010, so I guess you could say that I am an early adopter! Their first year anniversary is coming up here in September, and what a year it has been for Birchbox execs.

Let’s face it. At the end of the day, brands want advocates. Having a strong base of people who love a brand keeps their ideas fresh, alive and moving forward to help drive further adoption. And who doesn’t love samples??



As mentioned, Birchbox was built through strong social media activations, and the Birchbox brand has been growing because customers get their friends involved, and then their friends get their friends involved. This type of crowdsourcing platform is creating a strong momentum for Birchbox that is keeping their acquisition of new customers going up and up. The buzz Birchbox has received all happened organically, and through this organic growth they can now offer the brands they partner with global access to consumers. This is obviously something they couldn’t be happier about, so Birchbox is truly changing the way consumers shop for beauty products online, and I think that we can expect great things from them. I personally trust the Birchbox brand, which is the key to building long-term, loyal customers.



IAB Mobile Marketplace 2011 Recap

Monday, July 25, 2011 by Mark Emery
On Monday of last week I had the (mostly) pleasurable experience of speaking on an IAB mobile advertising panel in New York. I say mostly because, technically, 10% of me burst into flames on the subway and never actually made it. 

Panels like these used to be the stuff of software geeks, carrier overlords and some gnarly, unholy combination of the two. The conversations were invariably technology focused as people scrambled to make sense of a fragmented industry growing at a bewildering pace. It took a few years longer than it should have, but at some point walled gardens, WAP decks and SOAP APIs gave way to use cases, ROI and sound design principles. 

The conversation has shifted again, and now people are beginning to contextualize mobile as part of a branding continuum, where digital, traditional and emerging media converge to tell a story that engages people in motion. Simon Bond, CMO of BBDO, pointed to a study his firm had done which found people are more likely to wake up and reach for their mobile device rather than their lover (or themselves, for that matter). Razorfish is doing really ground-breaking stuff in mobile advertising, working with publishers and networks to create dyanmic new ad models. Michael Collins of Joule talked about how the metrics mobile provide are on par with - even exceeding in many cases - the analytics available on the desktop web. 

At Definition 6 we are bringing serious innovation to our mobile clients. From mobile websites that predict behavior and present contextualized experiences, to mobile marketing applications that leverage unique combinations of variables like speed, distance, orientation and time of day, we are helping our clients deploy mobile marketing strategies that transform their businesses.

Check it out:
 


It begs the question - how is your firm using mobile marketing and advertising to build your brand? If you aren't, somebody else is. 

Vampires, Sex, Flash, Clouds, and Magic

Friday, June 24, 2011 by Paul Hernacki

It's not every day you have the opportunity to work on something that screams cool from almost every aspect. Let me see if I can summarize this particular opportunity: vampires, witches, werewolves, Alan Ball, Anna Paquin, Alexander Skarsgard, Ryan Kwanten, Kristin Bauer, Deborah Ann Woll, HBO, Social Media, Facebook, complex Flash layering, detailed motion design, great creative, great script, personalization in full motion video, high availability, cloud farms, CDN's, open source, high performance where every millisecond in processing counts, and integration with multiple SaaS providers and their API's. TruBlood

That pretty much describes what Definition 6 recently had the opportunity to work on and launch with the hit HBO show True Blood that premieres season 4 this Sunday, June 26th. We helped them launch a Facebook application called IMMORTALIZE YOURSELF that takes a piece filmed exclusively for this purpose featuring many of the famous cast as a bridge between season 3 and season 4 and using Facebook connect you'll find you and your Facebook friends are a part of the video. Some go missing, others apply to be Fangtasia dancers, and you get to be an assassin. You're all featured in the show's famous credits and opening. And when it's all over you can re-do the whole thing but pick which friends you want to be in which roles. And while the concept of using a bespoke video with social aspects may not be entirely new or unique, I feel pretty safe in saying that the level of detail we achieved in the personalization is pretty rare. Everything looks far more a natural part of the video than almost anything done previously. A lot of love went into that effort. The same goes for attention to detail in the performance of the application for something involving so much Flash, video and detailed interactions.

Example of personalization in True Blood videoPlus it's just cool. It's also pretty rare in this business to do something that achieves a 99.9% positive sentiment rating with less than 0.05% technical failures in application delivery. You can check it out for real yourself here. And you can see an example of one of the videos below, this one featuring many of the team members at Definition 6 that worked on this project.

And as an added benefit, I and many of the team members had about 45 days to immerse ourselves in the brand by watching 3 seasons of a show with brilliant dialogue, and a great story that's chock full of fantastic effects, great actors, and plenty of hot vampire sex.

Our thanks to a great client. The True Blood team wrote a great script, and all the video production work and editing was done by HBO Creative Services. As always the cast and crew of True Blood were fantastic in their performances. The marketing team at HBO continues to push the edge with great ideas and non-traditional campaigns. What they have done on True Blood previously and with this piece shows how they combine innovative thinking with creative brand authenticity.

We're lucky at Definition 6 to enjoy a long-standing relationship with HBO, spear-headed by the Managing Partner of our Post-Production division, Rob Ortiz, who has been working with HBO for over 25 years. Rob, our team at Definition 6, and the great Creative Services team at HBO, especially Becca Schader, Chris Denniston and Chris Spencer, all combined to concept, POC, flush out the idea, and drive this piece with Marketing and Interactive. It's fantastic working with people like these who continue to show they are thinking well beyond the traditional 30-second spot on how to engage fans and grow audiences in a rapidly changing landscape. True Blood is rapidly approaching 8 Million fans on Facebook, and it's pieces like this that can change how you reach and interact with those fans.

Waiting Sucks. So go check out the app. And don't miss the season premiere this Sunday on HBO, 9PM EST.


Better Than My Wedding Day

Thursday, June 23, 2011 by Alissa McGregor

Every girl dreams about her wedding day; what will it be like, what the dress will look like, which kinds of flowers will I carry, who has recently pissed me off and is no longer on my guest list? And pretty much by the time a little girl hits about 12 years old, she has her entire wedding planned. Daytime Emmy Awards 2011

Well, I’m not one of those girls. For me, I didn’t dream about my wedding. Didn’t have a clue what it would be like, the shoes I would wear, how my hair would look, veil or no veil. Instead, I grew up flipping through People and Us Magazine and I dreamed about walking the red carpet. What would THAT be like?! how many photographers would be feverishly snapping my photo, how many autographs would I give, what would my dress look like and of course, how many body guards would I require?

After many years of contemplating this scenario, it finally came true this past weekend at the 38th Annual Daytime Emmy Awards! Well, most of it, at least. Let’s start with what DIDN’T happen: to my surprise, I did not have photographers feverishly snapping my photo. Instead, I had my friend, Frank, snapping my photo entirely at my direction and NOT because he wanted to. I didn’t have any body guards, didn’t give out any autographs, (unless you count the ticket I signed at the Bell Desk when I turned in my phone) and I didn’t actually have a ticket to the show.
Alissa McGregor at the Emmy Awards

Instead, I was there to be a Seat Filler. Do you ever watch award shows and wonder why there are no empty seats when someone has just gotten up to receive an award and the cameras pan over the entire audience? Well, it’s because of the extremely important job of a Seat Filler, which I was thrilled to be a part of.

So, with that said, here is what DID happen: I did have a front row seat throughout the entire show. I did sit next to Anderson Cooper, Jillian Michaels, Vanna White and, Susan Lucci. I was smack-dab in front of Gladys Knight when she sang, “That’s What Friends Are For” in honor of Oprah Winfrey and I was close enough to hear Wayne Brady tell the production crew during a commercial break that he was going to adlib the next segment, which threw the production crew into a bit of a frenzy with one of the crew responding, “Just read what’s on the monitor Mr. Brady” – yeah, right. And the most exciting part of all…I DID walk the red carpet…TWICE!

Behind the scenes, the show gets very interesting. There are about 30 seat fillers and as a Seat Filler, you are placed in a holding area in 2 lines at the back of the auditorium. The seat filler crew is dispersed throughout the room with headsets on and at each commercial break the lights go down and the crew orders however many seat fillers are needed. The crew working the holding area will then pull the correct number of people and send them down to the crew member in the seating area to place them into the empty seat.  If the occupant of that seat comes back at the next commercial break, then the Seat Filler gets up and goes back to the holding area and waits for the next seat to fill. Some seat fillers end up staying in the same seat throughout the entire show, which happened to my friend Linda, who was lucky enough to sit with the entire cast of the Young and the Restless and was able to relax and enjoy the entire show from the same seat.
Daytime Emmy Awards 2011
However, before the show began, I was pulled out of the holding area and placed in the front of the line, where my toes were inspected for polish and my shoes were scrutinized from every angle. Perplexed by this, I was wondering if my black, sparkly, shoes didn’t pass the Emmy criteria, when I was pulled down to the front of the auditorium with about 10 other seat fillers and was placed in a seat surrounding 4 actors who were going to tape the intro and the ending of the Emmy show. My job was to sit, clap and chat with the person I was sitting next to, (a dancer in the Cirque Du Soleil Elvis show), as they taped the intro. Once the taping was finished, we all went back into the holding area and watched the stars walk in.

At the 3 minute call for the show to begin, the seat filler crew began to pull and place seat fillers throughout the audience. My first seat was in the second row on stage right. After that, I move two more times both to the front row and remained there until the end.

As the show ended and everyone was walking out of the auditorium, fans were lined up all along the red carpet, yelling names, snapping pictures, jumping up and down. And let me tell you something, if you think Justin Bieber fans are crazy, you haven’t seen anything like soap opera fans. Those women are on a totally different playing field! To the extreme, even, that Susan Lucci travels with a squad of bodyguards because of all of the death threats she receives from extreme fans thinking that she really IS Erica Cane. (And you thought TV destroyed brain cells)…

So, as I was walking down the red carpet with Frank and Linda, and all of the stars, smiling and waving at the crazy fans, I thought, “Screw the wedding day. This is WAAAY better!”

Editor's note: The Friday before the big Daytime Emmy Award show on CBS, Definition 6's senior editor John Tierney received the Emmy at the Creative Arts Awards at the Westin Bonaventure in Los Angeles. It is for Multi Camera Editing for his work on Sesame Street.  Def 6 got a big shout out from the stage and was acknowledged for their great creative contribution to the iconic program. - Frank Radice

Smartphones and the Mobile Internet

Friday, June 3, 2011 by Mark Emery
Background: It’s almost impossible to describe the smartphone market accurately without sounding overly prone to hyperbole. Worldwide, nearly half a billion smartphones will be shipped in 2011. By Christmas of 2011, one in two Americans will have one. Gartner predicts that in 2011, 85% of all handsets shipped globally will be able to access the mobile Internet.

US Smartphone Market ShareUS Smartphone Market ShareIn Q1 of 2011, Android supplanted Apple as the #1 smartphone OS in the U.S. While smartphone manufacturers jockey back and forth with one another for frontrunner status, swapping places with every latest hardware entrant, only feature phones (where the OS is proprietary firmware, and NOT a third-party development environment) are left in the starting blocks; there is little churn in the segment. In fact 2011, according to Nielsen, will be the year smartphones overtake feature phones in global mobile shipments.

For brands looking to build or maintain a mobile presence, the smartphone onslaught simply cannot be ignored. Nor can it be oversimplified. Too many American marketers think mobile is merely a stripped-down digital experience, a checkbox extension of their digital initiatives created automatically through the advent of rich smartphone browsers. The reality is that, worldwide, more people access the Internet through mobile devices than personal computers. It is the first screen, not the third. That over 95% of domestic digital marketing budgets are earmarked for non-mobile initiatives is an unpardonable lack of imagination, courage and good sense.

Smart brands and advertising agencies must consider several factors when evaluating how to create a mobile presence for smartphones. First the upside of browser-based mobile applications:  

  • Write once, run anywhere: This is the siren’s call of mobile that promises cost efficiencies by keeping the time spent creating, maintaining and updating applications to a minimum through the utilization of a tool-based multi-platform design paradigm.

  • Universal browser availability: A rich browsing experience is all but universal in the smartphone market. If a brand presence can be defined and made accessible through a mobile web browser, it reduces the number of headaches to resolve for platform-specific nuances as long as you stick to the lowest common denominator.
 
  • Support of advanced features available in HTML5: There are some components of HTML5 that will be a boon to mobile devices. Unlike mobile browsers of old, HTML5 promises offline support. Also, video in HTML5 is standardized, which will make adding video content to websites much easier. HTML5 also supports a GeoLocation API, allowing web developers to capture critical location data.

  • Layout standardization: Web browsers depend on a layout engine at the presentation layer. While there are myriad mobile browsers available, WebKit and Gecko are the layout engines used by most, including Internet Explorer, Firefox, Safari, and Chrome.

Unfortunately, there are also downsides to a browser-only approach, including:  

  • Browser diversity: The most prevalent smartphone browser in existence is the Blackberry, which has its own layout engine used by precisely nobody other than RIM. At the very minimum, creating a browser-based smartphone application that works on a majority of devices will require at least two completely separate development efforts.  

  • Limited HTML5 support: When Steve Jobs lambasted Adobe’s Flash in 2010, he pointed to HTML5 as the author of its death spiral. Somebody forgot to tell RIM, who supports the Opera browser while remaining ambiguous about HTML5.  

  • Hardware-specific amenities: Downloadable applications are typically able to access many features baked into the hardware that a browser-based application simply cannot. From the iPhone’s popular “shake” feature to other phones cameras and GPS chips, in order to unlock the richest of features from a mobile device, you have to think thick-client.

While the debate continues, what is certain for brands is to contemplate the merits of downloads vs. browser-based applications on a case-by-case basis. Mark Donovan, comScore SVP of Mobile concludes, “with mobile media consumption on the rise, the discussion of how consumers are accessing content -- whether it is via application, browser or both -- continues to be an important factor for companies looking to invest further in their mobile brands.” In every scenario, however, it is important to consider what will not work, and that, specifically, is to think that just because an HTML-based application works on a personal computer, it is sufficient for a mobile device. Mobile users have limited and hugely variable display capabilities, awkward and difficult input mechanisms, and the mobile mindset differs vastly from the PC user’s mindset.

In future posts, I’ll talk about mobile application design principles and dissect smartphone platforms in an effort to provide color for brands contemplating including them in mobile marketing strategies.

Customers, Architecture, and Mobile Computing

Tuesday, May 10, 2011 by Ric Williams

The phrase "the more things change, the more they stay the same" has been on my mind lately. Computers have become such a part of our lives that we can’t imagine life without them. Just a few years ago it wasn’t uncommon to hear that Blackberrys called "Crack-berrys," referring to the addictive nature of having email readily accessible. Today we even have a thing called "Computer Addiction" that people can get treatment for.  The children coming of age in this era they are the most informational connected generation we have seen.  Considering the architecture changes, the changing expectations, and rate of adoption the future definitely has a more interactive and mobile look to it from a computing perspective.

I recently read where mobile devices have outsold traditional computers for the first time in the 4th quarter of 2010. Apple has been reporting sales growth while companies like Microsoft, Intel, and other companies are reporting lower than expected returns for the same period. With certain product releases coming in 2011 the anticipation is the sales trend will only continue to grow the gap.  As we see the sales trends change and more companies trying to capitalize we look to anticipate its direction and build products viable for today’s market and tomorrows.

To anticipate the direction we can start by focusing on a brief history of the mobile devices. Consider that Microsoft was an early player in this market. Compaq iPaq’s, HP Jornada’s, and others were touted as Pocket PC’s. Toshiba had one of the first tablet PC’s I remember. It even had a built in camera but the unit was very heavy. Microsoft envisioned "smart devices" and for a while had produced marketing as such. I remember they envisioned the device could be replaced and your configuration auto-magically restored. They had great vision and they dominated the early market. But while they were an early endorser and participant in the mobile field a couple of miss-steps and lack of innovation later they were behind.

It’s arguable that widespread adoption started to change with the acceptance of the Blackberry. Users were getting email connecting in ways they really hadn’t before. It wasn’t long before next up were the expectation to be able to review attachments to email. Having the internet on a mobile device wasn’t far behind that and the expectations began to speed up.  Why? because the adoption rate improved. Users saw immediate value in the functionality of these devices. But devices had different purposes. Blackberry’s did email while pocket pc’s handled calendars and other basic functionality.  I remember at one point having so many devices I felt like a techno-nerd version of Batman. While this was going on Apple envisioned the iPhone. Apple developed the iPhone in quiet and when they released it changed the market.  The change was significant enough that the carrier they worked with to support the device was overwhelmed for a time with new customers. It seemed like overnight they met and exceeded user expectations, and made a giant leap forward. Others began to follow the trend.  

User interface expectations are certainly being affected by changing expectations. How long did companies toy with keyboards until the iPhone changed the game with the popularity of its touch interface? A touch interface for a mobile phone had not been accepted until then.  Apple tried to compensate for users comfort by adding "clicking" sounds to the iPhone. But the hardware wasn’t the only innovative aspect. They innovated software are delivery as well.

The layout of the Apps wasn’t entirely new. Icon short cuts on a desktop have been around in the Mac and Windows worlds for years but the operation or implementation around the apps was. Users were able to use the devices to quickly check what they deemed the most important things.   Another expectation is the speed that these devices are expected to operate at. Long load times are not acceptable.  In addition to load times connectivity has become a key factor as well, a key contributor to the onslaught of the battling ‘G’ advertisements and related devices.  

Delivery handled through iTunes and working directly with the Apple company remains the only way to deploy applications. With the combination of hardware, software and deployment the entire platform was innovative and users liked it.

With a great rate of adoption and renewed interest in the market other players have been working to be more competitive in this market. For example, the Droid and Microsoft’s Metro concepts are two emerging or re-emerging market competitors.  With all the various players history in some ways begins to repeat itself. As they have gained more market share and their sales increased as well technical complexities re-emerge.

We still have a familiar challenge though, remember the old Mac vs PC days? Well we are there with mobile. We see different operating systems, different carriers, lack of interoperability and different devices. Consider that Adobe’s flash won’t run on iPhones. These types of complexity have a strong feeling of déjà vu for some of us. Only now we have added the extra complexity of Different networks carry different devices and different operating systems.

The innovations in both the hardware and software will continue in the space Apple has defined for a while. We are also seeing a repeat of some of the same hardware and operating system issues that have plagued IT for years.  What is different is that the adoption rate is continuing to grow. Watching over the last several months I see more executives and other carrying tablet PCs to meetings instead of the traditional notepad.  

Innovative development on the mobile platform will remain costly in some respects. Developing for multiple operating systems and different devices presents many challenges. What’s different today is that there is more of a drive than in years past to build these solutions. There are and will be tools that enable development for devices as well as across multiple platforms. However, those tools will have limitations and it will be a challenge to truly innovate through them. While working in the native system means developing different code for the same app to work on the different systems. Architecting a solution in mobile has to take into account the various considerations. Companies have to decide if they want the expense of creating an innovative app for the mobile platform or just have an app for the platform. This has a significant cost difference especially if the app has to be deployed to multiple devices.  

As customers decide their goals and directions in the mobile space it will be important for architects to use the tools available to them. The use of design patterns and object oriented techniques will be of paramount importance going forward for the software side of solution.  Creating a scalable solution for the growing functionality needs of mobile users will be critical. Considering that the hardware of the PC has evolved at a much slower pace scalability will have additional challenges in the mobile platform.

Creating a scalable solution is more challenging with the frequent release of devices and the secrecy surrounding them. Many of the tools on a mobile device have been tools available on a traditional PC. Going forward the hardware is starting to move into truly new areas.  For example, talk of the iPhone 5 and the capability of it having Near Field Communication capabilities have been going on for months. Talk has already started about functionality of the iPhone 6. Architects will be able to help customers prepare for not only the next deployment but the one after that.

The mobile environment is a market that companies cannot continue to avoid as it has passed the tipping point of adoption. But those same companies have to realize where mobile is in it maturity. Companies will not be able to build an app, deploy it, and then forget it. These apps are living in an every changing world and will need maintenance to continue operating effectively.  The architectures supporting the apps and contained within the apps must be able to scale to meet these needs.

The mobile environment is changing frequently and stepping forward in leaps we haven’t seen in a while. Developing solutions for customers means considering all the factors and leading them to understand the environment. Bobby Knight is probably as polarizing a figure in college basketball as there is. For all the negative about him later in his career, he is regarded as a great teacher of the game. It’s one of those lessons that really apply here. He said, I am paraphrasing, "we have to focus, by focusing it allows us to notice trends, recognizing trends allows us to anticipate, and that leads to action."

 

Architectural Diary - Refactoring Minefields

Monday, March 28, 2011 by Jonathan Taylor

Change sucks. I’ve heard the glib rhetoric and seen the shiny happy bumper stickers proclaiming the staunch opposite. They're often paired with an equally shiny sticker of a cat skeleton with a smiley face stuck to the front of it. "Change is good," but apparently not for the cat.

Now, I’ll admit, for some things, change is a genuinely welcome event – underwear, socks, cat litter, and most immediately my empty pint glass come to mind. However, with web application development change sucks! Change means long nights rolling in new code to replace old. Change means endless cycles refactoring someone else’s code, often on shoestring documentation and littered with dependencies you don’t know about until you trip over them. How often have you fixed one bug and 3 more pop up? Poorly written code, like it or not, is a fact of life.

Blame it on too many requirements in not enough time, or whatever you want to, but the sad truth is most developers build what they have to without thought of what it takes to support it once it’s running. If it’s your task to have to go back in and add a new feature or change existing functionality, yeah, change sucks. And the number one culprit in contributing to code sucky-ness is dependency. Updating heavily dependent code is like planting corn in a minefield, you might get a few new stalks in ok, but it’s only a matter of time before something’s going to blow up.

So, how can we, as developers, do eachother right and make sure the code we write won’t blow somebody’s refactoring effort to smithereens? Especially if it might actually be us doing the refactoring? Limit dependency in our own code! Right! Ok, so how exactly do we do go about building projects that aren’t refactoring minefileds? Glad you asked.

The easiest way to reduce dependency between two pieces of code is through a façade. Let’s go with an example. Take a look at the code in Segment 1.

Code Segment 1.

    class Example

    {

        //Default constructor

        public Example()

        {

 

        }   

        //Public method

        public void DoSomething(String thing)

        {

            //process thing

        }

    }

    public class Caller

    {

        String stuff = "stuff that needs to be done";

        Example xmpl = new Example();

        xmpl.DoSomething(stuff);

    }

 

Pretty standard stuff, right? A simple Caller class that instantiates a version of our Example class, then calls the Example class’ DoSomething() method. Pretty standard, you’ve probably written hundreds of similar code sets. But what if we had to update DoSomething()’s code to include some new functionality once it had been pushed into production? We’d have to change both our Example class, our Caller class, and anybody else that was dependent on Example to do something. Total pain.

Now, there are lots of ways we can reduce our caller class dependency in our example class. We could setup a factory to handle the instantiation of the example class, throw in some dependency injection, or heck, even define an interface we could program all our caller classes to [Love interfaces. Love them. Separate declaration from implementation in one easy step. But sadly, it’s another post…JT], but our intent here is relate to you just how easy it is to separate the declaration of our DoSomething() method from its processing through a simple façade, and in so doing significantly reduce the dependency any class implementing our Example class has to deal with. Let’s get to it.

What we’re going to do is use a really easy implementation of the Façade Pattern which Microsoft itself uses extensively throughout its .NET framework – a Non-Virtual Interface (NVI).

Oooo. Aaaahh.

Ok, big name for really simple solution to break dependency between entities. Basically what an NVI is a public method declaration that calls a private internal method to carry out its processing. I know, sounds too easy right? Right! It is! But what it does for us is cleanly separate declaration from implementation.

Oooo. Aaaahh.

Ok, I’ll stop, but this is wicked cool stuff. Check out Segment 2

Code Segment 2

    class Example

    {

        //Default constructor

        public Example()

        {

 

        }   

        //Public method

        public void DoSomething(String something)

        {

            DoSomethingElse(something);

        }

        //Private method to do processing

        public void DoSomethingElse(String somethingElse)

{

            //process something else

}

    }

 

    public class Caller

    {

        String stuff = "stuff that needs to be done";

        Example xmpl = new Example();

        xmpl.DoSomething(stuff);

    }

 

Again, it looks too easy, doesn’t it? In fact, if you don’t stop to think about what this code is doing for us, you’ll miss it, it’s that easy. Say we had to support some new corporate mandate in our DoSomething() method once it had already been released? [We have to log everytime someone does something! Log it! Log it I say!] Well thanks to our tidy NVI, all we have to do is go into our code, and add the new logging functionality to the private DoSomethingElse() method, and we’re done. Done! Our Caller class doesn’t have to be touched because its method call into DoSomething() hasn’t changed!

It’s starting to make sense, right?

So, exposing a public interface which calls a private implementation is the core of what a Façade Pattern is, and a Non-Virtual Interface is a neat trick you can use to keep your own code separated and dependency-Free.

Oooo. Aaaahh.

Sorry, couldn’t resist. Imagine how much easier your refactoring efforts would be if all your existing projects implemented NVIs throughout their codebase? Would certainly reduce the number of senseless refactoring minefield injuries, wouldn’t it? Oh yes it would.

Life might acutally be pretty good. Change would still definitely suck though.

Architectural Diary - The Future of Web Development

Monday, March 21, 2011 by Jonathan Taylor

Web application development is on the precipice of a revolution; through a confluence of independent practices and technologies, the way in which web applications are built and consumed is about to change radically.

What is happening is a fundamental shift away from the current state-heavy, page-based processing model to a loose collection of lightweight web-based services that an empowered client can consume to provide full functionality in a composite fashion. It started with AJAX, grew substantially with MVC, took shape with REST, and is now about to break wide open.

Web development up to this point has been tied very closely to processing HttpRequests on a page-by-page level. Remember classic ASP and ColdFusion with code intermixed with html on the page? [Honestly, was there ever a worse language to work with than VBScript? If…EndIf…Next? Please. Microsoft still owes the development community a sincere apology for making us suffer through the miserable excuse for a language that was VBScript – JT] Nightmare! ASP.NET brought the separation of code and markup, which was a huge advancement, but brought along with it a heavy page-processing model and cumbersome state management tied to the server, or worse, hashed and embedded in the page itself. [He’s using ViewState! Grab your torch and pitchforks! Raah!]

AJAX was the emancipation proclamation that freed web development from the confines of postback processing. Utilizing the substantially overlooked XMLHttpRequest object [Thank you Microsoft for developing the XmlHttpRequest in 2000 but not incorporating it into a browser until 2006], developers were suddenly free to call back into their server for processing without having to post an entire page’s content and wait for it to come back. In its entirety. Which took time. Like reading this. OK, you get the point. AJAX did more to enliven the web than any plugin had ever done previously, [sounding the death knell for Flash and similar technologies, R.I.P] and was the timely injection of functionality and responsiveness the web desperately needed. AJAX, however, despite its freedom from the page processing lifecycle, is still inherently tied to a page – its whole intent was to be able to refresh parts of a page without having to throw the whole page back to the server, so no matter how you implement it, Ajax is fundamentally tied to a page. Figure 1 is a good representation of the current state of web development, with different clients requiring dedicated applications to process information over the web

Figure 1 - The current state of web development

Web2
MVC changes how we even think about web processing by changing the url from pointing to a physical file sitting in a directory on a server somewhere to a call to a method in the code of our application. This is a huge change; the url doesn’t point to another page or image or even another site, it fires off functionality on demand.

Now, combine this url-based functionality with a robust client-side library such as jQuery, which is capable of consuming and populating services of various types, and you have the basis for a new processing model for web applications. Consider, free from the duty of page DOM processing, jQuery can intercept a click on the page and call any service we want instead. In this scenario, jQuery acts as a controller of our base page, synchronizing calls to a myriad of distributed lightweight service endpoints to deliver full functionality as a composite set. Incorporating the capabilities of HTML5, we’re free from supporting multiple plug-ins to support media, which we can also stream in from services as required.

So what’s really happening here is a combination of the extensibility of service oriented architecture (SOA) with AJAX-style web client processing for the purposes of delivering web applications as outlined in Figure 2.
 
Figure 2 - Composite Web Application Development

Web3

This model offers significant benefits over previous web development techniques including, but not limited to:

·         Extensibility: need a new feature? Build a new service and .js file to consume it. You’re done. And you can implement both to the live app without disruption of service.

·         Scalability: services can be provisioned collectively or separately to address performance concerns – which fits perfectly with modern virtualization practices.

·         Performance: by relieving the server from redundant page postback processing, and moving a large portion of processing onto the client, the server is free to dedicate more resources to handling dedicated lightweight service calls, significantly speeding overall responsiveness.

·         Maintainability: encapsulating functionality into independent services means if changes or added features are required by the application, only one service needs to be updated, not the entire application. And as it’s the service that will be altered in most cases, production environments will not have to be impacted by the service refresh.

·         Client Agnostic: Implementing this model frees processing from the page, meaning the same services which feed our web application can easily be consumed by a mobile or platform-specific client, extending the development effort in a parallel fashion.

Service based applications have been highly regarded for quite some time due to their clear separation of concerns and inherent benefits of such an implementation, but the challenge thus far in utilizing a Service Oriented Architecture with web applications has been the limitations of the page/postback processing model. Combining the capabilities of url-based method calls with AJAX-style lightweight service consumption, a composite web application model is emerging which will change the way web application development is considered and pursued. The revolution is coming.

The Architectural Diary: Understanding the Drivers for Search Architecture

Thursday, March 17, 2011 by Ric Williams

Many application development companies regadless of web development or windows development want or need to implement search functionality. However, it is a commonly underestimated function and it continues to evolve over time. Interestingly users want search to have minimal to no interaction while having a maximum result. With data and collection systems becoming more and more complex this becomes and increasingly difficult challenge. I remember a system I was architecting for a customer where the customer wanted to enter a DNA result that consisted of an 800 to 1600 character string into a web application and have it search a database using an algorithm providing scored search results. The customer was convinced that a basic desktop machine would act as a server and be able to conduct the search against a large database efficiently. The production architecture needed to support the customers’ performance requirements was a High Performance Computing hardware environment.  Like many customers they didn’t understand the complexity of certain functions. Thinking through this topic recently had me researching how functions in systems and their architectures evolved.

Architecting a system today has many facets, and search certainly is a prominent one. Searching for information is not a new concept but a heavily evolving one. Once computers evolved beyond just basic mathematics and started capturing, storing and manipulating other data the need for search began. Early systems collected data that was somewhat structured in files and databases. Search functions found data quickly within those structures. With the development of relational databases and more complex data capture search the tools for search had to grow. Also the acceptance and use of computers was growing and more and more.
Architecting search within a system has consistently had to recognize simultaneous evolutions. Database tools added the ability to index tables to help search perform better. Search appliances like Wizards emerged for more technically savvy users to pull data from a data source. Multiple levels of searching complexity were emerging. While these searches largely dealt with structured data stored in systems, at the same time this evolution was occurring what cannot be ignored is the emergence of the internet and its impact on search. 

Early on companies like Yahoo profited on the simple concept of locating content. While this wasn’t structure data as in databases internet standards of things like meta-tag’s and other items made it possible for users to find content early on. Searching on the internet allowed users to enter terms and content related to those terms would be returned. Later companies like Google would improve the algorithms and set that industries standard for a time. E-commerce companies were also integrating user shopper experiences with search as a means of driving revenue. So while a user shopped for shoes, related items and previous shopping items would appear in the links and advertising throughout the system. While the motives were different the capture of information and providing relevant data back is essentially an implied search. The evolution of the internet and its potential was impacting local systems.

Users’ expectations were changing as the interaction was to enter in a few terms and that brought back content they wanted to see. At the same time computers continued advancing in hardware and use. Pictures, Videos, art, music files evolved to become more common to be stored on systems. In fact digital has become so big that companies like Kodak have stopped producing film based cameras. Users have embraced and ran with the lower cost and portability of digital media. This new media has presented a new challenge and forced search to evolve in multiple ways again.

Architects and systems were faced with growing use for search.  Users were searching as an exploratory exercise as more complex data and more types of data were being captured. Allowing for the advancement of tools like Online Analytical Processing (OLAP) and reporting tools. Users weren’t looking for specific data as much as looking to see what trends might appear in the data. These tools while technically complex have easy to use interfaces that allow users to review and analyze data. The complexity lies in the architecture and backend. The emergence and development of these tools was a move from appliance parts of a system to search to a full blown system of its own.

Users now expect applications to be able to search both structured and unstructured data. They want to give as little information as possible and quickly find very relevant search results. Algorithms and techniques for searching continue to advance because they must--including incorporating e-commerce like changes in the system and having subtle changes help the customer get to the results they want more quickly. One of the many reasons unstructured data evolved was not only digital media but mobile devices.

This latest evolution has occurred simultaneously with the acceptance of mobile devices. Now users have a high level of portability and connectivity to data. These mobile tools work quickly using touch screen technology and other key changes that impact the user experience for working with data. This has resulted in a need for better performance and system architectures that incorporate different devices, connectivity, and desired results.

Today’s cutting edge searches involve grabbing information from a part of a picture and searching for related information. Searches that work from audio files or live audio and provide related information quickly on portable devices is another technology that has been developed. Users want more with less required of them, resulting in more complex algorithms and models for searching.

Successfully architecting a system means taking a lot of factors into consideration. A successful solution can't overlook what the implementation's search functionality has within an enterprise system. Architecting search as a part of a system today means taking many factors into account. Understanding the user’s expectations and desired results has become critical to the successful use of a system. What devices are targeted for use, what is the complexity of the data, what type of data, and other questions like these are all key to get answered to develop a successful search system. Working with customers to identify the business rules that lead to implicit and explicit searches is important as systems more and more are expected to show relevant data.


Architectural Diary - Build a better FTP Drop Box

Monday, March 14, 2011 by Jonathan Taylor

The other day I was discussing the finer points of flat file conversion in Application Development (or lack thereof) with one of my colleagues on the Definition 6 Architecture team, and we got into a rather interesting conversation regarding how much of today’s data still gets transmitted via data documents of some kind. Modern programming practice is to transfer data via on-demand services, it's faster, easier, and in most cases much more secure. The truth of the world we live in is that most older systems, and an uncomfortably large number of new systems still  transmit data to business partners across the world using plain old text files filled with data in whatever standard they were supporting when the system was built. How's that for communcation planning? [Note: this practice has a name – Electronic Data Interchange, or EDI, and Microsoft has an exceptional tool for optimizing and synhcronizing these efforts, Biztalk 2010, but that's another post entirely – JT]

Now, my colleague, who shall remain nameless, pointed out that these systems have been functioning without problem for years, so something must be said for the persistence of such file transfer processes. My carefully worded retort was that this perceived stability was the direct result of poor sods like myself working my tail off to keep them going. At this point I feel it is my duty to disclose that while it doesn’t seem to have affected him personally, my colleague was once a long-time employee for an organization many would lay the finger of blame at for the creation and continued use of this file-based data transfer silliness, even in the face of more reliable, efficient alternatives (I won’t disclose the name of this much maligned organization, but it rhymes closely with "aye, be them"). And conceding to my colleagues’ point, this is surely the reasoning why these processes still exist today. (A clearer case of ‘if it ain’t broke, don’t fix it’ you’ll never find)

Thus, like them or not, we as developers are stuck with these processes, and it is up to us to implement solutions that accommodate them as best as possible. Now, a simply staggering majority of these systems rely on FTP transfer to distribute their data files, and typically it is up to the receiving party to pick up these files from an ftp "dropbox" and process them in a timely manner. FTP transfer has its own peculiarities that do not help this process, however, the most prominent of which being unpredictable transfer times and the disparity between the file arriving at the destination dropbox and the file completely downloading in its entirety from its origin. Aha! Herein lays our opportunity.

The problem of uncertain FTP delivery schedules causes file recipients to either delay retrieving the files from the dropbox until a time when they are certain the file will be there, "nightly file transfers," etc., or resort to "polling" to periodically spin up a process to look for the file being in the dropbox, and if it is, begin processing of the received file or pass it along to another process for further manipulation. These practices are inherently flawed and incur extensive overhead in time and system resources while constantly checking to see if the file has arrived, then locking resouceswhile the file finishes downloading before the processing of the files data can finally take place.

With .Ne however, these problems can be solved easily enough – if we can’t change the process, at least we can make it better, right? Let’s get started.

The key to our solution is a little-known member of the .NET System.IO namespace, the FileSystemWatcher class. The FileSystemWatcher does exactly what its name implies – it’s a lightweight object that monitors a directory and raises events to any changes that occur. We’re going to build a small console application and use a FileSystemWatcher to monitor our ftp directory for any new files that get created. Code Segment 1 details our System.IO.FileSystemWatcher implementation.

Code Segment 1

class Program

    {

        static void Main(string[] args)

        {

            //This should be an actual ftp directory path,

     //preferably from an App.Config file      

            String ftpPath = "path-to-ftp-directory";

 

            //Our watcher! 

            FileSystemWatcher watcher = new FileSystemWatcher(ftpPath);

 

            // Add event handlers for file created event

            watcher.Created += new FileSystemEventHandler(OnCreated);

 

            //Begin watching.

     //you need to set this to enable the FileSystemWater to raise events

            watcher.EnableRaisingEvents = true;

 

            // Code to shutdown the console if the user hits 'q'

            Console.WriteLine("Press 'q' to quit the sample.");

            while (Console.Read() != 'q') ;

        }

 

 

Right, so pretty straight-forward so far, a simple console app in which we setup the directory to be watched, implement a new instance of the FileSystemWatcher class then enable it to raise events whenever anything occurs in that directory. Now, the event we’re clearly interested in here is the Created event, which will fire every time a new ftp transfer arrives in our directory. To react to this Created event we wire up an instance of the FileSystemEventHandler to the watcher’s created event and point it to our method OnCreated, which is outlined in Segment 2.

Code Segment 2

        // Define the event handler

        private static void OnCreated(object source, FileSystemEventArgs e)

        {

            // write file name and arrival time out to the console when new files arrive

            StringBuilder sb = new StringBuilder();

 

            sb.Append("File: ");

            sb.Append(e.FullPath);

            sb.Append(" arrived @");

            sb.Append(DateTime.Now.ToShortTimeString());

            sb.Append(". Processing...");

 

            Console.WriteLine(sb.ToString());

 

            //now route the file to where it needs to go.

            ProcessFile(e.FullPath);           

        }

 

Again, fairly straight-forward, the OnCreated method simply reacts to the watcher’s Created event, and allows us to kick off whatever further processing we need to, namely writing out to the console the name and arrival time of the new file, then handing the file off to another method for further processing. Notice the FileSystemEventArgs object in the OnCreated method’s signature – we need to implement this class in order to capture the event, but it also allows us to work with a number of key parameters regarding the watcher.Created event, in particular the e.FullPath property which we’ll use to programmatically work with the newly arrived ftp file. The ProcessFile method is outlined in Segment 3.

Code Segment 3

private static void ProcessFile(String filepath)

    {

        FileInfo file = new FileInfo(filepath);

       

        //Switch to handle different file types

        switch (file.Extension)

        {

            case "txt":                   

                //process text logic here

                break;

 

            case "xml":

                //process xml logic here

                break;

 

            case "csv":

                //process csv logic here

                break;

 

                default:

                    break;

 

            }

 

Ok, so this is the final piece of our solution; we want our console app to be running constantly on our ftp server to watch our ftp dropbox at all times, so we need to be sure it’s as lightweight as possible and doesn’t maintain any internal state whatsoever, otherwise we’re adding extra load to our ftp server, and that’s entirely against what we set out to do in the first place, isn't it?. So let’s not do that.

The ProcessFile method is our routing method to move the file or notify any further services down the line that the file has arrived [an exceptional opportunity to implement the .NET Event Pattern, discussed in my previous post - JT]. We declare a FileInfo class to derive the extension of the file and route the file to a final destination based on file type.  By doing so, our console app never opens the file, never reads it into memory or maintains anything that would drain resources away from our server’s memory or processing pool, so it can run quietly alongside the rest of the server’s workload catching every new file that arrives in our FTP directory, and routing them to their final destination.

Ooo, Aahh.

Now, as simple as this solution is, we need to recognize what this implementation saves us – every time a typical FTP polling process started up, it would need to first gain access to the FTP directory, declare the directory reference in memory, then enumerate all the child directories (even if there weren’t any) followed by enumerating all the files contained in the directory to check if the file the batch process is looking for is there, and because the file transfer cannot be guaranteed to arrive at a specified time, the process would have to execute repeatedly until the file was finally found. Our FileSystemWatcher class, on the other hand simply responds to events that occur within the FTP dropbox, consuming substantially less resources.

So the key for gracefully processing FTP files without having to wait for the entire file to arrive is to process the file asynchronously. Doing so allows the main program to continue receiving file processing requests without having to wait for the code that actually processes the file. .NET provides a number of different avenues to finish that thought with, particularly in .NET 4.0, but that’s a bigger topic I’ll save for a later post. (Oh yes I did)

So to recap, yes we still have to deal with flat file transfers, but at least we can do so in a better manner, can’t we? Oh yes we can.


Architectural Diary - The .NET Observer Pattern

Tuesday, March 8, 2011 by Jonathan Taylor

Web application development can get tricky. Not only are we, as developers, charged with constructing brilliant websites that address every requirement each project entails, we also have to be concerned with the things not explicitly listed in our requirements document - things like how do we secure it? How do we know it's working at peak performance? How can we make sure people are entering in the data they're supposed to? On top of all that, if we're doing business website development, be sure to stay abreast of current application development technologies, the best ways to improve search engine optimization and last but not least, be sure to address brand experience strategy in everything you do.

See? Tricky. Fortunately, developers are weird. We like the challenges each web application development project presents. Really. We're weird.

Now despite this apparent quirkiness, in any software project we're working on, if there's something someone's built before that can help speed the development process along, we're likely going to use it. Design patterns represent tried and true ways to accomplish certain tasks in code - they're structures that solve problems common to many different project types. Confronted by a massive project with a tight deadline? Spot a process that can be handled by a design pattern? Sign me up! Design patterns to the rescue.

One of the most common design patterns which has been implemented time and time again is the Observer pattern, which is basically a structure that allows you to setup one or more entities (the observers) that react to changes in another entity (the subject). Not an uncommon scenario, right? Think RSS news readers that display news items as they are posted on the remote server. The observer pattern has solid grounding in real-world scenarios too; think of the iconic "hot doughnuts now" sign from your doughnut shop of choice – they light it up, people come running. Ok, maybe not the best of examples, as people still have the choice to grab a doughnut or not, but hey, it’s a vice, what can I say?

Traditionally the Observer pattern is implemented by using a set of objects derived from a common set of interfaces, namely the IObserver interface for objects we want to be notified of changes in another object, and the ISubject interface for the object we want to be watched. Basically, the ISubject interface defines a set of public methods to manage observer signup and notifications as outlined in code segment 1:

Segment 1

    interface ISubject

    {

        public List<IObserver> RegisteredObservers { get; set; }

        public Boolean state { get; set; }

       

        public void RegisterObserver(IObserver observer)

        {

            RegisteredObservers.Add(observer);

        }

 

        public void RemoveObserver(IObserver observer)

        {

            RegisteredObservers.Remove(observer);

        }

 

        public void UpdateRegisteredObservers()

        {

            foreach(IObserver observer in RegisteredObservers)

            {

                observer.Update(state)

            }

        }

 

So a set of methods to add and remove any objects derived from the IObserver interface to an internal list of IObserver objects which is used in the Update method to notify the observers of any change to the ISubject object, in this case a simple Boolean field called state (ugh, brutally obvious, I realize, but prudent..) . The observer objects implement their own interface outlined in segment 2:

Segment 2

    interface IObserver

    {

        public void Update(Boolean state)

        {

            //update status to reflect change in subject

        }

    }

 

And as expected, IObserver contains just one method to update itself to reflect any change in the subject object.

Not so difficult, right? A handy mechanism to handle distributed subscriber-based notifications for a number of different circumstances; if you haven’t found yourself in a situation where you needed to distribute multiple updates based off one event, trust me you will, and you’ll be happy you know about your friendly neighborhood Observer Pattern

Now while you are more than welcome to implement the Observer pattern using this traditional dual-interface manner, in .NET, there really is a better way. (You knew I was getting to it at some point, didn’t you?) Because the Observer pattern is so heavily entrenched in object-oriented development these days, and since the maintenance of registered observers can get pretty tricky pretty quickly in a traditional Observer pattern implementation, Microsoft went ahead and built its own short-hand version directly into the C# language from the very first version (yup, C# 1.0, don’t see that much anymore do you?) through the simple use of events and delegates. Microsoft uses it so much in their own internal coding, they even went so far as to rename it the Event Pattern (Oooo, Aaahh..)

OK, so here’s how it’s done: we’re going to build a subject class to expose an event whenever it changes internally, then we’re going to define a delegate to handle that event, which we’ll use to link all our observers to the subject– and we’ll transmit the subject’s change in state through a custom EventArgs class. Now, if that sounds like a lot, don’t freak out just yet, if you’ve ever wired up code to an event in .net, you’re already well acquainted with how events and delegates work through the standard signature of an event handler – think of a button click event handler like the one outlined in code segment 3.

Segment 3

public void Button1_Click(Object sender, EventArgs e)
{
    //button event code goes here
}

See that EventArgs parameter? That’s how .Net passes parameter values to event processors. So the cornerstone of implementing our own .net observer is by overriding the default System.EventArgs class with our own version to hold the information we need to pass to our observers from our subject class. Sound like a plan? Let’s get started.

Code Segment 4 lists a custom event class which contains two readonly properties, oldvalue and newvalue – we’ll use this class to notify all our observer objects whenever there’s a change in our Subject’s values.

Segment 4

public class SubectChangedEventArgs : EventArgs

    {

        //these values will hold values our observers want to know about

        private readonly int oldvalue;

        private readonly int newvalue;

 

        //constructor that sets old & new values

        public SubectChangedEventArgs(int oldval, int newval)

        {

            oldvalue = oldval;

            newvalue = newval;

        }

 

        //readonly properties to return Subject values

        public int OldValue { get { return oldvalue; } }

        public int NewValue { get { return newvalue; } }

    }

 

Ok, so now that we have a custom EventArgs class, we need to declare the event handler which our observers will mimic to receive subject change events – our delegate:

Segment 5

 

public delegate void SubjectChangedEventHandler(Object sender, SubectChangedEventArgs e);

 

 

The SubjectChangedEvenHandler defines a method signature which all our observers will implement to receive notifications from our subject; two parameters are defined – an object and an instance of our SubjectChangedEventArgs. When declared as a method in one of our observer classes, the object parameter will be a reference to the Subject object the Observer is watching, and changes to its values will be held in our readonly SubjectChangedEventArgs class; code segment 6 lists a typical observer object implementation.

Segment 6

    public class SubjectObserver

    {

        //int to list change in value

        int change;

 

       //subject change even handler to match our delegate and use our custome EventArgs class

        public void SubjectChange(Object sender, SubectChangedEventArgs e)

        {

            change = e.NewValue - e.OldValue;

        }

       

        //constructor that requires a subject to observe

        public SubjectObserver(Subject s)

        {

            //Register our delegate-based method to the subject instance

            //This is how we link our observers to the subject

            s.SubjectChanged += this.SubjectChange;

        }

    }

 

So, the SubjectObserver class has one method that matches our delegate defined to handle any changes in the subject, and we wire up the observer to the subject by linking our delegate-based SubjectChange method to our subject’s ‘SubjectChanged’ event as an event handler. Nice, huh? .Net baked-in goodness. The final piece of our puzzle is the Subject class itself. The Subject class has two responsibilities – to expose an event for changes to its internal value (which we’ll use to hook all our observers to as event handlers), and to ensure it raises this event any time a change to its internal value occurs. Code Segment 7 lists how our Subject class is structured.

Segment 7

public class Subject

    {

        //private int to hold the current subject's value

        private int subjectValue = 0;

 

        //public property to set the subject value,

        //the set method is where we capture the value change and

        //notify all the registered observers of the change

        public int SubjectValue

        {

            get { return subjectValue; }

 

            set

            {

                // new eventargs class to pass the current subjectValue and the new value

                SubjectChangedEventArgs e = new SubjectChangedEventArgs(subjectValue, value);

 

                //update the subjectValue

                subjectValue = value;

 

                //Signal all the observers

                OnSubjectChanged(e);

            }

        }

 

        //declare the event using our SubjectChangedEventHandler delegate

// to handle changes to the subjectValue

        //we'll also use this to attach our list of delegate-based observers to.

        public event SubjectChangedEventHandler SubjectChanged;

 

        //method to trigger our subject change event

        //Note: events can only be triggered from within their respective types,

        // thus we marked the scope as virtual protected to allow the method

        //to be over-ridden while still being able to raise the default event

        virtual protected void OnSubjectChanged(SubjectChangedEventArgs e)

        {

            SubjectChanged(this, e);

        }

    }

 

So there we have it, a public property with its setter calling a protected function to raise its own event to notify all our registered eventhandler observers. Any time the subject changes, the SubjectChanged event gets raised, and all our observers can react to the new value enclosed in our own custom SubjectChangedEventArgs class.

Now, admittedly that seems like a lot of work compared to the traditional ‘I only need two interfaces’ Observer pattern implementation, but the payoff is in the use of the pattern, as shown in Segment 8 which outlines the process of using the classes we detailed previously to gain our .Net Observer pattern sweetness.

Segment 8

    Subject subj = new Subject();

 

    SubjectObserver observer = new SubjectObserver(subj);

    SubjectObserver anotherObserver = new SubjectObserver(subj);

 

    subj.SubjectValue = 33;

 

    //both observer and anotherObserver both update immediately

    int observerValue = observer.Change;

    int anotherObserverValue = anotherObserver.Change;

 

Ok, now seriously, how freakin’ cool is that? No messy ‘I’m an observer, add me to the list of registered observers’ calls, no ‘ok, I’ve changed, let’s loop through the list of registered observers and let them know’ routines, just wicked fast event-based programming. And did I mention the wicked-fast-ness of this .net Observer implementation? Oh yeah.

Again this is a .Net-specific implementation of a widely recognized and utilized design pattern of modern object-oriented programming, the Observer Pattern. Microsoft uses this pattern extensively in their own class structure for the .Net framework – so much so, they’ve come to call it the Event Pattern. 

Oooh, Aaah…

Regardless, if you haven’t had the need to implement a similar pattern in your own coding projects, you probably will run into it sometime in the future, and when you do, you are now armed with the powerful and pervasive .Net Event Pattern.

Architectural Diary - Keywords, overlooked, but still part of the future

Monday, March 7, 2011 by Ric Williams

The Information Technology field has to have one of the highest rates of evolution of any field. A friendly warning for College Students, if you don’t like learning and discovering choose another field. Over the last 10 years the evolution of the web has been constant. Today we have information flowing to multiple channels, more complex information being captured, and more data being provided to users. With all of the content and information available it is no surprise that finding that content has had to get more complex as well. Optimizing your web site or web application for search engines is getting more and more complex. One aspect to look at is a subtle one. Ensuring that your site map and your keywords are captured, architected, and developed to work together.

A good BA is worth their weight in gold and early on in the requirements and discovery process capturing the keywords can really help the development of your tool. Keywords are a known importance to optimizing your site for organic discovery by Google, Bing and other search engines. There are tools dedicated to keyword mapping to show how your site will be captured by a search engine. What the keywords can’t be, however, are an afterthought to the development process. Keywords are concise definitions of your web site. Like the advertisement on television for a popular clothing retailer right now, the tag line is “Modern. Southern. Style.”. In three short concise words they define themselves. Even the government has taken to this “Safer. Healthier. People”. Keywords have been around for a while and we all know about them but I bring this up to discuss how we focus on them and use them.

A BA can use keywords to focus requirement sessions, the architect on the site map and architecture for the system, designers to ensure the colors layout user experience match the keywords, developers for for the folder structure, and testers to make sure they got it right. Now some would say that keywords should be derived from the requirements and the experience the company wants for its customers. Which is a great point that opens a question, are the creative people that can help write that copy and help getting involved early enough? Once the keywords have been defined so much can be based on them. The point of this column is architecture so lets jump there.

When the site map is being determined and the layout of the site designed/architected keeping the keywords in mind can really help. It is a common best practice to have a site-map on your web site. Many web sites have several versions to ensure they are read by the search engines. Ever added an XML web site document to ensure Google would read it? So using your keywords in various other locations can greatly assist your website.

If your keywords define your site and its content then shouldn’t your page titles include these keywords? With our keywords in the title another step is to ensure that we use the keywords in the URL. For example, instead of www.sitex.com/en/ we could include keywords www.sitex.com/keyword-keyword/. Not only is this more descriptive for the user the search engines will jump up the importance score. Why does this need to be part of the site map? If you are going to include keywords as part of the URL and folder structure the developers need this info to focus on. So that means knowing the site map before the pages are developed so they can use this information to their greatest value.

Considering the search engine will use the links on the site map to crawl the site, using keywords would help raise the score wouldn’t it? Getting into Canonical URL is a little beyond the scope of what we are discussing here but is a topic you might want to look up as well. While it may seem simplistic at this point in time of the internet’s evolution, keywords are still and will remain and important part of content discovery. Understanding how to re-engage on the importance of keywords and their use can help prepare for future evolution of the web.

Ever hear of the concept of ‘the semantic web’? Today a user views pages for information gathering and capture for activities like travel. With the sematic web, pages will interact in a more automated fashion reducing the amount of work a user does. As the web continues to evolve the potential for keywords to grow in importance is still relevant even considering their long history. The tie in to the site map becomes more important as desired functionality evolves. The key to scalability will be planning today for what is coming tomorrow. Preparing for tomorrow begins with looking at the process, collaborating, and working to the future. Don’t pass over the simple things, they just might be the key to the future.

Know New Ideas

Wednesday, February 2, 2011 by Chris Wojda

A few times per month an email called “Know New Ideas” with some of the top news stories that have captured our attention over the past few weeks gets circulated around Definition 6. The stories (no matter what they are or where they come from) make us ponder, somehow inspire us, or perhaps make us wince.  These are some of the stories that piqued our attention in the latter half of January.

Industry:

This is about a year old, but may be new to some.  If you haven’t seen the Logorama movie by H5, it’s worth a watch.  Check it out here.  Apparently it took six years to make.  Parental Advisory: Explicit Lyrics.

Hello Ladies... CBS News apparently finds Isaiah Mustafa’s return to TV newsworthy.  Do you?

The New York Times on why claiming “taste” is best for the Crunchy Nut brand.

No Right Brain Left Behind...who wants to participate?

Technology:

Engadget on Kristian Ulrich Larsen’s reimagining of the touch screen phone. In the meantime, John's Phone also made us think, there's not a whole lot of mobile marketing applications here.

Mashable on the changing face of word of mouth marketing. Wasn’t that what made WOM so great, the actual lack of brand presence?

Culture:

The New Yorker as inspiration to write incredibly deep target audience descriptions.

The Village Voice demonstrates how, once again, nobody can give nick names like Italian mobsters.

Daily Dawdle with 10 examples of brilliant shadow art.  Shadows as media...hmmm?


You can follow @ChrisWojda on Twitter.

 
The Business Blogging Platform Powered by Compendium  |  Sitemap