Archive

Archive for June, 2020

New in Chrome: CSS Overview

June 30th, 2020 No comments
Screenshot of the Chrome DevTools Experimental Settings window showing the CSS Overview option selected.

Here’s a fancy new experimental feature in Chrome! Now, we can get an overview of the CSS used on a site, from how many colors there are to the number of unused declarations… even down to the total number of defined media queries.

Again, this is an experimental feature. Not only does that mean it’s still in progress, but it means you’ll have to enable it to start using it in DevTools.

  • Open up DevTools (Command+Option+I on Mac; Control+Shift+I on Windows)
  • Head over to DevTool Settings (? or Function+F1 on Mac; ? or F1 on Windows)
  • Click open the Experiments section
  • Enable the CSS Overview option

And, oh hey, look at that! We get a new “CSS Overview” tab in the DevTools menu tray when the settings are closed. Make sure it’s not hidden in the overflow menu if you’re not seeing it.

Screenshot of the CSS Overview window in Chrome DevTools. It shows an overview of the elements, selectors, styles and colors used on the site, which is CSS-Tricks in this screenshot.
Lovely color palette you got there, Mr. Coyier. ?

Notice that the report is broken out into a number of sections, including Colors, Font info, Unused declarations and Media queries. That’s a lot of information available in a small amount of space right at our fingertips.

This is pretty nifty though, huh? I love that tools like this are starting to move into the browser. Think about how this can help us not only as front-enders but also how we collaborate with designers. Like, a designer can crack this open and start checking our work to make sure everything from the color palette to the font stack are all in tact.

The post New in Chrome: CSS Overview appeared first on CSS-Tricks.

Categories: Designing, Others Tags:

Global and Component Style Settings with CSS Variables

June 30th, 2020 No comments

The title of this Sara Soueidan article speaks to me. I’m a big fan of the idea that some CSS is best applied globally, and some CSS is best applied scoped to a component. I’m less interested in how that is done and more interested in just seeing that conceptual approach used in some fashion.

Sara details an approach where components don’t have too much styling by default, but have CSS custom properties applied to them that are ready to take values should you choose to set them.

For each pattern, I’ve found myself modifying the same properties whenever I needed to use it — like the font, colors (text, background, border), box shadow, spacing, etc. So I figured it would be useful and time-saving if I created variables for those properties, define those variables in the ‘root’ of the component, and ‘pass in’ the values for these variables when I use the pattern as I need. This way I can customize or theme the component by changing the property values in one rule set, instead of having to jump between multiple ones to do so.

Direct Link to ArticlePermalink

The post Global and Component Style Settings with CSS Variables appeared first on CSS-Tricks.

Categories: Designing, Others Tags:

Responsive Styling Using Attribute Selectors

June 30th, 2020 No comments

One of the challenges we face when implementing class-based atomic styling is that it often depends on a specific breakpoint for context.

<div class="span-12"></div> <!-- we want this for small screens  -->
<div class="span-6"></div>  <!-- we want this for medium screens -->
<div class="span-4"></div>  <!-- we want this for large screens  -->

It’s common to use a prefix to target each breakpoint:

<div class="sm-span-12 md-span-6 lg-span-4"></div>

This works well until we start adding multiple classes. That’s when it becomes difficult to keep a track what relates to what and where to add, remove. or change stuff.

<div class="
  sm-span-12 
  md-span-6 
  lg-span-4 
  sm-font-size-xl 
  md-font-size-xl 
  lg-font-size-xl 
  md-font-weight-500 
  lg-font-weight-700">
</div>

We can try to make it more readable by re-grouping:

<div class="
  sm-span-12 
  sm-font-size-xl 


  md-span-6 
  md-font-size-xl 
  md-font-weight-500 


  lg-span-4 
  lg-font-size-xl 
  lg-font-weight-700">
</div>

We can add funky separators (invalid class names will be ignored):

<div class="
  [
   sm-span-12 
   sm-font-size-xl 
  ],[
   md-span-6 
   md-font-size-xl 
   md-font-weight-500 
  ],[
   lg-span-4 
   lg-font-size-xl 
   lg-font-weight-700
  ]">
</div>

But this still feels messy and hard to grasp, at least to me.

We can get a better overview and avoid implementation prefixes by grouping attribute selectors instead of actual classes:

<div 
  sm="span-12 font-size-lg"
  md="span-6 font-size-xl font-weight-500"
  lg="span-4 font-size-xl font-weight-700"
>
</div>

These aren’t lost of classes but a whitespace-separated list of attributes we can select using [attribute~="value"], where ~= requires the exact word to be found in the attribute value in order to match.

@media (min-width: 0) {
 [sm~="span-1"] { /*...*/ }              
 [sm~="span-2"] { /*...*/ }   
 /* etc. */ 
}
@media (min-width: 30rem) {
 [md~="span-1"] { /*...*/ }   
 [md~="span-2"] { /*...*/ }   
 /* etc. */   
}
@media (min-width: 60rem) {
 [lg~="span-1"] { /*...*/ }   
 [lg~="span-2"] { /*...*/ }   
 /* etc. */   
}

It may be a bit odd-looking but I think translating atomic classes to attributes is fairly straightforward (e.g. .sm-span-1 becomes [sm~="span-1"]). Plus, attribute selectors have the same specificity as classes, so we lose nothing there. And, unlike classes, attributes can be written without escaping special characters, like /+.:?.

That’s all! Again, this is merely an idea that aims to make switching declarations in media queries easier to write, read and manage. It’s definitely not a proposal to do away with classes or anything like that.

The post Responsive Styling Using Attribute Selectors appeared first on CSS-Tricks.

Categories: Designing, Others Tags:

Five 5-minute Videos from Ethan on Design & Accessibility

June 30th, 2020 No comments

Ethan:

I’ve been working with Aquent Gymnasium to produce a series of five short tutorial videos, which have been launching over the course of this past week. Since the last video just went live, I’m thrilled to share the whole list with you:

Introduction to using VoiceOver on macOS
Designing beautiful focus states
Flexible and accessible typesetting
Responsively designing with viewport units
Designing beautiful and accessible drop caps

Five minutes is a real sweet spot for a how-to video. Ain’t no time to screw around. I loved every minute of these.

Direct Link to ArticlePermalink

The post Five 5-minute Videos from Ethan on Design & Accessibility appeared first on CSS-Tricks.

Categories: Designing, Others Tags:

Constructive Feedback

June 30th, 2020 No comments
constructive feedback

Without feedback, growth — both personally and professionally — would be difficult. Colleagues wouldn’t know how to better contribute to the team. Salespeople wouldn’t hone their selling skills and increase their close rates. Managers wouldn’t improve their leadership skills.

People need feedback to know how their actions and behaviors impact those around them, but delivering constructive feedback is a bit of art and science. In this guide, we walk through everything you need to know to develop, collect, and deliver feedback appropriately.

constructive feedback

Chapter synopsis

  • Chapter 1: Introduction
  • Chapter 2: What is feedback? We start by covering the basics of feedback, including types of feedback, the qualities of effective feedback, and how to ask for feedback.
  • Chapter 3: Peer feedback. Giving and receiving feedback among peers in the workplace is a lot like the process between a manager and employee, but it does have a unique context.
  • Chapter 4: Employee feedback. If you’re looking for tips on delivering feedback to employees, this is the chapter for you. There’s great advice on how best to approach the process and when.
  • Chapter 5: Customer feedback. Feedback doesn’t just involve employees. Customers are a prime source of feedback. In this chapter, we discuss ways you can collect it and make use of it in your business.
  • Chapter 6: How to collect feedback. Chapter 2 covers the basics of feedback, but this chapter shares some specific feedback styles you can try in your organization. We also cover how you can use JotForm for collecting feedback — regardless of the style you choose.

Remember to bookmark this guide for later reference. You never know when you might need to brush up on giving feedback or want to try a new feedback style.

What is feedback?

Feedback provides an opportunity for someone to gain insights about their personal or professional actions and behaviors. Why is feedback important? Andy Bailey, founder and coach at Petra Coach, says it’s crucial for people to acknowledge where they stand in their interpersonal relationships and with the quality of their work product.

“We’re creatures of habit, so without feedback, we tend to continue moving forward in the same way we always have, often without realizing our shortcomings. We need others to stop and tell us what they are seeing, so we can incorporate outside thoughts and suggestions into our ideas of ourselves and improve accordingly,” Bailey says.

feedback

According to Arquella Hargrove, president of Epic Collaborative Advisors, a common feedback scenario involves a manager and an employee discussing on-the-job performance. Another, more personal scenario, is when married couples exchange feedback to keep their marriage strong.

Breaking down feedback

Types of feedback

Feedback can be classified in a few different ways:

  • Positive versus negative. Positive feedback is about affirming that the recipient is doing something as expected. In contrast, negative feedback lets someone know their actions need to be corrected. “This could be telling someone they’re exhibiting inappropriate behavior at work,” says Hargrove.
  • Formal versus informal. Formal feedback is typically given on a set schedule and is much more involved, such as an annual review. Informal feedback tends to be brief and is usually given shortly following an action or event. “It may be more random, like a quick aside in the hallway or a response sent via email,” explains Bailey.
  • Annual versus monthly. Feedback can be given at different intervals; annual, biannual, and monthly reviews are common in the workplace. However, more frequent feedback — weekly, daily, or even throughout the day — may be warranted, such as when a new employee is being trained.
  • Verbal versus written. Feedback may be given verbally, in writing, or through a combination of both forms. In most cases, written feedback is considered more formal.
  • Manager versus peer. The type of feedback given depends on the relationships of the people involved. For example, a manager and a peer would have different perspectives in their feedback to an employee.

Qualities of effective feedback

Feedback can be ineffective if it isn’t given in the right manner. Bailey and Hargrove note that the most effective feedback has several qualities:

  • Objective. “Keep your personal feelings toward the person at bay,” says Bailey. Even if you’re not pleased about the situation, any hostility in your tone could cause the recipient to automatically shut down or become defensive.
  • Timely. “Don’t wait a month to say something you should have said immediately after the fact,” says Hargrove. She explains that, in many cases, feedback should follow quickly after an event while it’s still fresh and clearly referenceable.
  • Constructive. Show you respect the receiver and that you’re giving feedback with their best interests in mind.
  • Actionable. Feedback must include advice that the receiver can translate into immediate next steps, rather than telling them what they’ve done wrong just for the sake of getting it off your chest. “Help them set up measurable performance indicators based on your feedback that they can track of moving forward,” notes Bailey.
  • Warranted. It can be difficult as a leader to avoid micromanaging, but it’s crucial that you don’t give feedback for every decision or action your employees make. “Give them the space to make mistakes and learn from them. If they aren’t showing they’ve learned and corrected on their own, that’s when you can step in and provide insight,” explains Bailey.

