Archive

Archive for the ‘’ Category

6 Best AI Productivity Apps in 2024

February 28th, 2024 No comments

There’s no escaping it: if you want to be successful, you need to be productive. The more you work, the more you progress, which for many people means long days, working evenings, and weekends. But it doesn’t have to be like that.

Categories: Designing, Others Tags:

UX Design for the Modern User: Creating Intuitive and User-Friendly Experiences

February 27th, 2024 No comments

Remember the days when clunky interfaces and confusing menus were tolerated? In 2023, with the average user encountering over 10,000 marketing messages daily, attention spans are shrinking faster than glaciers!

Users demand experiences that are intuitive, engaging, and even fun. To cut through the noise and stand out, you must be user-centric and prioritize people’s needs. 

This blog explores the key principles and latest trends that shape your UX design process in the modern age. Dive in to unlock the secrets of UX design for the modern user.

What is user experience (UX) design? 

UX design, or user experience design, creates an intuitive and satisfying experience, guiding users through your product with ease and delight. It’s like paving a clear path that turns using technology into a joy, not a struggle.

UI vs. UX design

Image with different points highlighting difference between UI vs UX design.

(Image source)

UI (User Interface design) is the LOOK and FEEL of a product, like the buttons and screens you interact with.

UX (User Experience design) is the ENTIRE journey with a product, from how easy it is to use to how it makes you feel.

What does the modern user demand?

In today’s digital landscape, users come in all shapes and sizes, from tech-savvy teens glued to their phones to grandparents mastering video calls. But one thing unites them: the search for a great user experience. 

Delivering it isn’t as easy as it seems. Each user is an individual, and so is each digital experience. Combine user personalization with the enormity of the Internet itself, and you begin to see the challenge of meeting user expectations.

Several factors drive this “butterfly effect”:

  • Data deluge: We’re drowning in information, making it crucial for content to be clear, concise, and visually appealing. After all, who has time for dense text walls in this fast-paced world?
  • The mobile revolution: The world is literally in our pockets now, with smartphones serving as gateways to information, entertainment, and endless connections.
  • Information overload: We’re bombarded with notifications, emails, and messages, pulling our focus in a million directions.

This is where data analytics tools come in. These powerful tools not only help crunch numbers but also understand modern users. By collecting, analyzing, and interpreting data, UX designers can gain valuable insights into:

  • User behavior: How do users interact with products and services? What are their pain points and frustrations?
  • User needs: What problems are users trying to solve? What are their unmet needs?
  • User preferences: What do users like and dislike? What features are most used?
  • User feedback: How are users reacting to new features or changes?

This data helps user experience designers make informed decisions about product development, creating intuitive and user-friendly experiences that meet users’ expectations and needs.

Key principles of UX design for the modern user

Here are some essential UX design principles that can help you craft a positive and engaging user experience for modern users in 2024:

1. User-focused

88% of website visitors leave a site because of a bad user experience. Understand your users’ pain points, behaviors, and expectations. Conduct user research and A/B testing to refine your designs and ensure they solve real problems, not create new ones.

2. Mobile-first

According to Statcounter, 57.87% of global web traffic originated from mobile apps in 2023. Prioritize responsive designs that adapt seamlessly to different screen sizes and interactions. 

3. Intuitive navigation

42% of people would leave a website because of poor functionality. Use clear labels, logical page hierarchies, and familiar design patterns like breadcrumbs and progress bars to make navigation effortless.

4. Minimalism and clarity

Avoid clutter and information overload. Prioritize the most important content, use whitespace effectively, and leverage visual cues like icons and illustrations to guide users without bombarding them.

5. Accessibility and inclusion

Use clear language, high contrast ratios, alternative input methods like keyboard navigation, and screen reader compatibility to ensure everyone has an equal and positive experience.

Recommend: Is your Website Accessible? It Should Be.

UX design trends for the modern user in 2024

By prioritizing user needs, leveraging cutting-edge tech, and championing accessibility, you can create UX design for modern users. Here are 5 design trends to watch in 2024:

1. Voice interface

Role of Voice interface in UX design for modern users

(Image source)

Statista predicts that 8 billion voice assistants will be in use by 2024. This rise demands intuitive voice commands and Natural Language Understanding (NLU). UX designers must master conversational design, creating flows that feel like friendly chat, not robotic interactions.

2. Personalization and customization

Users crave experiences tailored to their unique needs and preferences. Dynamic content, intuitive interfaces, and AI-powered recommendations are key. Think beyond the Netflix model – personalize everything from product recommendations to learning paths.

A 2023 study by McKinsey found that 71% of consumers expect personalization, and 76% get frustrated when this doesn’t happen.

Artificial intelligence (AI) tools like Framer, Jasper, and Adobe Sensei help give designers an edge. They streamline workflows while improving personalization for ?users — double-check.

3. Micro-animation and motion graphics

Elegant animations of buttons, progress bars, and transitions inject life and responsiveness into user interfaces. Every click should be a mini-celebration.

Also, adding visual elements like motion graphics will help website visitors stay longer and engage more.

4. Immersive experiences

How 3D image helps create immersive UX design experiences.

(Image source)

VR/AR integration, 3D elements, and haptics (think vibration controllers) are blurring the lines between digital and real-world experiences. Imagine users not just looking at your app but stepping into it.

The global Virtual Reality (VR) market is projected to reach $58.61 billion by 2024, showcasing the immense potential of immersive experiences.

5. Data-driven design

A/B testing, user research, and analytics should inform every design decision. Optimize for user behavior, not just aesthetics. Data is the compass that guides your design decisions, ensuring you’re creating experiences that truly resonate.

Closing thoughts

We’ve explored the ever-evolving landscape of UX design, where user-centricity reigns supreme. We’ve unpacked the key principles that guide our digital interactions and the exciting trends shaping the future of the user experience design process. 

Remember, the modern user expects experiences that are intuitive, delightful, and accessible. So, embrace the challenge and let curiosity be your compass. Stay informed, experiment fearlessly, and never lose sight of the human at the heart of every interaction.
For constant inspiration and cutting-edge design knowledge, dive into the vibrant design community at Noupe. We’re passionate about pushing boundaries and helping you and your design team create experiences that matter. Join us – let’s design tomorrow, today!

Featured Image by Kelly Sikkema on Unsplash

The post UX Design for the Modern User: Creating Intuitive and User-Friendly Experiences appeared first on noupe.

Categories: Others Tags:

Reporting Core Web Vitals With The Performance API

February 27th, 2024 No comments

This article is a sponsored by DebugBear

There’s quite a buzz in the performance community with the Interaction to Next Paint (INP) metric becoming an official Core Web Vitals (CWV) metric in a few short weeks. If you haven’t heard, INP is replacing the First Input Delay (FID) metric, something you can read all about here on Smashing Magazine as a guide to prepare for the change.

But that’s not what I really want to talk about. With performance at the forefront of my mind, I decided to head over to MDN for a fresh look at the Performance API. We can use it to report the load time of elements on the page, even going so far as to report on Core Web Vitals metrics in real time. Let’s look at a few ways we can use the API to report some CWV metrics.

Browser Support Warning

Before we get started, a quick word about browser support. The Performance API is huge in that it contains a lot of different interfaces, properties, and methods. While the majority of it is supported by all major browsers, Chromium-based browsers are the only ones that support all of the CWV properties. The only other is Firefox, which supports the First Contentful Paint (FCP) and Largest Contentful Paint (LCP) API properties.

So, we’re looking at a feature of features, as it were, where some are well-established, and others are still in the experimental phase. But as far as Core Web Vitals go, we’re going to want to work in Chrome for the most part as we go along.

First, We Need Data Access

There are two main ways to retrieve the performance metrics we care about:

  1. Using the performance.getEntries() method, or
  2. Using a PerformanceObserver instance.

Using a PerformanceObserver instance offers a few important advantages:

  • PerformanceObserver observes performance metrics and dispatches them over time. Instead, using performance.getEntries() will always return the entire list of entries since the performance metrics started being recorded.
  • PerformanceObserver dispatches the metrics asynchronously, which means they don’t have to block what the browser is doing.
  • The element performance metric type doesn’t work with the performance.getEntries() method anyway.

That all said, let’s create a PerformanceObserver:

const lcpObserver = new PerformanceObserver(list => {});

For now, we’re passing an empty callback function to the PerformanceObserver constructor. Later on, we’ll change it so that it actually does something with the observed performance metrics. For now, let’s start observing:

lcpObserver.observe({ type: "largest-contentful-paint", buffered: true });

The first very important thing in that snippet is the buffered: true property. Setting this to true means that we not only get to observe performance metrics being dispatched after we start observing, but we also want to get the performance metrics that were queued by the browser before we started observing.

The second very important thing to note is that we’re working with the largest-contentful-paint property. That’s what’s cool about the Performance API: it can be used to measure very specific things but also supports properties that are mapped directly to CWV metrics. We’ll start with the LCP metric before looking at other CWV metrics.

Reporting The Largest Contentful Paint

The largest-contentful-paint property looks at everything on the page, identifying the biggest piece of content on the initial view and how long it takes to load. In other words, we’re observing the full page load and getting stats on the largest piece of content rendered in view.

We already have our Performance Observer and callback:

const lcpObserver = new PerformanceObserver(list => {});
lcpObserver.observe({ type: "largest-contentful-paint", buffered: true });

Let’s fill in that empty callback so that it returns a list of entries once performance measurement starts:

// The Performance Observer
const lcpObserver = new PerformanceObserver(list => {
  // Returns the entire list of entries
  const entries = list.getEntries();
});

// Call the Observer
lcpObserver.observe({ type: "largest-contentful-paint", buffered: true });

Next, we want to know which element is pegged as the LCP. It’s worth noting that the element representing the LCP is always the last element in the ordered list of entries. So, we can look at the list of returned entries and return the last one:

// The Performance Observer
const lcpObserver = new PerformanceObserver(list => {
  // Returns the entire list of entries
  const entries = list.getEntries();
  // The element representing the LCP
  const el = entries[entries.length - 1];
});

// Call the Observer
lcpObserver.observe({ type: "largest-contentful-paint", buffered: true });

