CSS Lint for Sass & Compass

We’re very excited to announce that last week, we opened sourced our work on a new command line extension for Compass that easily integrates CSS Lint into your projects that use Sass.

John Riviello conceived the idea and built the extension along with Mike Ball, Jen Valure and Mike Rottina during our 2nd lab week of 2012. You can learn more about the project at the CSS Lint for Sass & Compass GitHub project page.

John also spoke at last week’s Philadelphia Sass Meetup and explained how to install and use the extension. A screencast of the full demo from the event is available below:

Introducing: Xfinity TV Sports Remote

Hey, do you like sports? Do you like watching sports on TV? You’re going to like the Xfinity TV Sports Remote.

For a little over a year we’ve had an app available called Xfinity TV. This app lets you see what’s on your TV and On Demand, change the channel on your TV, set a DVR recording, and even watch some TV shows and movies on your device. We think it’s a great way to enjoy TV.

But sometimes you feel like watching a game. Maybe it’s a game you were looking forward to or maybe you just want to see who is playing tonight. The Xfinity TV Sports Remote lets you do just that. At a glance (and a tap) you can:

➢ See what games are on right now
➢ See what the score is and how much time is left
➢ What games are coming up and on what channel
➢ Preset the remote for High Def channels
➢ Change channels between any of the games that are on TV right now
➢ Set a recording for games in the future or one on another channel

Live on TV

See all the games Live on TV


We didn’t want the app to do too much and tried to find the right balance of getting you into your game ASAP. There’s no extra stats or fantasy league tracking. There are no news headlines or contests. There are other good apps for that stuff. The Xfinity TV Sports Remote is all about what games are on your TV and tuning in.

You can download the app right now for your iPhone, iPod Touch, and iPad.

Let us know what you think by using the Feedback link in Settings in the app.

Thanks!

[post written by Piers Lingle, Chief Product Officer, Comcast Interactive Media]

How it works: Personalization & Changing Channels

Hello everybody-

Today I’m going to discuss how our Xfinity TV website and mobile app features work. Topics I’m covering include unlocking personalized features with your @comcast.net username and how using the site/app changes channels on the TV without needing to be in the house. I wrap up the post with a quick way to customize the Guide by setting up TV Listings Favorites.

Our XfinityTV.com website draws +8 million visitors monthly and the XfinityTV app is currently on +3 million mobile devices. These products boast some really cool features that transform Xfinity TV into an interactive, engaging, and personal experience for our customers. Our team’s goal was to make the cable box easier to interact with and solve some lingering problems with the traditional Infrared Remote (IR) control interaction model. Some problems we wanted to fix:

1. Xfinity TV offers hundreds of digital choices but simultaneously makes surfing all of those channels difficult
2. The On Demand library is so vast our Customers have a hard time browsing all of those drill-down menus
3. Customers want a personal and social entertainment experience

So our Comcast Interactive Media and Product Engineering divisions went straight to work combining rich user experiences of web design with emerging cable box innovations like the Enhanced TV Binary Interchange Format (EBIF) that open up the cable box to talk to the Internet.

Unlocking your Xfinity TV Subscription

Every Xfinity TV customer has a @comcast.net user ID that links the cable box(es) at home with our advanced online features. Xfinity TV products need this username to find cable box(es ) on the customer subscription, set the home’s TV Listings Guide, and locate which of the Video On Demand servers stream to the residence. The Comcast username can also be used to review account information including what devices have installed our apps.

Navigating On Demand Choices and Changing Channels

The Video On Demand system is extremely robust. It offers our customers over 30,000 choices between TV, Movies, Music Videos, and other videos. Growing a library that large comes with it’s own problems like navigation and discovering new shows to watch. Searching, browsing, and filtering are all things that we have gotten pretty accustomed to in our connected lives…so we applied that idea to the cable box.

Want to effortlessly surf the On Demand library all at once? Check out out our entire library at XfinityTV.com or on the app. Take advantage of our advanced search and browse filters to find On Demand shows based on your subscription and start watching, in seconds. The Xfinity Cloud service sends the information about the desired video and sends it directly to the cable box plugged in at your house. The cable box then begins streaming the video from our On Demand servers to your TV.