How to ask for feedback

Bailey says that asking for feedback requires self-awareness and humility, crucial traits for business professionals. He says you must honestly ask what needs fixing to be able to make effective changes. It can be as simple as stopping by your supervisor’s or peer’s office and asking for their thoughts, or setting up a more formal time to meet and discuss. “However, if you ask for feedback, make sure you are prepared for and open to receiving it,” Bailey cautions.

When receiving feedback, Hargrove says to keep an open mind. Ask follow-up questions to clarify and better understand what the person is trying to communicate. Don’t be on the defensive. “Remember that the person giving the feedback probably doesn’t like delivering it. Be introspective and see how you can use what they said to improve moving forward,” Hargrove says.

Now that we’ve solidified the concept of feedback, let’s move into one of the feedback areas we mentioned above: peer feedback.

Peer feedback

Giving feedback to a peer can seem even tougher than giving feedback to a subordinate — with peer-to-peer feedback, you lack authority. As a manager or supervisor, you’re expected to criticize employees’ work, if warranted. But as a peer, you aren’t afforded that same expectation, which is why it can often be difficult to let a coworker know they’ve done something wrong.

Below are several considerations and tips for giving peer feedback to help minimize friction.

peer feedback

Peer feedback considerations and tips

“In most cases, the best way to give constructive feedback to a peer is directly,” explains Charlie Marchant, general manager of Exposure Ninja. She recommends delivering it privately rather than publicly.

Also, much like Hargrove’s advice, she notes that you should do it in the moment. The worst thing you can do is ignore the situation at the time and bring it up weeks or months later, after it’s been forgotten or has happened again. “It’s better to address the situation when it’s fresh in everyone’s mind,” Marchant says.

If you go the direct route, be sure to remain positive and genuine. Your feedback should come from a place of support and encouragement, motivating your peers to improve. However, Marchant recommends avoiding compliment sandwiches — placing a criticizing statement between two positive ones — because they can often come off as patronizing.

The other important aspect of constructive feedback is to comment on your peer’s behavior, not their personality. Marchant explains that we can modify our behavior, but it’s extremely difficult to change our personality. Because our personality is such a deeply embedded part of us, criticism about it often feels like an attack.

“Critiques about our behavior, however, are more constructive and more readily accepted. It also helps to provide clear examples of the situation or issue,” Marchant says.

One peer feedback example Marchant describes is providing suggestions on an important client email your peer is writing. Focus the feedback on improving the phrasing and explaining why you might reword specific parts.

Avoid phrases like “You’re too harsh,” which could be construed as a critique on the person’s personality. Instead, try “The tone of this wording feels too harsh given the context,” which more clearly focuses on the work product.

Marchant calls out an important counterpoint to her previous comments on direct feedback: Always assess whether you’re the person best suited to deliver the feedback given the situation or context. While direct feedback is useful, assuming you’re the best person to give it, that’s not always the case. You may need to inform the person’s manager and let them decide how to approach the situation.

Last, Marchant recommends being open to and inviting feedback from your peers. It’s better to have an open feedback loop rather than create an environment where it feels as though feedback is only one way. The exchange should be about learning from one another, so everyone improves and excels at work.

Peer feedback forms

In the workplace, peer feedback forms are often used to provide managers with a broader perspective on their employees. In their supervisory capacity, managers may not see every aspect of an employee’s overall performance, such as their relationships with clients and dynamics with coworkers. Peer feedback forms help fill that knowledge gap so managers can make more informed decisions come review time.

Here are some example peer feedback questions you might ask on such a form:

  • How often does John complete tasks on time?
  • What are Jane’s greatest strengths?
  • What areas of work could John improve in?
  • Does Jane collaborate well with other team members?
  • How successfully has John performed when taking a leadership role on the team?
  • How much do you agree that Jane contributes her fair share to the team given her role?

With peer feedback covered, we move on to the manager’s perspective in giving employee feedback.

Employee feedback

“Feedback is important because we are social beings with a natural desire to know how our performance is viewed by others, and this concept extends to the workplace,” says Bradley Wilson, director of research and insights at Perceptyx.

He also notes that feedback is an opportunity to identify blind spots we may have regarding areas where we can grow and improve. Below we cover several tips you can use to deliver feedback to employees more effectively.

employee feedback

Employee feedback considerations and tips

“To give useful feedback to employees, you need to have a plan beforehand; otherwise, your guidance won’t provide much value,” says Amie Devero, strategy consultant and executive coach.

An important part of the planning process is having an agenda and identifying an employee’s strengths, weaknesses, and potential trouble areas. That lets you know how to parse your positive and critical feedback, and to what extent.

For example, consider a salesperson who has below-average close rates for new business compared to a one who regularly generates few to zero leads. The first employee may need a little feedback on sealing the deal, while the second likely requires more significant intervention.

Similarly, flight attendants are expected to provide engaging customer service to passengers, but some may approach interactions in a transactional manner or even be slightly rude. Compare this to a flight attendant whose personal issues consistently impact their attendance, setting off a domino effect of delayed flights. Again, a little feedback could go a long way in improving someone’s demeanor, but it may not be as effective for someone who is habitually late.

Recall the qualities of effective feedback from Chapter 2, particularly the attributes of being timely, specific, balanced, and actionable. Wilson says timely feedback is best given in the moment or as close to it as possible.

According to Wilson, “Feedback on minor performance issues can often easily be addressed; however, if it goes unspoken, the issues can worsen over time. Giving employee feedback quickly can mitigate the issue early and allow both parties to move on.”

Feedback also needs to be specific and related to behavior — or perceived behavior. When delivering it, Wilson says you should communicate how that behavior impacted the person involved.

Wilson also recommends that feedback be balanced, though if it must be imbalanced, it should skew toward the positive. That’s because the idea of feedback often has a negative connotation: “It’s become code for punishment or correction,” Wilson says. “Being intentional about positive feedback helps break this stigma and allows feedback a proper place in the work experience.”

Wilson explains that too many people work with the assumption that no news is good news when it comes to performance — such as when the manager only speaks up or provides feedback when someone steps out of line or does something wrong. “But feedback is an active process of setting and adjusting expectations, and then reinforcing desired behaviors,” Wilson says.

Finally, feedback should be actionable so the recipient knows what they can do to improve their performance and relationships at work. Wilson provides this formulaic phrasing to help, whether you’re delivering positive or negative feedback:

“When you do [action taken], it [impact of the action]. Could you [desired action]?”

Employee feedback forms

To gather feedback, Wilson recommends using employee feedback forms. Questions should be aligned with organizational values or competencies so that you can gather feedback related to both performance (objective measures) and demonstration or reinforcement of an organization’s priorities (subjective measures).

An employee feedback form should address past or current performance, along with future-oriented aspects about how the person can continue to grow. Oftentimes, he says, top performers are most frustrated by feedback that only confirms the good they do. For example, “You’re doing great! Keep up the good work.”

While the phrasing sounds nice, Wilson explains that it shows little thought on the part of the manager and doesn’t provide much value to the employee. “It may be true that they’re doing a great job, but top performers want to be challenged. They want to know you’re invested in their professional future, and that means giving the feedback they need to grow and improve beyond their current abilities.”

One important aspect of an employee feedback survey is that there should be no surprises. Wilson explains that if an employee is surprised — whether positively or negatively — then the manager has not done the job of providing regular feedback prior to the formal feedback session. “The employee has thus missed out on multiple opportunities to adjust their behavior over time based on the knowledge withheld by the manager,” Wilson says.

Giving employee feedback is an essential practice, but gathering feedback from customers is also important. We cover how to do this in the next chapter.

Customer feedback

Getting your customers’ perspectives about your brand, products, and services is essential to improving your business. Lance Cummins, president of Nectafy, says this is critical so that you’re not basing business decisions on guesses or feelings.

“The customer perspective drives the value of your product and, ultimately, your business — because as long as your customers perceive what you offer as valuable, then it is valuable,” Cummins says.

But the information you gain isn’t just useful for figuring out how to improve your offerings. You’ll also get insights on ways to better communicate the value of your product and even clarify your ideal customer.

“If you use this information strategically in your business, you can streamline your processes and solidify your customer base, resulting in overall greater customer experiences,” Cummins explains.

Customer feedback examples

“Customer feedback has the potential to make a huge (positive) impact on your business — regardless of whether the feedback is good or bad — but only if you listen to it,” adds Gabrielle Shultis, Nectafy’s head of client success.

Shultis calls out several examples of customer feedback:

  • Unsolicited feedback, such as emails, phone calls, social media posts, online comments and reviews, and customer blog posts
  • Requested feedback, such as requests for company reviews and distributed surveys
  • Ongoing feedback, such as monthly check-in calls and quarterly calls

How to get customer feedback

When asking for customer reviews, Cummins suggests providing clear instructions and making the process simple. “Don’t be afraid to request feedback, but be sure you emphasize how it benefits them, not just your company. Otherwise, requesting feedback can become a negative experience.”

Shultis shares how you can focus on the customer when requesting feedback: “You want to explain to your customers why you’re asking for feedback — which ultimately should be because it gives you the knowledge you need to ensure you’re providing them with a great product, service, and experience.”

Try to time your request for feedback strategically, when customers are most interested in sharing. For example, consider making the request shortly after a purchase or at a major milestone. Also, make the request as personal as possible so the customer knows it’s coming from a person.

You can get customer feedback in different ways, as previously mentioned, but forms are typically the easiest way to collect it. Shultis says that forms are simple enough for most customers to navigate, and they make sorting through responses easier for you and your team.

“You could also collect feedback through online reviews, but sending a form directly to your customers has a more personal feel,” she explains.

