In Part 1, we dug into the basic ingredients of a TV UI. Now that we have our mockup, we’re ready to start the most important part of the product design process: prototyping.
A successful product is measured by its use, so the sooner we can feel the experience, the more we can refine the final product. This is especially true for television interfaces. We’ll need to test navigation patterns, ensure everything on screen is legible, refine the cursor movement, and make the entire experience feel natural and responsive.
This article will give you a high-level overview of the core functions of our prototype so that you’ll be able to start testing and customizing code right away. We’ll also discuss some strategies and approaches to advanced topics, like cursor behavior and motion design.
Getting Started
What you’ll need to get started
The best prototypes are fast and cheap. Developing a native application for any connected television device is costly, both in time and money. With just some basic web technology and a few pieces of hardware, we can quickly emulate a 10-foot television experience and start making progress.
Grab a browser
We used Chrome, but Firefox and Edge are also compatible.
Grab a controller
For this interface, you’ll need a game controller. Make sure it’s compatible with one of the core libraries, and keep in mind that some controllers may need drivers installed.
Connect to an HDTV
Connect your computer or laptop to an HDTV using an HDMI cable. Try to set up a 10-ft viewing distance, since that’ll be the benchmark for testing a good user experience.
This folder will look familiar if you have experience with web development. Here are the key javascript files:
js/app.js: The prototype application logic
js/data.js: The data that’s injected into the UI
js/libraries/Controller.min.js: Our custom Gamepad API library
js/libraries/Controller.layouts.min.js: An add-on for compatibility with more gamepads
Test the controller
Lastly, you’ll want to confirm that your controller is working with one of the core libraries, Controller.js. To test it, first go here. Then, plug your controller into your computer’s USB port.
Try pressing some buttons and moving the analog sticks to see the values change. If you aren’t seeing any information, or the values aren’t changing, check out the compatibility information on GitHub.
Basic Framework
Let’s get organized and build just enough to test & tweak
Our prototype has been structured like an app, organized into several files that each have a specific purpose. We’ve avoided using major frameworks or sophisticated architectural patterns to make a prototype that’s lightweight, flexible, and accessible to a larger audience. If we keep it quick and scrappy, there’s a lot less pain in redesigning and rebuilding our ideas.
app.js
Most of the prototype’s logic is located in app.js. The most important part of this file is our main object, Example, which provides a context for all of the different functions and variables that we’ll need to build the interface. After we declare all of our key functions inside this object, we’ll call Example.load() to begin the execution of our code.
var Example = { data: prototypeCarousel, container: document.getElementById('prototype'), column: document.getElementById('prototype-column'), ... }
Example.load();
data.js
It’s good practice to separate your data from your app’s logic. This makes it a lot easier to test, tweak, and calibrate your interface as you use it. We’ve stored the metadata for our design’s content, the carousel, in data.js:
var prototypeRow = { title: 'Row', content: [ { eyebrow: '18PX eyebrow 1', title: 'Show Title 92px 1', summary: 'Lorem ipsum dolor sit' }, { eyebrow: '...', title: '...', summary: '...' }, {...} // etc. ] }
Mapping Button Presses
Organizing all of our buttons and events in one place
The navigation handler is a function that we use to make a clear, organized list of what buttons we’d like to map on the game controller. The switch/case structure used here makes it easy to update and test different configurations on the fly.
navigationHandler: function(event) { var button = event.detail.button;
switch(button) { case 'DPAD_RIGHT': Example.dpadHandler(button); break; ... } }
Ultimately, the navigation handler is an organizational tool that will allow us to identify which button was pressed, call the desired function, and pass along the name of the button that was pressed.
One thing you can experiment with on your own is how to map the analog sticks. Unlike input from the direction pad, analog sticks have a wide range of motion, are pressure sensitive, and support a click event. This makes for lot of interesting possibilities for interaction design—after all, game controllers are made to enable diversity in game mechanics.
In this example, we’ve kept the analog sticks as simple as possible. A feature in Controller.js allows us to read analog stick events as if they were the same input from a direction pad. A threshold value can be set to control how far the user should push the analog stick before it fires a direction event.
Handling Direction Events
A simple example that handles interactions with the direction pad
All we’ve done so far in our prototype is map buttons to functions. What we really need to test our design is a function that moves our user’s cursor on the screen. Initially, this sounds pretty easy, but in reality, there are a lot of important details we want to build and test.
We’ll use the dpadHandler function to organize the overall series of events that should take place when the user presses the d-pad. First, it will be tracking the highlighted screen element with the use of the variable index. It has to support cases where our user’s cursor is on the first item in the grid, some arbitrary item in the middle, or at the end.
The if statements will handle the logic that enables the carousel, and the changeCursor function will visibly move our user’s cursor.
dpadHandler: function(button) { var index = Example.column.getAttribute('data-selection'); var selection = document.getElementById('selected');
One of the big design details you can experiment with is the scroll function. If you have paid close attention to television apps, it can become frustrating to press a direction button each and every time you’d like to move the cursor from one element to the next.
The solution in many products is to enable a long press on the direction pad. Unlike mobile, the long press is a very natural and commonly used interaction for televisions. To build a long press event, we have to track the time a user first pressed a directional button and routinely check to see if the user has held the button long enough to pass a fixed threshold.
You can look at how we’ve implemented the long press in the scroll method. This function implements all of these design details and gives you a good starting place to experiment. To stop the cursor after a long press, we map the release event of the direction pad to dpadDirectionHold.
Strategies for Cursor Behavior
Building a logical system for the cursor to jump around
Television interfaces have a unique interaction model where selections are statically locked to visible elements on the screen. The user sees this as their cursor, which is generally an outline or highlight around their selected item. Building cursor functionality can become quite challenging. Here are a few approaches for different designs.
One Dimensional List
In our example, we have a 1-dimensional layout: the selection can only move horizontally. Because of this, list traversal was the easiest method. Every item has an index, and you simply keep track of the current index and increment or decrement the index when the user moves the cursor.
Two Dimensional Grid
If your interface is a static grid of uniformly sized items, you can use a method similar to list traversal, but modify it to store two indexes: one for the row and another for the column. Remember, keep it scrappy.
Advanced Layouts
Sophisticated interfaces won’t always come in the form of a list or grid. For example, designing a radial menu on televisions is a reasonable concept given that analog sticks naturally map to a radial layout. A good strategy for enabling this type of advanced cursor movement is to perform collision detection.
The idea behind collision detection is simple. If you have an interface with several interactive elements on the screen, you can take the desired direction of movement from the user’s controller and search in that direction for a selectable interface element. If you’ve ever played Asteroids, you’ve seen collision detection in action.
The most robust method for collision detection that we’ve used on projects is ray casting. With ray casting, you start with the current selection’s position and draw a line in the user’s desired direction of movement until the ray collides with an interface element. Then you move the cursor to that item. Check out this example from JSFiddle for more.
Other Considerations
It’s easy to get lost in the technical complexities of list traversal or ray casting, but keep in mind a few more cursor behaviors that users will still need the interface to account for:
When and how will you move the cursor to scroll the screen? Do you keep the cursor in the center of the screen, or wait for it to leave the bounds of the interface before scrolling more content into view?
What happens if there is nothing selectable in the direction the user presses? Does the selection wrap to the beginning, or the next row?
Is there a need for advanced shortcuts to cut down on repetitive button mashing? For game controllers, will you use the triggers or bumpers?
Creating natural movement
Animating interaction on large format interfaces
With the logic of the cursor movement figured out, it’s time to add animation to create a natural and responsive interface. Like type and color, it’s essential to study and finesse animations on a TV. Fun, lively animations that look great on a phone or laptop can become overwhelming and distracting on a large display.
And while it’s often argued that motion adds personality and polish (see Apple TV’s satisfying parallax motion), it’s better to err on the side of “less is more.” Subtle, well-timed animations will make a more polished experience than fancy, unnecessary flourishes.
While our cursor could simply jump from one item to the next, animating the cursor in and out as we move between items creates a single, cohesive movement that aligns with the user’s single button press.
Easing curves are essential when prototyping interface motion. Very rarely do objects in real life move at a constant speed from start to stop. To define our motion experience, we began testing several standard bezier curves. We slowly adjusted these curves and the animation’s duration until cursor movement felt fast, fluid, and responsive.
Generally, your UI animations should be between 200ms to 500ms long. However, even if the animation duration is short, applying the wrong curve can exaggerate the length of the transition and make controller input feel slow and laggy. Many users of gaming consoles expect the fast, instant response of a controller they regularly experience in video games.
Motion can also provide users with hints about where they can and can’t navigate. At the end of an ordered list, a slight bump can indicate that a user has reached the last item and can no longer navigate further to the right.
You may have noticed that Controller.js is just a library built on top of the Gamepad API. So why not just use that API? While it’s a great tool that got us using a controller with our designs quickly, it was built for gaming and didn’t quite have the functionality or ease of use we wanted for building interactivity in UIs. In Part 3, we’ll explain more about the process of building and using the library.
from Sidebar http://sidebar.io/out?url=https%3A%2F%2Fmedium.com%2Fthis-also%2Fdesigning-for-television-part-2-f31793e7d2e9%23.65jesr28k
Moderator Megyn Kelly waits for the start of the Republican presidential primary debate in Des Moines. (Chris Carlson/AP)
Facebook announced on Friday that humans would no longer write descriptions for its Trending topics list, handing over even more responsibility to the already-powerful algorithm. But just days after the policy change, Facebook’s algorithm has chosen a very bad, factually incorrect headline to explain to its news-hungry users why “Megyn Kelly” is trending.
The headline, which was visible to anyone who hovers over Megyn Kelly’s name on the Trending list, refers to the Fox News personality as a “traitor,” and claims that the cable channel has “Kick[ed] her out for backing Hillary.” (they have not.)
The article was featured prominently as the top news story on Facebook about “Megyn Kelly” as of Monday morning, until her name disappeared from the Trending list at about 9:30 a.m. The story is far down the rabbit hole of junk information, a typo-ridden aggregation of an aggregation about a clash of personalities between Kelly and Bill O’Reilly.
Here’s what Facebook showed you when you hover over Megyn Kelly:
screenshot: facebook
Based on Twitter mentions about all this, it appears that the article maintained this coveted spot as Facebook’s top Kelly story for several hours.
Facebook chooses Trending topics with an algorithm that considers a combination of volume and momentum: Trending topics have a lot of original mentions, and those mentions are spiking. It’s using a similar process to sort search results for those individual topics. The featured article for each topic — the spot currently occupied by the bad Ending The Fed aggregation for Kelly — is supposed to be an “automatically selected original news story with an excerpt pulled directly from the top article itself,” according to Facebook’s own announcement about the new Trending process.
Instead of relying on an automatically-selected article, Facebook used to employ a small editorial team to write descriptions for each trending topic. That changed on Friday, Quartz reported, when the company fired its editorial staff and replaced them with engineers, who essentially function as the Trending algorithm’s janitors.
Although Facebook says it always meant to remove humans from the Trending process as much as possible, the changes on Friday were accelerated. “We are making these changes sooner given the feedback we got from the Facebook community earlier this year,” the company explained on Friday.
They don’t say it explicitly, but Facebook is almost certainly referring to the fallout from Gizmodo’s reporting on the team that suggested (among many other things) that the Trending list was was “biased” against conservative topics and news sources.
Both Facebook and other former employees of the editorial team have since said that particular accusation wasn’t quite true. Overall, however, the reporting raised some really good questions about how Facebook manages its Trending list, given the company’s hugely important role in deciding which topics and news articles its users see (and click).
In this case, the article Facebook chose to showcase appears to fall short of its own stated standards. on pretty much every possible front.
Kelly has not been fired from Fox News. But she was the focus of a recent Vanity Fair piece about the internal fight to keep the popular conservative host at the network. Kelly’s contract expires next year, as does O’Reilly’s; the piece repeats a suggestion from an anonymous “rival news executive” that the network might only be able to keep one of the two stars.
The trending “news” article about Kelly is an Ending the Fed article that is basically just a block quote of a blog post from National Insider Politics, which itself was actually aggregated from a third conservative site, Conservative 101. All three sites use the same “BREAKING” headline.
The Conservative 101 post is three paragraphs long, and basically reads as anti-Kelly fan fiction accusing her of being a “closet liberal” who is about to be removed from the network by a Trump-supporting O’Reilly. It cites exactly one news source as a basis for its speculation: the Vanity Fair piece.
One thing about this whole debacle is very believable, however: that the End the Fed article was shared widely across Facebook.
A recent New York Times magazine piece dove deep into the “hyper-partisan” media sites that live and thrive in the news feeds of the red and the blue worlds on the platform. Headlines like the one about Kelly are designed to be shared and believed by those who are already inclined to share and believe them. And they do.
from WebdesignerNews https://www.washingtonpost.com/news/the-intersect/wp/2016/08/29/a-fake-headline-about-megyn-kelly-was-trending-on-facebook/
Color and layers. This pair of design elements has been the driving force behind many of the year’s trends. While we haven’t seen anything take over, like flat design a few years ago or more recently Material Design, elements of both styles are pushing designers to explore new things.
Both color choices and layering seem to have roots in those bigger trends and are being used in design schemes even without totally flat or material aesthetics. Here’s what’s trending in design this month:
1. Lots of layered elements
Layered elements and three-dimensional effects are the must-have technique in the 2D web space. Thanks to the fun techniques, and even better how-tos, introduced primarily by Material Design, layered elements are popping up in projects of all types.
What’s particularly nice is it gives a website a more realistic feel. The user can almost reach out and grab the elements on the screen. (And that’s a good thing!) The trick is that every layer should look real and light, and layers look natural.
Here are a couple of ways to start experimenting with layers in your design projects:
“Lift” elements off the background with a simple shadow or animation. Olle does this with multiple elements on different planes, but they all pull together and look natural.
Allow elements to intersect. Text can crossover into the space occupied by an image.
Parallax scrolling features are an interesting way to create layered elements (a foreground moving over a background) without being too overwhelming.
Use geometric shapes, animation and color variation to mimic depth in the design. Users should feel like they can almost fall into the visuals, such as the experience established by Delete Agency.
Create layers by going outside of the canvas, with elements that go beyond the background or edge of the screen.
Allow elements to rest on top of a textured background to create separation between the top layer (which users can imagine actually touching) and background layer.
2. Dark color schemes
For a while it seemed like every website was a minimalist ideal, including a stark white background. That trend has shifted as more dark color schemes are emerging as the design favorite.
And for good reason. A nice dark color scheme can be attention-grabbing and isn’t as harsh on the eyes of some users as bright white. On the flip side, dark aesthetics can be a little more troublesome if text is small or on smaller screens (so make sure to pay particular care to how elements render on mobile devices).
Elements that really stand out on dark color schemes include the use of cool video and animation, even if it is hardly recognizable; bold white typography, pops of bright color to accent calls-to-action or important information and the appropriate overall mood.
Remember as well, that dark doesn’t always mean black. Dark color schemes can be rooted in a variety of hues from reds to blues to greens. While black options are the most common, it is important to choose a rich black that is made from various color combinations. A flat black (or “K black” as print designers call it) will leave something to be desired in website design.
When working with dark color schemes take special care to make sure there is proper contrast between elements and that colors and images don’t get lost inside the dark nature of the design. White can be a good option as well as other primary colors with a lot of brightness or saturation. Remember to think of size contrast as well. Consider bumping up the size of all text elements by 10 to 20 percent when working with a dark framework to ensure readability.
3. Gradients make a comeback
The gradient—one of the techniques shunned by flat design—is making a comeback. (And it’s even being used in mostly flat design patterns.)
Gradients work because they do something that many people thought flat design lacked, which is to help create and establish depth. What’s new about gradients this time around is that they are not used to mimic textures or without purpose. Today’s trend focuses on bright-colored gradients that emphasize the content. From full-screen gradient overlays to backgrounds, almost anything goes when it comes to the technique… as long as it is bold.
Designers are making the most of the gradient comeback in a few distinct ways:
Gradient-“flat color” pairs mix both design ideas for a bold look, such as the website for WPcrew.
Two-tone gradients are a fun color overlay to add interest to a photo that might be somewhat lacking or to add depth to a background.
While many of these gradients seem to be on a more grand scale, they are being used for smaller elements as well, such as buttons or to bring attention to specific content.
There are still a few gradient don’ts to consider as well. (Since you don’t want that design to looking like it jumped right out of 2012!)
Be wary of small gradients. Use in icons is still not recommended.
Don’t overwhelm the content. A gradient overlay on a photo can be nice (just think of some of the cool effects that Spotify features regularly), but the photo still needs to be discernable.
Bold color gradients tend to have a light, cheery feel. Make sure this meshes with your content.
Pay attention to color combinations and contrast when it comes to readability. Some gradients can get light and white text can present a problem. Make sure to test readability against color, different responsive breakpoint and on multiple size devices. (With gradients, readability issues can sometimes pop up in places you wouldn’t expect.)
Conclusion
There’s nothing more fun than color when it comes to design. Trends in color are nice because they are elements that you can add to almost any style of design without a full-scale overhaul. The same is true of layered elements. This is a technique that can be added to an existing design to give it a more modern feel.
What trends are you loving (or hating) right now? I’d love to see some of the websites that you are fascinated with. Drop me a link on Twitter; I’d love to hear from you.
By Carrie Cousins
Carrie Cousins is a freelance writer with more than 10 years of experience in the communications industry, including writing for print and online publications, and design and editing. You can connect with Carrie on Twitter
Hazan Motorworks is behind a motorbike that is a real masterpiece. Called The Musket, their latest is made from aluminium for the chassis and wood for the seat. A true jewel made from noble materials, for motorbike lovers.
from Fubiz http://www.fubiz.net/en/2016/08/29/stunning-aluminium-motorbike-masterpiece/
Imagine being able to transport yourself to a completely different place — an idyllic beach paradise, a front row seat at a Paul McCartney concert, an unexplored planet — with the click of a button? Thanks to technological advancements in the world of virtual reality (VR), these immersive experiences define just a small taste of what’s possible.
NASA defines VR as “the use of computer technology to create the effect of an interactive three-dimensional world in which the objects have a sense of spatial presence.” And the level of personalization and immersion that VR provides makes it a great opportunity for brands to engage with their tech-savvy audiences.
In fact, brands such as The North Face, Coca Cola, and Sony Pictures have already started using VR to delight their consumers and build loyalty in ways that are highly innovative and, in some cases, very affordable.
To learn more about how the evolution of virtual reality — from the 1930s to present day — check out the infographic from Communications@Syracuse below. (And to learn more about other game-changing trends you should incorporate into your marketing strategy, check out this blog post.)
from HubSpot Marketing Blog http://blog.hubspot.com/marketing/the-evolution-of-virtual-reality
Our design team didn’t have any design principles and it was difficult to determine design success.
My job is to design and improve/redesign a legacy CRM system for real estate professionals. We often ran into design limitations because we didn’t have any principles to refer to. Our users have a love/hate relationship with the product. Some users think it’s a great lead generation tool that boosts their business and helps to manage their contacts. Some of them think it’s cumbersome, time-consuming to complete tasks, buggy and not user-friendly. There is so much to improve, but what are the restrictions?
New features vs. existing problems
We collaborate with our user research team to conduct user testing/interviews. It varies from testing existing features to redesigning a prototype. We gather user feedback and categorize them to define or confirm usability issues. We go through the cycle of user testing, design, and iterate. Yet, while we working hard improving the product, new features are often requested. This can be frustrating, especially on a page that already has usability issues. The more functions you add, the more complex it becomes.
Legacy design patterns
At work, we have our legacy design patterns. Thus, new designs are always tied into consistency. In theory, consistency is necessary because we don’t want to detract from what users are doing. Though at the same time, we want to move fast and reduce task clicks. But then we would have to sacrifice consistency. What should we do? How should we rank consistency and efficiency? Which is more important?
User needs vs. Design needs
Through user testing, we learned that user needs often don’t match design needs. Admit it, don’t we all have the tendency to design based on our hypothesis? We think we understand the user flow without further user research. The truth is that we aren’t always right. The lessons impart a human-oriented sense of “why?”. Why don’t users just get it? Why can’t they find such an obvious button? Why wouldn’t they want to use a function that we think is useful? Why don’t they like the existing features? So many why that confuses us.
We learned that the company built the CRM over years. It was developed from version 1 to 2, and now version 3. The legacy patterns worked for the previous versions, why won’t they do the same on the current one? We started to realize that the users are different. When you are dealing with diverse users, it’s important to first understand their needs. Learn who they are, what we need to design for. Make sure you know what their user stories are, and what their journey map is like.
Inspirations
We came to the conclusion that we need to create a set of design principles. I set up a design team meeting and required everyone to present their ideas. I recommended a website called Design Principles FTW for inspirations. You can look up design principles from a list of companies, such as Google, Facebook, Apple.
Define Design Principles
We generated solid design principle ideas from the presentation. We needed to go deeper and define what they are. I set up a second meeting and asked everyone to write down their principles on sticky notes. Then we all put them up on the wall to group them and rank the importance.
Maslow’s hierarchy of needs
As we started to figure out what the design principles should be, we needed a better way to visualize them. Back in June, I wrote a Lyft redesign article and talked about their design principles. They used a pyramid shape ( Maslow’s hierarchy of needs) define the importance of order. It inspired me and I decided to give that a try.
I printed out the design principles we created and cut them into pieces. I drew a giant pyramid on the white board and put a sample of Maslow’s hierarchy of needs next to it. Each of us got a set of principles and put them into the pyramid based on the way we wanted to rank them.
Oops, conflicts occur
We realized there were a few conflicts. We can’t decide which is more important, consistency or efficiency? We had a long discussion. At the end, we decided to group consistency and efficiency together. The reason is that it often differs depending on what project you work on and where you are during the process. For example, our engineers prefer consistency because they already built an style library. As designers, we have empathy for our users because of the extra number of clicks they have to go through. We want retention! We want to attract existing users of competitor’s product to our product! We know some legacy patterns are stopping us from accomplish it. Why not explore options that can actually help them run their business more efficiently? What if there is a need to prioritize efficiency over consistency for a specific case?
Here is something I learned from design events: Don’t be afraid of creating new patterns if specific legacy patterns aren’t working well. Communicate with the engineers and product managers, help them understand the special needs. Hopefully, that way you can get your new design patterns into the next sprint.
Finalize Design Principles
We were so excited! Then, we paused. “Collaboration” exists in every step, we should take it from the pyramid. Beauty is an effective word, but why don’t we make it sound more artistic and fancier?
We had an idea to visualize the pyramid with pictures of examples next to it. I thought about how burgers are made, with bread, meat and sauce. I tried a few ideas and decided that meat is too specific. I replace “Meat” with “Ingredients”, as it’s more broad and presents psychological needs better.
from uxdesign.cc – User Experience Design – Medium https://uxdesign.cc/why-design-principles-shape-stronger-products-ae677bdd831b?source=rss—-138adf9c44c—4