Change channel to On Demand and start streaming

I recently tested how convenient this feature can be. I love Curb Your Enthusiasm and missed the finale. It took me 21 “clicks” to find it with the IR remote control. When I used the iPad app it took me 3 taps to search and tune the TV in front of me. I know it doesn’t seem like a lot here but that time adds up.

Personalize your TV
Our site and apps expose features intuitively once signed in. Have a DVR? Then RECORD buttons will appear on your TV Listings and in search results. …speaking of TV Listings, did you know that you can make your own personal Guide by selecting your favorite channels? I can combine some of my remaining Standard Definition channels with the HD channels I want. Check it out below.

Personalized TV Listings

The Comcast Interactive Media team isn’t settling here either. Look for great new features rolling out in the next few months that allow even greater control of the Xfinity TV experience. Stay tuned.

-jack.

How it works – Remote DVR

Hi everybody!

This is the first in a series of blog posts where I am going to explain how a specific product feature works. Hopefully this will be a good way to share some of the technical nuts and bolts of our products in an easy to understand and accessible way. So here goes!

I am the CIM product manager that worked on our (then called) rDVR system we launched to customers in a trial in Las Cruces, NM back in 2007. Since then we launched the full-scale product and activated millions of DVRs on the Comcast network.

Here’s how it works.

Our customers are able to use their @comcast.net username to access all of our xPlatform services available for free with their subscription. Our xPlatform services enable features like Personalized TV Listings, Remote Tune, and Remote DVR that can be used on www.xfinityTV.com or from the Xfinity TV app on the go. The xPlatform services use the @comcast.net username to verify which Comcast services you have.

The website and app utilize your existing account information to create a personalized entertainment experience. After signing in- the xPlatform web services take it from there- performing tasks like looking up the name associated with DVR(s) in your home, setting the same channel lineup and VOD library, remembering favorite channels you’ve set, and referencing levels of service and channels you enjoy at home.

Once all of this information is gathered you can begin using the DVR MANAGER from XfinityTV.com or use the Xfinity TV App to set a recording on the go. Once you find something to record and have hit the RECORD button a series of things happen between the Comcast Cloud and your home.

The program ID you selected, time it is airing, and channel information are sent to our DVR servers that talk to the actual DVR box plugged into your room at home. The DVR then fires up and sets the recording from it’s native scheduler program and relays that the recording is set. The recording you set is sent to your home and back again in a matter of seconds.

Scheduling DVR from connected mobile device

Offering Remote DVR capabilities is just one of the ways Comcast is making your TV experience more personal and available everywhere.

We are working on extending our online DVR features too, so look for new product releases for accessing, managing, and remote tuning to your Completed Recordings in the coming months.

UPDATE1: I mention using your @comcast.net ID to sign in to www.xfinityTV.com or the Xfinity TV app. There are actually two ways you can sign in as a Xfinity TV subscriber. Any Comcast ID will work- including a registered ID for video only customers. If you want to register your own Comcast ID just go here.

Support The Career Wardrobe at CIM tomorrow

Kimberly Blessing is helping lead a drive to support The Career Wardrobe that ends tomorrow. The Career Wardrobe provides professional work attire, educational programs and networking tools and opportunities to assist women transitioning into the workforce. Check your closets and bathrooms for the following:

“Finishing Touches” such as
· Handbags
· Scarves
· Jewelry
· Shoes (especially size 9 and up!)
· Stockings (new and unused; especially plus sizes)

“Basic Beauty” items, including
· Cosmetics (unused)
· Toiletries (unused)
· Trial or travel sizes welcome!

Contact Kimberly on Twitter for drop off locations other than her office. Tomorrow is the day!

Standards.Next 2011 in a Nutshell

Standards.Next 2011 - Comcast Center

Like the Beatles, the Three Stooges, and Teddy Roosevelt, Standards.Next 2011 has come and gone, but shall be remembered as a great success. Sponsored jointly by Opera Software (makers of the Opera web browser) and CIM, the conference – the second on US soil – boasted a diverse range of speakers from multiple disciplines.