Shultis recommends using these three customer feedback questions:

  1. How happy are you with our services? Provide some sort of sliding scale (1 to 10) or simple choice option, such as happy or unhappy. Asking this question helps identify which customers are satisfied and are likely to remain customers, and which are unsatisfied. For unsatisfied customers, use this opportunity to reach out and address their concerns.
  2. What can we do better? A company always has room for improvement, so hearing firsthand from customers about what you can do better is a great place to start. They may help you identify areas that need to be addressed and that you couldn’t see yourself.
  3. Do you have any additional feedback or comments for us? This question gives customers the opportunity to openly provide any feedback they may have that didn’t fall into one of the above areas.

With customer feedback covered, we move on to the last chapter, which touches on different styles of feedback and the best ways to collect them.

How to collect feedback

When you manage multiple employees or departments, constructing and collecting feedback may seem overwhelming. Which style and tool are best to get the job done? Below we cover several feedback styles you can try, and introduce an easy-to-use feedback collection tool: JotForm.

hoe to collect feedback form online

Styles of feedback

Real-time feedback

Throughout this guide we’ve noted the importance of timelinessin relation to giving feedback. Real-time feedback keys in on this concept, as it’s provided in the moment or immediately following a specific event or behavior.

Loren Margolis, founder of Training & Leadership Success, says real-time feedback is the most important type of feedback for managers to use with employees because of its timely delivery. It immediately reinforces positive behaviors, and/or points out ways to change undesirable actions if improvements need to be made.

“Real-time feedback also creates a direct link between the employee’s actions and the perception of those actions from their peers and manager,” she says.

Margolis also calls out an important concept managers should champion within their organizations: psychological safety. This concept is all about feeling safe enough in the workplace to be yourself, take risks, speak up, believe your ideas are being heard, and not be judged.

Organizations that encourage psychological safety will thrive. One key part of accomplishing this: “Give more positive feedback overall, thereby building up an ‘emotional bank account’ where employees feel appreciated and respected. They’ll then take constructive feedback better,” Margolis says.

Performance feedback

Compared to real-time feedback, performance feedback is more formal — typically because it tends to be scheduled, such as an annual performance review. Whenever it occurs, performance feedback covers both positive and constructive communications about an employee’s performance.

Robert Satterwhite, Ph.D., partner and head of the leadership and organizational effectiveness practice at Odgers Berndtson, says organizations that have a learning and development culture encourage managers to provide regular and ongoing feedback outside of the formal performance review cycle. This not only ensures that employees exhibit the right behaviors throughout the year but also reduces surprises come review time.

“When done right,” Satterwhite says, “performance feedback reinforces behaviors that are consistent with organizational and team strategies, goals, and tactics. In addition, it should include the identification and ongoing monitoring of developmental goals and associated activities, resources, time line, and metrics.”

Margolis explains that if you’re making regular use of real-time feedback, formal performance feedback sessions should be fairly quick. “You can then use the time during a performance review to focus on the future, instead of the past. For example, you can discuss the employee’s career path and what they should look to accomplish in the next six months to a year.”

360-degree feedback

360-degree feedback differs from other styles of feedback in that it comes from a combination of people connected to the employee, including the employee themselves, direct reports, peers, and their manager, among other potential raters.

“You need a comprehensive swath of people surrounding the recipient to deliver a true, 360-degree perspective,” Margolis explains.

Satterwhite adds that some companies seek additional perspectives from other key stakeholder groups such as board members and customers. In any case, the importance of 360-degree feedback is in enhancing the employee’s understanding of how their performance positively or negatively impacts constituents who are up, down, and across the organization.

The goal is to provide multiple perspectives to clearly highlight strengths an employee can leverage, gaps they need to shore up, and developmental areas they should focus on. “For example, consistently positive feedback from direct reports, coupled with consistently constructive feedback from the manager, likely indicates the employee needs to spend more time managing up and less time managing down,” Satterwhite says.

Collecting feedback through forms

“Collecting feedback via a form or survey has a variety of benefits, particularly when collected online,” says Satterwhite. He explains that forms can guide respondents through the feedback process, which encourages a structured, consistent approach to data collection. Satterwhite notes how forms can be used in practice:

  • Feedback surveys allow respondents to provide quantitative-based ratings on job-relevant competencies or behaviors, as well as qualitative feedback. Here’s an example of a qualitative question: What should this individual start doing to be more successful in their role?
  • Metrics-based forms allow for comparisons over time (e.g., scores year over year) as well as between participants (e.g., team members).
  • A 360 degree-based format allows individuals within a group (e.g., direct reports) to provide anonymous ratings and feedback; in these instances, data is presented as both an average and a range. For example, a wide range of ratings from direct reports on the competency of talent development would indicate that not all individuals on a team feel they’re getting the support they need to develop in their role and/or career.

Margolis adds that it’s important for managers to use the same form for all employees. “You must ensure all assessments of performance and other aspects of employees’ work and interpersonal interactions are evaluated fairly.”

JotForm + feedback

If you need an easy way to collect feedback for all your employees, try JotForm, the simple yet powerful Form Builder. With JotForm, you can create surveys and collect and track feedback. We have hundreds of ready-made feedback templates you can customize to your liking. Modify the questions to better suit your needs, and even add your own company branding.

With JotForm, you can

  • Collect employee feedback for whatever feedback style you’re using, including real-time, performance, and 360-degree
  • Survey and collect feedback from peers
  • Request and collect feedback from customers about a recent experience, event, product usage, and more

Ready to improve your approach to collecting feedback? Get started with JotForm today.

About the other contributors

Amie Devero

Amie Devero has more than 25 years of experience as a strategy consultant and executive coach. Along with her experience fostering leadership and excellence in strategic decision-making and organizational performance, Amie is a frequent keynote presenter at industry conferences. Previously, she served as the chief executive of mobile parking payment platform iControl Mobile Payment Solutions and as the president of its acquirer, RingGo.

Andy Bailey

Andy Bailey is the founder of Petra Coach. He assists business owners and entrepreneurs in building the solid foundation that allows them and their teams to achieve their goals, both business and personal. His aim is to develop cultures that impact every team member in a positive way.

Arquella Hargrove

Arquella Hargrove is president of Epic Collaborative Advisors, a company that provides workforce development, communications, and strategy services. She is also a facilitator, leadership consultant, speaker, and coach dedicated to bringing out the transformative and sustainable results of people through development.

Bradley Wilson

Bradley Wilson is the director of research and insights at Perceptyx. He leads the team responsible for Perceptyx’s survey design, results analysis, and executive reporting. He has significant experience developing key performance indicators, maximizing data confidence through assessment design, linking employee survey data to organizational strategy and objectives, and leveraging data to improve speed and confidence in corporate decision-making.

Charlie Marchant

Charlie Marchant is the general manager of Exposure Ninja. She oversees operations at the company, and has past experience building teams from scratch. She is the coauthor of The Ultimate Guide to Content Marketing and is a regular speaker at BrightonSEO.

Gabrielle Shultis

Gabrielle Shultis is the head of client success at Nectafy. She helps the growth content company consistently deliver success to clients. She’s slightly obsessed with planning and being organized, which helps her perform well in her role.

Lance Cummins

Lance Cummins is the president of Nectafy, a growth content company. He’s built a small but growing team of writers, marketers, and other creatives to create strategically guided content that helps clients bring in more traffic and generate more leads.

Loren Margolis

Loren Margolis is the founder of Training & Leadership Success, a global leadership development consultancy that provides leadership and team development programs and executive coaching services. She has an in-depth background in psychology, training, and proficiency in adult learning. Her leadership development expertise and career success advice has been featured in Forbes, USA Today, Business Insider, and The Muse.

Robert Satterwhite, Ph.D.

Robert Satterwhite is a partner and head of the leadership and organizational effectiveness practice at Odgers Berndtson, a global executive search firm. He helps organizations strategically manage executive selection, succession, and development, including assessment, onboarding, coaching, high-potential identification, and team effectiveness.

Categories: Others Tags:

Your 2020 Guide to Finding Remote Work – [Infographic]

June 30th, 2020 No comments

Remote opportunities have reached a historical high, and it seems to be the new preferred way of work. With many benefits for both employers and employees, many are seeking remote work solutions amidst the pandemic to stay afloat.

However, the surge of remote listings makes its job market difficult to navigate – especially for those new to seeking virtual opportunities. More often than not, job searching is mind over matter – a sense of building your momentum to apply for the positions you feel most compatible with. Here, you will find tips on how to begin your job search, how to build your momentum, and the best tips for landing a remote job.

You’ll first need to complete some housekeeping tasks before igniting your job search. First, give your resume a touch-up. For example, pay attention to your overall layout. A resume should be an easy skim, highling your most relevant experiences first. Stray from general descriptions of the job’s role as this is your time to make your case for being the ideal candidate for hire. In other words, include keywords related to the field of your interest, and keep details short and sweet.

After your resume is fine-tuned, you’ll want to check out your social media. Remember, you may never meet your boss in-person, so your social media is often the best reflector of you. Saying this, ensure your online reputation and image are portrayed positively. 70% of employers research applicants’ social presences before hiring or interviewing, so avoid posting anything illegal, discriminatory, or innaporirate that could negatively reflect the brand you’re interested in joining. Alternatively, creating separate business and personal profiles can remedy your concerns.

Now, you’re ready to begin navigating the job market, but many find doing so intimidating. In fact, the intimidation can turn into procrastination. Time is money, and life is easier when our goals are completed – so there should be a sense of urgency in your job search if you are without income. We put things off to lower our stress levels and increase the time we spend on enjoyable activities. However, procrastinators go on to feel more stress, illness, and lower quality of work. Saying this, be proactive in your search. In life and business, many good things can come from negatives.

In other words, take control of your difficult situation by recognizing the reality of your situation. One way you can do so is by exploring for your dream job on platforms like Nine2Five Job Search or Indeed. In 2020, the top fields offering remote jobs are within the medical/health, computer/IT, customer service, education/training, sales, and accounting/finances sectors. More specifically, the most popular remote jobs include project managers, accountants, writers, nurses, online ESL teachers, investigation specialists, customer service representatives, and more.

99% of those who work from home would like to continue working remotely, at least part of the time, for the rest of their careers. On top of that, 95% would recommend it to others. Check out the infographic below for more information on how to find work in the remote economy.

Original Links:

Photo by Paige Cody on Unsplash

Categories: Others Tags:

Enhance your Email Marketing Strategy through Artificial intelligence

June 30th, 2020 No comments

An effective email marketing strategy works on useful innovations and technologies.