The last thing is to display the results! We could create some sort of dashboard UI that consumes all the data and renders it in an aesthetically pleasing way. Let’s simply log the results to the console rather than switch gears.

// The Performance Observer
const lcpObserver = new PerformanceObserver(list => {
  // Returns the entire list of entries
  const entries = list.getEntries();
  // The element representing the LCP
  const el = entries[entries.length - 1];

  // Log the results in the console
  console.log(el.element);
});

// Call the Observer
lcpObserver.observe({ type: "largest-contentful-paint", buffered: true });

There we go!

It’s certainly nice knowing which element is the largest. But I’d like to know more about it, say, how long it took for the LCP to render:

// The Performance Observer
const lcpObserver = new PerformanceObserver(list => {

  const entries = list.getEntries();
  const lcp = entries[entries.length - 1];

  entries.forEach(entry => {
    // Log the results in the console
    console.log(
      The LCP is:,
      lcp.element,
      The time to render was ${entry.startTime} milliseconds.,
    );
  });
});

// Call the Observer
lcpObserver.observe({ type: "largest-contentful-paint", buffered: true });

// The LCP is:
// <h2 class="author-post__title mt-5 text-5xl">…</h2>
// The time to  render was 832.6999999880791 milliseconds.

Reporting First Contentful Paint

This is all about the time it takes for the very first piece of DOM to get painted on the screen. Faster is better, of course, but the way Lighthouse reports it, a “passing” score comes in between 0 and 1.8 seconds.

Just like we set the type property to largest-contentful-paint to fetch performance data in the last section, we’re going to set a different type this time around: paint.

When we call paint, we tap into the PerformancePaintTiming interface that opens up reporting on first paint and first contentful paint.

// The Performance Observer
const paintObserver = new PerformanceObserver(list => {
  const entries = list.getEntries();
  entries.forEach(entry => {
// Log the results in the console. console.log( The time to ${entry.name} took ${entry.startTime} milliseconds., ); }); }); // Call the Observer. paintObserver.observe({ type: "paint", buffered: true }); // The time to first-paint took 509.29999999981374 milliseconds. // The time to first-contentful-paint took 509.29999999981374 milliseconds.

Notice how paint spits out two results: one for the first-paint and the other for the first-contenful-paint. I know that a lot happens between the time a user navigates to a page and stuff starts painting, but I didn’t know there was a difference between these two metrics.

Here’s how the spec explains it:

“The primary difference between the two metrics is that [First Paint] marks the first time the browser renders anything for a given document. By contrast, [First Contentful Paint] marks the time when the browser renders the first bit of image or text content from the DOM.”

As it turns out, the first paint and FCP data I got back in that last example are identical. Since first paint can be anything that prevents a blank screen, e.g., a background color, I think that the identical results mean that whatever content is first painted to the screen just so happens to also be the first contentful paint.

But there’s apparently a lot more nuance to it, as Chrome measures FCP differently based on what version of the browser is in use. Google keeps a full record of the changelog for reference, so that’s something to keep in mind when evaluating results, especially if you find yourself with different results from others on your team.

Reporting Cumulative Layout Shift

How much does the page shift around as elements are painted to it? Of course, we can get that from the Performance API! Instead of largest-contentful-paint or paint, now we’re turning to the layout-shift type.

This is where browser support is dicier than other performance metrics. The LayoutShift interface is still in “experimental” status at this time, with Chromium browsers being the sole group of supporters.

As it currently stands, LayoutShift opens up several pieces of information, including a value representing the amount of shifting, as well as the sources causing it to happen. More than that, we can tell if any user interactions took place that would affect the CLS value, such as zooming, changing browser size, or actions like keydown, pointerdown, and mousedown. This is the lastInputTime property, and there’s an accompanying hasRecentInput boolean that returns true if the lastInputTime is less than 500ms.

Got all that? We can use this to both see how much shifting takes place during page load and identify the culprits while excluding any shifts that are the result of user interactions.

const observer = new PerformanceObserver((list) => {
  let cumulativeLayoutShift = 0;
  list.getEntries().forEach((entry) => {
    // Don't count if the layout shift is a result of user interaction.
    if (!entry.hadRecentInput) {
      cumulativeLayoutShift += entry.value;
    }
    console.log({ entry, cumulativeLayoutShift });
  });
});

// Call the Observer.
observer.observe({ type: "layout-shift", buffered: true });

Given the experimental nature of this one, here’s what an entry object looks like when we query it:

Pretty handy, right? Not only are we able to see how much shifting takes place (0.128) and which element is moving around (article.a.main), but we have the exact coordinates of the element’s box from where it starts to where it ends.

Reporting Interaction To Next Paint

This is the new kid on the block that got my mind wondering about the Performance API in the first place. It’s been possible for some time now to measure INP as it transitions to replace First Input Delay as a Core Web Vitals metric in March 2024. When we’re talking about INP, we’re talking about measuring the time between a user interacting with the page and the page responding to that interaction.

We need to hook into the PerformanceEventTiming class for this one. And there’s so much we can dig into when it comes to user interactions. Think about it! There’s what type of event happened (entryType and name), when it happened (startTime), what element triggered the interaction (interactionId, experimental), and when processing the interaction starts (processingStart) and ends (processingEnd). There’s also a way to exclude interactions that can be canceled by the user (cancelable).

const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    // Alias for the total duration.
    const duration = entry.duration;
    // Calculate the time before processing starts.
    const delay = entry.processingStart - entry.startTime;
    // Calculate the time to process the interaction.
    const lag = entry.processingStart - entry.startTime;

    // Don't count interactions that the user can cancel.
    if (!entry.cancelable) {
      console.log(`INP Duration: ${duration}`);
      console.log(`INP Delay: ${delay}`);
      console.log(`Event handler duration: ${lag}`);
    }
  });
});

// Call the Observer.
observer.observe({ type: "event", buffered: true });

Reporting Long Animation Frames (LoAFs)

Let’s build off that last one. We can now track INP scores on our website and break them down into specific components. But what code is actually running and causing those delays?

The Long Animation Frames API was developed to help answer that question. It won’t land in Chrome stable until mid-March 2024, but you can already use it in Chrome Canary.

A long-animation-frame entry is reported every time the browser couldn’t render page content immediately as it was busy with other processing tasks. We get an overall duration for the long frame but also a duration for different scripts involved in the processing.

const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    if (entry.duration > 50) {
      // Log the overall duration of the long frame.
      console.log(Frame took ${entry.duration} ms)
      console.log(Contributing scripts:)
      // Log information on each script in a table.
      entry.scripts.forEach(script => {
        console.table({
          // URL of the script where the processing starts
          sourceURL: script.sourceURL,
          // Total time spent on this sub-task
          duration: script.duration,
          // Name of the handler function
          functionName: script.sourceFunctionName,
          // Why was the handler function called? For example, 
          // a user interaction or a fetch response arriving.
          invoker: script.invoker
        })
      })
    }
  });
});

// Call the Observer.
observer.observe({ type: "long-animation-frame", buffered: true });

When an INP interaction takes place, we can find the closest long animation frame and investigate what processing delayed the page response.

There’s A Package For This

The Performance API is so big and so powerful. We could easily spend an entire bootcamp learning all of the interfaces and what they provide. There’s network timing, navigation timing, resource timing, and plenty of custom reporting features available on top of the Core Web Vitals we’ve looked at.

If CWVs are what you’re really after, then you might consider looking into the web-vitals library to wrap around the browser Performance APIs.

Need a CWV metric? All it takes is a single function.

webVitals.getINP(function(info) {
  console.log(info)
}, { reportAllChanges: true });

Boom! That reportAllChanges property? That’s a way of saying we only want to report data every time the metric changes instead of only when the metric reaches its final value. For example, as long as the page is open, there’s always a chance that the user will encounter an even slower interaction than the current INP interaction. So, without reportAllChanges, we’d only see the INP reported when the page is closed (or when it’s hidden, e.g., if the user switches to a different browser tab).

We can also report purely on the difference between the preliminary results and the resulting changes. From the web-vitals docs:

function logDelta({ name, id, delta }) {
  console.log(`${name} matching ID ${id} changed by ${delta}`);
}

onCLS(logDelta);
onINP(logDelta);
onLCP(logDelta);

Measuring Is Fun, But Monitoring Is Better

All we’ve done here is scratch the surface of the Performance API as far as programmatically reporting Core Web Vitals metrics. It’s fun to play with things like this. There’s even a slight feeling of power in being able to tap into this information on demand.

At the end of the day, though, you’re probably just as interested in monitoring performance as you are in measuring it. We could do a deep dive and detail what a performance dashboard powered by the Performance API is like, complete with historical records that indicate changes over time. That’s ultimately the sort of thing we can build on this — we can build our own real user monitoring (RUM) tool or perhaps compare Performance API values against historical data from the Chrome User Experience Report (CrUX).

Or perhaps you want a solution right now without stitching things together. That’s what you’ll get from a paid commercial service like DebugBear. All of this is already baked right in with all the metrics, historical data, and charts you need to gain insights into the overall performance of a site over time… and in real-time, monitoring real users.

DebugBear can help you identify why users are having slow experiences on any given page. If there is slow INP, what page elements are these users interacting with? What elements often shift around on the page and cause high CLS? Is the LCP typically an image, a heading, or something else? And does the type of LCP element impact the LCP score?

To help explain INP scores, DebugBear also supports the upcoming Long Animation Frames API we looked at, allowing you to see what code is responsible for interaction delays.

The Performance API can also report a list of all resource requests on a page. DebugBear uses this information to show a request waterfall chart that tells you not just when different resources are loaded but also whether the resources were render-blocking, loaded from the cache or whether an image resource is used for the LCP element.

In this screenshot, the blue line shows the FCP, and the red line shows the LCP. We can see that the LCP happens right after the LCP image request, marked by the blue “LCP” badge, has finished.

DebugBear offers a 14-day free trial. See how fast your website is, what’s slowing it down, and how you can improve your Core Web Vitals. You’ll also get monitoring alerts, so if there’s a web vitals regression, you’ll find out before it starts impacting Google search results.

Categories: Others Tags:

