I’ll be there in Seattle for the kickoff, giving a talk about how to think like a front-end developer. I’ve been working on it for ages, and I think I have a talk ready that helps set the stage for where we are at in the world of front-end development, through the lens of tons of other front-end developers I admire in this industry. I hope it’ll be an entertaining romp through all their minds and how they think.
Just check out this Seattle lineup!
This is like my dream lineup. Except that jerk who kicks off Day 2.
Jeffrey Zeldman The Zen of Whitespace: Slow Design for an Anxious World
Margot Bloomstein Designing for Slow Experiences
Sarah Parmenter Designing for Personalities
Eric Meyer Generation Style
Rachel Andrew Making Things Better: Redefining the Technical Possibilities of CSS
Jen Simmons Designing Intrinsic Layouts
Chris Coyier (me!!!) How to Think Like a Front-End Developer
Una Kravets From Ideation to Iteration: Design Thinking for Work and for Life
Scott Jehl Move Fast and Don’t Break Things
Luke Wroblewski Mobile Planet
Beth Dean Unsolved Problems
Dan Mall Putting the ‘Design’ in Design Systems
Jeremy Keith Going Offline
Sarah Drasner Animation on the Bleeding Edge
Val Head Making Motion Inclusive
Derek Featherstone Inclusive, by Design
Gerry McGovern The Customer-Obsessed Professional
Another neat little feature of the 2019 lineup is a screening of the documentary Rams that after lunch on Day 2. Like movie night. For us designer types. During the day. It’s gonna be awesome.
The topic of how accessible it is for newbies and seasoned developers alike to learn CSS has been gaining steam as the complexity of the tools around it has become skewed more toward traditional programming. Rachel Andrew has much more to say about this in her post, HTML, CSS and our vanishing industry entry points. Robin also has thoughts on where and how to learn CSS in the modern age.
The question of how and where to learn CSS is a highly reasonable thing to ask. The answer depends on all sorts of things: how serious you are, your current foundation, what other resources are available to you, what you hope to do with what you learn, and how much time you have, among probably a zillion other things.
Let me dump a bunch of possible answers here and you can apply all those “well, that depends” caveats as you see fit.
There are a ton of books out there that cover HTML and CSS (and often together). They probably all do a fine job. There’s no need to chronicle all the choices here. These two are my personal recommendations. You probably don’t even need both.
Jon Duckett’s is incredibly well-designed and approachable:
Jennifer Robin’s covers a bit more ground and is designed to be useful for either personal reading or classroom learning.
You could read through all the posts in our Beginner’s Guide.
We have a guide (a collection of articles, videos, and links) called Just Starting Out with CSS & HTML. I hope there is stuff in there that can help kickstart or augment your early learning because that’s the intent.
We designed HTML & CSS Is Hard to be the only introduction to HTML and CSS that you’ll ever need. If you put in the effort to read every section and write every code snippet, this tutorial has the potential to replace hundreds or even thousand of dollars worth of online courses and live training.
Prefer video? Jessica Hische and Russ Maschmeyer’s Don’t Fear the Internet is a super eight-part series that gets you going with HTML & CSS — it even delves into the all-important topic of typography.
Khan Academy has an Intro to HTML/CSS: Making webpages course that’s packaged in a super cool format. It’s like video in that you get to hear the instructor talk you through the learning, but what you see is a real live text editor and real live output. Sometimes the teacher is controlling the code, and then sometimes it breaks for challenges in which you take over and edit the code yourself.
Eric Tirado has an Intro to HTML course on Scrimba, which is also a neat platform in that Eric’s voice guides you through the course, but visually it’s a combination of slides with a real code editor and preview.
You could find and take a paid online course.
I often join gyms because the accountability of paying for something gets me to do it. I know I can do situps, pushups, and go for a jog for free, but the gym membership makes a thing of it. Well, same could be said about paying for a course on HTML and CSS.
These are broad generalizations, but good places to start:
If you wanna put even more skin in the game, you could consider literally going to school. If you don’t have a college degree, that’s an option, although you’ll be looking at a broad education rather than a ticket to leveling up your web design and development skills alone. I’m a fan of that just for the general mind-broadening it involves.
But assuming you’re going to go to a coding-specific school…
There are options that exist in single cities. I know someone who went to the All-Woman’s coding bootcamp Hackbright in San Francisco. There are places like Actualize in Chicago, Center Centre in Tennessee, and HackerYou in Toronto.
There are bigger outfits like, Flatiron school (with campuses all around the U.S.) and General Assembly (with campuses all around the world).
There are probably dozens — if not hundreds — more, so this is more to inform you of the possibility of schooling. You don’t even have to go to a physical school since plenty of these offer online courses, too (but with the advantage of live instruction and cohorts). For example, LambdaSchool has the novelty of being free to start and paid later in the form of letting them take a portion of your salary after you get a job in the industry.
You could practice on CodePen.
Not every second of your learning should be strictly following some course laid out by a book, class, or teacher. It wouldn’t even be that way if you tried. You might as well embrace that. If something tickles your muse, go play! I hope CodePen is a rewarding place to do that, making it both easy and useful, while providing a place to connect with other folks in the field.
You could build a personal site and learn what you need to get it done.
That’s how absolutely countless developers have cut their teeth, including me. I wanted a personal website years ago, and I struggled through getting a self-hosted WordPress site online so I could have full control over everything and bend it to my will. Once you have an actual website online, and you know at least some people are seeing it, it gives you all the motivation in the world to keep going and evolve further.
The way you actually learn is going to be a combination of all this stuff.
People are obsessed with asking musicians if they’re self-taught. Like, if they are, their amazingness triples because it means their creative genius was delivered by a lightning bolt at birth. They don’t need anyone else to learn; they merely look at those guitar strings and know what to do.
And if they were taught be a teacher, then, well, that’s all out the door. If they are good at all, then it’s because the teacher delivered that to them.
Total nonsense.
People learn anything — music and web development included — inside a hurricane of influences. Let’s stick with music for a second. Learning to play comes in many forms. You learn by listening to music an awful lot. You can do fundamental practice, like finger exercises and going up and down scales. You can learn to transpose chords on a chalkboard. You can watch YouTube all day and night. You can sign up for online courses. You can go to local jams to watch and play along. You can join a band. You can take lessons from someone advertising on Craigslist. You can go to a local music school. You can read books about music.
You get the idea.
You can and probably will do all of that. With learning web design and development, getting anywhere will involve all sorts of ways. There’s no silver bullet. It takes bashing on it lots of different ways. There’s no requirement to sprinkle money on it, but you do need multiple angles, time, and motivation.
There is something remarkable about the fact that, with everything we have created in the past 20 years or so, I can still take a complete beginner and teach them to build a simple webpage with HTML and CSS, in a day. We don’t need to talk about tools or frameworks, learn how to make a pull request or drag vast amounts of code onto our computer via npm to make that start. We just need a text editor and a few hours. This is how we make things show up on a webpage.
That’s the real entry point here and yes, in 2019 they are going to have to move on quickly to the tools and techniques that will make them employable, if that is their aim. However those tools output HTML and CSS in the end. It is the bedrock of everything that we do, which makes the devaluing of those with real deep skills in those areas so much more baffling.
(This article is sponsored by Adobe.) Kelly’s in charge of choosing IT cloud services at her company. She has signed the company up for a chatbot service, and has had the “Pro” level service (not the “Free” or “Standard”) for two years.
It’s time for the annual renewal. Will she renew? Will she decide to renew, but switch to the free service only? Is there anything about the email notice and/or webpage for the service that will either encourage her or discourage her from renewing?
There is a lot of research on human decision-making. Here are some of my favorite insights from the research.
Most Decisions Are Not Made “Logically”
We like to think that we are logical and that when we are making a decision, we carefully weigh all of our alternatives. When it’s time to buy a new car, do we read all the specs and reviews, and choose the one that is the safest and most economical? When it’s time to renew the chatbot service, does Kelly do a study to see how much use she has made of the “Pro” services and evaluate whether she should stay with that level and pay that amount each month?
These would be the logical ways to make the decision, and although we sometimes make decisions rationally and logically, there are hundreds of decisions we make every day, and we don’t do a logical think through of every one. Even the big decisions where we think we are being logical, the research shows that most of our decisions — big or small — are made unconsciously and involve emotion.
Here are some facts about decisions that may surprise you.
Most Of Our Decisions Are Made Unconsciously
By looking at brain activity while making a decision, researchers could predict what choice people would make 7-10 seconds before they themselves were even aware of having made a decision. This means that even when people think they are making a conscious, logical, decision, chances are that they aren’t aware that they’ve already made a decision and that it was unconscious. We aren’t even aware of our own process.
Do you write your messaging and content to appeal to logical thinking?
If so, it’s possible and even probable that your logical, persuasive arguments to your target audience about why they should go with the premium service, or why they should purchase a particular product may be in vain.
Be suspicious of what people say.
Another problem is that if you are diligent in your design process and ask people what factors are important to them, you might not be getting a true answer.
For example, if someone interviewed Kelly and asked her why she chooses the “Pro” level each year, it is likely that she will come up with an answer that sounds very logical (i.e. about the service, how her company uses it and so on) when the real reason she stays with “Pro” rather than the “Free” plan may be emotional (“I don’t want to have things go wrong and if I pay money things won’t go wrong”) or just habit (“It’s what we always sign up for”). What people tell you is the reason for why they do what they do may not be the actual reason.
The vmPFC is part of the prefrontal cortex, i.e. the front of your brain. It is important in regulating fear. Other parts of your brain (in particular the amygdala) tell you when you should be afraid and what you should be afraid of. The amygdala is where “conditioned” fear responses are born and perpetuated. The vmPFC, in contrast, has an opposite role. It mitigates conditioned fear. It stops you from continuing to be afraid in certain situations. When the vmPFC is active then you are able to let go of conditioned fears. As a result, you are then able to make a decision.
You should just assume that all decisions involve emotions. Rather than just making logical arguments to persuade, you are more likely to persuade people to take an action if you understand how they are feeling about the decision and feed their feeling. For example, if Kelly is feeling apprehensive about making a wrong decision then your messaging should be more about making her feel secure and safe than it is about product features.
People buy when they feel confident of their decision.
There is actually a neuron that fires up in the brain that triggers people to take action when the brain decides it is confident of a decision. This is subjective. It’s not necessarily based on the amount of information you’ve collected — it’s a feeling of confidence.
If you want people to take an action then you need to make them feel confident. If you want Kelly to choose the “Pro” level again, then you need to give her messaging about the “Pro” version that makes her confident of her choice. For example, feed data back to her about how much she has used the service. This will make her feel confident that she is making the correct choice.
Don’t Confuse Unconscious With Irrational Or Bad
I take exception with writers who equate unconscious decision making with making poor or irrational decisions. For example, Dan Ariely in his book, “Predictably Irrational: The Hidden Forces That Shape Our Decisions” implies that unless we work hard to prevent it, many to most of our decisions are poor and irrational.
Most of our mental processing is unconscious, and most of our decision-making is unconscious, but that doesn’t mean it’s faulty, irrational, or bad. We are faced with an overwhelming amount of data (11,000,000 pieces of data come into the brain every second according to Dr. Timothy Wilson in his book “Strangers To Ourselves: Discovering The Adaptive Unconscious”) and our conscious minds can’t process all of that.
Our unconscious has evolved to process most of the data and to make decisions for us according to guidelines and rules of thumb that are in our best interest most of the time. This is the genesis of “trusting your gut”, and most of the time it works!
People do like to think that they are being logical and thorough, however, so you may want to offer logical reasons for why a certain decision should be made so that the person making the decision has a rational reason they can give themselves and others. Go ahead and give Kelly the rational reasons she should renew for the “Pro” level, but just understand that that reason is probably not the actual reason.
Only Give More Information If People Are Making A Goal-Based Decision
There are two different types of decisions that people make. Value-based decisions are made in the orbitofrontal cortex (OFC). So, during those times when you really are comparing the Honda to the Subaru when you are shopping for a car, then you are making a value-based goal decision. If Kelly was comparing the features of the different levels for the chatbot service then she would be making a value-based goal decision.
Habit-based decisions occur in the basal ganglia (deep in the brain). When you pull your usual cereal off the shelf at the grocery store and put it in your cart, that’s a habit-based decision. If Kelly presses the ‘Renew’ button for the Chatbot software then she is making a habit-based decision.
What’s interesting is that if the OFC is quiet then the habit part of the brain takes over. This means that people are either making a goal-directed decision or a habit decision, but not both at the same time.
If you give someone a lot of information then they will switch from habit to goal-directed. So if you want someone to make a habit decision, don’t give them too much information to review. If you want them to make a goal-directed decision then do give them information to review.
If you want Kelly to renew for the “Pro” level then don’t give her lots of data. Let her make the habit-based decision to renew. If you are hoping that she will go up a level (not down) then you may want to give her data on her options as that will kick her from a habit decision to a goal-directed decision.
Too Many Choices Means People Won’t Choose
You may have heard the idea that people can only remember, or deal with 7 plus or minus 2 things at a time (5 to 9). This actually is not true. It was a theory first mentioned by Miller in 1956 at a talk he gave at the American Psychological Association meeting. But research since then shows that 7 +- 2 is a myth. The real number is 3-4 not 5-9. Refuting research includes:
And most recently, Sheena Iyengar (author of “The Art Of Choosing”), has conducted several studies that clearly show that if you give people too many choices then they end up not choosing anything at all.
People liked having more choices to choose from but they were more satisfied with their choice when there was less to choose from.
So, if you show someone too many choices (in this case of sales/CRM services) they might not choose any and instead abandon the page.
Kelly was given five choices for the Chatbot service. Three to four would have been better.
So, is there anything you can do to encourage Kelly to re-subscribe and not change her level of membership?
In this case, the decision is probably a habit-based decision. The best thing to do, then, is to not do much at all. Don’t send her an email with information on all the membership levels. Instead, give her one or two reasons why continuing with her current subscription is the way to go and leave it at that. At a different time (not when she is deciding whether to renew), you can make a pitch for a higher premium level. But if you do that pitch while she is about to renew, you may jeopardize her habit-based renewal.
If someone is making a habit-based decision, do not give them a lot of information.
Provide people with a brief, but a logical reason for their decision so they can use that to tell themselves and others why they did what they did.
Limit the number of choices people have to make to one, two or three. If you provide too many choices then people likely won’t choose at all.
This article is part of the UX design series sponsored by Adobe. Adobe XD tool is made for a fast and fluid UX design process, as it lets you go from idea to prototype faster. Design, prototype and share — all in one app. You can check out more inspiring projects created with Adobe XD on Behance, and also sign up for the Adobe experience design newsletter to stay updated and informed on the latest trends and insights for UX/UI design.
When we look at the very best content, it’s almost always about telling a story: From memorable TV adverts that run like a romantic mini series to sophisticated modern content campaigns that draw on the user community for experiences, the straight narrative provides the kind of emotional connection that builds a great brand.
Websites in particular can benefit by placing storytelling and narrative techniques at their heart: this allows an emotional connection where otherwise the user is just reading information on a screen. If the organisation you are working with already has a strong brand story, or even their own marketing department, they will likely be full of ideas for compelling content to go on the site; but even if you’re working with a small local business or a start-up, you can help them by incorporating narrative techniques into their site and encouraging them to develop a story.
Building a narrative for the business or brand you are promoting elevates a website from shop window to company headquarters. It places the site at the centre of the business’ drive for customers, and can even help focus its own goals and direction. Naturally, narrative elements are an excellent way of incorporating text into a site for SEO and other purposes.
Everyone loves a story, so how can even basic sites incorporate narrative elements that ensure eyes stay on the page a little longer?
Stories that are authentic and inspired are arguably the most compelling and avoid the pitfalls associated with being caught out with a fake story, which, in these days of social media, can be fatal. And anyway, why look further? Most business were founded for a reason and their owners and staff are dedicated to what they do. Encourage them to look within, or just get them to tell their story and figure out how to present it.
Find the Company’s Story
How did the company start? What problems did the founders seek to address? The foundation myth remains as popular now as in the days of Romulus and Remus, and is equally effective for long-standing traditional brands as it is with alternative and ethical start-ups.
Swiss watchmakers and Belgian brewers love to advertise their medieval craft origins. On the other hand, new organisations can tap into a sense of excitement and entrepreneurship with genuine personal stories that make the founders the stars of the brand.
Traditionally this is done through the ‘about’ section, like popular eyewear brand Warby Parker. Or through a compelling series of blogs highlighting the founder’s passion for the cause, such as US recruitment start-up Zaphire, which has been highlighting owner Divan’s journey from Indian childhood to American entrepreneur.
Tap into the Community
Thanks to social media, it’s easier than ever to interact with a business’ customer base and draw out their stories. How do they use the product or service? How has the organisation improved their lives? There are many great examples of modern brands built entirely on what their customers say about them. Airbnb, the internet firm that links homeowners with space to rent and travellers needing a room, is nothing without these twin user bases. The company made their very human experiences of sharing a home into a compelling content campaign.
On a simpler level, a good set of client case studies fulfils the same function for a B2B targeted website. Case studies offer the twin benefits of illustrating the product or service and confirming success; they are great for SEO and potentially allow a business to do a bit of cross advertising or social media work with their clients. What’s not to like? A nice set of case studies is an easy way to improve a boring website that struggles for copy because the product or service is technical and business-oriented: it’s also an ideal up-sell for a web designer.
Get Sporty or Join the Struggle
Big brands piggyback on stories by buying into the success of a sports star or celebrity—that’s likely out of your client’s budget and beyond your scope as a web designer. However, if your client sponsors a local kids’ soccer team, that narrative is at least as powerful to their audience as anything Roger Federer can bring you, so get a page built and make sure it’s prominently displayed, with suitable pictures of the happy youngsters, and a few choice words to tell their story.
Recently big brands have also adopted a parallel tactic that be a great way to get your brand noticed, and that is to champion a cause. However, here authenticity really is key and only a real relationship will yield a viable story. Take Nike’s Equality campaign: it features women and athletes of colour. The site itself has evolved with the campaign: it originally featured a video telling the story of tennis star Serena Williams.
On the face of it, it seems a risky strategy—corporate America trying to piggyback on the fight for race and gender equality. But it works because Nike has built career-long relationships with athletes, and has a track record: its minute-long tribute to Michael Jordan on his retirement is still lauded as a masterpiece in storytelling as advert.
A cause-based approach will appeal to ethical businesses, and of course will be a natural fit to any charity’s website.
Just Tell a Tale
Despite the pitfalls, it is possible to simply promote a brand based on a fictional story. Providing this is clear, the approach is not ‘unauthentic’. In fact, if you do it well and build upon it, your brand can become strongly linked to the fictional characters you created. Take Swiss brand Nescafé’s Gold Blend couple: the adverts featuring a man and a woman gradually bonding and flirting over a cup of coffee were so popular in Britain in the 80s and 90s, that the company is still associated with them, and was able to revive the series years later to give its brand a boost.
Perhaps surprisingly in an age where authenticity is lauded and demanded, even fake foundation stories can be successful. On its menus, the restaurant chain Frankie & Benny’s carries a fictitious story of one of the eponymous founders leaving his native Sicily at the age of 10 and working in the family restaurant in New York’s Little Italy: arguably, this is just part of the chain’s cosy and family-friendly theme, and the tall tale doesn’t appear on the company website.
On the other hand, the clothing brand Hollister faced a bit of a consumer backlash after it became publicly known that John M Hollister was a made-up founder whose story supported the 1920s California-style branding. The brand—actually founded by parent company Abercrombie & Fitch in 2000—rode out the controversy but has gradually moved away from the story, and even the sepia tint to its photos has now gone.
If nothing dramatic is forthcoming, it is better to build a narrative website on relatively little. A sense of place can be enough: everyone comes from somewhere, and everywhere has a story. This gin distillery in the middle of Scottish whisky country has built a beautiful website based on the inspiring natural environment on its home island of Mull. It’s a good example of how narratives don’t have to be wordy: indeed, they can be very visual and fit in with the principles of modern minimalist website writing.
The Power of Storytelling
Perhaps it is not surprising that storytelling is such a powerful tool for marketing and brand building: humans have been described as ‘story-telling animals’, whose ability to build a compelling narrative has been instrumental in the rise of civilization. Primitive societies would have forged common bonds over campfire tales, and these gradually morphed into the epic tales that underpinned early religion and nationhood.
In the modern world, the Internet has very definitely supplanted the campfire, but people are still circling around looking for a tale to listen to. Sometimes, all you need is the narrative technique: This New Zealand winery’s award-winning website has all the elements you would associate with a standard approach, but is set up so that the visitor scrolls through a series of pictures and captions. Sometimes, it’s all in the telling…
Soon, the daisies will be in full bloom, and we can finally hang up that winter coat. As we enter these final phases of winter, it’s time that we start thinking about our Spring projects. Of course, no Spring project is complete without Spring fonts, but where do you even begin? Right here, of course! We’ve put together a quick list of some of our favorite spring fonts for you to use in your upcoming projects.
Lazy spring day
Since winter is over, and we can feel the tips of our toes again, it’s time to relax. Not too much, of course, there’s work to be done. In order to get in that relaxed spirit, try adding Lazy Spring Day to your list of spring fonts.
This handwritten font puts off the perfect vibes for a nice Spring day. The rounded curves give it a welcoming feel that pretty much anyone can relate to. Give it a try.
Ofaly
It’s pretty easy to see how Ofaly fits into the Spring fonts category. It’s handwritten, beautifully curved, and you practically smell the flowers through the screen. If you’re a fan of the Spring season, consider adding Ofaly to your collection.
Sunny Spring day
The name of this font perfectly sums up the feel it gives off. Sunny Spring Day is bright, warm, and perfect for a variety of Spring projects. The color theme matches perfectly to that of a daisy, and it couldn’t be more perfect for a Spring project.
Lemon Jelly
Whether you’re a fan of lemons or not, there’s no arguing the authenticity of this font. Lemon Jelly brings the beauty of Spring right to our computer screens. The bold, rounded letters are perfect for a variety of projects. It’s unique, but still perfectly legible.
Blackberry Jam
Let’s continue the fruit flavored dessert trend, shall we? Blackberry Jam is another excellent font that displays both rounded curves, and a few sharp edges. It’s almost as if it was handwritten by a fountain pen. Regardless of how it was made, Blackberry Jam would be a great choice for any Spring themed project.
Bunch Blossoms
Continuing with the handwritten theme, Bunch Blossoms is a great addition to anyone’s collection of Spring fonts. The messy, somewhat cursive style of the letters give a very personal and homemade feel. Just like that apple pie that sits on the windowsill on the perfect Spring day.
Melon Mojito
Spring brings a freshness like no other season. With that freshness comes fresh fruits and veggies that we all like to enjoy. The Melon Mojito font perfectly captures the fresh feeling Spring brings with it. It’s fun, playful, and one of the best Spring fonts out there.
Vigenta
Let’s not forget about Easter! Vigenta is a great font to help capture the spirit of Easter. It features tall, but narrow letters that look good on any Spring themed project. It’s classy, simple, and a great addition to your Spring fonts.
Fairy Tales
Based on old-fashioned ads, the Fairy Tales font makes your next Spring project come to life. It’s not everyday that you get to live in a fairy tale, but this font makes it a little more achievable. This font package also comes with 10 animal vectors to add to your collection. All hand-drawn, of course.
The Fontaholics Colourbox
Let’s finish off this list of Spring fonts with a bang, shall we? There’s no better way to celebrate Spring than with some color. The Fontaholics Colourbox comes with your own personal Spring care package. It features 10 fonts, 40 watercolors, 100 vectors, and 14 different patterns. Regardless of the project you’re working on, I’m sure this package will have something for you.
Spring, here we come
And there you have it, our favorite Spring fonts for this season. If you like any of them, and want to spice up your Spring projects, follow the links below each font, and enjoy!
Even though most of us use Google Chrome nowadays, and maybe even Explorer for those of us that are little more patient, Firefox is still a common and recognizable name. That’s right, Firefox.
In recent news, Firefox has a complete rebranding in the works. We’re not just talking about a new logo and a catchy phrase or two, we’re talking a complete overhaul of the name and what it represents as a whole. As they put it on their blog:
“With the rapid evolution of the internet, people need new tools to make the most of it. So Firefox is creating new types of browsers and a range of new apps and services with the internet as the platform.”
The new logo
A lot at Mozilla is changing, including the Firefox logo. In fact, all of their icons are changing in attempt to be more uniform. According to the team at Firefox, the old Fast Fox doesn’t offer enough design tools to represent what they’re about anymore.
In order to design the perfect logo and corresponding icons, a specialized team of designers over at Mozilla has been put together. So far, they’ve put together 2 new systems:
“Working across traditional silos, we’re designing a system that can guide people smoothly from our marketing to our in-product experiences.”
“Today, we’re sharing our two design system approaches to ask for your feedback.”
As you can see, there are a few design ques that they’re keeping from the original logo. After all, Firefox just wouldn’t be the same without their iconic fast fox logo.
Involving the community
In the past, there have been quite a few rebranding attempts that didn’t really sit well with the community. Perhaps to avoid this sort of backlash, Mozilla has allowed the community to weigh their opinions on the blog post that announced this change.
Of course, Mozilla is taking caution during this transition, and rightfully so. We’re not just talking about a logo change, we’re talking about a structural change that can easily decide the future of the company. And, even though they want to know your opinion, they make it very clear that there will be no voting or crowdsourcing. The final decision will be up to them.
The masterbrand icon
One of the most noticeable changes will be the master icon. Yes, that little flying fox that circles the ominous blue circle will be leaving us, but not completely. As we said before, taking away the fox completely would mean abandoning their name, too. The design team is very aware of that, and came up with two new master icons:
The spirit of the Firefox is still very much alive in these new icons, taking the most iconic characteristics from the original image, and evolving them. One being the face, and the other the tail, it’s still very easy to pick these icons out as Firefox icons. Although they seem to be shifting towards a more universal look, the colors and overall recognizability is still there.
Firefox Quantum desktop icon
Surprisingly, the desktop icon isn’t changing that drastically. Albeit, it’s not exactly the same, but it’s still the fox that we’ve all grown to know and love:
Above are the two proposed system designs that may be coming to a desktop icon near you. As you can already tell, it’s still a fox. The first system seems to relate more to the original icon, just with a different color theme and fox position. The second goes a little bit farther off the beaten path and ditches the blue circle, and gives the fox arms, as well as a more rounded look.
Which set will they choose?
Arguably, both sets of icons look pretty good. They’re still probably going to pump out a few more ideas and listen to the feedback, but ultimately, I would think that these two systems are very close to the finished product that we can expect.
What do you think? Is Mozilla going through a much needed change, or are they making the biggest mistake of their careers? There are quite a few icon possibilities in the images above, so take a look and decide for yourself.
I came across this neat little animation in a designer newsletter — unfortunately, I lost track of the source, so please give a shout out if you recognize it! In it, a block of text appears to bleed into view with a swirl of colors, then goes out the same way it came in. It’s a slick effect and one I wanted to recreate in code.
The approach I took was to use SVG text as a clip path for an SVG background. We must use SVG text because CSS currently only allows us to animate the background with text clipping if the background is a GIF, which we’re not going to do.
Our first task is to create a background of different SVG shapes. Oval-y blobs work pretty well. The thing to make sure of is to match the size the artboard/canvas in whatever illustration app you’re using to the same dimension as the viewBox you want the final work to be. (In Inkscape, this option is under the Scale section of Document Properties.)
The goal is to cover most of the artboard with a variety of shapes. I’ve found that it looks best if some of the shapes overlap.
Next, we’ll create some text in a , group the objects that make up the background inside a element, and apply a CSS clip-path on that group. Altogether it looks something like this:
<svg viewbox="0 0 700 225">
<!-- Set up our text inside of a -->
<clipPath id="textClip" class="filled-heading">
<text y="70">We are</text>
<text y="140">Creators</text>
<text y="210">+Innovators</text>
</clipPath>
<!-- Place our background shapes in a and apply the above to it -->
<g id="background" clip-path="url(#textClip)">
<path d="m449.78..." />
</g>
</svg>
At this point, all we get is some plain text because we haven’t gotten around to the background animation quite yet.
So what about that animation? We can use a relatively simple CSS animation like this:
/* Animate the background shapes */
#background path {
animation: pulse 4s cubic-bezier(0.455, 0.030, 0.515, 0.955) infinite;
/* Necessary to keep the SVG objects in place while scaling */
transform-origin: 50% 50%;
transform-box: fill-box;
}
@keyframes pulse {
/* Rotating it along with the scale makes it a little bit more fancy */
0%, 100% { transform: scale(0) rotate(33deg); }
35%, 65% { transform: scale(1) rotate(0deg); }
}
So far, so good.
?transform-box: fill-box; is not supported in Internet Explorer or Edge at this point, so if you need to support those browsers, you’ll need to use a JavaScript workaround, like this one.
We could start painting things in by hard-coding color values using a text or vector editor, but it’s more fun to color the shapes dynamically. Something like this:
// Define an array of colors
const colors = ['#f5a147','#51cad8','#112b39'];
// Select the SVG paths
var blobs = document.querySelectorAll("path");
// Randomly apply colors to the SVG fill property
blobs.forEach(blob => {
blob.style.fill = colors[Math.floor(Math.random() * colors.length)];
});
In order to change the text values for each iteration, we need to first add them to the SVG clip path.
Then we can either use CSS or JavaScript to reveal the lines of text in our preferred order. Unfortunately, we can’t surround each section of using a element because elements don’t work inside of a clipPath. For this post, we’re going to split things up into three CSS animations, one for each group of three paths:
At this point, we can have a little fun. For example, we can swap backgrounds for a different effect. I used Inkscape’s star tool with three to four points to generate some random shapes (using Inkscape’s random parameter) and then colored them using a palette from one of the many color scheme generators (I used Palx) to produce this version:
The backgrounds don’t even need to fill up the entire background, depending on the effect that we want to create. For example, we could duplicate the text using a element and fill in the text using that as seen in this demo.
Or we could mix it up by rotating the background blobs like this:
To make the colors change for every new set of words, we could use either a CSS or JavaScript for the animation. I used JavaScript (and moved the CSS animation that was hiding the text lines to the JavaScript):
To center the text horizontally, add x="50%" text-anchor="middle" to each element (Demo). Centering it vertically would take more manual calculation since we’re working with a multi-line format.
One of the nice things about this approach is that, since it uses SVG, it is responsive by default!
P.S. After I made this approach and was looking for the original GIF author, I came across another recreation by Martí Fenosa doing the same effect using a different approach. Check his demo out as well because it’s clever!
I love coming across little overlooked CSS gems, like the gradien (grad) and turn (turn) units that Ken Bellows uncovers in his post explaining them. I don’t know, maybe y’all are already aware of them, but they’re certainly new to me.
They’re additional options for dealing with angles, where degrees (deg) and radians (rad) are more commonly known. I’m partial to degrees anytime I’m working with rotations. But now that I know there’s an easier way to express a half rotation by using 0.5turn instead of 180deg, I can see myself reaching for turns much more often.
When you’re designing an animation or thinking about how to add some rotation to your design, how are you thinking about it? You probably aren’t thinking in numbers. … You don’t usually think in degrees or radians. You think in terms of full turns and portions of turns. At least, I do.
After looking at his table of comparisons, I take the point:
Degrees
Radians
Gradians
Turns
My Fav Unit
30deg
0.52rad
33.33grad
0.08turn
Gradians
45deg
0.79rad
50grad
0.13turn
Gradians
60deg
1.04rad
66.67grad
0.17turn
Gradians
90deg
1.57rad
100grad
0.25turn
Turns
180deg
3.14rad
200grad
0.5turn
Turns
360deg
6.28rad
400grad
1turn
Turns
720deg
12.56rad
800grad
2turn
Turns
1080deg
25.12rad
1200grad
3turn
Turns
Hear, hear! And since these units are supported back to IE 9, seems like something fun to try out.
(Hat tip to Rachel Andrew for sharing this in her awesome CSS Layout News email.)
Imagine you design a system for data researchers. Or an application for energy management. Or a dashboard for corn traders. Maybe you’re designing something like that right now. In all the mentioned cases, people will expect tables. Not those fancy ones from design inspiration sites but Excel-looking monsters with hundreds of cells and complex interaction.
In this case, a designer faces many challenges. For instance, matching design with existing frontend frameworks or struggling with “uncomfortable” data that smashes the layout. We’ll overcome these problems by means of the following steps: systematize needs, go atomic, and define interaction.
1. Systematize Needs
So, you’ve interviewed the target audience and figured out their needs and wants. Now it’s time to piece together findings and transform them into an interface structure. For example, one user said, “I need to see how my data affects other parts of the application.” Or while watching another person work with old software you noticed he uses shortcuts and doesn’t touch a mouse at all. What does it mean?
The first user’s words are about input validation and hints. You’ll need to consider attaching alert or help information to a table. Or develop a system of meaningful colors. It depends on the domain and the mental model. The observation of the second user’s work might be a sign you need to design all actions keyboard-accessible. And you’ll probably need to think about shortcuts more profound than just “Cmd + C” and “Cmd + V”.
Here are some observation-assumption pairs.
“I need to operate dozens of items at a time easily.”
Allow cell multi-selecting? Add checkboxes to select many rows?
“Now we do all the calculations this way.” [Shows Microsoft Excel]
Is Excel effective for this purpose? What features can we borrow?
“Can we somehow know beforehand if this name is already on the server.”
Data validation on the fly? Error messages or auto-correction?
“Usually I enter this information. It’s pretty generic.”
Suggest default values, defaults or templates?
As a result, you’ll have a list of people’s needs and wants. Open questions are helpful for figuring out real needs and filtering out whims:
“What helps you to work faster? What can make your choice easier? How is this feature affecting the efficiency of your work? What will change if you aren’t able to do X?”
So, what’s next? Now it’s time to build a logical skeleton for your table. A scheme of what it contains and is able to do. If you go directly to wireframing or prototyping, you step on the evil path of endless re-drawing and fighting with legacy.
Below is an example of what you might start with. It’s the tree of features. And the basic building block of any table is a cell. Cells unite into rows and columns, which can have specific features different from those of separate cells. And finally, we go to such important supplements of a table as a top bar with buttons, keyboard commands, and handling errors.
The tree of features prevents you from making extra work and helps to focus on what is important. A well-organized feature tree is also helpful for the development team. They can match planned features with available frontend libraries and find the best way to turn designs into code.
On one of my projects, we used Angular Material framework. Unfortunately, Angular tables were too simple. We found an ag-Grid library that supported our functionality but had one limitation. It had no ability to expand a row and put children rows inside. We had revealed this issue before we put any effort into it and adjusted the design.
In A Nutshell
Start building a complex table with collecting and prioritizing user needs. Consider a non-table solution, for example, a chart.
Draw a tree diagram that systematizes all the needed features. Use it as a plan for producing visuals.
So, the needs and functionality are defined, and you know technical limitations. It’s time to mockup your table. Basically, the atomic approach is designing small UI components first and then assembling bigger ones. We’ll gradually move from elementary particles like fonts and colors to such large modules like a header or column. I deliberately chose the strict brutalist style for mockups so that we can concentrate on function, not appearance.
Fonts, Colors, Icons
These parts can be already defined by the design system or UI framework you use. If you create a table for an existing product, check whether its color palette, fonts, and icons meet the table needs. On the picture below, I showed some of the shades of gray needed for table frames, lines, fills and text. Red and blue tints stand for warning-error-destructive and active-enabled-selected stuff. Text styles are to distinguish between primary and secondary information, titles and body text.
Cells And Accessories
When the table atoms are ready, we can proceed with molecules?— different types of cells. In the first place, it’s important to think about normal, hover and active states of each element beforehand. Then go clicked, disabled and other states.
On one of my projects, we had eight types of cells with their own interaction. The simplest ones are text and numeric cells. In our case, it was allowed to populate numeric cells with non-numeric content, such as “N/A” (not applied) and “N/C” (no control). It was the peculiarity of the domain. Dropdowns and date pickers are more complex and have child elements. Finally, we had table cells that represented in-row commands.
Cells can have such accessories as tooltips, input hints, error messages, placeholders, etc. At this stage, they are static, but a designer should later specify the logic of how they show up (animation, delay, etc.).
Rows And Headers
When cells are designed, you can make rows and see if various combinations work well together. Once I designed a table that had complex editing logic. Some of the properties were provided by users, whereas others were automatically calculated or populated with default values. Below is a mix of read-only and editable cells within one row.
Note that the cursor is different when hovering over read-only and editable cells. Clicking on them triggers either selection of a row or going to the editing mode of the editable cell.
In the next image, you can see that people can select one or multiple rows:
Now it’s time to think about the table header. From my experience, it’s often impossible to control column title length and stick to one line. Even with a good writer on a team, you won’t keep all the texts short. Some of the tables require long technical titles or localization. Phrases, which were one-line in English, might become two- or three-line in Greek, German or Hungarian. Therefore, I showed different variants:
Users of data-based software often need sorting and filtering. It helps them to find valuable information in the large chunks of data. The challenge with sorting and filtering is to combine sorting controls and filtering boxes with other header elements?—?column titles, measurement units, etc.
Unlike table cells, filter boxes usually have “reset” icon on the right so that users can explicitly disable them and see unfiltered content.
In my example, there are three types of filter boxes. The alphanumeric filter enables search by letters and numbers. It supports wildcards?—?unknown number of unknown characters. For instance, if I type 45*A1, it might result in showing the rows with such values as 45A1, 45982A1B, 45A109B and 096445-A1.
Wildcards are a tricky feature since they depend on people’s habits. When I designed tables for technical specialists, we assigned the asterisk sign (*) to the unknown number of unknown symbols. For insurance analysts, I chose traditional SQL symbol?—?the percentage sign (%)?—?because they were used to it. As for the dropdown filter, it switches between a certain number of mutually exclusive text options, numbers or numeric ranges.
The date picker filter has a calendar and works like its cell equivalent. It’s good to allow users both enter the date manually and pick from the calendar. If they know what they are searching for, it’s much easier to type than click.
One more important thing is to format any meaningful input automatically and not to bother people with “invalid format” errors. On one of my projects, we allowed entering such dates as 01/25/2017, 6.12.17 and September 4 2016, and also filter by a month or year only.
Columns
One of the frequent features of complex tables is pinned columns. Usually, columns that contain key information, for instance, element names or statuses, are not scrollable.
Although table columns should smartly adjust to content size, it happens when text is truncated. In this case, column resizing is helpful. Users can drag the column edge and see long content. They might also need to squeeze an unimportant column or the one with a short text.
Another way to handle long text strings is either to stretch a column by the longest content or wrap it and put on multiple lines. The first approach works better for more or less similar text strings. The second one works better if seeing the full content is more important for people than keeping the table vertically compact.
On one of my projects, we defined the minimal widths of columns to prevent tables from ungraceful resizing. We disabled squeezing columns behind a certain width depending on the content type.
Top Bar
What constitutes a table? Cells, columns, rows. In addition, complex tables often have a top bar. Like the rest of the components, the top bar is built of smaller elements?—?a title and commands.
Below, I collected the list of commands with all the variety of states, which we used in one of the products. We had icon commands for obvious metaphors like plus = add / create, trash bin = remove, arrow = move. Non-generic commands (e.g., assign, archive, balance) needed explicit textual naming. Moreover, some of the commands were accompanied by a dropdown menu.
Now we can try to combine different elements and see if it works. Here are some examples.
Of course, this is not the ultimate list of features and elements. It differs from one project to another and may include other things, for example:
Sorting by more than one column;
Customizable set of columns (ability to toggle them);
Expandable rows (a parent row can have child rows);
Logical operators for filtering and search (“and”, “or”, “else”, etc.).
If you hesitate which features to design and which not, here is a good principle. It’s Occam’s razor, or the law of parsimony. A designer should not create new instances if the existing ones satisfy the needs. You should “cut” the geeky features, which users might theoretically need in undefined future. The same story for the features that ideally fit one of a hundred situations but are useless in the remaining ninety-nine cases.
Whole Table
When all building blocks are ready, you can assemble a couple of tables for various purposes. This is a chance to spot inconsistencies. Most frequently I dealt with the following three types.
Read-Only Table
The simplest table type to build since it only shows as-is data. There are no filtering or editing options. Sorting or row hierarchy might help to analyze large chunks of data. Such a table is used for showing data, informing people about something.
Search Table
The cells are not editable, the header has filter boxes and sorting controls, it’s possible to select rows. From my practice, such tables help to find, compare and select an item or several items out of a large range. For instance, filter out five of six thousand irrelevant tools from a catalog and then choose one needed tool.
Editable Table
All or some cells are editable. Usually, there is no filtering because the order of rows might be customized. Such tables typically are accompanied by a toolbar and allow performing actions with rows.
In A Nutshell
Start with the smallest components, then gradually move towards bigger ones . Finally, mock up the whole thing.
Think about all of the possible states for each component beforehand.
Use Occam’s razor principle to keep the number of elements minimal yet sufficient.
Building blocks aren’t enough for such a complex interface piece as a table. A designer should think about “the rules of the game” and design logical principles and conventions behind the visual part. I’ll describe some typical things you’ll need to consider.
Numeric Data
How many decimals should numbers have in your table? One, two, five? What is the optimal precision level? I decide based on the accuracy users need for making the right decision. In some professions, fluctuation between 10932.01 and 10932.23 matters, whereas in other areas numbers 14 and 15 don’t really make a difference.
This is an example of numeric data rules my team used in a sophisticated engineering product.
Length
Two decimals (57.53 m, 3.16 km); spaces are used as thousand separators (403 456.56 m).
Weight
Two decimals (225.08 kg, 108.75 t); spaces are used as thousand separators (12 032.17 kg).
Money
Two decimals ($9.45); commas are used as thousand separators ($16,408,989.00).
Diameter
Three decimals (10.375 cm); no separators needed.
Latitude and longitude
Eight decimals (26.4321121); minus sign used for the western longitude and southern longitude (-78.05640132).
Default
For units not listed above?—?two decimals (32.05 g/m³, 86.13 C°).
One more thing we considered was the difference between the “true” data saved on servers and “approximated” data in the interface. The system used extremely accurate numbers with dozens of decimals in all calculations but people didn’t need to see it all the time. So we decided to show the number of decimals described above and expose the full number only when a table cell is active. For example, an engineer could enter 134432.97662301, and once he pressed Enter, the table showed 134 432.98. After clicking one more time, the engineer would see 134432.97662301 again.
Input Validation
Unlike the previous item about numbers, validation is important only for editable tables. It has two aspects. Firstly, the rules that qualify the entered data as valid or invalid. Secondly, either the messages that help to correct invalid data or mechanisms that fix it automatically. Usually, validation rules are too complex to reflect them in mockups or prototypes. So, designers can document them textually or in the format of flowcharts.
This is an example of message templates I once used. Text in angle brackets is dynamic and comes from the calculation engine or database.
Should be greater than numbermeasurement unit. Optional explanation.
Should be less than numbermeasurement unit. Optional explanation.
Should be between number 1 and number 2measurement unit. Optional explanation.
Min value should be less than max value.
Max value should be greater than min value.
Min and max values should not be equal.
Commands
Editable tables with toolbars usually need a set of rules when toolbar commands are enabled and when disabled. These states can depend on the fact that a row is selected, on the number of selected rows, on the position or content of the selected row or rows, and other conditions. Below is one of the numerous ways to document such logical rules.
So, we have a table with some chemicals. It has such commands as “Add a row”, “Move up”, “Move down”, Delete”, “Recalculate”, and “Settings”.
And here is the description of command states. It turns out their availability depends on one or several conditions.
The next step is defining the result of each command. For example, what happens when I select two remote rows and click “Move up”? Or what is the result of clicking “Recalculate”? All these questions should be answered or at least considered beforehand.
Container And Responsiveness
How will the table be placed in the interface? For example, will it occupy some space within an existing container or be a separate module? The answers to these questions totally depend on a product and it’s better to foresee possible issues and thoroughly define the principles.
When I design web applications, I usually think about at least three types of containers for tables. The most typical case is when a large table is the center of a screen and occupies as much space as possible. Such a table might not have its own title since the whole screen is devoted to working with the table. Small and medium tables can become autonomous modules of a dashboard as well as other items like graphs, diagrams, schemes. In this case, the top bar of a table plays the role of the card header. And finally, in large enterprise applications, tables often exist inside of popup dialogs. There should be wise guidelines so that dialogs don’t blow up because of too much content.
Another aspect of placing a table in the UI environment is the available screen area. The majority of enterprise applications are meant to be used primarily on the desktop. Table responsiveness is limited to simple stretching and squeezing behavior. Typically, tables with lots of rows and few columns occupy 100% of the available width. As a result, cells are evenly distributed on the screen, and more text can be shown without truncation of wrapping. On the other hand, huge gaps usually appear between columns, which contradicts the design law of proximity. That’s why some applications use lines between the rows or white-end-gray zebra coloring to make information better readable.
A better way is to define rational default widths and allow manual resizing if needed. For reading a table, it’s better to have some empty space on the right than gaps between the columns.
If a table contains both many rows and columns, horizontal and vertical scrolls are unavoidable.
The key essence of a complex table is being large, thus giving the bird-eye view of data. Unfortunately, I cannot name a really good method of using large tables on smartphone screens. Excel and Google spreadsheets lose their power on small screens, although there are effective ways to handle small tables. For instance, converting a table to a set of cards.
Accessibility
Even an exceptionally smooth and nice table might become a nightmare for users. Therefore, it’s so important to follow accessibility principles. Web Content Accessibility Guidelines (WCAG 2.0) has a chapter about tables. Most of the material is about proper coding; however, a designer has a lot to think about too.
Here are major design considerations in terms of accessibility.
Give a title and prepare a concise summary.
A visually impaired user should be able to get the idea of a table without voice-processing all its cells.
Mind the font size.
Although there is no official minimal size for the web, 16 px (12 pt) is considered to be optimal. Additionally, a user should be able to increase it up to 200% without breaking the whole layout.
Test colors for people with color blindness.
Text and controls should have enough contrast with their background. Color ratio 3:1 is minimally required (the more, the better). Also, color shouldn’t be the only way of marking things. For example, error messages shouldn’t rely on red text only, a warning icon will give additional clues to color-blind users.
Avoid small and ambiguous controls.
Clickable components are considered to be touch-friendly if they are at least 40×40 px. Commands represented by icons should either be labeled or have tooltips and alternative text. Designers shouldn’t overuse icons because users might not understand complex metaphors correctly.
You can also utilize online tools for checking accessibility, for instance, Wave. Not only does it find accessibility issues and features, but also highlights them directly on a page and explains how to fix them.
In A Nutshell
Content unification and formatting is the designer’s work too.
Think beyond “things”, elements of your interface, and consider use cases and frequent patterns.
When everything inside is consistent and compatible, it’s time to think about how it fits the rest of the interface.
Conclusion
We’ve just walked through the process of constructing a complex table. Different projects require different approaches, but there is one universal principle. A designer should make all elements work together in any combination. That’s why it’s good to start with collecting needs and making small blocks first. And, of course, testing with users as soon as you have something clickable and realistic.