Moreover, with the AI industry reaching a forecast size of 22.6 billion US dollars by 2020, it has definitely emerged as one of the great technical shifts. In fact, 78% of brands are already planning to implement AI within their marketing strategy.

So, if you wish to enhance your email marketing strategy, going the AI way is the key to success. Remember, 72% of business leaders consider AI as a business advantage.

AI not only analyzes data better than humans but also gives the brand a deep insight into what elements work for their marketing strategy and which ones don’t. Here’s a quick look at various AI tactics you can incorporate to make your email marketing strategy top-notch:

Optimized subject lines

While 35% of recipients open an email based on the subject alone, 69% of them mark email as spam based on the same. Therefore, it is imperative to optimize your subject line in a way that resonates with the customers. This is where AI can come in handy and help you determine which subject lines work for your email campaign. AI combined with machine learning technologies analyzes the open rates of your email. As a result, it gives you a clear idea about the kind of subject lines that resonate the most with your subscribers.

Facilitates best send time for emails

Do you know an average person spends more than four hours a day checking emails? So, if you optimize your email send time, you can easily make your customers open and click-through your emails. AI, with its ability to analyze data like past open rates, can give you a clear insight into the opening time of the email, thereby helping you schedule the email as and when preferred by the recipients.

Works on hyper-personalization

AI takes into account the behavior of individual customers. This helps in the easy determination of the kind of content that will resonate with each one of them.

All in all, AI has changed the way marketers create, plan, and execute their email campaigns.

Take a look at this elaborate infographic from Email Uplers where it has discussed various aspects of incorporating AI into email marketing with precision. From the best AI practices to intricate data-driven insights, this infographic has everything to keep you updated about the revolution AI has brought in the world of email marketing.

Categories: Others Tags:

Free Web Accessibility tools won’t Protect you from ADA Lawsuits

June 30th, 2020 No comments

If you own a website and you haven’t heard about web accessibility or the ADA act, this article is for you.

It’s been 3 years since a bind internet user won the first federal ADA title II web accessibility lawsuit, and 2 years since the Department of Justice made a statement confirming that ADA requires online businesses to be accessible to consumers with disabilities, but web accessibility is still slowly entering public consciousness.

ADA title III compliance lawsuits are rising, and headline-grabbing web accessibility cases, like the 2019 Supreme Court ruling against Domino’s Pizza, have helped draw website owners’ attention to the issue. Disability activists have grown tired of waiting for websites to become accessible out of a desire to serve all users, and begun using “lawfare;” finding non-accessible websites and sending lawyer demand letters that cost an average of $20,000 to settle out of court.

Websites that aren’t accessible are finally becoming unaffordable.

Thanks to the slow but increasing awareness of web accessibility, consumers with disabilities today can choose where to spend their money and their time. They don’t need to struggle through a non-accessible site just to buy a pair of shoes or read the news; instead, they can click off and choose your competitor who has invested in making their site accessible.

All of that comes on top of the threat of a costly lawsuit. As a result, website owners are waking up to the fact that they have no choice but to make their websites accessible to all users, both able-bodied and disabled.

Website owners are stuck between a rock and a hard place.

However, the challenge often seems far too great to be overcome. Making your website accessible means:

  • Ensuring that it is compatible with screen readers used by blind internet users;
  • Making it fully keyboard-navigable for anyone who can’t use a mouse;
  • Simplifying the language for users with cognitive difficulties;
  • Stopping animations for people with photo-sensitive epilepsy;
  • Adjusting UX issues such as the font, text size, spacing, color, and contrast ratios.

Making all these changes requires you to adapt the website source code, but few website owners have the expertise to do that. They have no choice but to hire an expensive accessibility service provider, but the costs are often far too high.

Website owners are stuck in a situation where they can’t afford to comply with website accessibility legislation, but also can’t afford not to comply.

Free accessibility plugins promise a way out…

And then free accessibility plugins come on to the scene. They promise to fix all your web accessibility issues in one go — all you need to do is to install the plugin onto your website, and it will do the rest.

Sounds great, it’s both free and it works right? Well, its neither.

Most website owners see this as the answer to their prayers and, understandably enough, take their promises at face value. Unfortunately, most free accessibility plugins don’t follow through on all their claims.

…but leave website owners stranded

As the saying goes, you get what you pay for. Free accessibility plugins succeed in addressing some accessibility issues, but they don’t go far enough. As a result, website owners are left believing that they’ve opened up their site to users with disabilities — until a lawyer demand letter arrives at their door, and plugins won’t save you.

Free accessibility plugins mostly generate a design overlay which sits on top of the existing site and adjusts the user interface to make it more user-friendly for visitors with disabilities. These overlays are generally work to:

  • Change the color and contrast ratio of the text
  • Adjust text sizing and spacing
  • Enlarge the cursor
  • Expand clickable fields

These all sit on the Front end only, and don’t make your website truly accessible. Some also succeed in changing fonts to one that is more readable and improving text alignment, but that’s as far as it goes. These adaptations do help users with low vision or fully-able users who are browsing the internet in poor lighting, but they don’t add up to full website accessibility.

One of the biggest issues is that no free plugin supports the screen readers that blind users rely on to browse the internet. They don’t provide role building, or alt tags for images, or make it possible to navigate forms and popups with a screen reader. There is one plugin which claims to support screen readers, but this is not the full truth; it actually provides its own screen reader built on proprietary software, which doesn’t work with the NVDA and Jaws-based screen readers that are used by the majority of the blind community.

There’s no free plugin that enables full keyboard-only navigation, which is crucial for meeting web accessibility requirements. There are so many reasons why someone might be unable to use a mouse, including having motor disease, arthritis, a broken arm, amputations, muscle weakness, or even just a broken mouse, but plugins that don’t support keyboard navigability block them all out. Some plugins do allow the user to shift focus with the keyboard, but none of them do so consistently through forms, popups, drop-down menus, etc. When you consider the fact that most web accessibility lawsuits come from blind users and users with motor disabilities, free plugins don’t do much to protect you.

Finally, these plugins also fail to stop animations, which can trigger seizures in people with photo-sensitive epilepsy, and do nothing to simplify confusing texts and website layouts that form a barrier against people with cognitive disabilities.

Free accessibility plugins are not the solution

As website owners increasingly realize the importance of accessible websites, they’re turning to free accessibility plugins that promise to solve everything.

Unfortunately, as many website owners are starting to discover, relying on free accessibility plugins leaves you open to lawsuits from disappointed users who are still blocked out of your site.

The solution is simple, treat web accessibility as an integral part of your website and invest into a proper solution. Just like you would get a strong CDN or a hosting provider, so should your website be truly accessible.

Categories: Others Tags:

Finding Inspiration In The Simple Things (July 2020 Wallpapers Edition)

June 30th, 2020 No comments
Birdie July

Finding Inspiration In The Simple Things (July 2020 Wallpapers Edition)

Finding Inspiration In The Simple Things (July 2020 Wallpapers Edition)

Cosima Mielke

2020-06-30T09:00:00+00:00
2020-07-01T17:34:35+00:00

The smell of rain after a hot day, watching the moon rise on a summer night’s sky, going for a swim — often it’s the simple experiences that inspire us and that we treasure most. No matter what July will have in store for you this year, our new batch of wallpapers is bound to cater for some colorful inspiration along the way.

More than nine years ago, we started out on this wallpapers adventure to bring you beautiful and inspiring wallpapers every month. It’s a community effort, made possible by artists and designers from all across the globe who challenge their creative skills and contribute their artworks to it. Just like this month.

In this post you’ll find their wallpapers for July 2020. All of them come in versions with and without a calendar and can be downloaded for free. As a little bonus goodie, we also compiled some favorites from past July editions at the end of this post. Maybe you’ll discover one of your almost-forgotten favorites in there, too? A huge thank-you to everyone who shared their artworks with us this month — we sincerely appreciate it! Happy July!

  • All images can be clicked on and lead to the preview of the wallpaper,
  • We respect and carefully consider the ideas and motivation behind each and every artist’s work. This is why we give all artists the full freedom to explore their creativity and express emotions and experience through their works. This is also why the themes of the wallpapers weren’t anyhow influenced by us but rather designed from scratch by the artists themselves.

Submit your wallpaper

Did you know that you could get featured in one of our upcoming wallpapers posts, too? We are always looking for creative talent, so if you have an idea for a wallpaper for August, please don’t hesitate to submit it. We’d love to see what you’ll come up with. Join in! ?

Birdie July

Designed by Lívi Lénárt from Hungary.

Strive For Progress, Not Perfection

“I created this wallpaper as a daily reminder that it’s better to take one small step towards my goal every day than to do nothing at all out of fear that it won’t be perfect. I hope you enjoy it and it helps you keep motivated every day!” — Designed by Andrew from the United States.

Plastic Whale

“The growing amount of plastic pollution in our rivers, seas, and oceans can have a devastating effect on marine wildlife both large and small. Plastic bags are known to stay in the oceans for about 450 years before beginning to degrade. I wanted to create an impactful image that could convey this message.” — Designed by Aysha Samrin from Vancouver.

Plastic Whale

It’s Getting Hot

Designed by Ricardo Gimenes from Sweden.

It's Getting Hot

Happy Birthday, Harrison Ford!

“This month, we’re paying tribute to the legendary actor Harrison Ford, who turns 78 on July 13th! A woodworker and an aspiring actor, during the 70s Ford did carpentry works in the homes of some of the leading film directors and producers, thus crossing paths with Star Wars director George Lucas. It proved to be a defining moment that would shape not only Ford’s life but cinematography in general. Ford portrayed Han Solo in several of the franchise’s installments, leaving an indelible mark through his friendship with Chewbacca and love with princess Leia. After more than five decades of a successful and immaculate career, award-winning and acclaimed roles, and a life away from the public eye, Harrison Ford remains one of the best, most versatile, and prolific actors of our era, relishing his two favorite hobbies – flying and carpentry – as well as impressing us with each new movie to come.” — Designed by PopArt Studio from Serbia.

Happy Birthday, Harrison Ford!

Majestic Moon

“A few weeks ago, I drove the street at night and saw the moon just dipping the horizon. It appeared to be bigger than usual and it was so majestic. It was a really amazing moment that inspired me to create this wallpaper. Keep your mind and eyes open. Enjoy nature whenever you can!” — Designed by Kai Böker from Germany.

Majestic Moon

Happy International Kissing Day