Top 7 Best OCR Tools You Need to Use in 2024

February 27th, 2024 No comments

OCR (Optical Character Recognition) tools are software that can identify text, handwriting, and printed characters in images and PDF files. These tools convert them into editable and searchable digital text.

Essentially, OCR tools eliminate the need to manually type documents by automatically extracting the text.

Key Capabilities of OCR Software

Following are some of the key capabilities of OCR software

  • The Important function of OCR is to detect text elements in images and convert them to computer-readable text that can be edited, formatted, searched, and used in other documents.
  • More advanced Optical text recognition tools can recognize handwritten text and cursive scripts. This allows you to digitize even handwritten documents.
  • Top document scanning software with AI and deep learning can extract text in over 100 languages including English, Chinese, Japanese, Korean etc.
  • Most OCR apps can take common file types like JPEGs, PNGs, PDF scans and convert them to new editable Word, Excel, searchable PDF and other formats.

Why Do You Need OCR Tools?

Here are some top reasons why utilizing automatic text recognition technology is critical in 2024:

1. Accelerate Document Processing 

Manually typing and recreating paper documents is extremely time-consuming. OCR tools speed up the processing of scanned files, PDFs, and image-heavy files. OCR technology accelerates document processes in business also, you can convert your physical documents into searchable digital files. 

2. Improve Data Accuracy 

Humans make errors when manually extracting and copying text. Advanced Text recognition software uses AI to accurately capture text, minimizing errors.

Related Information: Text vs. Images: Which Content Format is Effective?

3. Enhance Searchability 

Document scanning unlocks scanned PDFs and image files by detecting text that can be searched. This makes discovery and navigation easier.

4. Save Storage Space 

Paper documents and image files take up large storage. Text scanning minimizes this by converting documents into space-efficient digital files.

5. Support Data Analysis 

Text recognition tools enable new ways to organize, find, and understand important information hidden in picture documents, making it easier to use and learn from them.

7 Best OCR Tools You Need to Use in 2024

Here are the top 7 OCR tools that you need to use in 2024 and lessen your manual efforts:

1. Softo

As the world goes digital, this smart tool changes pictures into words quickly and accurately. It works on JPEGs, PNGs, and scanned PDFs, turning them into editable text without messing up the info. 

The text it gives you looks just like what’s in the picture, without any extra data added. It works with lots of different languages and types of pictures, so you can always convert stuff no matter where it’s from. You can save the text as a .txt file or send it straight to other apps. 

It’s easy to use, and you don’t have to make an account. Your information will stay safe, and the tool works well.

In today’s world where everything is digital, having a good tool to change pictures into text is super important for getting things done. Softo Image to Text Converter is high-quality for accuracy, speed, and language support.

2. Image to Text Converter

The Image-to-text converter, also known as OCR. This technology allows you to take a picture or scan of printed or handwritten text and turn it into digital text. This tool uses advanced technology to look at the shapes and patterns in the image. 

Later this converter figures out what letters and numbers they are. It can accurately read text in different fonts and languages like English, Chinese, Arabic, and more. OCR supports many common image formats like JPG and GIF files. 

It works on scans of documents, photos of text, screenshots, and even handwritten notes. The converted text looks exactly like the original. Using this amazing tool, you can save your bundle of time because you don’t have to manually type up the text.

Document scanner also makes printed materials easier to edit, search, share, and store on your computer. This useful innovation helps you handle text and documents in the digital world.

Some of its notable benefits are:

  • Save time and effort with quick online conversion of image text.
  • Easily convert handwritten notes into editable formats.
  • Efficiently archive documents and organize research materials.
  • Extract text from invoices, receipts, and screenshots effortlessly.
  • Handle low-quality or distorted images with ease.
  • Enjoy the convenience of extracting text from multiple images for free.

3. Klippa

While many online OCR converters have limitations, Klippa offers a comprehensive solution called DocHorizon that goes beyond simple image-to-text conversion. With AI and Machine Learning, DocHorizon can do more than just extract text from images.

It can also extract data, anonymize, convert, classify, and verify documents. You can submit files through various channels like the app, web, FTP, or email, and the AI-embedded OCR processes them quickly. 

It can handle multiple documents at once, offers various export options, and supports high document volumes. Additionally, it continuously learns and improves its speed and accuracy over time. 

DocHorizon even analyzes EXIF data to detect document forgery, ensuring security and reliability.

4. Image to Text Ai Converter

The AI image-to-text converter is a handy tool that takes images like photos, scans, or screenshots. Later it turns the text in them into editable digital text. It works by using advanced AI algorithms to analyze an image and identify the shapes of letters, numbers, and symbols. 

This lets you take things like pictures of notes, research papers, or foreign language documents. Text extractor converts them quickly without needing to type everything out manually. 

The AI is smart enough to detect different fonts and writing styles and convert them cleanly into a Word doc or other format. It can even handle messier handwritten notes. Besides just recognizing text, you also have the option to translate extracted foreign language text into 90+ languages.

Overall, this innovative converter saves huge amounts of time and effort for anyone who works with printed documents and images. Instead of retyping or risking errors copying text from an image, this tool digitizes it with high accuracy through the power of AI.

5. Image-to-text converter

Text recognition tools make our lives much easier than before. Because in the past, it was really hard and took a lot of time to get text from documents and pictures by hand. But now, we have OCR technology, which makes it much easier. 

It works by analyzing the visual patterns in the image to identify letters, numbers, symbols, and words, essentially “reading” the text. The tool supports virtually all image formats including JPG, PNG, and GIF. 

This scanner can handle everything from high-resolution scanned documents to low-quality smartphone pictures. Whether it’s project reports, research papers, receipts, menus, or handwritten notes. 

This image-to-text converter can accurately recreate them as editable text while preserving all formatting. Users can then easily copy-paste or export the converted text into Word, Excel, and other applications for further editing or sharing. 

The conversion process requires no software installation and can handle multiple languages like English, French, Spanish, etc.

This extraction process can be defined in three straightforward steps:

  1. Preprocessing: The image gets ready for recognizing characters by making some initial adjustments and optimizations.
  2. Recognizing Characters: Algorithms look at the darker areas and decide those are the characters, using certain patterns they know to recognize them.
  3. Postprocessing: After recognizing the characters, some final touches are made to ensure everything is accurate and easy to read.

6. DNS Checker

DNS checker makes it easy to turn a photo of text into digital text. It uses a smart AI algorithm called OCR (optical character recognition) to scan an image and extract any text it finds.

This could be text from a scanned report, a picture of a handwritten sticky note, a screenshot, or a photo of words. The tool can identify letters, numbers, and symbols accurately and quickly convert them without any errors.

This saves you from having to manually type out all the text. Instead, you get editable digital text keeping the original formatting. The tool works great for making documents searchable, sharing text from images, or creating editable versions of handwritten notes.

  • Businesses can use it to make paperwork digital. Instead of employees typing out scanned documents word for word, this tool extracts all the text automatically. This makes paperwork much easier to search, share, and store.
  • Students and teachers can turn handwritten school notes into typed notes on their devices. This helps them save time and organize their documents.
  • Doctors and nurses can use this tool to put patient records and reports into digital formats. This makes medical paperwork easy to store.

7. Online Notepad

Online Notepad is a versatile and fast editor with an advanced OCR engine. This excellent image-to-text converter tool makes converting images and documents into editable digital text. This text extractor is incredibly quick and accurate.

Using smart AI technology, it can scan an image and detect all the letters, words, and sentences within. This works on everything from low-resolution pictures to multi-pages of printed materials like books. No matter if the text is typed or handwritten, this OCR can identify it with accuracy.

Students can convert images of study material into text to edit into notes. Businesses can make their records searchable without complex and long typing. The user-friendly tool has flexible settings to export the converted text into Word, PDFs, and more. 

You can upload images from your computer or cloud storage. This clever converter makes it easy to extract tricky text automatically. It’s really fast, accurate, and can handle all sorts of tasks, giving users more control and saving time.

Conclusion

OCR tools are super helpful for turning pictures of text into editable digital words. They help speed up work, make sure data is right, and make it easier to find stuff.

Using these tools in 2024 is a smart move for anyone who wants to work faster and smarter with digital text.

We hope that this guide is super useful and informative. So read it carefully and convert your visual texts into editable texts immediately!

The post Top 7 Best OCR Tools You Need to Use in 2024 appeared first on noupe.

Categories: Others Tags:

A Web Designer’s Accessibility Advocacy Toolkit

February 26th, 2024 No comments

Web accessibility can be challenging, particularly for clients unfamiliar with tech or compliance with The Americans With Disabilities Act (ADA). My role as a digital designer often involves guiding clients toward ADA-compliant web designs. I’ve acquired many strategies over the years for encouraging clients to adopt accessible web practices and invest in accessible user interfaces. It’s something that comes up with nearly every new project, and I decided to develop a personal toolkit to help me make the case.

Now, I am opening up my toolkit for you to have and use. While some of the strategies may be specific to me and my work, there are plenty more that cast a wider net and are more universally applicable. I’ve considered different real-life scenarios where I have had to make a case for accessibility. You may even personally identify with a few of them!

Please enjoy. As you do, remember that there is no silver bullet for “selling” accessibility. We can’t win everyone over with cajoling or terse arguments. My hope is that you are able to use this collection to establish partnerships with your colleagues and clients alike. Accessibility is something that anyone can influence at various stages in a project, and “winning” an argument isn’t exactly the point. It’s a bigger picture we’re after, one that influences how teams work together, changes habits, and develops a new level of empathy and understanding.

I begin with general strategies for discussing accessibility with clients. Following that, I provide specific language and responses you can use to introduce accessibility practices to your team and clients and advocate its importance while addressing client skepticism and concerns. Use it as a starting point and build off of it so that it incorporates points and scenarios that are more specific to your work. I sincerely hope it helps you advance accessible practices.

General Strategies

We’ll start with a few ways you can position yourself when interacting with clients. By adopting a certain posture, we can set ourselves up to be the experts in the room, the ones with solutions rather than arguments.

Showcasing Expertise