Opera’s Molly Holzschlag kicked the event off by reminding us of the core tenets on which web standards were first developed. She argued that the industry has strayed from the original intentions of those who first envisioned the Internet – a point that was well received by those in attendance.

Next, CIM’s resident standards evangelist Kimberly Blessing challenged the audience to consider that the concept of “mobile web” is an intrinsic misnomer. She posited that modern web development should focus on providing the same progressively-enhanced content and capabilities – instead of the exact same experience – across all browsers and devices. This contradicts the increasingly common goal of “pixel-perfection” across browsers and separate application development for different devices.

Mike Taylor (Opera Software) shared with the audience a humor- and metaphor-laden presentation, describing some methods by which one may identify the user agents and browsers being used by a websites’ visitors. After lunch, Jenn Lukas demonstrated the latest work of Philadelphia-based web agency HappyCog, and showcased some innovative JavaScript and CSS techniques.

After all planned presentations drew to a close, the “un-conference” (informal) aspect of the event began. CIM’s Tim McElwee gave a talk on the type of useful – though not terribly flashy or exciting – functionality that has become possible thanks to the latest incarnation of CSS. Andy Pemberton educated the audience on how the W3C Geolocation API determines your location, and sparked some discussion about privacy. Ying Pan addressed the event from her perspective as a student at Bryn Mawr College, followed by talks relating to the effects of standards on SEO (Brian Cosgrove) and IBM (Adam Smye-Rumsby).

With the rate of change that we are experiencing in the industry, these are indeed exciting times for web developers – as well as challenging times for those on the front lines, advocating the need for standards across the web. Standards.Next gives these individuals a shared voice and provides them with a forum in which to pose difficult, forward-thinking questions to an audience of peers who truly understand the value in doing so.

Unsexy CSS3: Getting Work Done Faster

This aritcle was the basis for my talk at Standards.Next 2011 Philadelphia on April 29th. Read the follow up of the event.

Unsexy? I’m talking about new options in CSS3 that aren’t discussed as often as their flashier brethren, like border-radius, border-image, animations, and 3d transforms. The properties below are just those kinds of items. Unsung additions that will help you get work done faster. There are even a few “new” options from CSS2 that can be used without fallbacks if IE6 isn’t a primary testing environment for your site.

Granted, many of these properties aren’t available in every browser. But for those who have a high percentage of the latest browsers, are developing for advanced mobile phones, or another advanced browser monoculture, these items are available now. For those with a broader support matrix, these might serve as an excellent starting point for progressive enhancement as your browser stats improve.

These are all items that I was able to test while developing an Adobe Air 1.5 front-end for Comcast.net’s internal CMS project. I’ve also been able to use some of these features on the comcast.net iPhone and Android targeted mobile web site. A few of these saved me a couple hours of refactoring while others saved a lot of time by not having to create a traditional work-around.

OK. Let’s actually look at some code.

Box Sizing

box-sizing:(content-box | border-box);

Taking the options in order, content-box is an explicit statement that maps to the W3C box model and it’s use of width. For an element with box-sizing:content-box;, width values will refer to the width of the content. Padding and borders will add to the width value. border-box, however, is the game changer. This specifies that width will be the maximum width of the total visual element: borders, padding, and content. Content width will adjust to accommodate borders and padding. For you old timers and kids who tread in dangerous waters it’s the table cell box model. I have a feeling this one could become divisive if abused, but used sparingly, it can be very handy.

Dan Cederholm recently tweeted about using it in conjunction with floating primary grid elements.

@simplebits Man. box-sizing: border-box; + fluid layout = a match made in lean markup heaven. Ladies.
6:04 PM Apr 5th via Twitter for Mac

My example comes from a dilemma about adding a new input width to our CMS front-end. I’d already established a few primary sizes and a new smaller size was required along with error states for empty or incorrect field values that required alternate padding. I’d have to add the new size and refactor all of the existing sizes. I was not looking forward to it. Using box-sizing meant that I added box-sizing:border-box; to the base styling of all inputs, removed padding and border declarations from individual input instances and moved them to the base input, and created the error state class with alternate padding that would clear text past the inline icon.