“Celebrating kissing day in a Corona period requires attention. #staysafe” — Designed by Nathalie Lansbergen from the Netherlands.

Happy International Kissing Day

Bloom Where You Are Planted

“I was thrilled to catch this perfect moment of my blooming sunflower.” — Designed by Monica Barron from New Jersey.

Bloom Where You Are Planted

Global Day Of Parents

“This is the day in which people all over the world get the chance to say thank you to their parents (and parental figures) for the often thankless tasks they undertake for their kids. It’s a day to say ‘Thank you, I know I put you through a lot but I do appreciate it!’.” — Designed by Ever Increasing Circles from the United Kingdom.

Global Day Of Parents

Oldies But Goodies

Our wallpapers archives are full of timeless treasures that are just too good to be forgotten. So here’s a small selection of favorites from past July editions. Enjoy! (Please note that these designs don’t come with a calendar.)

Hello, Strawberry Sundae!

“Is there anything more refreshing (and more delicious!) than a strawberry sundae on a hot summer day? Well, we don’t think so. And did you know that strawberry celebration is on its way in the U.S. Oh, yes! July 7th is the National Strawberry Sundae Day, and we predict that it’s going to be sweet and yummy. So, make your favorite dessert and start preparing yourself for the festive July days.” — Designed by PopArt Studio from Serbia.

Hello, Strawberry Sundae!

Floral Thing

“The wallpaper which I created consists of my personal sketches of Polish herbs and flowers. I wanted it to be light and simple with a hint of romantic feeling. I hope you’ll enjoy it!” — Designed by Beata Kurek from Poland.

Smashing Desktop Wallpapers - July 2012

Keep Moving Forward

“Snails can be inspiring! If you keep heading towards your goal, even if it is just tiny steps, enjoy the journey and hopefully it will be worth the effort.” — Designed by Glynnis Owen from Australia.

Keep Moving Forward

Alentejo Plain

“Based in the Alentejo region, in the south of Portugal, where there are large plains used for growing wheat. It thus represents the extensions of the fields of cultivation and their simplicity. Contrast of the plain with the few trees in the fields. Storks that at this time of year predominate in this region, being part of the Alentejo landscape and mentioned in the singing of Alentejo.” — Designed by José Guerra from Portugal.

Alentejo Plain

July Rocks!

Designed by Joana Moreira from Portugal.

July Rocks!

Riding In The Drizzle

“Rain has come, showering the existence with new seeds of life. Everywhere life is blooming, as if they were asleep and the falling music of raindrops have awakened them. Feel the drops of rain. Feel this beautiful mystery of life. Listen to its music, melt into it.” — Designed by DMS Software from India.

Riding In The Drizzle

Save The Tigers

“Global Tiger Day, often called International Tiger Day, is an annual celebration to raise awareness for tiger conservation, held annually on July 29. It was created in 2010 at the Saint Petersburg Tiger Summit. The goal of the day is to promote a global system for protecting the natural habitats of tigers and to raise public awareness and support for tiger conservation issues.” — Designed by Athulya from Calicut.

Save The Tigers

Cactus Hug

Designed by Ilaria Bagnasco from Italy.

Cactus Hug

Heated Mountains

“Warm summer weather inspired the color palette.” — Designed by Marijana Pivac from Croatia.

Heated Mountains

Summer Cannonball

“Summer is coming in the northern hemisphere and what better way to enjoy it than with watermelons and cannonballs.” — Designed by Maria Keller from Mexico.

Summer Cannonball

Tropical Lilies

“I enjoy creating tropical designs, they fuel my wanderlust and passion for the exotic. Instantaneously transporting me to a tropical destination.” — Designed by Tamsin Raslan from the United States.

Tropical Lilies

Eternal Summer

“And once you let your imagination go, you find yourself surrounded by eternal summer, unexplored worlds and all-pervading warmth, where there are no rules of physics and colors tint the sky under your feet.” — Designed by Ana Masnikosa from Belgrade, Serbia.

Eternal Summer

A Flamboyance Of Flamingos

“July in South Africa is dreary and wintery so we give all the southern hemisphere dwellers a bit of colour for those grey days. And for the northern hemisphere dwellers a bit of pop for their summer!” — Designed by Wonderland Collective from South Africa.

A Flamboyance Of Flamingos

Summermoon

Designed by Erik Neumann from Germany.

Summermoon

July Flavor

Designed by Natalia Szendzielorz from Poland.

July Flavour

Summer Heat

Designed by Xenia Latii from Berlin, Germany.

Summer Heat

Smashing Newsletter

Every second Tuesday, we send a newsletter with useful techniques on front-end and UX. Subscribe and get Smart Interface Design Checklists PDF in your inbox.


Front-end, design and UX. Sent 2× a month.
You can always unsubscribe with just one click.

Categories: Others Tags:

Smashing Podcast Episode 19 With Andy Bell: What Is CUBE CSS?

June 30th, 2020 No comments
Photo of Andy Bell

Smashing Podcast Episode 19 With Andy Bell: What Is CUBE CSS?

Smashing Podcast Episode 19 With Andy Bell: What Is CUBE CSS?

Drew McLellan

2020-06-30T05:00:00+00:00
2020-07-01T17:34:35+00:00

Today, we’re talking about CUBE CSS. What is it, and how does it differ from approaches such as BEM, SMACSS, and OOCSS? I spoke to its creator, Andy Bell, to find out.

Show Notes

Note: Listeners of the Smashing Podcast can save a whopping 40% on Andy’s Learn Eleventy From Scratch course using the code SMASHINGPOD.

Weekly Update

Transcript

Drew McLellan: He is an educator and freelance web designer based in the U.K. and has worked in the designer web industries for well over a decade. In that time he’s worked with some of the largest organizations in the world, like Harley-Davidson, BSkyB, Unilever, Oracle, and the NHS. Alongside Heydon Pickering, he’s the co-author of Every Layout, as well as running Front-End Challenges Club which is focused on teaching front-end development best practice via short, fun challenges.

Drew: His latest venture is Piccalilli, a website newsletter with tutorials and courses to help you level up as a front-end developer and designer. So we know he’s an experienced developer and educator, but did you know he was the first person allowed to compete at Crufts with a panda?

Drew: My Smashing friends, please welcome, Andy Bell. Hi, Andy, how are you?

Andy Bell: I’m smashing, thanks. How are you?

Drew: I’m very good, thank you very much. Now I wanted to talk to you today about something that you posted on your site, Piccalilli, about a CSS methodology that you’ve developed for yourself over recent years. First of all, I guess we should probably explore what we mean by a CSS methodology because that could mean different things to different people. So when you think of the CSS methodology, what is it to you?

Andy: That’s a good, hard question to start with, Drew. Appreciate that, thank you!

Drew: Welcome!

Andy: It’s a tricky one. So, for context, I’ve used BEM for a long time, and that is Block Element Modifier. That’s been around for a long time. The way that I look at a CSS methodology is, it’s not a framework, it’s an organization structure. That’s how I like to see it. It’s like a process almost. It’s like you’ve got a problem that you need to solve with CSS and you use the methodology to solve it for you and keep things predictable and organized. BEM’s just legendary for that because it’s been wildly successful.

Andy: Then you could almost qualify things like the style components and that sort of thing. You can almost say that they’re methodology orientated even though they’re a bit more framework entwined, but still, it’s a methodology of breaking things into tiny molecules. So essentially that’s what I’m trying to do with CUBE CSS as well. A thinking structure, I think I described it as.

Drew: So it’s an application of process for how you architect and you write CSS, and it’s not so much anything that’s based on tools or any other sort of technology, it’s just a sort of work flow. So there’s lots of different approaches out there. You mentioned BEM. There’s SMACSS, OOCSS, Atomic CSS. And then you’ve got these sort of unusual lovechild approaches like ABEM. Have you seen that one?

Andy: Yeah.

Drew: Why publish your own?

Andy: Yeah, yeah. Why make your own? That’s a very good question. I think those who know me well know I like to sail against the tide a lot. It’s mainly because I tend to do lots of varied projects as well, in varied teams. So it’s very hard, I’ve found, to work with BEM with a traditional developer because they’re used to using CSS for what CSS is all about: the cascade, et cetera, and that’s why I sort of stole that from the language.

Andy: On the other flip side is that less structured methodologies, it’s harder to work with a programmer, JS sort of person because they like structure and organization and small components, which is understandable working with the language that they work in.

Andy: So I found myself in these positions where I was working with different types of people, different types of projects where one methodology wasn’t quite working. Over the years, I’ve just been playing around with this idea of how things go, and then there’s the stuff me and Heydon did, Every Layout, which sort of enforced the big part of it, which is the C, the composition part, and then I’ve just sort of evolved it very rapidly over the last six months.

Andy: The only reason I wrote an article about it was because I was just doing this course and I thought I’d better write some supplementary material to go with it so people understand it, and it’s absolutely blown up. So maybe we’re not over methodologies quite yet, Drew.

Drew: So the course material that you’ve been putting together actually uses CUBE CSS as its methodology, does it?

Andy: Yeah. So a good 50% of the course is actually front-end, even though it’s a course unlimited. It’s so, so deeply entwined in the way that we build the front-end that I couldn’t just say, “Oh, by the way, this is how I write a nice CSS,” and then leave it. I know people like to get into the detail, so I was like, what I’ll do is, I’ll write this post that’s really long and really detailed and then if someone wants to skill up and really understand what we’re doing, then they can do, and the rest is from there. And here we are today, Drew, sitting and chatting about it.

Drew: So if somebody already understands BEM and is maybe already using BEM, as an example, because that’s probably one of the widest adopted methodologies, isn’t it? So if they’ve already got an understanding of BEM and they’re coming to CUBE, is that something that they would find easy to adopt? Are there many similarities or is it completely different?

Andy: Yeah. I’d say going from BEM to CUBE is probably a smooth transition, especially the way I like to still write the CSS for CUBE. So the majority of stuff’s happening at a higher level. So it’s happening at the cascade level and it’s happening global CSS, using the utilities to do a lot of the stuff. But when you come into the nuts and bolts of it, it’s very BEM-like components, blocks and elements. The only thing that’s sort of different from BEM is, instead of having modifiers, we use this thing called exceptions instead which is, instead of using CSS classes, it turns to data attributes, which I think gives a nice bit of separation and a real exception, which is what a modifier should be.