I tend to establish my expertise and tailor the information to the client’s understanding of accessibility, which could be not very much. For those new to accessibility, I offer a concise overview of its definition, evaluation, and business impact. For clients with a better grasp of accessible practices, I like to use the WCAG as a point of reference for helping frame productive discussions based on substance and real requirements.

Aligning With Client Goals

I connect accessibility to the client’s goals instead of presenting accessibility as a moral imperative. No one loves being told what to do, and talking to clients on their terms establishes a nice bridge for helping them connect the dots between the inherent benefits of accessible practices and what they are trying to accomplish. The two aren’t mutually exclusive!

In fact, there are many clear benefits for apps that make accessibility a first-class feature. Refer to the “Accessibility Benefits” section to help describe those benefits to your colleagues and clients.

Defining Accessibility In The Project Scope

I outline accessibility goals early, typically when defining the project scope and requirements. Baking accessibility into the project scope ensures that it is at least considered at this crucial stage where decisions are being made for everything from expected outcomes to architectural requirements.

User stories and personas are common artifacts for which designers are often responsible. Use these as opportunities to define accessibility in the same breath as defining who the users are and how they interact with the app. Framing stories and outcomes as user interactions in an “as-when-then-so” format provides an opening to lead with accessibility:

As a user, when I __, then I expect that __, so I can _.

Fill in the blanks. I think you’ll find that user’s expected outcomes are typically aligned with accessible experiences. Federico Francioni published his take on developing inclusive user personas, building off other excellent resources, including Microsoft’s Inclusive Design guidelines.

Being Ready With Resources and Examples

I maintain a database of resources for clients interested in learning more about accessibility. Sharing anecdotes, such as clients who’ve seen benefits from accessibility or examples of companies penalized for non-compliance, can be very impactful.

Microsoft is helpful here once again with a collection of brief videos that cover a variety of uses, from informing your colleagues and clients on basic accessibility concepts to interviews with accessibility professionals and case studies involving real users.

There are a few go-to resources I’ve bookmarked to share with clients who are learning about accessibility for the first time. What I like about these is the approachable language and clarity. “Learn Accessibility” from web.dev is especially useful because it’s framed as a 21-part course. That may sound daunting, but it’s organized in small chunks that make it manageable, and sometimes I will simply point to the Glossary to help clients understand the concepts we discuss.

And where “Learn Accessibility” is focused on specific components of accessibility, I find that the Inclusive Design Principles site has a perfect presentation of the concepts and guiding principles of inclusion and accessibility on the web.

Meanwhile, I tend to sit beside a client to look at The A11Y Project. I pick a few resources to go through. Otherwise, the amount of information can be overwhelming. I like to offer this during a project’s planning phase because the site is focused on actionable strategies that help scope work.

Leveraging User Research

User research that is specific to the client’s target audience is more convincing than general statistics alone. When possible, I try to understand those user’s needs, including what they expect, what sort of technology they use to browse online, and where they are geographically. Painting a more complete picture of users — based on real-life factors and information — offers a more human perspective and plants the first seeds of empathy in the design process.

Web analytics are great for identifying who users are and how they currently interact with the app. At the same time, they are also wrought with caveats as far as accuracy goes, depending on the tool you use and how you collect your data. That said, I use the information to support my user persona decisions and the specific requirements I write. Analytics add nice brush strokes to the picture but do not paint the entire view. So, leverage it!

The big caveat with web analytics? There’s no way to identify traffic that uses assistive tech. That’s a good thing in general as far as privacy goes, but it does mean that researching the usability of your site is best done with real users — as it is with any user research, really. The A11Y Project has excellent resources for testing screen readers, including a link to this Smashing Magazine article about manual accessibility testing by Eric Bailey as well as a vast archive of links pointing to other research.

That said, web analytics can still be very useful to help accommodate other impairments, for example, segmenting traffic by age (for improving accessibility for low vision) and geography (for improving performance gaps for those on low-powered devices). WebAIM also provides insights in a report they produced from a 2018 survey of users who report having low vision.

Leaving Room For Improvements

Chances are that your project will fall at least somewhat short of your accessibility plans. It happens! I see plenty of situations where a late deadline translates into rushed work that sacrifices quality for speed, and accessibility typically falls victim to degraded quality.

I keep track of these during the project’s various stages and attempt to document them. This way, there’s already a roadmap for inclusive and accessible improvements in subsequent releases. It’s scoped, backlogged, and ready to drop into a sprint.

For projects involving large sites with numerous accessibility issues, I emphasize that partial accessibility compliance is not the same as actual compliance. I often propose phased solutions, starting with incremental changes that fit within the current scope and budget.

And remember, just because something passes a WCAG success criterion doesn’t necessarily mean it is accessible. Passing tests is a good sign, but there will always be room for improvement.

Commonly Asked Accessibility Questions

Accessibility is a broad topic, and we can’t assume that everyone knows what constitutes an “accessible” interface. Often, when I get pushback from a colleague or client, it’s because they simply do not have the same context that I do. That’s why I like to keep a handful of answers to commonly asked questions in my back pocket. It’s amazing how answering the “basics” leads to productive discussions filled with substance rather than ones grounded in opinion.

What Do We Mean By “Web Accessibility”?

When we say “web accessibility,” we’re generally talking about making online content available and usable for anyone with a disability, whether it’s a permanent impairment or a temporary one. It’s the practice of removing friction that excludes people from gaining access to content or from completing a task. That usually involves complying with a set of guidelines that are designed to remove those barriers.

Who Creates Accessibility Guidelines?

The Web Content Accessibility Guidelines (WCAG) are created by a working group of the World Wide Web Consortium (W3C) called the Web Accessibility Initiative (WAI). The W3C develops guidelines and principles to help designers, developers, and authors like us create web experiences based on a common set of standards, including those for HTML, CSS, internationalization, privacy, security, and yes, accessibility, among many, many other areas. The WAI working group maintains the accessibility standards we call WCAG.

Who Needs Web Accessibility?

Twenty-seven percent of the U.S. population has a disability, emphasizing the widespread need for accessible web design. WCAG primarily focuses on three groups:

  1. Cognitive or learning disabilities,
  2. Visual impairments,
  3. Motor skills.

When we make web experiences that solve these issues based on established guidelines, we’re not only doing good for those who are directly impacted by impairment but those who may be impaired in less direct ways as well, such as establishing large target sizes for those tapping a touchscreen phone with their hands full, or using proper color contrast for those navigating a screen in bright sunlight. Everyone needs — and benefits from — accessibility!

Further Reading

How Is Web Accessibility Regulated?

The Americans with Disabilities Act (ADA) is regulated by the Civil Rights Division of the U.S. Department of Justice, which was established by the Civil Rights Act of 1957. Even though there is a lot of bureaucracy in that last sentence, it’s reassuring to know the U.S. government not only believes in web accessibility but enforces it as well.

Non-compliance can result in legal action, with first-time ADA violations leading to fines of up to $75,000, increasing to $150,000 for subsequent violations. The number of lawsuits for alleged ADA breaches has surged in recent years, with more than 4,500 lawsuits filed in 2023 against sites that fail to comply with WCAG AA 2.1 alone — roughly 500 more lawsuits than 2022!

Further Reading

How Is Web Accessibility Evaluated?

Web accessibility is something we can test against. Many tools have been created to audit sites on the spot based on WCAG success criteria that specify accessible requirements. That would be a standards-based evaluation using WCAG as a reference point for auditing compliance.

WebAIM has an excellent page that compares different types of accessibility testing, reporting, and tooling. They are also quick to note that automated testing, while convenient, is not a comprehensive way to audit accessibility. Automated tools that scan websites may be able to pick up instances where mistakes in the HTML might contribute to accessibility issues and where color contrasts are insufficient. But they cannot replace or perfectly imitate a real-life person. Testing in real browsers with real people continues to be the most effective way to truly evaluate accessible web experiences.

This isn’t to say automated tools should not be part of an accessibility testing suite. In fact, they often highlight areas you may have overlooked. Even false positives are good in the sense that they force you to pause and look more closely at something. Some of the most widely used automated tools include the following:

These are just a few of the most frequent tools I use in my own testing, but there are many more, and the WAI maintains an extensive list of available tools that are worth considering. But again, remember that automated testing is not a one-to-one replacement for testing with real users.

Checklists can be handy for ensuring you are covering your bases:

Accessibility Benefits

When discussing accessibility, I find the most effective arguments are ones that are framed around the interests of clients and stakeholders. That way, the discussion stays within scope and helps everyone see that proper accessibility practices actually benefit business goals. Speaking in business terms is something I openly embrace because it typically supports my case.

The following are a few ways I would like to explain the positive impacts that accessibility has on business goals.

Case Studies

Sometimes, the most convincing approach is to offer examples of companies that have committed to accessible practices and come out better for it. And there are plenty of examples! I like to use case studies and reports in a similar industry or market for a more apples-to-apples comparison that stakeholders can identify with.

That said, there are great general cases involving widely respected companies and brands, including This American Life and Tesco, that demonstrate benefits such as increased organic search traffic, enhanced user engagement, and reduced site load times. For a comprehensive guide on framing these benefits, I refer to the W3C’s resource on building the business case for accessibility.

What To Say To Your Client

Let me share how focusing on accessibility can directly benefit your business. For instance, in 2005, Legal & General revamped their website with accessibility in mind and saw a substantial increase in organic search traffic exceeding 50%. This isn’t just about compliance; it’s about reaching a wider audience more effectively. By making your site more accessible, we can improve user engagement and potentially decrease load times, enhancing the overall user experience. This approach not only broadens your reach to include users with disabilities but also boosts your site’s performance in search rankings. In short, prioritizing accessibility aligns with your goal to increase online visibility and customer engagement.

Further Reading

The Curb-Cut Effect

The “curb-cut effect” refers to how features originally designed for accessibility end up benefiting a broader audience. This concept helps move the conversation away from limiting accessibility as an issue that only affects the minority.

Features like voice control, auto-complete, and auto-captions — initially created to enhance accessibility — have become widely used and appreciated by all users. This effect also includes situational impairments, like using a phone in bright sunlight or with one hand, expanding the scope of who benefits from accessible design. Big companies have found that investing in accessibility can spur innovation.