Flex Box/Flexible Box

display:box;*
box-orient:(horizontal | vertical | inline-axis | block-axis | inherit);*
box-flex:(integer);*
box-pack:(start | end | center | justify);
box-align:(start | end | center | baseline | stretch);*
box-ordinal-group:(integer);
box-flex-group:(integer);
box-lines:(single | multiple);

Instead of worrying about the box model, wouldn’t it be great to have a way to say, “these elements should sit next to each other?” That’s what flex gives you.

Set display:box; and box-orient:val; on the parent element. Then in each stacked item add box-flex:integer; to specify the proportion of the total width each box should occupy. If all boxes should be equal width, use box-flex:1. If one box should be twice as large as the others, set equal elements to box-flex:1; and the wider element to box-flex:2. You can also enter specific widths for one box-flex value and let the other remain proportional. This is similar to how frames would allow you to specify a width and allow the remainder to expand (possibly the only thing worth saving from frames).

There are some quirks depending upon the browser implementation, so definitely check out the articles below. One thing I’ve seen in only a single article title is that you get equal height columns for free with display:box; and box-orient:horizontal.

In our CMS, I used this to create tabs to switch between direct input and selecting feed content. It was a pretty simple use, but even then I didn’t have to calculate width, padding, and borders to setup a float.

Multiple Backgrounds

Multiple backgrounds have gotten a little love since I first thought of this article. It’s still time to use it in more places, though, as it’s pretty well supported in more recent browsers. This one is pretty straightforward in that you can simply add another background declaration separated by a comma.

background:url(../images/icons/error.png) no-repeat 4px 4px, url(../images/icons/selectArrow.gif) no-repeat 2px right;

I found this one through the error states that I mentioned in the section on box-sizing. I’d restyled the native appearance of select menus and I was already using a background image for the arrow indicator. I thought I was stuck until a coworker said, “haven’t multiple backgrounds been supported for a while?” I found a syntax example online and the image was in and working within 10 minutes.

Selectors (actually, all from CSS2)

Nth-Child and Nth-of-type

:nth-child()
:nth-of-type()

nth-child and nth-of-type are great selector tools for accessing specific elements or to set up repeating patterns without having to add extra markup. For instance, you can specify div p:nth-child(2) to get the paragraph that is the second child of a div. To get the every other paragraph, you could enter p:nth-child(2n). The formulas can get a little tricky, so I recommend reading SitePoint’s article, Understanding Nth-child Expressions.

Also, Chris Coyier at CSS Tricks has an excellent read on nth-child’s less tricky and potentially more useful cousin, nth-of-type. Nth-of-type gives you the numbered instance of an element, much like nth-child, but without taking all of an element’s siblings into account. div p:nth-child(2) will match only if the second child of the div is a paragraph. div p:nth-of-type(2) will give you the second paragraph if there are two paragraphs. Go read his article for more in depth coverage.

In our CMS front-end, we wanted to have horizontally stacked fieldsets to input lists of links. All the fields aligned horizontally, so we could save room by having left aligned labels only for the first fieldset in a row. We were able to specify special styling for every nth-child(3n+2) or nth-child(4n+2) items. This was an instance where the child nodes weren’t exactly as expected. Nth-of-type, probably would have been a cleaner way of accessing the same element.

Attributes

button[disabled], input[type='text'], #contentEditor fieldset[visible='false']

Semantic attributes are now available to apply appropriate styling. You can set an alternate, grayed-out style for disabled buttons. You can apply styling to text inputs without having to worry about spilling over into other input types. You can even use custom attributes, like data-val, to add additional semantic meaning and display utility.

The CMS took advantage of attribute selectors, especially with a variety of custom attributes. For saving content, buttons were grayed out (opacity changed) to visually represent that the buttons were inactive. We used it to hide elements we didn’t need on that page.

Direct Child

#contentEditor > fieldset > legend