Andy: Part of the reason why I’ve sort of sailed away from BEM was because I found the way I was working with it, especially in design systems, was modifiers were dominated and it became a problem because it was like, what is the role of my block at this point? Because if I’m modifying it to the point where it’s unrecognizable regularly, then is this methodology still working how it’s supposed to work?

Andy: Then there’s the whole design token stuff, the stuff that Jina did with the Lightning Design System which we’ve all started adopting now. The utility class stuff really started to make sense with that approach. So I just sort of smushed all the things I like about other people’s work and slotted into my own instead.

Drew: You talk about with BEM, the sort of modifier approach kind of getting out of control. Was that one of the main pain points with BEM that CUBE tries to address?

Andy: Yeah, absolutely. I do like the modifier approach with BEM, it does make sense. What I like about BEM is something that I still do, is the double underscore for an element, and then there’s the double dash for a modifier. I like that way of organizing things. It was just a case of okay, well, a lot of the modifiers I can actually account for with utility classes and then the other bits…

Andy: So the example I use in the article is, imagine you’ve got a card and then the card is flipped, so the content appears before the image. So then that makes sense, to see display: flex and then you reverse it, reverse the order. That makes sense, to have an exception rule for that because it’s an exception of the card’s default state, and that’s how I like to see it. It’s like an affected state on that component, is what an exception is, and that makes sense.

Andy: With a lot of the stuff that I’ve done more recently, the modern front-end stack with reactive JavaScript, there’s a lot of state changing and it’s makes sense to handle it appropriately between CSS and JavaScript because they are becoming more and more entwined with each other, whether you like it or not. It’s a common language for them. As you can see by my face, very much not, but there you go. You’re probably thinking, “Actually, I’ve been working with react quite a lot recently, so I’m the other way round.” So I can see that as well.

Drew: So let’s get into CUBE then. So CUBE stands for Composition Utility Block Exception. Is that right?

Andy: Yeah. That’s the one.

Drew: What on Earth does that mean?

Andy: Oh, mate, you should have heard it before! I was doing a talk last year. I did a talk, and it was called Keeping it Simple with CSS that scales, and in there I sort of introduced an earlier version of it called CBEUT, which was Cascade Block Element Utility Token. It was rubbish. I hated the name of it. I did it a couple of times, this talk last year, and I really didn’t like the name. Then when I came to doing this stuff this year, I thought, “I really need to think about what it actually is and what it’s called.” I think CUBE is a little less rubbish. I think that’s the best way I can describe it.

Andy: But then, names are always rubbish for these things, aren’t they? I mean, like BEM, what a rubbish name that is! But we all do it. Look at Jamstack: that’s a terrible name as well, isn’t it?

Drew: My lips are sealed!

Andy: Your boss is going, “What?” It’s true. It’s just the way it is, isn’t it, in our industry.

Drew: It seems that a lot of the CSS methodologies try and work around some of the features of CSS, things like the cascade. My understanding from what I read is, CUBE tries to make use of those sort of features and properties of CSS.

Andy: Yeah. A good analogy for it is SCSS, like Sass, is an extension of the natural CSS language, isn’t it? You’re pretty much right in CSS still. So CUBE CSS is like that. So it’s an extension of CSS. So we should still write CSS, as CSS should… well, it’s supposed to be written. Let’s be honest, that how it’s supposed to be written, is the name gives it away: Cascading Style Sheets. So it’s embracing that again because what I’ve found is that I’ve gone all the way down to the micro-optimization level. I’ve been down the path that I see a lot of people going down recently where… and I’ve mentioned this in the article as well, where I can see… there’s some evidence of it recently. I’ve spotted people have been creating spacer components and stuff like that, and I understand that problem, I’ve been in that situation.

Andy: The way I fixed it was, instead of drilling down and trying to micro-optimize, I actually started thinking about things on a compositional level instead because it doesn’t matter how small your components are, at some point they’re going to be pages, they’re going to be views. You cannot avoid that, that’s how it’s going to be. So instead of trying to say, “Right, I need these tiny little helpers to do this layout,” you say, “Right, I’ve got a contact page view, or a product page view, and that’s a skeletal layout composition. Then inside of that I can slot whatever components I want in there.” We’ve got things like Grid and Flexbox now which make that much more achievable, and you can essentially put whatever you want inside of the skeletal layout, it doesn’t matter. Then the components should, at that point, behave how you want them to behave, with or without container queries.

Drew: This is the composition part of CUBE where you’re looking at things at more of a macro level, looking at how components can be composed into a view to create the sort of pages that you need to create for a site or an app or what have you.

Andy: So it’s creating rules, essentially. It’s like guidance. It’s trying to get guidelines for something. It’s not like a strict rules, like, you should do this, you should do that. That’s essentially what you’re doing with the browser, with this methodology, is you’re saying… you’re not forcing it to do anything. You’re saying, “Look, ideally, if you could lay it out like this, that would be great, but I understand that that might not be the case so here’s some bounds and some upper and lower levels that we can work with. Do what you can, and cheers.” Then you just chuck some components at it and let it just do what it does. You add enough control in there for it to not look rubbish.

Andy: So a good example would see… we do a layout in Every Layout called the switcher, which essentially will in-line items until a certain point where the calculation that works out how wide it should will just stack them on top of each other. But because we add margin to the in-line and the block, it works, regardless of what the state of it is, it still looks fine. That’s the idea, is that we’re not telling the browser to say, “You must layer this three column grid out.” We’re saying, “If you can layer a three column grid out, do it. Otherwise, just stack and space instead.” So it’s that sort of methodology, of letting the browser do its job really.

Drew: Many of the different approaches that have come along for CSS over the last few years have very much focused on the component level of dealing with everything like it’s a component. CUBE doesn’t downplay that component aspect so much, it just gives this extra concept over the top of taking those components and composing them into bigger layouts, rather than just saying the layout’s just another component.

Andy: Yeah, that’s a good point, yeah. I think the thing to say about components is they’re important, especially in modern front-end stuff. We do a lot of component stuff, system stuff. But the way I see a component is, it’s a collection of rules that extend what’s already been done.

Andy: The point I make in the article is, by the time you get down to the block level, most of your styling has actually been done, and really what your component is doing is dotting the Is and crossing the Ts and it’s saying, “Right, in this context…” So for a card, for example, make the image have a minimum height of X, and add a bit of padding here. Do this, that and the other. Put a button here. It’s just sort of additional rules on top of what’s already been inherited from the rest of the CSS. I think that’s probably the best way to describe it.

Andy: Whereas in BEM, the component is the source of truth. Until you put that class on the element, nothing has been applied at that point, and that method works. I just found I wrote more CSS by doing that, and more repetitive CSS, which I don’t like doing.

Drew: Would you consider the typography and the colors and the vertical rhythms, spacing, and all of that, is all that part of the idea of composition in this model?

Andy: Yeah. In a global CSS, yeah, absolutely. The vertical rhythm especially, and the flow. We did an article on that at 24 ways, didn’t we, a couple of years ago, the flow and rhythm component. That was a sort of abstract from this approach as well, where you set a base component which essentially uses the lobotomized owl selector. I don’t know how I’m going to describe that on the radio, but we will. We’ll just put, I think, in the show notes about the Heydon article or something. But essentially that, it selects child elements… sorry, sibling elements.

Andy: So it says, “Right, every element that follows element X have margin top of CSS costs and property value,” and then the beauty of that is then you can set that CSS custom property value on a compositional context as well. So you can say, “Right, in this component, if there’s some flow on the go, we’ll set flow space to actually be two rem because we want it to be nice and beefy, the wide space.” Then in another one you might say, “Actually, I want flow space to be half a rem because I want it to be tight.” This is all happening, all the control is coming from a higher level and then what you’re doing is, you’re adding contextual overrides rather than reinventing it each time, reinventing the same thing over and over again.

Drew: So that’s the C, Composition. Next we’ve got U, which is Utility. So what do we mean by utility?

Andy: So it’s a class that does one job, and it does it really well. That could be an implementation of a design token which… it’s an abstract of properties. Usually it’s colors or typography styles, sizing, and rules like that. The idea is you generate utility classes that apply those. So you’ve got a utility that will apply background primary, which is like the primary color, and then color primary, which is the text color. Then you might generate some spacing tokens for marginal padding, and all those sorts of things. They just do one job. They just add that one spacing rule, that one color rule, and that’s it.

Andy: But then you’ve got other utilities as well. So a good example is a wrapper utility. What that will do is, it will put a maximum width on an element and then it will put left and right auto margin to sit it in the middle of the thing. So it’s just got one job, and it’s just doing it efficiently and well.

Andy: So you’ve got your global styles, you’ve done a lot of your typography settings and a lot of your flooring space. Your composition’s then giving context and layout. Then utilities are applying tokens directly to elements to give them those styling that you need. So like a heading, for example, you’re saying, “I want this to be this size and I want it to have this lead in, and I want it to have this measure.” Then at that point… this is what I was saying about the blocks… then you go further down the stack, and you’ve already done most of the work at the point.

Andy: So they give you this really efficient way of working, and because HTML sort of streams down the pipe as well, it’s really nice to abstract the workload onto HTML rather than CSS as well, I’ve found. I used to really get into utility classes, like in this sort of old curmudgeon style of, “Oh, separation of concerns,” but I actually think it’s a really decent way of working. I mention in the article that I actually like Tailwind CSS. I think it does work, and I really like using it for product typing because I can really put something out really quick. But I think it just goes a little bit too far, does Tailwind, whereas I like to rain it in when it goes beyond just applying a single rule on a class. So that’s it, I think. Do you?

Drew: So, yeah, you talk in the article a lot about design tokens, which is something that we’ve talked about on the Smashing Podcast with Jina Anne back in episode three, I think it was. So it sounds like design tokens are a really fundamental aspect.

Andy: Yeah. Oh, God, yeah. I remember so vividly when Jina was doing the Lightning Design System stuff because I was building a design system at the time, or something that resembled a design system, and we were struggling to get executive approval of it. When the Lightning Design System came out, I literally just sent them link after link and I said, “This is what we’re doing. We’re building a design system. This is what Salesforce are currently using it for.” I remember her work at the time actually helped me to get stuff through the door.

Andy: Then the design token stuff has always stuck with me as being a really good way of applying these rules. Because I’m a designer by trade, so I can just sort of see that organization and the ability to organize and create a single source of truth being really useful because it’s something we’ve not really had in digital design, especially in the Adobe era of working with Photoshop and stuff, we just didn’t have that luxury. We had it in print with the Pantone Book but we didn’t have it in digital with random hex codes all over the shop.