What To Say To Your Client

Let’s consider the ‘curb-cut effect’ in the context of your website. Originally, curb cuts were designed for wheelchair users, but they ended up being useful for everyone, from parents with strollers to travelers with suitcases. Similarly, many digital accessibility features we implement can enhance the experience for all your users, not just those with disabilities. For example, features like voice control and auto-complete were developed for accessibility but are now widely used by everyone. This isn’t just about inclusivity; it’s about creating a more versatile and user-friendly website. By incorporating these accessible features, we’re not only catering to a specific group but also improving the overall user experience, which can lead to increased engagement and satisfaction across your entire customer base.

Further Reading

SEO Benefits

I would like to highlight the SEO benefits that come with accessible best practices. Things like nicely structured sitemaps, a proper heading outline, image alt text, and unique link labels not only improve accessibility for humans but for search engines as well, giving search crawlers clear context about what is on the page. Stakeholders and clients care a lot about this stuff, and if they are able to come around on accessibility, then they’re effectively getting a two-for-one deal.

What To Say To Your Client

Focusing on accessibility can boost your website’s SEO. Accessible features, like clear link names and organized sitemaps, align closely with what search engines prioritize. Google even includes accessibility in its Lighthouse reporting. This means that by making your site more accessible, we’re also making it more visible and attractive to search engines. Moreover, accessible websites tend to have cleaner, more structured code. This not only improves website stability and loading times but also enhances how search engines understand and rank your content. Essentially, by improving accessibility, we’re also optimizing your site for better search engine performance, which can lead to increased traffic and higher search rankings.

Further Reading

Better Brand Alignment

Incorporating accessibility into web design can significantly elevate how users perceive a brand’s image. The ease of use that comes with accessibility not only reflects a brand’s commitment to inclusivity and social responsibility but also differentiates it in competitive markets. By prioritizing accessibility, brands can convey a personality that is thoughtful and inclusive, appealing to a broader, more diverse customer base.

What To Say To Your Client

Implementing web accessibility is more than just a compliance measure; it’s a powerful way to enhance your brand image. In the competitive landscape of e-commerce, having an accessible website sets your brand apart. It shows your commitment to inclusivity, reaching out to every potential customer, regardless of their abilities. This not only resonates with a diverse audience but also positions your brand as socially responsible and empathetic. In today’s market, where consumers increasingly value corporate responsibility, this can be a significant differentiator for your brand, helping to build a loyal customer base and enhance your overall brand reputation.

Further Reading

Cost Efficiency

I mentioned earlier how developing accessibility enhances SEO like a two-for-one package. However, there are additional cost savings that come with implementing accessibility during the initial stages of web development rather than retrofitting it later. A proactive approach to accessibility saves on the potential high costs of auditing and redesigning an existing site and helps avoid expensive legal repercussions associated with non-compliance.

What To Say To Your Client

Retrofitting a website for accessibility can be quite expensive. Consider the costs of conducting an accessibility audit, followed by potentially extensive (and expensive) redesign and redevelopment work to rectify issues. These costs can significantly exceed the investment required to build accessibility into the website from the start. Additionally, by making your site accessible now, we can avoid the legal risks and potential fines associated with ADA non-compliance. Investing in accessibility early on is a cost-effective strategy that pays off in the long run, both financially and in terms of brand reputation. Besides, with the SEO benefits that we get from implementing accessibility, we’re saving lots of money and work that would otherwise be sunk into redevelopment.

Further Reading

Addressing Client Concerns

Still getting pushback? There are certain arguments I hear time and again, and I have started keeping a collection of responses to them. In some cases, I have left placeholder instructions for tailoring the responses to your project.

“Our users don’t need it.”

Statistically, 27% of the U.S. population does have some form of disability that affects their web use. [Insert research on your client’s target audience, if applicable.] Besides permanent impairments, we should also take into account situational ones. For example, imagine one of your potential clients trying to access your site on a sunny golf course, struggling to see the screen due to glare, or someone in a noisy subway unable to hear audio content. Accessibility features like high contrast modes or captions can greatly enhance their experience. By incorporating accessibility, we’re not only catering to users with disabilities but also ensuring a seamless experience for anyone in less-than-ideal conditions. This approach ensures that no potential client is left out, aligning with the goal to reach and engage a wider audience.

“Our competitors aren’t doing it.”

It’s interesting that your competitors haven’t yet embraced accessibility, but this actually presents a unique opportunity for your brand. Proactively pursuing accessibility not only protects you from the same legal exposure your competitors face but also positions your brand as a leader in customer experience. By prioritizing accessibility when others are not, you’re differentiating your brand as more inclusive and user-friendly. This both appeals to a broader audience and showcases your brand’s commitment to social responsibility and innovation.

“We’ll do it later because it’s too expensive.”

I understand concerns about timing and costs. However, it’s important to note that integrating accessibility from the start is far more cost-effective than retrofitting it later. If accessibility is considered after development is complete, you will face additional expenses for auditing accessibility, followed by potentially extensive work involving a redesign and redevelopment. This process can be significantly more expensive than building in accessibility from the beginning. Furthermore, delaying accessibility can expose your business to legal risks. With the increasing number of lawsuits for non-compliance with accessibility standards, the cost of legal repercussions could far exceed the expense of implementing accessibility now. The financially prudent move is to work on accessibility now.

“We’ve never had complaints.”

It’s great to hear that you haven’t received complaints, but it’s important to consider that users who struggle to access your site might simply choose not to return rather than take the extra step to complain about it. This means you could potentially be missing out on a significant market segment. Additionally, when accessibility issues do lead to complaints, they can sometimes escalate into legal cases. Proactively addressing accessibility can help you tap into a wider audience and mitigate the risk of future lawsuits.

“It will affect the aesthetics of the site.”

Accessibility and visual appeal can coexist beautifully. I can show you examples of websites that are both compliant and visually stunning, demonstrating that accessibility can enhance rather than detract from a site’s design. Additionally, when we consider specific design features from an accessibility standpoint, we often find they actually improve the site’s overall usability and SEO, making the site more intuitive and user-friendly for everyone. Our goal is to blend aesthetics with functionality, creating an inclusive yet visually appealing online presence.

Handling Common Client Requests

This section looks at frequent scenarios I’ve encountered in web projects where accessibility considerations come into play. Each situation requires carefully balancing the client’s needs/wants with accessibility standards. I’ll leave placeholder comments in the examples so you are able to address things that are specific to your project.

The Client Directly Requests An Inaccessible Feature

When clients request features they’ve seen online — like unfocusable carousels and complex auto-playing animations — it’s crucial to discuss them in terms that address accessibility concerns. In these situations, I acknowledge the appealing aspects of their inspirations but also highlight their accessibility limitations.

That’s a really neat feature, and I like it! That said, I think it’s important to consider how users interact with it. [Insert specific issues that you note, like carousels without pause buttons or complex animations.] My recommendation is to take the elements that work well &mdahs; [insert specific observation] — and adapt them into something more accessible, such as [Insert suggestion]. This way, we maintain the aesthetic appeal while ensuring the website is accessible and enjoyable for every visitor.

The Client Provides Inaccessible Content

This is where we deal with things like non-descriptive page titles, link names, form labels, and color contrasts for a better “reading” experience.

Page Titles

Sometimes, clients want page titles to be drastically different than the link in the navigation bar. Usually, this is because they want a more detailed page title while keeping navigation links succinct.

I understand the need for descriptive and engaging page titles, but it’s also essential to maintain consistency with the navigation bar for accessibility. Here’s our recommendation to balance both needs:

  • Keyword Consistency: You can certainly have a longer page title to provide more context, but it should include the same key terms as the navigation link. This ensures that users, especially those using screen readers to announce content, can easily understand when they have correctly navigated between pages.
  • Succinct Titles With Descriptive Subtitles: Another approach is to keep the page title succinct, mirroring the navigation link, and then add a descriptive tagline or subtitle on the page itself. This way, the page maintains clear navigational consistency while providing detailed context in the subtitle. These approaches aim to align the user’s navigation experience with their expectations, ensuring clarity and accessibility.

Links

A common issue with web content provided by clients is the use of non-descriptive calls to action with phrases and link labels, like “Read More” or “Click Here.” Generic terms can be confusing for users, particularly for those using screen readers, as they don’t provide context about what the link leads to or the nature of the content on the other end.

I’ve noticed some of the link labels say things like “Read More” or “Click Here” in the design. I would consider revising them because they could be more descriptive, especially for those relying on screen readers who have to put up with hearing the label announced time and again. We recommend labels that clearly indicate where the link leads. [Provide a specific example.] This approach makes links more informative and helps all users alike by telling them in advance what to expect when clicking a certain link. It enhances the overall user experience by providing clarity and context.

Forms

Proper form labels are a critical aspect of accessible web design. Labels should clearly indicate the purpose of each input field, whether it’s required, and the expected format of the information. This clarity is essential for all users, especially for those using screen readers or other assistive technologies. Plus, there are accessible approaches to pairing labels and inputs that developers ought to be familiar with.

It’s important that each form field is clearly labeled to inform users about the type of data expected. Additionally, indicating which fields are required and providing format guidelines can greatly enhance the user experience. [Provide a specific example from the client’s content, e.g., we can use ‘Phone (10 digits, no separators)’ for a phone number field to clearly indicate the format.] These labels not only aid in navigation and comprehension for all users but also ensure that the forms are accessible to those using assistive technologies. Well-labeled forms improve overall user engagement and reduce the likelihood of errors or confusion.

Brand Palette

Clients will occasionally approach me with color palettes that produce too low of contrast when paired together. This happens when, for instance, on a website with a white background, a client wants to use their brand accent color for buttons, but that color simply blends into the background color, making it difficult to read. The solution is usually creating a slightly adjusted tint or shade that’s used specifically for digital interfaces — UI colors, if you will. Atul Varma’s “Accessible Color Palette Builder” is a great starting point, as is this UX Lift lander with alternatives.