Yup. In a monoculture, whole sections of CSS2 are also on the table. Direct child selectors are great in very clean HTML. As in the example above, you can add a custom styling to the top level legend without needing an ID or class to prevent bleed through into lower level legends. In our CMS, that’s exactly what we did. The top level legend displayed directly below the page title and made the first legend redundant. Looking back, legend :nth-of-type(1) also would have worked and probably would have been less code.

Philly Tech Week and standards>next Philadelphia

Philly Tech Week has been bringing people together across the city and region, to celebrate, discuss, collaborate and connect about technology and related issues. I hope you’ve had the opportunity to take part. There are still events with openings left.

Tomorrow we, along with Opera Software, will be hosting an all day event centered on web standards with local, national and internationally recognized speakers as part of the Standards.Next program. We hope to see you for what is sure to be an exciting day. You can read more about the event on Eventbrite.

For more on Philly Tech Week see the event’s home on the web. Connect!

In Apple Stores now…Xfinity TV Release 1.2.1

Work continues on the Xfinity TV app at a rapid pace. Our goals for the app are to bring enhanced features and more content to more platforms. A few weeks ago we launched the first version of Xfinity TV for Android, and today we are releasing version 1.2.1 of the iOS version for iPad and iPhone. This is our third major release of Xfinity TV for iOS.

Over the last several weeks we have increased the amount of content viewable through the iPad version of Xfinity TV by nearly 1,000 hours. These are great, current season episodes and movies as well as some great catch up content.

With version 1.2.1 we focused on some of the most requested features by customers:

Favorite Channels
Now you will be able to select your favorite channels in TV Listings and choose only to display your favorites when you’re looking for something to watch.

Xfinity TV App Feature

Favorite Channels Filter

To set up your favorites, tap Filter By and then tap Set Up next to Favorite Channels. This will open a screen where you can select your favorite channels. If a channel is a favorite, you will see a red heart next to it. A great feature is that the favorites you set up on the Xfinity TV app will also be selected as your favorites on xfinitytv.com (and it works the other way, too!).

Setting up Favorites

To see only your favorite in TV Listings, make sure the Favorite Channels filter is On in the Filter By screen.

PRO TIP: You can see if a favorite channel is set in TV Listings if you see a dark grey bar next to the channel logo.

ANOTHER PRO TIP: To quickly add or remove a favorite, swipe from left-to-right on the channel logo. You’ll see the heart icon that you can tap on or off.

Channel Remote Keypad
This is one of my favorite features. Sometimes you know what channel you want and just want to go right there. In version 1.2.1 you have a keypad to enter the channel number and then change the channel. You can bring up the keypad by tapping the CH button. When you enter a channel number, the app will show you the logo of the channel you entered. You can then change the channel on your TV by tapping Watch Channel or you can jump to that channel in TV Listings by tapping Go to Listings.

This feature works great on the iPad, but I think it is awesome on the iPhone. The smaller form factor of the iPhone or iPod Touch just seems to work for the keypad.

Channel Keypad

Jump to Date
We really like being able to scroll through TV Listings by swiping. It’s fun. But sometimes you just want to get a week ahead really fast so you can DVR something. To jump to a spot in the grid, tap the Today button. You’ll see a date spinner where you can select any date in the next couple of weeks. Your TV Listings will immediately jump to that day.

Jump To...Date/Time

Other Improvements
We have also worked hard to improve the performance and reliability of the app in a number of different scenarios, specifically ones where variable connectivity (weak Wifi or switching from 3G to Wifi) would cause some data corruption resulting in incomplete logins or long TV Listings loading times.

The Xfinity TV app is being worked on every day by a dedicated team of designers and developers and all of the people that make sure that tapping a channel on your device makes it all the way through your network, over the Internet, and back down to your set top box in a few seconds (or less). We have some exciting features being worked, including Android tablets, and are very happy to bring this release out today.

Read Debra Gelman on A List Apart

Debra Gelman wrote a recent terrific piece for A List Apart on designing web registration processes for kids.

You can follow Deb Gelman on Twitter: @dgelman.