Andy: So it’s just great. I love that level of control. Actually, I think it aids in creativity because you’re not thinking about unimportant stuff anymore, you’re just thinking about what you’re doing with it.

Drew: Does the implementation of those design tokens matter particularly with the approach? Is it always CSS custom properties?

Andy: I think that’s a really important point with CUBE. Some of the responses I’ve had, people have struggled with this a little bit. There’s no mention of technology in it whatsoever. The only technology that’s consistent is CSS. You can do it however you want. You could do all this with whatever CSS and JS things people are doing now, or you could it with just Vanilla CSS. You could do it with Sass. I do it with Sass. Less, if that’s what you’re still doing. All these available technologies, post CSS, all these things. You can do however you want to do it, it doesn’t matter.

Andy: The idea is that if you follow those sort of constructs, you’ll be fine. That’s the idea behind it. It’s a very loose and not strict as some of the methodologies are. I’ve seen it with BEM especially, people get really ingrained in the principles of BEM to the point where it’s like you’re not even solving the problem anymore. I think that you’ve got to be flexible. I said it in this talk last year. I was like, “If you stick to your guns too tightly, you can actually cause problems for yourself in the long run because you try and follow a certain path, and you know it’s not working anymore.” You should always be flexible and work with a system rather than working to the letter to it.

Drew: So the B, the B is Block. You’ve talked about this idea, that by the time you get down to the block level, most of everything should be in place, and then the block level styling is only really concerned with the actual very detail of a particular component. Generally, is the concept of a block similar to what people will be familiar with?

Andy: Oh, absolutely, yeah. So imagine your BEM component and take all the visual stuff out of it, and that’s what you’re left with, essentially, the block. This is what I struggled to articulate when I first started thinking of this methodology. A block is actually really a C, it’s a composition, but that makes it really difficult because you’re into recursive territory there and I think people’s brains would explode. But really that’s what a block is, it’s actually another compositional layer but more of a sort of strict context, so like your card, your button, your carousel, if that’s what you like doing still, and all that sort of stuff.

Andy: It’s like a specific thing, a component, and then inside of there you’re setting specific rules for it to follow, really ignoring the rest so you’re not… You might apply tokens in the blocks, and I do do that still, but really it’s more layout orientated, is a block, as far as I work with them, or at least taking the token and applying it in a specific way, like a button hover status, stuff like that. So really your block should be tiny by the time you get down to them, they shouldn’t be really doing much at all.

Drew: So it could be as small as a hyperlink.

Andy: Yeah.

Drew: But it could also be a compound collection of other blocks?

Andy: Yeah. Like a module sort of thing. You could definitely do that. Because, again, that goes back to the sort of compositional aspect of it, is that whatever goes in it shouldn’t matter. The good example of that is like the card. So the content of a card is, say, like a heading, a summary and a button. You shouldn’t really be specifically targeting those three elements. You should be saying, “Look, anything that happens to find itself in content, have some flow rules in there and have some sort of compositional layout rules,” and then it doesn’t matter what you put in there. You might decide that you want to put an image in that content thing and it should just work, it should just look fine.

Andy: That’s the whole point of working with CSS. It’s a very forgiving way of working with CSS. You’re making your life a lot easier by being less rigid because when stuff accidentally finds itself in something, which it will, it doesn’t look horrific as it could do if you were being more specific about things, is what I’ve found.

Drew: I definitely need a lot of forgiveness around my CSS!

Andy: I know you do!

Drew: Cheers! So that’s the B. The last thing is E: E is Exception. Now we’re not talking about error messages, are we?

Andy: No, no. It’s a sort of-

Drew: We’re not talking about JavaScript exceptions.

Andy: Yeah, yeah. There should be none of that at this point. I should hope not anyway, otherwise you really are in the woods at that point: I don’t think I’m going to be able to help you! The whole idea of this is… so you’ve created the context with your block, and an exception is exactly that, it’s like an exception to the rule: so a flipped card, or it might be a ghost button. So you know those buttons that have just got a border and a transparent background? That would be an exception because a button has probably got a solid background color and then the label color. So it’s creating a sort of distinct state of variation.

Andy: The reason why I do this with data attributes instead of classes, and the reason why that is is because a) I think it’s nice to have a distinction. So when you’re scanning through lots of HTML, you can see data, hyphen something, you’re like, “Right, okay, something has definitely changed on this element.” The other thing is that it’s very nice to give JavaScript access to that state, and vice versa as well. So I really like applying state with data attributes in JavaScript. I think that is essentially what they’re for, a sort of communication layer. The harmony between them seems to work really well.

Andy: So a good example is, say you’ve got a status message and then JavaScript will add data state is either success, error or information, or something. You can then hook into that with your exception styles in CSS. So you know that’s an exception of the status component and it’s going against its default state. So it’s just a really handy way of working with things. It’s predictable on both ends: it’s predictable on the CSS end, and it’s predictable on the JavaScript end as well.

Drew: I guess it’s quite nice that something that class names don’t give you is a property and value. So if you want to have something like that which is the state, and it can either be success or failure or warning or what have you, you can specifically address that state property and flip its value. Whereas with a big long list of class names, if you’re manipulating that in JavaScript, for example, you’re going to have to look at each one of them and add that business logic in there that says, “I can only set one of these,” and what happens if two of those classes are applied to the same element? You can’t get that with a data attribute, it only has one value.

Andy: Yeah. That’s a good way of saying that, yeah. It is very helpful, I’ve found, to work like that.

Drew: That’s quite interesting. I don’t think I’ve seen any other methodologies that take that approach. Is that completely unique to CUBE, doing that?

Andy: It might be. I don’t really pay much attention to other stuff, which I should do. Someone else is probably doing that. I’ll tell you now, it’s been the most controversial aspect of it. Some people really did not like the idea of using data attributes. The thing is as well, and how I respond, is, do what you want. We’re not telling you to do things in a certain way, it’s just suggestions. If you want to do exceptions to CSS classes, like modifiers, then knock yourself out. The CUBE police aren’t going to come knocking at your door. It’s absolutely fine.

Andy: The CUBE thing is a thinking thing, it’s a structure. You apply that structure however you want to apply it, with what tooling you want, or whatever technology you want. As long as you keep things consistent, that’s the important thing.

Drew: So there’s no such thing as pure CUBE?

Andy: The way I write it is pure CUBE, Drew. Everyone else is just a fake, it’s just a weak immitation.

Drew: Apart from to you, no-one can say, “That isn’t textbook CUBE.”

Andy: No, that’s it. No-one can dispute that really, can they? So, yeah, I’ll go with that. Gives you a bit of clout or something, I think, something like that.

Drew: Can you mix and match a CUBE approach with other methodologies? Can you use bits of BEM?

Andy: Yeah, I reckon so. I’ve been thinking about it a little bit because I’m going to do some more stuff on it soon because it’s become quite popular, so people will want more work. One thing I’m going to look at is how to approach using the CUBE methodology with something existing.

Andy: So there’s two opposite ends of the scale. A good question that people have asked is: “How does this work with every layout, the other stuff?” I’m like, basically, every layout is the C. That’s what every layout is, it’s the compositional layer. Then someone else asked, “Well, how would this work with something like Atomic Web Design, like their stuff that Brad Frost did? It’s like, well, you could break those pieces up and apply them at each level. Atomic Design goes all the way down into the micro detail. It’s abstracting that into using, right, okay, well I can apply this with utilities, so the molecules, I think. I can apply that with the utilities, and it’s translating what you know already into this slightly different structure of working.

Andy: Really, it’s a renaming for a lot of things. I’ve not invented anything here, I’ve just sort of, like I say, I’ve just stolen things that I like. I love the way that some of the Atomic Design stuff is thought about. That’s really some smart work. And BEM. The stuff Harry did, the Inverted Triangle CSS, I thought that was really cool. So I’ve just sort of nicked bits that I like from each one of them and sort of stitched them all together into this other hybrid thing, approach. More to come, I think.

Drew: Can the CUBE approach be applied to existing projects that already have CSS in place or is it something you really need to start on a fresh project with?

Andy: That very much depends. So if you’ve got like a bootstrap job and it’s just got thousands of lines of custom CSS, that I’ve definitely been involved in before, then I think you might be trying to put a fire out with a bottle of water at that point. But if you… say, for instance, if you’ve got a rough BEM setup and it’s gone a bit layer-y, you could use CUBE to refactor and actually pull it back into shape again.

Andy: It depends, the answer to that one. But it’s doable, as with everything. If you really want it to work, Drew, you can do it if you want, can’t you? The world is our oyster!

Drew: Especially if your BEM site’s gone layer-y.

Andy: Yeah. Nothing worse than a layer-y BEM site!

Drew: I’ve noticed in the examples that you’ve given… and I’ve got an eagle eye, I’ve seen you’ve been doing this for a while… a lot of your class values in the HTML attribute are wrapped in square brackets.

Andy: Oh, God, yeah. Tell you what, Drew-

Drew: What is that about? What is that about?

Andy: I’ll tell you what, if there’s ever one thing that I’ve done in my whole career that’s just been absolutely outrageously controversial… and you follow me on Twitter, you’ve seen what comes out of my mouth… it’s those bloody brackets! My, God! People either love them or hate them. They’re Marmite, they are.

Andy: The reason I do them is a grouping mechanism. So if you look at the way that they’re structured, the way I do it is, block at the start and then I’ll do a utilities after that. Then what I might do is, in between a block group and a utility group, there might be another block class. So a good example of that would be… we’ll go back to the card again. But then say that there’s a specific block called a CTA, like a call to action. You might have that applied to the card as well, and then your utilities are enforcing the design attributes, so the colors and all that business. So then you’ve got three groups of stuff.

Andy: When you come to it, if you’ve got that order in your head each time, you know, okay, right, this first group’s blocks. Oh, that’s looks like another block. I’ve got that one. Then it’s like, right, they’re definitely utility classes. Then what I might even do is, if there’s a lot of design token implementation, have that in a separate group. So it’s just very clear what each group is doing, and there’s a separation inside of the classes there as well. I’ve found it really helpful. Some people find it incredibly offensive. It’s definitely a do it if you want to do it. Definitely you don’t have to do it.

