Monthly Archives: April 2011

Cantina Now Developing for Connected TV

Cantina’s extensive background in online and mobile video is leading it to the next frontier in branded video: Connected TV, which is the integration and convergence of the internet into modern television sets and set-top boxes.

Cantina’s consultants recognize that connected TV is early in its curve and that there is fragmentation and ambiguity as to how Connected TV will be leveraged as a brand channel. However, Samsung and Google are being aggressive, and there is little doubt that the enormous amounts of funding pouring into this space will accelerate consumer adoption. Even though monetization strategies are still in formation there is a substantial audience in the current distribution channels such as Apple TV, Samsung, Google TV, Boxee, and Roku.

Connected TV Content Delivers Greater Impact

  • Deliver richer viewer experience
  • Enhance brand engagement with interactive content
  • Provide an on demand platform
  • Enable new video monetization strategies such as ad support, T-commerce and subscriptions
  • Disrupt current content distribution model (i.e. direct to consumer vs. licensing)

Cantina Solution Value

  • Brands are seeking the ability to provide audiences with branded video content and an interactive experience (games, eCommerce, lead generation, etc.) through Connected TV.
  • Connected TV provides an additional channel to reach customers on a new delivery platform with ‘Over The Top’ (OTT) content.
  • The Connected TV Solution consolidates access to all fragmented distribution channels incorporating your OVP as the online video console.
  • Connected TV also broadens viewer’s choice and gives companies complete control over brand and messaging.

Cantina is one of a select number of firms currently developing apps on the Google TV platform. We are working with early adopters and brands looking to leverage existing assets in gaming, publications and content subscription models. We’re excited to yet again be working at the leading edge of  content technology.

 

Cantina's extensive background in online and mobile video is leading it to the next frontier in branded video: Connected TV.

A Geeky Twist on Cantina’s Positioning

At Cantina, we’ve recently adopted some new positioning language that really reflects what we bring to the table:  Tech Chops, Business Cred. I thought of another way to render that same message that reflects who we are:

(TECH_CHOPS | BUSINESS_CRED)

If you’re not completely sure what that is, it’s known in our world as a Bitwise OR, and it means that Cantina represents the logical union of these two traits, which I find quite fitting.

At Cantina, we've recently adopted some new positioning language that really reflects what we bring to the table.

Using a Latch to Test Asynchronous Code

Today one of our founders, Adam, sent a link to this excellent article by Martin Fowler on non-determinism in tests. One of the points he makes is not to use sleep() to wait for asynchronous methods to return. Generally if you are calling sleep() at all in your tests, except in certain specific situations, it’s a good indicator that they could be non-deterministic, not to mention it slows down your tests. Fowler’s solution is to use a polling loop to wait for an asynchronous method to return. This is a fine solution, especially for languages without threads like JavaScript, but it also uses sleep(). If your language supports threading and synchronization you should use those over this solution as it will reduce the amount of time your tests spend doing nothing. For example in Java you can use java.util.concurrent.CountDownLatch as clean and simple replacement for a polling loop.

Consider this contrived example of a class that performs asynchronous processing, using a callback to signal completion:

 

In this example above AsynchronousTask performs some “processing” then signals its callback when finished. To test this we have an example unit test that asserts that the result of the asynchronous operation is correct. Since it’s asynchronous we use a CountDownLatch to force the test method to pause until the latch is tripped by the callback, which in this case is the test class itself:

 

Note also that we’re using the await(long, TimeUnit) method of CountDownLatch over the version with no arguments. This method will wait only as long as the time specified, so if the asynchronous method doesn’t return in a reasonable amount of time it won’t make your test suite grind to a halt.

Note that you can do the same thing using the wait/notify methods of a simple Object in Java, but it’s less clean in this example, as it requires that you wrap your mutex object in synchronized blocks. Also, using the latch you can wait for multiple asynchronous methods to complete before moving on to your assertions.

Today one of our founders, Adam, sent a link to an excellent article by Martin Fowler on non-determinism in tests.

Honesty is Always the Best Policy: A Lesson in Effective Communication

If you’re at all involved in the gaming community, you’ve probably caught wind of Sony’s latest fiasco, but in case you aren’t up to speed, the Playstation Network, Sony’s online component to their console ecosphere, has been down for seven days and counting. Initial reports began to circulate, purely on speculation, that this was the work of internet “hacktivists” Anonymous. However, Anonymous has publicly denied any responsibility for the attacks. Several days after the initial shut down of the service, Sony finally came forward and admitted that the downtime was a voluntary move on their part in response to an attack from an unknown source. The initial response to this unfortunate bit of news was dread and concern over the loss of private information. Sony maintains roughly 60 million PSN accounts with credit cards and personal information within their system. However, Sony opted to not make any public statements regarding whether or not any of this information was compromised. That is, until day six of the debacle, when Sony finally announced that they have concluded that some members’ personal information may have been hijacked during the initial attack. We’re into day seven of the outage, and Sony still hasn’t said a whole lot to effectively assure their customers that competent people are on the job working to rectify the matter. Furthermore, they have yet to offer a concrete relaunch day for the network. The most they’ve been able to offer is, “it could be up inside of a week“. If you’re reading this and aren’t feeling confident about that tidbit of information, rest assured, it is only because you are sane, and you still have a pulse.