We recommend expanding the brand palette with color values that work more effectively in web designs. By adjusting the tint or shade just a bit, we can achieve a higher level of contrast between colors when they are used together. Colors render differently depending on the device and screen they are on, and even though we might be using colors consistent with brand identity, those colors will still display differently to users. By adding colors that are specifically designed for web use, we can enhance the experience for our users while staying true to the brand’s essence.

Suggesting An Accessible Feature To Clients

Proactively suggesting features like sitemaps, pause buttons, and focus indicators is crucial. I’ll provide tips on how to effectively introduce these features to clients, emphasizing their importance and benefit.

Sitemap

Sitemaps play a crucial role in both accessibility and SEO, but clients sometimes hesitate to include them due to concerns about their visual appeal. The challenge is to demonstrate the value of site maps without compromising the site’s overall aesthetic.

I understand your concerns about the visual appeal of sitemaps. However, it’s important to consider their significant role in both accessibility and SEO. For users with screen readers, a sitemap greatly simplifies site navigation. From an SEO perspective, it acts like a directory, helping search engines effectively index all your pages, making your site more discoverable and user-friendly. To address the aesthetic aspect, let’s look at how major companies like Apple and Microsoft incorporate sitemaps. Their designs are minimal yet consistent with the site’s overall look and feel. [If applicable, show how a competitor is using sitemaps.] By incorporating a well-designed sitemap, we can improve user experience and search visibility without sacrificing the visual quality of your website.

Accessible Carousels

Carousels are contentious design features. While some designers are against them and have legitimate reasons for it, I believe that with the right approach, they can be made accessible and effective. There are plenty of resources that provide guidance on creating accessible carousels.

When a client requests a home page carousel in a new site design, it’s worth considering alternative solutions that can avoid the common pitfalls of carousels, such as low click-through rates, increased load times, content being pushed below the fold, and potentially annoying auto-advancing features.

I see the appeal of using a carousel on your homepage, but there are a few considerations to keep in mind. Carousels often have low engagement rates and can slow down the site. They also tend to move key content below the fold, which might not be ideal for user engagement. An auto-advancing carousel can also be distracting for users. Instead, we could explore alternative design solutions that effectively convey your message without these drawbacks. [Insert recommendation, e.g., For instance, we could use a hero image or video with a strong call-to-action or a grid layout that showcases multiple important segments at once.] These alternatives can be more user-friendly and accessible while still achieving the visual and functional goals of a carousel.

If we decide to use a carousel, I make a point of discussing the necessary accessibility features with the client right from the start. Many clients aren’t aware that elements like pause buttons are crucial for making auto-advancing carousels accessible. To illustrate this, I’ll show them examples of accessible carousel designs that incorporate these features effectively.

Further Reading

Pause Buttons

Any animation that starts automatically, lasts more than five seconds, and is presented in parallel with other content, needs a pause button per WCAG Success Criterion 2.2.2. A common scenario is when clients want a full-screen video on their homepage without a pause button. It’s important to explain the necessity of pause buttons for meeting accessibility standards and ensuring user comfort without compromising the website’s aesthetics.

I understand your desire for a dynamic, engaging homepage with a full-screen video. However, it’s essential for accessibility purposes that any auto-playing animation that is longer than five seconds includes a pause button. This is not just about compliance; it’s about ensuring that all visitors, including those with disabilities, can comfortably use your site.

The good news is that pause buttons can be designed to be sleek and non-intrusive, complementing your site’s aesthetics rather than detracting from them. Think of it like the sound toggle buttons on videos. They’re there when you need them, but they don’t distract from the viewing experience. I can show you some examples of beautifully integrated pause buttons that maintain the immersive feel of the video while ensuring accessibility standards are met.

Conclusion

That’s it! This is my complete toolkit for discussing web accessibility with colleagues and clients at the start of new projects. It’s not always easy to make a case, which is why I try to appeal from different angles, using a multitude of resources and research to support my case. But with practice, care, and true partnership, it’s possible to not only influence the project but also make accessibility a first-class feature in the process.

Please use the resources, strategies, and talking points I have provided. I share them to help you make your case to your own colleagues and clients. Together, incrementally, we can take steps toward a more accessible web that is inclusive to all people.

And when in doubt, remember the core principles we covered:

  • Show your expertise: Adapt accessibility discussions to fit the client’s understanding, offering basic or in-depth explanations based on their familiarity.
  • Align with client goals: Connect accessibility with client-specific benefits, such as SEO and brand enhancement.
  • Define accessibility in project scope: Include accessibility as an integral part of the design process and explain how it is evaluated.
  • Be prepared with Resources: Keep a collection of relevant resources, including success stories and the consequences of non-compliance.
  • Utilize User Research: Use targeted user research to inform design choices, demonstrating accessibility’s broad impact.
  • Manage Incremental Changes: Suggest iterative changes for large projects to address accessibility in manageable steps.
Categories: Others Tags:

3 Essential Design Trends, February 2024

February 26th, 2024 No comments

From atypical typefaces to neutral colors to unusual user patterns, there are plenty of new website design trends to try this month.

Categories: Designing, Others Tags:

Enhancing Team Dynamics: Strategies for Improved Collaboration and Customer Experience

February 23rd, 2024 No comments

Team dynamics simply means a relationship between the members of groups. It illustrates the dynamics of business communication within a team, showcasing how team members interact, communicate, and cooperate with each other.

Team dynamics can be tricky since we all have our own working styles, personalities, and opinions. In a collaborative setting, being different can work to your advantage or disadvantage by either setting you apart or making you stand out.

Positive team dynamics is a very useful tool for businesses since it promotes teamwork, boosts output, and encourages communication. By seamlessly integrating collaborative efforts and enhancing customer experience, a team can create a dynamic and interconnected environment that elevates communication efficiency and overall productivity. 

Research has shown that 38% of coworkers don’t trust each other resulting in an unhappy and toxic work environment. This may result in increased anxiety and exhaustion in the workplace causing unproductiveness.

Today, in this article we will be discussing strategies to improve collaboration and customer experience, key factors, and how to overcome team dynamics barriers.

So, let’s get started!

Understanding Team Dynamics

Team dynamics is the interaction between team members that can affect their productivity and performance. It shows employee engagement, collaboration, and coordination of their effort to achieve their goals and visions. A range of factors can affect team dynamics, including work personality, traits, attitudes, and many more. The positive team dynamic is significantly important in the workspace as it promotes collaboration, trust, and communication. It plays a vital role in shaping the success and productivity of a workplace as it enhances collaboration, improves communication, creates understanding, and many more. 

Effective communication plays a positive part in fostering team dynamics. With effective communication, a team can initiate a clear and successful team dynamic. Efficient communication can eliminate conflict and misunderstanding along with improved relations and job satisfaction. Trust and shared goals can also play a positive role in team dynamics. Without trust, no team can work in harmony, so it is extremely important to trust your teammates and make them trust you. This way trust can be reciprocated and you can work on your goals, peacefully.

Strategies for Improved Collaboration

In team dynamics, collaboration is very important. Team collaboration is crucial for success. There are various collaboration tools and technologies in the market that enhance communication along with team coordination. The collaboration market is so vast that to find the perfect tool, you need to look into what your team desires and search accordingly. The following are some of the popular options to consider.

  • Cloud storage

There are different cloud storage service providers, including Dropbox, Google Drive, iCloud, and others, that offer online cloud storage. With capabilities like cross-platform accessibility, document co-editing, file sharing, and many more, this might be an excellent tool for collaboration.

  • Communication 

Different collaboration software such as Zoom, Slack, etc provides instant messaging. Communication as a collaboration tool can promote real-time brainstorming, active listening, feedback, diverse perspectives, and many more.

  • Project management 

Project management software keeps everyone on the same page. It acts as the central hub for information and updates for the whole team. It enhances communication, and visibility and provides real-time updates and reporting. 

Building a Culture of Trust and Accountability

Trust and transparency should be the core foundation of any business. Working towards building a culture of trust and accountability, where transparent communication and reliability can create a strong foundation for collaboration and success. It improves productivity, communication, collaboration, and many more. The following are the key elements of trust and how they can contribute to improving collaboration in group dynamics. 

  • Open and clear communication 

Being open and communicating comes with both good and bad factors. Open and clear communication creates an environment where people feel safe to share and express their ideas, opinions, and concerns without judgment. This improves the team and its dynamic.

  • Empowerment

As a team leader, it is important to manage and look after your teammate’s responsibilities but not micro-manage them. Let your team manage their own responsibilities. Guide them on how to do it, but don’t do it for them. 

  • Showing appreciation 

Every small and big thing your team archives should be appreciated. When you make every small success of your team count, it creates a loving and trusting environment. 

  • Lead by example

It all starts at the top. As a team or a team leader, you practice what you preach. Holding yourself accountable and admitting your mistakes is how you become transparent. This is how you set yourself as a positive example to the entire team.

Empowering Teams for Customer Excellence

Empowering team dynamics can be an excellent way to ensure customer satisfaction. It unlocks several benefits for customer interaction and their overall benefits. Factors like seamless collaboration, prioritizing customer empathy, etc provide smooth customer service that keeps the customer coming back for more. 

The strong team dynamic isn’t just for the good looks, it directly drives customer satisfaction through the roof. Open conversation with a team provides a constant experience, avoiding any miscommunication and confusion, and building trust. This cycle directly drives satisfaction to the customers, unlocking the true potential of your team and customer satisfaction.

Overcoming Challenges in Team Collaboration

When it comes to team collaboration or working in any group dynamics, there are bound to be some challenges and difficulties a team has to overcome. These are completely normal and often arise in a work environment. The following are some of the common challenges in team dynamics and collaboration.

  • Lack of trust

Trust is a very important factor in any setting. It’s critical to have faith in your group members and delegate decision-making authority to them when working together. As a result of being able to communicate with one another and make decisions, employees may feel both vulnerable and protected in this environment.

  • Lack of communication

Lack of communication can be one of the major factors leading to barriers to team collaboration. Communication can help each team member know what they can expect from each other.  It can give you a better understanding of the needs and goals. When communication is effective, it leads to engagement, which leads to a satisfying and positive work environment, resulting in ultimate productivity. 

  • Conflicts and misunderstanding