Andy: It’s quite funny, when I published that article, so many people finished halfway through to ask me, “What is it with these brackets?” I was like, “Did you finish the article? Because there’s a big section at the end where it explains exactly what they’re doing,” to the point where I actually had to write a bit in the middle of the article of, “If the brackets are essentially doing your head in, click here and I’ll skip you all the way down to that explanation bit so you can just read about them.” It can be quite controversial.

Andy: When I’ve worked on really, really complex front-ends… and we did a little bit of stuff together, didn’t we, last year?

Drew: Yeah.

Andy: You’ve seen the sort of design implementation on that project that we were on. It requires that sort of grouping because there’s just so much going on at the time, there’s so much different stuff happening. I’ve just found it really, really useful over the years, and also get lots of questions about it, to the point where I was almost going to write just one page on my website that I could just fire people to to answer the question for them.

Drew: Slash, what’s with the brackets?

Andy: Yeah. Slash, brackets. Have you seen that new Hey Email thing that’s just come out? They’ve bought a domain of itsnotatypo.com, just to answer the whole Imbox, like im with an M rather than an in. Basically, I was like, “I think I need to do that,” like, whatswiththebrackets.com, and just do a one-pager about it.

Drew: It strikes me that the approach with brackets actually could be something that might be useful when using things like Tailwind or something that has a lot of classes because that can-

Andy: Yeah. Oh, God, yes.

Drew: You have classes that are addressing your break points and what have you, and then you’ll have things that are for layout, things that are for color or type, or what have you. So it might also be a useful way of dealing in situations like that.

Andy: I’d definitely agree with that. A good analogy… not analogy. A good bit of info about Tailwind is that I actually quite like Tailwind. I’ve used that on very big projects. The one thing that really opened my eyes to Tailwind though was when I saw a junior developer try to work out what was going on, and it was really, really eye-opening because they just didn’t have a clue what was happening.

Andy: I think that’s one problem I’ve found with these sort of over-engineered approaches, which I think it’s fair to say Tailwind is, is that there’s a certain skill level that is required to work with it. I know the industry tends to have an obsession with seniority now, but there’s still people that are just getting into the game that we need to accommodate, and I think having stuff that’s closer to the language itself is more helpful in those situations because they’re probably learning material that is the language as it is. So I think it’s just a bit more helpful. Especially having a diverse team of people as well. Just food for thought for everyone.

Drew: People might look at all the different methodologies that are out there and say, “This is evidence that CSS is terrible and broken, that we need… all these problems have to be solved by hacking stuff on top. We need tools to fix bits of CSS. We need strict procedures for how we implement it, just to get it to work.” Should the platform be adapting itself? Do we need new bits of CSS to try and solve these problems or are we all right just hacking around and making up funny acronyms?

Andy: I think the power of CSS, I think, is its flexibility. So if you’re going to program CSS, a lot of the knowledge is less of the syntax and more of the workings of a browser and how it works. I think that might be a suggestion, that the problem is that people might not have learnt CSS quite as thoroughly as they thought they might have learnt it, who created these problems. I’ve seen that in evidence myself. I spotted a spacing mechanism that had been invested, which was very complicated, and I thought, “This person has not learnt what padding is because padding would actually fix this problem for them, understanding how padding works and the box model.” That’s not to be snidey about it.

Andy: We work in an industry now that moves at an even faster pace than it has done previously and I think there’s a lot less time for people to learn things in detail. But, on that front, I think CSS still does have work to do in terms of the working group, who I think do a bloody good job. A great, shining example of their work was the Grid spec which was just phenomenal. The way that rolled out in pretty much every browser on day one, I thought that was so good.

Andy: But we’ve got more work to do, I think, and I think maybe the pace might need to increase a little, especially with stuff like container queries, we all love talking about them. Stuff like that I think would help to put CSS in a different light with people, I think. But I think CSS is brilliant, I love it. I’ve never had a problem with it in lots of years really. I do find some of the solutions a bit odd, but there you go.

Drew: What’s the response been like to CUBE since you published the article?

Andy: Mind-blowing. I honestly published it as just supporting material, and that’s all I expected it to be, and it’s just blown up all over the place. A lot of people have been reading it, asking about it, been really interested about it. There’s definitely more to come on it.

Andy: I did say in the article, I said, “Look, if people are actually quite interested in this, I’ll expand on this post and actually make some documentation.” I’ve got bits of documentation dotted around all over the place, but to sort of centralize that, and then I was thinking of doing some workshops and stuff. So there’s stuff to go. It’s how Every Layout started as well. We both had these scattered ideas about layout and then we sort of merged them together. So something like that, I suppose, will come in the future.

Drew: Are there any downsides that you’re aware of to using CUBE? Are there problems that it doesn’t attempt to solve?

Andy: Yeah. This accent, Drew, it just won’t go way, no matter what I do! In all seriousness, I think CUBE’s got as close as I can get to being happy with the front-end, which is saying a lot, I think. You never know, things might change again. This has evolved over more recent years. Give it another five years, I’ll probably be struggling with this and trying something else. I think that’s the key point, is to just keep working on yourself and working on what you know and how you approach things.

Andy: This definitely won’t work for everyone as well, I know that for a fact. I know that from my comments. I don’t expect it to work for everyone. I don’t expect anything to work for everyone. It’s the same with JavaScript stuff: some people like the reactive stuff and some people don’t. It is what it is. We’re all people at the end of the day, we all have different tastes. It’s all about communicating with your teammates at the end of the day, that’s the important thing.

Drew: I know you as a very talented designer and developer and you, like many of us, you’re just working on real projects all day, every day. But you’ve recently started publishing on this site, Piccalilli, which is where the CUBE CSS introduction article was. So Piccalilli is kind of a new venture for you, isn’t it? What’s it all about?

Andy: Very kind of you to say, Drew. You’ve actually worked with me, so that’s high praise. But the Piccalilli thing is an evolution. So I’m a freelancer. I do client work, but I think this has become apparent with the pandemic, that that is not the most sustainable thing in the world in some industries. I think freelancing can be very, very tough, as a developer and designer. It’s something that I’ve been doing it for so long now, 10 years… well, 12 years now actually.

Andy: I fancied doing something a bit different and applying the knowledge that I’ve got and actually sharing it with people. I’ve always been very open and sharing, and I wanted to formalize that. So I created Piccalilli to write tutorials, but mainly for courses that I’m producing: that’s the main meat and potatoes. And then there’s the newsletter which is… people are really enjoying the newsletter because I share cool things I’ve found on the internet every week. That’s the backbone of it. It’s just going really well. That’s essentially where I want to see myself doing more and more full-time, as the years go on, I think.

Drew: So what’s coming next for Piccalilli? Have you got anything that you’ve got coming out?

Andy: Thanks for the door open there, Drew! By the time this recording goes out, the first course will be live: Learn Eleventy From Scratch, and that’s where we learn how to build a Gatsby website! No, you learn how to build an Eleventy site. So you start off with a completely empty directory, there’s nothing in it, it’s empty, and then at the end of it you’ll finish up with this really nice-looking agency site. We learn all sorts in it. You learn how to really go to town with Eleventy. We pull remote data in from places. We use CUBE CSS to build a really nice front-end for it.

Andy: If you want to get into the Jamstack and you want to get into static site generators, or just how to build a nice website, it’s just a really handy course, I hope, for that. It’s currently being edited within an inch of its life as we’re talking. It’s going to be cool, I hope, and useful. But that’s an accumulation of a lot of stuff I’ve been doing over the last couple of years. So it should be fun.

Andy: So buy it, and I’ll do a discount code, do like smashingpod for 40% off, and you can get it when it comes out.

Drew: Amazing. We’ll link that up. Have you figured out how to spell Piccalilli reliably yet?

Andy: I was on with Chris and Dave with the ShopTalk Show and I said on there, “If there’s ever one thing you want to hire me for it’s to write Piccalilli by hand first time without even thinking about it,” because I’ve written that word so many times that I just know exactly how to spell it off by heart. So the answer to your question is yes.

Drew: Well, I’m still struggling, I’ll tell you that much!

Andy: It is hard. Oh, God. I totally empathize. It took me a long time to learn how to spell it but it’s one of those words in our vocabulary. This year I’m trying to spell necessary without making a spelling mistake!

Drew: So I’ve been learning all about CUBE CSS. What have you been learning about lately, Andy?

Andy: Do you know what? This is going to surprise you, Drew. MySQL is what I’ve been learning about recently. So, basically, Piccalilli is totally self-published. It’s an Eleventy site but it’s got an API behind it, and that’s got a MySQL database behind it. The stuff that gives people content that they’ve purchased requires some pretty hefty querying. So I’ve just actually properly invested in some MySQL… especially the difference between joins, which I didn’t actually realize there was a difference between each type of join. So that’s been really useful and it’s resulted in some pretty speedy interactions with the database.

Andy: I used to run this thing called Front-End Challenges Club and when I first launched it it just collapsed and died on itself because MySQL was shoddy to say the least. So I’ve really been learning how to do that because I’m not a backend person at all, I’m a pixel-pusher. So it’s definitely not in my remit. That’s more your neck of the woods, isn’t it? I find it really cool, MySQL. I actually really like writing it. It’s a really nice, instructional language, isn’t it?

Drew: It is, it’s great. I learnt SQL at school.

Andy: Wow!

Drew: We’re talking like 20 years ago now.

Andy: Did they have computers in those days?

Drew: They did, yeah. We had to wind-

Andy: Did you have to write it by hand?

Drew: We had to wind them up! We did. But, I tell you, for a developer, it’s akin to learning your times tables: one of those things that seems like a bit of a chore but once you’re fluent, it just becomes useful time and time again.

Andy: Yeah. For sure. There’s really tangible differences as well. You really see the difference in speed. I really like working with Node because that’s really fast but Node and MySQL is just… not a very common choice, but I think it’s a pretty good choice. I think it works really, really well. So I’m happy with that. As you know, I don’t like writing PHP. So that’s never going to be an option.

Drew: If you, dear listener, would like to hear more from Andy, you can follow him on Twitter where he’s at hankchizljaw. You can find Piccalilli at piccalil.li, where you’ll also find the article describing CUBE CSS, and we’ll also add links to all of those in the show notes, of course.

Drew: Thanks for joining us today, Andy. Did you have any parting words?

Andy: Stay safe, and wear your mask.

(il)

Categories: Others Tags: