Rehoboth web agency
Hello and welcome to this web agency Web Designer Rehoboth video tutorial.
I’m Owen Corso from Google.
And today, we’re going to build a rich media expandable creative with video.
Let’s start by selecting file, New File.
This opens a dialog box where we will set up our ad.
First, let’s make out high of project.
We have four options– The default is Display & Video 360so we will leave that as is.
Using Autocomplete for Optimal Form UX - Designer vs. Developer #24
LYNN MERCIER: Thetruth is, like, if we want to evolve thematerial design system, we need to be able tobuild on top of the code, and each layer ofthat code matters.
MUSTAFA KURTULDU:The conveyor belt is-- designer works onsomething, developer takes it, and developer screams becausethere was no conversation.
I think that's one ofthe biggest challenges.
[MUSIC PLAYING] One of the challenges inthe beginning with material on the web was there's so manydifferent implementations.
Again, the singlesource of of truth, so you had Angular material,you had Polymer, you had MDL.
How have you found solvingthat single source of truth? LYNN MERCIER: Yeah.
Originally we had a unique teamof developers in both Android-- I'm sorry-- Angular,and Polymer, and all these otherweb frameworks sort of building their ownimplementations in material design.
But we found that we couldn'tkeep that going at scale.
Like, we were iterating onthe material design system so quickly, and we couldn'tkeep a single source of truth with these othercomponent libraries.
It's not a perfect solution.
We're still working onmaking it faster and better, but we've foundthat that creates these sort of componentsthat look like they belong in the framework.
So any framework developerwho's working there, they look seamlesslylike they're a part of the environment.
MUSTAFA KURTULDU: The onething that we struggled with with MaterialDesign Lite was there was a lot of blackmagic going on in the DOM.
So you check DeveloperTools, and there'll be, like, these random elements.
And that was, like, anopinionated decision so, you know, how do you go aboutdeveloping a new framework where you have to have anopinion-- there has to be, like, this is the baselineof what we're doing-- without impeding on, like, whatthe developer just wants to do? They just want this componentto work, or this widget, or whatever.
LYNN MERCIER: Yeah.
I try as much as possibleto avoid black magic.
And, like, whenever I'mreviewing any code that any of the designers on myteam are writing, we, like, try and avoid anything that's-- maybe it's a little hack,and it makes it slightly more performant-- butthe truth is, like, if we want to evolve thematerial design system, we need to be able tobuild on top of the code, and each layer ofthat code matters.
So we try and, like, steeraway from any black magic and just have thisone source of truth that works with all thecomponent libraries as much as possible.
MUSTAFA KURTULDU:In terms of, like, working withexisting frameworks, what's the relationship there? Because, like, React isa thing-- you have to-- it's the real world, right? LYNN MERCIER: Mm-hmm.
MUSTAFA KURTULDU: Or likeWordPress is a thing.
Like, you have towork in that world.
LYNN MERCIER: Mm-hmm.
MUSTAFA KURTULDU: So theremay be certain things that you can or can'tdo as a result of that.
LYNN MERCIER: Yeah.
MUSTAFA KURTULDU: Like, formaintaining a framework where-- it's not Android.
It's not, like, a single-- LYNN MERCIER: Yeah.
MUSTAFA KURTULDU:--you have-- it's, like, the web is allabout relationships between different code bits.
I mean, how do you manage that? LYNN MERCIER: It gets reallytricky and really funny.
So we tend to prioritizethem in terms of what developers are already using.
So React is a great example.
There are a ton of codebases already in React-- it's super-popular.
So we want to prioritizethat one first, which is why we're making anMDC React library for React in particular.
But then there'sother libraries, like Angular andlike Polymer that we want to start using as well.
But we tend toprioritize them, again, based off whether or notdevelopers are already using them.
In terms of, like, keepingall that functioning-- and sometimes you endup, like, one framework wants it to do it oneway and another framework wants it to do another way.
It's just constantlycompromising.
Like, we work with thesedevelopers on the Polymer team, or we, like, talk tothe React community and try and figure out what'sthe right way to figure it out.
And we just sort of settleon the right compromise and stay there.
We do it as well with browsers.
So for example, we tendto develop first on Chrome because it's kind of thebest, and it works nice, but we have to support Safari,and Firefox, and Edge as well.
So we tend to testIE at the very end.
And we want it towork, but there's sort of, like, gracefuldegradation sort of things that happen.
As long as that happens, like,carefully and gracefully, then it tends to be OK.
And I think we do the samesort of thing with platforms.
You know, maybe itdoesn't perfectly work in everyplatform but as long as we can kind ofgracefully degrade that component in thatsituation, it'll work out.
MUSTAFA KURTULDU: Yeah, Iknow the BBC have, like, a term that's calledcutting the mustard.
So basically, they willhave, like, a baseline where things have to work.
LYNN MERCIER: Yeah.
MUSTAFA KURTULDU: Like, withthis, and if it doesn't work, or it doesn't supportthis technology, they're gonna say--you know what, you're not going to getthese experiences that we're designing.
I mean it-- how would youfeel about that as a concept? LYNN MERCIER: Yeah, we'vehad to use that already.
So there's newthings coming out-- material designed around shape.
And on the web platform,no matter what technology you're in-- like, what webplatform or what browser you're in-- rounded corners are really easy.
Like, cut-off corners? Impossible.
Just straight up impossiblewith the existing technology.
And so we kind of had to goback to our material design team and say, like-- look, we can update theCSS spec today in 2018, and then three years fromnow, our children's children will, like, have thisfeature, but we're not going to be able toimplement it right now.
So there are some featureswhere you just kind of have to draw the line and say,we can't do this feature without it beinga confusing story, without it being some sortof hack that no one would be able to use.
MUSTAFA KURTULDU:So how about SVG? I mean, I suppose whenit comes to animation, the challenge of SVG isthe performance 'cause-- LYNN MERCIER: SVGs, and thenthe shadows on top of them, and the scroll performanceunderneath those SVGs-- by the time you, like, transportall the browsers and all the situations wherethat component would be, it gets reallyconfusing quickly.
MUSTAFA KURTULDU:And very complicated.
LYNN MERCIER: Yeah,very complicated.
MUSTAFA KURTULDU: That'squite interesting, because the conveyor belt isdesigner works on something, developer takes it, anddeveloper screams because there was no conversation.
I think that's one of thebiggest challenges developers face because, ifyou just talk to me, then I'll be able to explain,especially for designers who have no coding experience.
And I know we've spokenbefore, and you've mentioned stress testingthe design, which is a new concept for me.
LYNN MERCIER: It's my concept.
MUSTAFA KURTULDU: How doesthat work, where you're stress testing the design? LYNN MERCIER: Imean, I think there's a limitation inDesigner Tools that make them want to forceeverything to sort of this pixel-perfect mock.
And it's gorgeous-- itcreates some gorgeous assets, but it doesn't always workin a real-world application.
And a developer'sjob is to create something that works in areal-world application, right? Ours is the stuff-- thecode that's running live.
And so many problems come froma design being pixel-perfect for one language, one screenwidth, one set of content.
And when you goto build that, you can build sort of adummy site quickly, but once you start populatingit with real content, all these problems come up.
And I think most designers,if you go and talk to them and say, like-- hey,I have this problem.
They'll help you.
They'll, like, show youhow to change the design and tweak it in this situation.
Like, they're very receptiveto that feedback-- they want to make their designs better.
But if you don't knowwho your designer is when you have thisproblem, then you just have this bug that says-- doesn't work in German.
Like, what do you do? You have no idea how to fix it.
So yeah, I think this conveyorbelt problem of designers who sort of, like,design something but then leave the projectand don't collaborate with the developers asthey're building it, it makes it reallydifficult for the developers to make the productbetter over time.
MUSTAFA KURTULDU: So how do youthink designers can actually improve their process to makethat relationship better? Or more, is it reallydown to the most obvious? You just need to pairprogram, or pair together.
You have to talk to the person.
That's really the bestway to do it, so like-- LYNN MERCIER: Thatis the best way.
I mean, I think that can bereally difficult in certain-- if you don't have enoughtime and resources, sort of dedicate, like, one person,one designer, and one developer to every single feature.
I think there's waysin the middle to do it.
So for one, make sure thatyou know each other's names.
Like, if you'reremote, make sure you know how to deployyour code somewhere to staging so yourdesigner can work with it, and make sure your designerhas a way to send you, like, iterations on mocks.
Another sort of quick andobvious thing, I think, for designers is tointernationalize.
The moment you take allthe text from your mock, put it in Google Translate,put it back in the mock, and see what looks horrible-- MUSTAFA KURTULDU: German.
LYNN MERCIER: --like, yeah! German! Or even, like, CJK languages.
Just pick a language.
It doesn't matter ifyou translate it right.
Just, like, do thatfirst step because you're going to run into all thewidth and height problems that a developerwill run into live.
And I think it's goodfor designers, right? It helps you makeyour product better to get feedback aboutwhat sort of languages do I need to support.
MUSTAFA KURTULDU:And it's especially important inuser-generated apps where the content could be 10 pages,or it could be two lines.
LYNN MERCIER: Yeah! MUSTAFA KURTULDU:It's not like-- you always get the mock wherethere's, like, the name-- LYNN MERCIER: Yeah! MUSTAFA KURTULDU: --theavatar name's perfect.
LYNN MERCIER: Fits perfectly.
MUSTAFA KURTULDU: Yeah, butwhat if the name's like, you know, four words long? LYNN MERCIER: Yeah.
MUSTAFA KURTULDU: Isthere anything else that they can do like the stresstest that wasn't just really-- LYNN MERCIER:Internationalization is a big one.
I think different screen widths,at least in your own web, is helpful as well,like making sure that the obviousbreakpoints work but also sort of smallerones or bigger ones.
But, yeah, it justcomes back to, like, be there when your developerruns into a real problem and help them fix that problem.
I think most developerswant to fix problems.
They want to code that out.
They just want to geton their headphones-- like, get the code outthat will fix the problem, but they don't know how toredesign the site, right? We're not going to-- ifyou make a developer guess how to design a site, we'regoing to guess really poorly.
So you need to helpus as designers.
SPEAKER: If you spentloads of time polishing your, like, amazingprototype, then you suddenly becomevery, like, you know, reticent to throw it away.
Kind of like it'syour baby, you're going to polish this too much.
And so that's dangerous,because then you're not using prototyping forprototyping's real purpose, which is to learn.
Rehoboth web agency
Next, we can select the type of ad.
We want to make an expandable, so we select Expandable on the left.
Next, we can set again ad’s dimensions.
We are building a 320 by 50that expands to 480 by 250.
So I will make those changes.
We then assign the Rehoboth creative a name.
I will leave my Save ToLocation as the default, and leave the talk about set to Quick.
Once I’m happy with my settings, I click OK.
Google Web Designer creates the initial pages of the ad for me with the dimensions I defined.
The collapsed page already contains a Tap Area event to expand the ad and an expanded pageRehoboth with a close tap area to collapse back down.
Calibrate Digital Marketing - Web Design Company in Springfield Missouri
This reading list is for anyone who wants to learn or deepen their knowledge in the disciplines of User Research, Usability, Information Architecture, User-Interface Design, Interaction Design, Content Strategy or Experience Strategy.
The list is broad and includes books that exemplify design thinking, processes, methods, principles and best practices. Some of the books on this list are over 20 years old, yet still relevant more than ever.
There’s not a day where I don’t find myself applying the ideas from these books. Each has helped shaped the designer I am today, helped me advance my craft. I hope that you too, can extract the same value.
Last updated 09/10/2017
My Top Ten
- The Design of Everyday Things, Donald Norman
- About Face: The Essentials of Interaction Design, Alan Cooper
- The Elements of User Experience: User-Centered Design for the Web and Beyond, Jesse James Garrett
- The User Experience Team of One: A Research and Design Survival Guide, Leah Buley
- Manage Your Day-to-Day: Build Your Routine, Find Your Focus, and Sharpen Your Creative Mind, Jocelyn K. Glei, 99u
- A Practical Guide to Information Architecture, Donna Spencer
- Designing Together: The collaboration and conflict management handbook for creative professionals, Dan M. Brown
- Seductive Interaction Design: Creating Playful, Fun, and Effective User Experiences, Stephen Anderson
- 100 Things Every Designer Needs to Know About People, Susan Weinschenk
- Lean UX: Applying Lean Principles to Improve User Experience, Jeff Gothelf and Josh Seiden
More Must-Reads On Thinking, Methods, Principles and Best Practices
I find it helpful to choose what to read based on what’s relevant at the time. Applying what you’re reading, as you’re thinking and making is a great way to solidify concepts, reflect and learn.
Some old, some new. All important reading, in no particular order.
Last updated 09/10/2017
- The Shape of Design, Frank Chimero
- Mental Models: Aligning Design Strategy with Human Behavior, Indi Young
- Practical Empathy: For Collaboration and Creativity in Your Work, Indi Young
- Interviewing Users: How to Uncover Compelling Insights, Steve Portigal
- Designing Web Interfaces: Principles and Patterns for Rich Interactions, Bill Scott, Theresa Neil
- The Laws of Simplicity (Simplicity: Design, Technology, Business, Life), John Maeda
- Information Architecture for the World Wide Web: Designing for the Web and Beyond, Peter Morville, Louis Rosenfeld, Jorge Arango
- Sketching User Experiences: The Workbook, Saul Greenberg, Sheelagh Carpendale , Nicolai Marquardt, Bill Buxton
- Well Designed: How to Use Empathy to Create Products People Love, Jon Kolko
- Thoughts on Interaction Design, Jon Kolko
- Linchpin: Are You Indispensable?, Seth Godin
- Don’t Make Me Think AND Rocket Surgery Made Easy, Steve Krug
- Designing Interfaces, Jennifer Tidwell
- Handbook of Usability Testing: How to Plan, Design, and Conduct Effective Tests, Jeffrey Rubin, Dana Chisnell
- Designing Interactions, Bill Moggridge
- The Visual Display of Quantitative Information AND Envisioning Information, Edward R. Tufte
- A Project Guide to UX Design: For user experience designers in the field or in the making, Russ Unger & Carolyn Chandler
- Gamestorming: A Playbook for Innovators, Rulebreakers, and Changemakers, Dave Gray, Sunni Brown, James Macanufo
- The Mobile Frontier: A Guide for Designing Mobile Experiences, Rachel Hinman
- Design Is the Problem: The Future of Design Must be Sustainable, Nathan Shedroff
- Prototyping: A Practitioner’s Guide, Todd Zaki Warfel
- Making Meaning: How Successful Businesses Deliver Meaningful Customer Experiences, Steve Diller, Nathan Shedroff, Darrel Rhea
- Content Strategy for the Web, by Kristina Halvorson, Melissa Rach
- Just Enough Research, Erika Hall
- Design Is A Job, Mike Monteiro
- Designing for Emotion, Aaron Walter
- Creative Workshop: 80 Challenges to Sharpen Your Design Skills, David Sherwin
- Letting Go of The Words: Writing Web Content that Works, Janice (Ginny) Redish
- Designing the Obvious: A Common Sense Approach to Web Application Design, Robert Hoekman Jr
- Designing the Moment: Web Interface Design Concepts in Action, Robert Hoekman Jr
- Designing for the Social Web, Joshua Porter
- Undercover User Experience Design, Cennydd Bowles, James Box
- Product Design for the Web: Principles of Designing and Releasing Web Products, Randy Hunt
- Designing the User Interface: Strategies for Effective Human-Computer Interaction, by Ben Shneiderman, Catherine Plaisant, Maxine Cohen, Steven Jacobs
- This is Service Design Thinking: Basics, Tools, Cases, Marc Stickdorn, Jakob Schneider
- Resonate: Present Visual Stories That Transform Audiences, Nancy Duarte
- Metaskills: 5 Talents for the Robotic Age, Marty Neumeier
- The Brand Gap: How to Bridge the Distance Between Business Strategy and Design, Marty Neumeier
- Getting Real AND Rework, 37 Signals, Jason Fried, David Heinemeier Hansson
- The Humane Interface: New Directions for Designing Interactive Systems, Jef Raskin
- Simple and Usable Web, Mobile, and Interaction Design, Giles Colborne
- Search Patterns: Design for Discovery, Peter Morville, Jeffery Callender
- Emotional Design: Why We Love (or Hate) Everyday Things, Don Norman
- Neuro Web Design: What Makes Them Click? Susan Weinschenk
- Designing for the Digital Age: How to Create Human-Centered Products and Services, Kim Goodwin
- A Web For Everyone, Sarah Horton, Whitney Quesenbery
- How to Make Sense of Any Mess, Abby Covert
- Radical Focus: Achieving Your Most Important Goals with Objectives and Key Results, Christina Wodtke
- Org Design for Design Orgs: Building and Managing In-House Design Teams, Peter Merholz, Kristin Skinner
- Communicating Design: Developing Web Site Documentation for Design and Planning, Dan M. Brown
- Subject To Change: Creating Great Products & Services for an Uncertain World, Peter Merholz, Todd Wilkens, Brandon Schauer, David Verba
- Hooked: How to Build Habit-Forming Products, Nir Eyal
- The 46 Rules of Genius: An Innovator’s Guide to Creativity, Marty Neumeier
- Sprint: How to Solve Big Problems and Test New Ideas in Just Five Days, Braden Kowitz, Jake Knapp, and John Zeratsky
- Designing with Data: Improving the User Experience with A/B Testing, Rochelle King, Elizabeth F Churchill, Caitlin Tan
- Banish Your Inner Critic: Silence the Voice of Self-Doubt to Unleash Your Creativity and Do Your Best Work, Denise Jacobs
- Design for Real Life, Eric Meyer & Sara Wachter-Boettcher
- Designing Interface Animation: Meaningful Motion for User Experience, Val Head
- Practical Design Discovery, Dan Brown
- On Web Typography, By Jason Santa Maria
- Designing Voice User Interfaces: Principles of Conversational Experiences, Cathy Pearl
- Thinking in Systems: A Primer, Donella H. Meadows
- Creative Confidence: Unleashing the Creative Potential Within Us All, Tom Kelley, David Kelley
More Useful Reading
Reading books is only a partial source of my inspiration and learning. I also frequently read blogs and articles. I highly recommend staying connected to these sources of great thought leadership:
- Eleganthack, Christina Wodtke
- Peter Merholz
- The Year of the Looking Glass, Julie Zhuo
- Bokardo, Joshua Porter
- Information Architects, Oliver Reichenstein
- Felt Presence, Ryan Singer
- Whitney Hess
- Disambiguity, Leisa Reichelt
- Form and Function, Luke Wroblewski
- Frank Chimero
- Aral Balkan
- David Cole
- Seth Godin
- Scott Berkun
- Google Ventures Design Library
- Adaptive Path
- Boxes and Arrows
- UIE Brainsparks
- UX Magazine
- UX Booth
- A List Apart
- Smashing Magazine
- Signal vs. Noise, Basecamp
- 52 Weeks of UX
If you’ve found this article helpful, I would love to hear about it. Comment, tweet me or reach out to share your story: email@example.com
Get My Newsletter
Subscribe to my mailing list and I’ll keep you updated with my latest writing. I’m trying to publish something every 2 months on design thinking and other enriching ideas to help you live a more productive and enjoyable work life.
Using Autocomplete for Optimal Form UX - Designer vs. Developer #24
I am a product designer at Google, and I joined the company through Sparrow, a French startup that got acquired on July 20, 2012. Since then, I worked with the Gmail team to build from scratch a flagship product that became Inbox by Gmail. It shipped on October 22, 2014.
I designed productive applications for a few years, and I felt like I reached a tipping point. I wanted to expand my skill set, learn new things every day and get better at something I’ve never touched. I needed new challenges to reboot myself by leaving my comfort zone.
I got interested in virtual reality around the Oculus Kickstarter period because of the immersiveness and endless possibilities that came with it. There is nothing more exciting than building for a new medium and exploring an uncharted territory.
I joined the Google Cardboard and Virtual Reality team on April 17, 2015. Thanks to Clay Bavor and Jon Wiley for this great opportunity.
My first weeks in the team were as scary as it can get. People used words I had no idea of and asked me questions I didn’t know how to answer.
I am not going to lie, ramping up on the jargon was not easy but I was expecting that. Virtual reality is a deep field (pun intended) grouping together a variety of job titles each requiring a very specialized skill set. The first weeks were intense and day after day I had a better vision of the big picture. Slowly, the pieces came together. I found out which roles would be the best fit, what I wanted to do and what was required to get there. Regardless of the mission, I knew I would have to learn a lot, but I was prepared for this challenge. My feelings varied from one day to another. From super excited to create and learn something new, to super scared because of the colossal knowledge I still had to learn. Working with smart and knowledgeable people around me reinforced these mixed feelings.
Everything is going to be alright
I told myself and firmly believed that the dots would connect eventually. I am a passionate person, and I knew that I didn’t mind spending hours learning and experimenting.
During my product designer career, I got better at understanding, identifying and resolving user problems. Making things easy to use and delight users is not that different, no matter the medium.
The core of the mission is the same, but to get you from point A to B there are some interesting things to know.
- Sketching, is, again, at the core of everything. During any brain dump or design phase, sketching is as fast as it can get. I’ve sketched more in the time I’ve joined this team than I have in my entire career.
- Any design skills as diverse as they are will be a huge benefit.
- Photography knowledge will help you because you will interact with concepts such as field of view, depth of field, caustics, exposure and so on. Being able to use light to your advantage has been much valuable to me already.
- The more you know 3D and tools, the less you will have to learn. It’s pretty obvious but be aware that at some point, you might do architecture, character, props modeling, rigging, UV mapping, texturing, dynamics, particles and so on.
- Motion design is important. As designers, we know how to work with devices with physical boundaries. VR has none, so it’s a different way of thinking. “How does this element appear and disappear?” will be a redundant question.
- Python, C#, C++ or any previous coding skills will help you ramp up faster. Prototyping has a big place because of the fundamental need of iterating. This area is so new that you might be one of the first to design a unique kind of interaction. Any recent game engine such as Unity or Unreal engine largely integrates code. There is a large active community in game and VR development with a huge amount of training and resources already.
- Be prepared to be scared and get ready to embrace the unknown. It’s a new world that evolves every day. Even the biggest industry-leading companies are still trying to figure things out. That’s how it is.
Design teams will evolve because this new medium opens a lot of possibilities for creation. Think about the video game or the film industry for instance.
I think there will be two big design buckets.
The first one will be about the core user experience, interface, and interaction design. This is very close to how product design team are structured today (Visual, UI, UX, motion designers, researchers, and prototypers).
Each role will have to adapt to the rules of this new medium and keep a tight relationship with engineers. The goal will always remain the same; create a fast iteration cycle to explore a wide range of interactive designs.
On the other hand, content teams will replicate indie and game design studio structure to create everything from unique experiences to AAA games. The entertainment industry as we know it in other mediums will likely be very similar in VR.
Ultimately, both will have a close relationship to create a premium end to end experience. Both industries have a great opportunity to learn from each other.
To wrap up on my personal experience, I think being a product designer in VR is not that different but requires a lot of dedication to understand and learn a vast field of knowledge.
First step and fundamentals of VR design
In this second part of the article, I will try to cover the basics you need to know regarding this medium. It’s meant to be designer oriented and simplified as much as possible.
Let’s get (a little bit) technical
The new dimension and immersiveness is a game changer. There is a set of intrinsic rules you need to know to be able to respect physiologically and treat your users carefully. We regrouped some of these principles in an app so you can learn through this great immersive experience.
Download Cardboard Design Lab
You can watch Alex’s presentation at I/O this year which goes more in-depth. The following is a small summary.
If you have to remember just two rules:
- Do not drop frames.
- Maintain head tracking.
People instinctively react to external events you might not be aware of, and you should be designing accordingly.
Physiological comfort. It regroups notions like motion sickness. Be careful when using acceleration and deceleration. Maintain a stable horizon line to avoid the “sea sickness” effect.
Environment comfort. People can experience various discomforts in certain situation like heights, small spaces (claustrophobia), big spaces (agoraphobia) and so on. Be careful with the scale and colliding objects. For example, if someone throws an object at you, you will instinctively try to grab it, dodge or protect yourself. Use it to your advantage and not to user’s disadvantage.
You can also use user senses to help you create more immersive products and cues. You can find inspiration in the game industry. They use all sorts of tricks to guide users during their journey. Here’s a couple:
- Audio for spatial positioning.
- Light to show a path and help the player.
Do not hurt or over-fatigue your users. It’s a classic mistake when you start to design for this medium. As cool as it looks, Hollywood sci-fi movies fed us with interactions that goes against simple ergonomic rules and can create major discomfort over time. Minority Report gestures are not suitable for a long period of activity.
I made a very simplified illustration of XY head movement safe zones. Green is good, yellow is ok and avoid red. There are a some user studies made public (links at the bottom of the page) that will give you more in-depth information about that topic.A simplified illustration of XY head movement safe zones.
Bad design can lead to more serious conditions.
As an example, have you heard about Text Neck? A study, published in Neuro and Spine Surgery measured varying pressures in our neck as our head moves to different positions. Moving from a neutral head position looking straight ahead to looking down increase the pressure by 440%. The muscles and ligaments get tired and sore; the nerves are stretched, and discs get compressed. All of this misbehavior can lead to serious long-term issues such as permanent nerves damages.
TLDR; Avoid extended look down interactions.
Degrees of freedom
The body has six different ways of moving in space. It can rotate and translate in XYZ.
3 Degrees of freedom (Orientation tracking)
Phone based head mounted device such as Cardboard, Gear VR are tracking the orientation via an embedded gyroscope (3DOF). Rotations on all three axes are tracked.
6 Degrees of freedom (Orientation + Position tracking)
To achieve six degrees of freedom, the sensor(s) will track positions in space (+X, -X, +Y, -Y, +Z, -Z). High-end devices like HTC Vive or Oculus Rift are 6DOF.
Making 6DOF possible frequently involves optical tracking of infrared emitters by one or more sensors. In Oculus’s case, the tracking sensor is on a stationary camera, while in Vive’s case the tracking sensors are on the actual HMD.
Depending on the system you are designing for, the input method will vary and affect your decisions. For example Google Cardboard has a single button, that’s why the interaction model is a simple gaze and tap. HTC Vive uses two, six degrees of freedom controllers and Oculus will ship with an Xbox One controller but will eventually use a 6DOF dual controller “Oculus Touch”. All of them allow you to use more advanced and immersive interaction patterns.The good old Xbox OneOculus Touch
There are also other kinds of inputs such as hand tracking. The most famous being Leap Motion. You can mount it to your Head Mounted Display (HMD).Leap Motion on top of a DK2
This area constantly evolves as technology catches up but as of today, hand tracking is not reliable enough to be used as the main input. The principal issues are related to hands and fingers, collisions, and subtle movements tracking.
Even though it’s very familiar, using a game controller is a disappointing experience. It physically removes some of the freedom VR is creating. In FPS, strafing and moving might usually cause some discomfort because of the accelerations.
On the other hand, the HTC Vive controllers reinforce the VR experience thanks to the 6 degrees of freedom, and Tilt Brush is a really good example. As I am writing theses lines, I haven't tried the Oculus touch but every demo I have seen looks very promising. Check out Oculus Toybox demo.
While designing user interfaces and interactions, inputs are the keystone that will drive some decisions differently depending on which method you are using. You should be familiar with all of them and aware of their limitations.
This is a big piece and might require a more in-depth article. I will focus on the most popular tools used in this industry.
Pen and paper
You just can’t beat them. It’s the first tool we use because it’s always around and does not require too many skills. It’s a proven way to express your ideas and iterate at a fast and cheap pace. Theses factors are important because, in VR, the cost of moving from wireframes to hi-fi is higher than 2D.
I still use it every day. Because of its ease of use, it’s the perfect tool that allows me to create a lot of explorations before moving to a VR prototype. It’s also handy for its export tools and plugins that are a huge time saver. If you are not familiar with that program, I wrote articles here and there.
I don’t see C4D as a competitor of Maya. Both are great tools, and each excels in its own way. When you don’t have a 3D background, the learning curve can be very steep. I like C4D because the interface, the parametric and non-destructive approach make sense for me. It helps me create more iterations quickly. I love the MoGraph modules, and a lot of great plugins are available. The community is very active, and you can find a lot of high-quality learning materials.Cinema 4D motion explorations
Maya is colossal in a good and a bad way. It does anything and everything a 3D artist needs. Most of the games and movies are designed with it. It’s a robust piece of software which can handle massive simulations and very heavy scenes with ease. From rendering, modeling, animation, rigging, it’s simply the best tool out there. Maya is highly customizable, and that is one reason why it’s the industry standard. Studios need to create their own set of tools, and Maya is the perfect candidate to integrate any pipeline.
On the other hand, learning all the tools will require your full and unconditional dedication for quite some time. I mean weeks of explorations, months of learning and years of practice on a daily basis.
It’s most certainly THE prototyping tool where everything will happen. You can easily create and move things around with a direct VR preview of your project. It’s a powerful game engine with a great community and a ton of resources available in their store (the asset author determines the pricing). In the assets library, you can find simple 3D models, complete projects, audio, analytics tools, shaders, scripts, materials, textures and so on.
Their documentation and learning platform are stellar. They have a wide range of high-quality tutorials.
It support all major HMD and is the best to build for cross-platform: Windows PC, Mac OS X, Linux, Web Player, WebGL, VR(including Hololens), SteamOS, iOS, Android, Windows Phone 8, Tizen, Android TV and Samsung SMART TV, as well as Xbox One & 360, PS4, Playstation Vita, and Wii U
It supports all major 3D formats and has the best in 2D game creation. The in-app 3D editor is weak, but people have built great plugins to correct that. The software is licensed based, but you can also use the free version to a certain extent. You can check the details on their pricing page. It’s the most popular game engine out there with ~47% of market share.
The direct competitor of Unity3D. Unreal also has great documentation and videos tutorials. Their store is smaller because it’s much newer.
One of the big advantages over the competition are the graphic capabilities; Unreal is one step ahead in nearly every area: terrain, particles, post processing effects, shadows & lighting, and shaders. Everything looks amazing.
Unreal Engine 4 uses C++ and comes with Blueprint, a visual script editor.
I haven’t worked with it too much yet, so I can’t elaborate more.
Less cross-platform compatibility: Windows PC, Mac OS X, iOS, Android, VR, Linux, SteamOS, HTML5, Xbox One, and PS4.
Virtual reality is a very young medium. As pioneers, we still have a lot to learn and discover. That’s why I am very excited about it and why I joined this team. We have the opportunity to explore and we should, as much as we can. Understand, identify, build and iterate. Over and over.
And over again…
- Immersive design Facebook group
- Google I/O 2015 — Designing for Virtual Reality
- Oculus Connect keynotes
- VR Design: Transitioning from a 2D to 3D Design Paradigm
- VR Interface Design Pre-Visualisation Methods
- 2014 Oculus Connect — Introduction to Audio in VR
- Cinema 4D tutorials
- Unity 3D tutorials
- Maya and 3D tools tutorials
- LeapMotion — VR Best Practices Guidelines
- The fundamentals of user experience in virtual reality
- Ready for UX in 3D?
Thanks everyone who helped me with the rereading and improvements 💖
Ant (GitHub) is much more than a React UI kit with a minimalist design aesthetic and every component under the sun. It is a rabbit’s hole that leads to a giant maze of interconnected libraries, with a serious ecosystem surrounding it. There’s a custom build tool based on Webpack called ant-tool, several CLI apps, community scaffolds, and a complete framework (dva, which has its own CLI as well). And the UI components are mini-projects in and of themselves — see this repo for information on each component.
Many of these libraries appear to be very polished, including an entire React animation library. And I’d love to learn more about them, but Ant comes with a challenge — the majority of the documentation is in Chinese.
How’s Your Chinese?
Let me preface this by pointing out that the components library and its terrific style guide have been translated into English by generous volunteers, so the UI kit is completely usable. And the translation effort demonstrates the project’s intentions to open up Ant to a wider audience, boding well for companies considering adopting it.
However, there are some language issues that remain. The English is sometimes confusing or obscure. The maintainer of the library has commented here that they welcome PRs for improving the documentation, so that could be a great way to get involved in this amazing project.Good luck hunting down issues!
Another issue is that issues in Ant.Design are mostly filed and debated on GitHub in Chinese. This could be a deal breaker for enterprise applications, but I’m not sure it should be one for early startups since Ant can be used quite minimally, without making use of smarter features like built-in form validation. Still, if you find an issue or bug with the library, it will be difficult to research previous solutions to your issue, and that’s why I recommend making minimal use of the surrounding ecosystem at this stage.
Popular UI libraries for React include Material-UI, Semantic-UI, Foundation, and Bootstrap (this and this), and they are all fairly mature. Material-UI should be singled out as it massively eclipses the others in popularity, with over 22k stargazers — and over 600 open issues. But it turns out that Ant.Design is a surprisingly worthy candidate as well. It’s battle tested by some of the most well-trodden sites on the web (Alibaba, Baidu), and it boasts a brilliant style guide, custom tooling, and, of course, a comprehensive catalogue of components. It also has only 85 open issues at the time of writing, which is a good thing considering its popularity.
So let’s take a tour of the library, see what it has to offer, and how to get started using it.
The Ant components list is dizzying. Sure, it contains the basics — modals, forms (inline and vertical), navigation menus, a grid system. But it also contains a ton of extras, such as a @mentioning system, a timeline, badges, a seriously nice table system, and other small fancy features, such as an involved address box (see the Habitual Residence field). Have a look — it has everything that a modern web application should, with a tasteful, minimalist aesthetic.
There’s a nice, concise section in the documentation on the guiding principles of Ant.Design. I found it a great read as it got me thinking a lot about UI/UX considerations, especially the “Provide an Invitation” section, where they discuss different ways of making interactions discoverable by a user. By the way, if anyone can recommend me a good book on UX, I would be grateful.
The Ant layout system is comprised of a 24-aliquot (a great new word that I learned from the translated documentation — it means parts of a whole) grid and a separate Layout component than you can choose to use. The grid uses the familiar Row/Col system, but you can also specify a prop called flex which allows you to harness Flexbox properties to define a responsive UI. (See a previous blog post of mine for help grokking the Flex standard.)
Flexbox is now fully supported on just about every browser (with partial support on IE 11 as well as some older mobile browsers), so it should be fine to use. If your customer base is largely Internet Explorer users, which does happen in some industries or countries, you would be wise to abstain from using flex Rows or the Layout component, as Layout is built strictly on Flexbox.
Layout includes components for a Sider, Header, Content, and Footer. Again, these are strictly based on Flexbox, so there’s no choice here — but to be honest I’m not sure what these components give you on top of using the standard Row/Col grid system, aside from a couple extra props you can make use of and possibly some built-in design choices. All in all, it doesn’t seem to me to be hugely useful.
Col elements can be supplied with a span prop to define how many aliquots a column takes up and an offset prop to define an optional offset; Row can take a gutter prop to define space between columns in a row (in pixels, not aliquots).
Here’s a UI example from a side project of mine. It contains one row with two columns:
The code would look something like this:
Ant does not let you down as far as forms are concerned, with options for inline, horizontal, and vertical forms, amazing select boxes, and clear validation messages and icons. In fact, it goes a little overboard here. It allows you to wrap your entire form-rendering component in a higher-order component à la Form.create()(<Component />) to gain access to a built-in validator syntax and custom two-way-binding system (cue audible lip biting). You can then specify standard rules such as ‘required’, or supply custom validator methods. (What are Higher Order Components? Check out this excellent post by James K. Nelson.)
Do you need to use their HOC? Absolutely not, and I’m not sure you should. As I said above, going down that path could expose you to language risk should you encounter bugs and I don’t see why you would want to use a custom two-way binding data system anyway. But you could easily use the HOC and just not use the two-way data binding.
Au Naturel — Plain React Forms
So let’s go over how to use the Ant validation messages without using their higher-order component.
Ant gives us three props that we can supply to each Form.Item component to display validation messages or icons:
- validateStatus — This determines the colour & icon scheme of the validation message (see photo above) — valid options are success, warning, error, and validating.
- help — The validation message to display.
- hasFeedback — This is one of them props that don’t require a value. Just include if you want to display the associated icon, and it defaults to true.
Here’s an example of a simple form element that displays a validation message:
Notice that I used the long-form Form.Item component name. You can make yourself a shortcut for this and any other Ant sub-components as follows:const FormItem = Form.Item;// .. allows you to use:
Form Validation using the Ant Higher-Order Component
Now what if we do want to make use of the Ant Form decorator? It’s fairly straightforward to implement. Create your React component class, and then pass it as an argument to Form.create(). The component can then be exported:class SomeComponent extends React.Component
render() <place_form_here.. />
FancyFormComponent = Form.create()(SomeComponent);export FancyFormComponent as default ; // imported as SomeComponent
Inside your form, decorate your Input fields using the getFieldDecorater method, which exposes a ton of extra props on your component. You can now manipulate form elements directly from the props (eek!).
This example in the documentation gives a thorough demonstration on using the complete higher-order component.
Interactive Components — Message (Alert)
Ant provides a number of other components that give web applications a high degree of interactivity. A great example is alerts — or messages, as they’re called in Ant. Adding an alert is as simple as calling message.success('Great! Item has been saved.') in your component. Message types include success, warning, or error. Just don’t forget to import message (lowercase) from ‘antd’.Minimalism at its Best
As I mentioned above, you can either go all-in on the Ant ecosystem (with its custom Webpack adapter), or just opt for the design framework. I went with the latter and I suspect you might too, not the least because using other parts of the ecosystem could require a working knowledge of Chinese. But I’ll cover both options.
Option 1 — Use the CLI
Ant comes with antd-init, a CLI for generating a complete React application with Ant installed. I do not recommend this route for non-Chinese speakers, but if you want to try it, getting started is easy. Just install the CLI using npm, create a new folder, and run antd-init:npm install antd-init -g; mkdir demo-app; cd $_; antd-init;
You will then be greeted by the following message:antd-init@2 is only for experience antd. If you want to create projects, it’s better to init with dva-cli. dva is a redux and react based application framework. elm concept, support side effects, hmr, dynamic load and so on.`
It’s a rabbit’s hole. Open your new application and you will see that your familiar webpack.config.js file is no longer familiar — the CLI uses ant-tool, a “Build Tool Based on Webpack” that I mentioned above. The documentation is in Chinese, but it appears to set common defaults for Webpack and then allow you to just supply values that you want to override. Here’s what the config file looks like:// Learn more on how to config.
// — https://github.com/ant-tool/atool-build#配置扩展module.exports = function(webpackConfig)
]); return webpackConfig;
The index.js contains a lovely demo page that uses the understated Ant styling.
Option 2 — Use Standard Webpack
This would be my preferred route, but it can be more complicated getting your Webpack settings right at first. The Getting Started page includes some good instructions. First install Ant in your React app:$ npm install antd --save
Ant recommends using their own babel-plugin-import in your .babelrc:"presets": [
"plugins": ["transform-decorators-legacy", ..., ["import", [ libraryName: "antd", style: "css" ]]
Make sure your Webpack includes loaders for .js and .css files, and you should be good to go. To use an Ant component, import it in the module file. E.g.import Row, Col, Icon, Button from 'antd';
There’s no doubt that Ant has a lot to offer as a UI framework, with a formidable catalogue of components and a serious ecosystem around it. It does, however, come with some risk. If you experience an issue with the library, you may be stuck communicating in Chinese. Ultimately I recommend trying it out if you like the minimalist aesthetic, while keeping usage of the peripheral Ant ecosystem to a minimum.