Misunderstandings and conflicts can occur in any environment, especially in a group. When conflicts arise frequently, it kills the working environment and creates ever-growing tension among the teammates. Clear communication and addressing conflict can be the best way to reduce and resolve misunderstandings and conflicts. No one is perfect as everyone makes mistakes. It is important to listen and understand the other person’s point of view and work through the problem. 

  • Weak leadership

Having a strong, capable leader who can guide the group toward success is important. Every organization needs a decision-maker leader because no one else can take control of the situation and no one else can make decisions for the group. A team leader should be impartial and make choices that benefit the group as a whole rather than just themselves. They must take both rights and wrongs into consideration and make decisions for the betterment of the group.

  • Lack of a clear vision

Lack of a clear vision in a team environment can be difficult. Having to work endlessly without a goal can hinder productivity, motivation, and efficiency.  This can also create tension among team members as lots of misunderstandings are bound to arise due to it. Creating a clear vision before working can be a great way to start any project. In order to promote a clear vision, the team members should regularly meet and discuss their goals and targets. This way everyone stays on the same page.

Conclusion

To sum it up, the team dynamic is best described as a way people interact with one another in a group. It enhances collaboration, communication, trust, respect, vision, and goals.  A positive team dynamic is a needed foundation for a successful workplace. It’s not just about the words, it’s about the customer experience it generates.

It empowers the individual as the problem solver and builds trust, exceeding expectations and providing customers with seamless collaboration. Building a strong, positive team dynamic creates improved collaboration, resulting in excellent customer experience.

Featured Image by Dylan Gillis on Unsplash

The post Enhancing Team Dynamics: Strategies for Improved Collaboration and Customer Experience appeared first on noupe.

Categories: Others Tags:

Surviving the Leap from College to Real-World Design

February 23rd, 2024 No comments

So, you’ve finished college and are ready to showcase your design skills to the world. This is a pivotal moment that you’ve worked hard for. But you may find that design in the real world is quite different from what you experienced in your courses.

Categories: Designing, Others Tags:

The Function of DNS in Email Transmission: Why Precise MX Records Are Important 

February 23rd, 2024 No comments

The significance of keeping up a strong web existence in the dynamic world of the internet, in which email correspondence is the mainstay of internet conversation, can’t be ignored. 

The Domain Name System entries that are linked with your website, especially the MX (Mail Exchanger) entries, are the cornerstone of the digital image. These are some of the most important types of entries for maintaining email connections. Effective email transmission requires correct and well-set MX records. 

In this blog, we will discuss the importance of MX records and the way they affect message transmission, highlighting the requirement for correctness and the function of a DNS Record Checker in guaranteeing this preciseness. 

The MX Records Foundation 

One essential part of the Domain Name System (DNS) is MX records. They identify the mail hosts that are in charge of accepting mail messages on behalf of a domain. The transmitting host looks up the DNS information whenever a client delivers an email to the domain to determine which mail host should handle the message’s delivery. 

MX records are made up of 2 primary parts: 

Priority: This is a numerical number that determines the sequence in which several MX entries must be utilized when delivering an email. Priorities are greater for smaller values. 

Mail Server Hostname: This refers to the Internet Protocol (IP) address or domain name of the mailing servers that handle email processing. 

Here is an example of an MX record:

Priority: 10

Mail Server Hostname: mail.example.com

Several MX entries with different priorities can be set in a standard DNS query. By acting as a backup system, these numerous MX details guarantee that messages will be sent to the nearest accessible server in case the main mail server is inaccessible. 

The Impact of Misconfigured MX Records on Email Transmission 

Having correct MX records is essential for consistent email transmission. Several issues with sending messages might occur from old or improperly set MX records, such as: 

Email Rejections

When the sender’s host cannot locate a legitimate mailing server to transmit the message, it might lead to email bounces back caused by inaccurate MX records. This may be annoying for both the sending party and the receiver. 

Lateness in Email Transmission

Transmission of emails may be delayed if the MX records are not updated or incorrectly set. This may affect teamwork and conversation in a professional setting, which might reduce production. 

Lost of Emails

When the MX data fails to properly direct to an active mailing server, messages might be missed in extreme situations. It may cause negative effects, particularly if crucial communications and client queries do not get a response. 

Fraud and spamming issues

Safety risks brought forth by faulty MX details may make it easy for attackers to steal or reroute the messages. This allows fraud and scams to take place. 

The Significance of Accuracy in MX Records for Smooth Professional Discussion 

Precise MX records are essential to the smooth performance of emails in the context of company affairs. Since accurate MX files are the foundation of safe and effective interaction ways, companies need to give them top priority. Below are important factors why organizations should pay close attention to the setup and management of their MX data: 

Interaction with customers

Emails become a vital tool for business-to-client and supplier communication. Precise MX data ensures rapid and dependable delivery of essential information. 

Client service

A lot of companies use email for client service. Any interruption in the email-sending process may cause client queries to be answered more slowly, which may affect the client experience. 

Worker Efficiency

Email interaction inside the company is essential for teamwork and production. Correct MX records contribute to the seamless delivery of inside communications. 

Information Safety

A company that has false MX data may be at risk of email-related dangers, such as fraudulent emails and illegal use of confidential data. 

Brand Maintenance

Continued problems with email transmission might damage a company’s digital image. Consumers can think the company is untrustworthy, which could cause them to lose faith in it. 

How to Verify the Correctness of MX Records using the DNS Record Checkers 

It might be difficult to keep proper MX records, particularly for companies that manage several domains and subdomains. The DNS records checkers can be beneficial in this situation. The task of handling and checking DNS entries, especially MX records, is made easier with the use of a Checker. 

The following are some ways that a DNS Record Checker can assist in making certain that MX records are accurate: 

Records Verification

MX records may be routinely checked by DNS Records Checkers to ensure they are accurate and correspond to market norms. It points out differences and offers suggestions for fixing them. 

Records Tracking

Tracking functions that periodically verify the performance of the MX data are frequently included with those services. You will be informed right away if there are any problems so you can take the necessary actions. 

Warnings and Announcements

To help you remain at the forefront of any possible issues with email transmission, DNS Record Checkers may send warnings and reminders whenever MX records require correction. 

An easy-to-use interface

Usually, they provide easy-to-use interfaces that facilitate the management and configuration of MX data for people with different degrees of technological proficiency. 

Past Information

You may monitor modifications to your MX records over the years by using one of the several DNS record-checking tools that retain past information. For audits and solving problems, this may be quite helpful. 

Interaction with DNS Management Services

It might be easier to make the essential modifications to MX records when using those Checkers that smoothly interact with DNS managing techniques. 

Typical Errors in MX Record Setting 

Although proper MX records are crucial, frequent errors might cause problems with sending emails. The leading MX records setup issues are shown below, so stay away from them: 

Inaccurate Priority Numbers

Email transmission may be affected if MX records have the wrong priority values assigned to them. Making sure that smaller values indicate more importance is vital. 

Mistyped Domain names

Email rejections can be caused by misspellings in the mail server address. To prevent this problem, make sure the domain names are spelled correctly. 

Omitted or Unnecessary MX Records

Deliveries may be affected by omitting MX records or by duplicate MX records with similar status (priority value). Verify that each record must be created and set up properly. 

Expired Records

Delivering emails slowly might result from not updating MX records while switching mail servers or providers of email services. 

Inadequate Subdomain Management

In case you utilize subdomains (like support.yourdomain.com) for certain functions, make certain that MX records are set up correctly for every subdomain. 

Configuration of Safety

Your electronic mail system may be vulnerable to attacks if safety precautions for MX entries are neglected. Take into account DMARC, DKIM, and SPF data and employ appropriate security methods. 

Conclusion

The importance of MX data consistency in the realm of internet conversation can’t be overstated. Email communications are transmitted safely and efficiently due to those details, which act as a vital gateway between transmitters and receivers. Proper MX entries are especially important for organizations, as effective email interaction is essential to everyday activities.

A DNS Record Checker could serve as an extremely helpful application for maintaining correct MX entries and guaranteeing effective email transmission. These technologies streamline the MX data managing procedure by offering functions for notifying, tracking, and verification to ensure the seamless operation of the mail interaction.

The post The Function of DNS in Email Transmission: Why Precise MX Records Are Important  appeared first on noupe.

Categories: Others Tags:

Vanilla JavaScript, Libraries, And The Quest For Stateful DOM Rendering

February 22nd, 2024 No comments

In his seminal piece “The Market For Lemons”, renowned web crank Alex Russell lays out the myriad failings of our industry, focusing on the disastrous consequences for end users. This indignation is entirely appropriate according to the bylaws of our medium.

Frameworks factor highly in that equation, yet there can also be good reasons for front-end developers to choose a framework, or library for that matter: Dynamically updating web interfaces can be tricky in non-obvious ways. Let’s investigate by starting from the beginning and going back to the first principles.

Markup Categories

Everything on the web starts with markup, i.e. HTML. Markup structures can roughly be divided into three categories:

  1. Static parts that always remain the same.
  2. Variable parts that are defined once upon instantiation.
  3. Variable parts that are updated dynamically at runtime.

For example, an article’s header might look like this:

<header>
  <h1>«Hello World»</h1>
  <small>«123» backlinks</small>
</header>

Variable parts are wrapped in «guillemets» here: “Hello World” is the respective title, which only changes between articles. The backlinks counter, however, might be continuously updated via client-side scripting; we’re ready to go viral in the blogosphere. Everything else remains identical across all our articles.

The article you’re reading now subsequently focuses on the third category: Content that needs to be updated at runtime.

Color Browser

Imagine we’re building a simple color browser: A little widget to explore a pre-defined set of named colors, presented as a list that pairs a color swatch with the corresponding color value. Users should be able to search colors names and toggle between hexadecimal color codes and Red, Blue, and Green (RGB) triplets. We can create an inert skeleton with just a little bit of HTML and CSS:

See the Pen Color Browser (inert) [forked] by FND.

Client-Side Rendering

We’ve grudgingly decided to employ client-side rendering for the interactive version. For our purposes here, it doesn’t matter whether this widget constitutes a complete application or merely a self-contained island embedded within an otherwise static or server-generated HTML document.