The shockwave of this outage doesn’t solely radiate towards just users. Services dependent upon the PSN, such as Netflix are also inaccessible to Playstation users. Furthermore, game developers like Ubisoft who released their highly anticipated game, “Outland” over the Playstation Network this past Tuesday, were forced to accept that their game would receive absolutely no revenue on launch day due to the outage. This can only be considered unacceptable from any standpoint.

The greater takeaway from this entire disaster is a lesson in effective communication. Communicating with your customers or clients is imperative even in times of crisis. Attempting to recover fast enough, in hopes no one will notice, is an absurd practice that will only backfire in the long run. Honesty and integrity are the foundation of any successful company, and a sheer refusal to do so much as tell your customers that a major aspect of your product offering will be offline for an undisclosed period of time is a tactic I can only refer to as, “completely mad”.

Your customers’ satisfaction should be top priority and being able to admit, even in times of crisis, when problems arise on your end, is still an effective way to build solid relationships with your clients. It takes the biggest kind of person to admit they’re wrong; the same applies, if not more so, to business. Had Sony come out on day zero saying, “We’ve experienced a severe attack on our online systems. In response we will be taking the PSN network down for an unknown period of time starting on x date to tighten security and increase performance in the system. We apologize for any inconvenience.” The public lashing wouldn’t be even remotely as severe.

Microsoft experienced a similar incursion back in 2007, when their Xbox Live service was taken down, but people seldom remember this, simply because of how Microsoft chose to handle the situation. There was a constant flow of status updates from the Xbox camp about when the service would relaunch, steps Microsoft was taking to ensure their customers’ data was still safe, and they even threw in a free game download at the end of the whole mess. This is what responsible companies do, and yes, I just called Microsoft responsible.

I’m not a Playstation user anymore. I lost faith in Sony’s ability to effectively participate in the gaming sphere almost a decade ago. Their sheer inability to innovate and spur new developments in the industry had left me wanting back when I actually did own an original Playstation. That aside, I can’t fault a company for being reasonable. However, it seems that Sony isn’t up to task. Your business should be different. Even we as vendors and developers should take heed of the warnings inherent in this incident. Effective communication with your customers is tantamount to whatever cultural arrogance your company has instilled. Being honest can be difficult at times, but your customers will thank you for it later.

If you’re at all involved in the gaming community, you’ve probably caught wind of Sony’s latest fiasco, but in case […]

The Flexible Box Model

Web developers have long possessed a deep understanding of the box models that are implemented by web browsers. We know the ins and outs of each one and can help you with your float bugs and double margins with ease. Thankfully, with CSS3 and the flexible box model, working with layouts is on track to get easier.

In the past, to get a traditional layout with a header, two equal height columns and a footer we would construct our markup, then start floating divs. To attain the equal height columns, we would incorporate something along the lines of faux-columns. Then we’d fix up our layout with some IE hacks.

With the flexible box model, we can define the layout in CSS without the floating or clearing. Taking a look at the traditional layout, we get started by defining an element as a box:

 

Once we have a box, we can then setup how we we want the contents to be displayed. The choices for orientation are “horizontal” or “vertical”.

 

From here, we can also define alignment and packing. When used correctly, we can achieve vertical centering without extra hackery.

Combining all of these, we can achieve the traditional layout mentioned previously. You can view a demo of the traditional layout here.

Now that we have a traditional layout working with the flexible box model, we can extend it to also be a responsive layout with the addition of a media query.

Because the flexible box model allows you to change the order of items, we can also make sure that we follow our SEO’s advice of putting the content first, while having our sidebar on the left.

Browser Support

Right now, the flexible box model is supported in the latest versions of all the browsers except IE9 – well any version of IE. That should change as it appeared in the IE10 preview release. To get the flexible box model working in unsupported browsers you can use a polyfill like Flexie.

Thankfully, with CSS3 and the flexible box model, working with layouts is on track to get easier.

Adobe, iOS and the AIR 2.6 SDK

Adobe is one persistent squirrel, trying hard to break the iOS nut.

Adobe released the latest version of the AIR SDK recently, and one of the key features is an update to their support for iOS devices. Development on iOS support for AIR slowed to a crawl (stopped dead, actually) when Apple pulled the plug on third-party development platforms. However, this decision was reversed–or clarified, or something–later in the year and Adobe AIR on iOS devices is back in business.

Continue reading

Adobe is one persistent squirrel, trying hard to break the iOS nut.

Come to the Ruby Meetup on Authentication!

Dan Barron presents at a previous Ruby on Rails meetup.

 

 

 

 

 

 

Authentication in an app is never as simple as it should be. Come discuss a few popular patterns and gems for implementing auth and role based administration using gems like Devise, Omniauth, and vanilla Rails to get your app secured.

Organized by Dan Barron from Cantina

Thursday, April 21, 2011 at 7:00 PM

To be held at the offices of

Cantina, 15 Cypress St Newton Center, MA

Members of the The Metrowest Ruby Users Group can sign up here.

Members of the Boston Ruby on Rails Meetup Group can sign up here.

Come discuss a few popular patterns and gems for implementing auth and role based administration using gems like Devise, Omniauth, and vanilla Rails.