Given our predilection for vanilla JavaScript (cf. first principles and all), we start with the browser’s built-in DOM APIs:

function renderPalette(colors) {
  let items = [];
  for(let color of colors) {
    let item = document.createElement("li");
    items.push(item);

    let value = color.hex;
    makeElement("input", {
      parent: item,
      type: "color",
      value
    });
    makeElement("span", {
      parent: item,
      text: color.name
    });
    makeElement("code", {
      parent: item,
      text: value
    });
  }

  let list = document.createElement("ul");
  list.append(...items);
  return list;
}

Note:
The above relies on a small utility function for more concise element creation:

function makeElement(tag, { parent, children, text, ...attribs }) {
  let el = document.createElement(tag);

  if(text) {
    el.textContent = text;
  }

  for(let [name, value] of Object.entries(attribs)) {
    el.setAttribute(name, value);
  }

  if(children) {
    el.append(...children);
  }

  parent?.appendChild(el);
  return el;
}

You might also have noticed a stylistic inconsistency: Within the items loop, newly created elements attach themselves to their container. Later on, we flip responsibilities, as the list container ingests child elements instead.

Voilà: renderPalette generates our list of colors. Let’s add a form for interactivity:

function renderControls() {
  return makeElement("form", {
    method: "dialog",
    children: [
      createField("search", "Search"),
      createField("checkbox", "RGB")
    ]
  });
}

The createField utility function encapsulates DOM structures required for input fields; it’s a little reusable markup component:

function createField(type, caption) {
  let children = [
    makeElement("span", { text: caption }),
    makeElement("input", { type })
  ];
  return makeElement("label", {
    children: type === "checkbox" ? children.reverse() : children
  });
}

Now, we just need to combine those pieces. Let’s wrap them in a custom element:

import { COLORS } from "./colors.js"; // an array of { name, hex, rgb } objects

customElements.define("color-browser", class ColorBrowser extends HTMLElement {
  colors = [...COLORS]; // local copy

  connectedCallback() {
    this.append(
      renderControls(),
      renderPalette(this.colors)
    );
  }
});

Henceforth, a element anywhere in our HTML will generate the entire user interface right there. (I like to think of it as a macro expanding in place.) This implementation is somewhat declarative1, with DOM structures being created by composing a variety of straightforward markup generators, clearly delineated components, if you will.

1 The most useful explanation of the differences between declarative and imperative programming I’ve come across focuses on readers. Unfortunately, that particular source escapes me, so I’m paraphrasing here: Declarative code portrays the what while imperative code describes the how. One consequence is that imperative code requires cognitive effort to sequentially step through the code’s instructions and build up a mental model of the respective result.

Interactivity

At this point, we’re merely recreating our inert skeleton; there’s no actual interactivity yet. Event handlers to the rescue:

class ColorBrowser extends HTMLElement {
  colors = [...COLORS];
  query = null;
  rgb = false;

  connectedCallback() {
    this.append(renderControls(), renderPalette(this.colors));
    this.addEventListener("input", this);
    this.addEventListener("change", this);
  }

  handleEvent(ev) {
    let el = ev.target;
    switch(ev.type) {
    case "change":
      if(el.type === "checkbox") {
        this.rgb = el.checked;
      }
      break;
    case "input":
      if(el.type === "search") {
        this.query = el.value.toLowerCase();
      }
      break;
    }
  }
}

Note:
handleEvent means we don’t have to worry about function binding. It also comes with various advantages. Other patterns are available.

Whenever a field changes, we update the corresponding instance variable (sometimes called one-way data binding). Alas, changing this internal state2 is not reflected anywhere in the UI so far.

2 In your browser’s developer console, check document.querySelector("color-browser").query after entering a search term.

Note that this event handler is tightly coupled to renderControls internals because it expects a checkbox and search field, respectively. Thus, any corresponding changes to renderControls — perhaps switching to radio buttons for color representations — now need to take into account this other piece of code: action at a distance! Expanding this component’s contract to include
field names could alleviate those concerns.

We’re now faced with a choice between:

  1. Reaching into our previously created DOM to modify it, or
  2. Recreating it while incorporating a new state.

Rerendering

Since we’ve already defined our markup composition in one place, let’s start with the second option. We’ll simply rerun our markup generators, feeding them the current state.

class ColorBrowser extends HTMLElement {
  // [previous details omitted]

  connectedCallback() {
    this.#render();
    this.addEventListener("input", this);
    this.addEventListener("change", this);
  }

  handleEvent(ev) {
    // [previous details omitted]
    this.#render();
  }

  #render() {
    this.replaceChildren();
    this.append(renderControls(), renderPalette(this.colors));
  }
}

We’ve moved all rendering logic into a dedicated method3, which we invoke not just once on startup but whenever the state changes.

3 You might want to avoid private properties, especially if others might conceivably build upon your implementation.

Next, we can turn colors into a getter to only return entries matching the corresponding state, i.e. the user’s search query:

class ColorBrowser extends HTMLElement {
  query = null;
  rgb = false;

  // [previous details omitted]

  get colors() {
    let { query } = this;
    if(!query) {
      return [...COLORS];
    }

    return COLORS.filter(color => color.name.toLowerCase().includes(query));
  }
}

Note:
I’m partial to the bouncer pattern.
Toggling color representations is left as an exercise for the reader. You might pass this.rgb into renderPalette and then populate with either color.hex or color.rgb, perhaps employing this utility:

function formatRGB(value) {
  return value.split(",").
    map(num => num.toString().padStart(3, " ")).
    join(", ");
}

This now produces interesting (annoying, really) behavior:

See the Pen Color Browser (defective) [forked] by FND.

Entering a query seems impossible as the input field loses focus after a change takes place, leaving the input field empty. However, entering an uncommon character (e.g. “v”) makes it clear that something is happening: The list of colors does indeed change.

The reason is that our current do-it-yourself (DIY) approach is quite crude: #render erases and recreates the DOM wholesale with each change. Discarding existing DOM nodes also resets the corresponding state, including form fields’ value, focus, and scroll position. That’s no good!

Incremental Rendering

The previous section’s data-driven UI seemed like a nice idea: Markup structures are defined once and re-rendered at will, based on a data model cleanly representing the current state. Yet our component’s explicit state is clearly insufficient; we need to reconcile it with the browser’s implicit state while re-rendering.

Sure, we might attempt to make that implicit state explicit and incorporate it into our data model, like including a field’s value or checked properties. But that still leaves many things unaccounted for, including focus management, scroll position, and myriad details we probably haven’t even thought of (frequently, that means accessibility features). Before long, we’re effectively recreating the browser!

We might instead try to identify which parts of the UI need updating and leave the rest of the DOM untouched. Unfortunately, that’s far from trivial, which is where libraries like React came into play more than a decade ago: On the surface, they provided a more declarative way to define DOM structures4 (while also encouraging componentized composition, establishing a single source of truth for each individual UI pattern). Under the hood, such libraries introduced mechanisms5 to provide granular, incremental DOM updates instead of recreating DOM trees from scratch — both to avoid state conflicts and to improve performance6.

4 In this context, that essentially means writing something that looks like HTML, which, depending on your belief system, is either essential or revolting. The state of HTML templating was somewhat dire back then and remains subpar in some environments.
5 Nolan Lawson’s “Let’s learn how modern JavaScript frameworks work by building one” provides plenty of valuable insights on that topic. For even more details, lit-html’s developer documentation is worth studying.
6 We’ve since learned that some of those mechanisms are actually ruinously expensive.

The bottom line: If we want to encapsulate markup definitions and then derive our UI from a variable data model, we kinda have to rely on a third-party library for reconciliation.

Actus Imperatus

At the other end of the spectrum, we might opt for surgical modifications. If we know what to target, our application code can reach into the DOM and modify only those parts that need updating.

Regrettably, though, that approach typically leads to calamitously tight coupling, with interrelated logic being spread all over the application while targeted routines inevitably violate components’ encapsulation. Things become even more complicated when we consider increasingly complex UI permutations (think edge cases, error reporting, and so on). Those are the very issues that the aforementioned libraries had hoped to eradicate.

In our color browser’s case, that would mean finding and hiding color entries that do not match the query, not to mention replacing the list with a substitute message if no matching entries remain. We’d also have to swap color representations in place. You can probably imagine how the resulting code would end up dissolving any separation of concerns, messing with elements that originally belonged exclusively to renderPalette.

class ColorBrowser extends HTMLElement {
  // [previous details omitted]

  handleEvent(ev) {
    // [previous details omitted]

    for(let item of this.#list.children) {
      item.hidden = !item.textContent.toLowerCase().includes(this.query);
    }
    if(this.#list.children.filter(el => !el.hidden).length === 0) {
      // inject substitute message
    }
  }

  #render() {
    // [previous details omitted]

    this.#list = renderPalette(this.colors);
  }
}

As a once wise man once said: That’s too much knowledge!

Things get even more perilous with form fields: Not only might we have to update a field’s specific state, but we would also need to know where to inject error messages. While reaching into renderPalette was bad enough, here we would have to pierce several layers: createField is a generic utility used by renderControls, which in turn is invoked by our top-level ColorBrowser.

If things get hairy even in this minimal example, imagine having a more complex application with even more layers and indirections. Keeping on top of all those interconnections becomes all but impossible. Such systems commonly devolve into a big ball of mud where nobody dares change anything for fear of inadvertently breaking stuff.

Conclusion

There appears to be a glaring omission in standardized browser APIs. Our preference for dependency-free vanilla JavaScript solutions is thwarted by the need to non-destructively update existing DOM structures. That’s assuming we value a declarative approach with inviolable encapsulation, otherwise known as “Modern Software Engineering: The Good Parts.”

As it currently stands, my personal opinion is that a small library like lit-html or Preact is often warranted, particularly when employed with replaceability in mind: A standardized API might still happen! Either way, adequate libraries have a light footprint and don’t typically present much of an encumbrance to end users, especially when combined with progressive enhancement.

I don’t wanna leave you hanging, though, so I’ve tricked our vanilla JavaScript implementation to mostly do what we expect it to:

See the Pen Color Browser [forked] by FND.

Categories: Others Tags: