Archive

Archive for July, 2024

CSS Functions and Mixins Module Notes

July 31st, 2024 No comments

Most days, I’m writing vanilla CSS. Thanks to CSS variables and nesting, I have fewer reasons to reach for Sass or any other preprocessor. The times I reach for Sass tend to be when I need a @mixin to loop through a list of items or help keep common styles DRY.

That could change for me in the not-so-distant future since a new CSS Functions and Mixins Module draft was published in late June after the CSSWG resolved to adopt the proposal back in February.

Notice the module’s name: Functions and Mixins. There’s a distinction between the two.

This is all new and incredibly unbaked at the moment with plenty of TODO notes in the draft and points to consider in future drafts. The draft spec doesn’t even have a definition for mixins yet. It’ll likely be some time before we get something real to work and experiment with, but I like trying to wrap my mind around these sorts of things while they’re still in early days, knowing things are bound to change.

In addition to the early draft spec, Miriam Suzanne published a thorough explainer that helps plug some of the information gaps. Miriam’s an editor on the spec, so I find anything she writes about this to be useful context.

There’s a lot to read! Here are my key takeaways…

Custom functions are advanced custom properties

We’re not talking about the single-purpose, built-in functions we’ve come to love in recent years — e.g., calc(), min(), max(), etc. Instead, we’re talking about custom functions defined with an @function at-rule that contains logic for returning an expected value.

That makes custom functions a lot like a custom property. A custom property is merely a placeholder for some expected value that we usually define up front:

:root {
  --primary-color: hsl(25 100% 50%);
}

Custom functions look pretty similar, only they’re defined with @function and take parameters. This is the syntax currently in the draft spec:

@function <function-name> [( <parameter-list> )]? {
  <function-rules>

  result: <result>;
}

The result is what the ultimate value of the custom function evaluates to. It’s a little confusing to me at the moment, but how I’m processing this is that a custom function returns a custom property. Here’s an example straight from the spec draft (slightly modified) that calculates the area of a circle:

@function --circle-area(--r) {
  --r2: var(--r) * var(--r);

  result: calc(pi * var(--r2));
}

Calling the function is sort of like declaring a custom property, only without var() and with arguments for the defined parameters:

.elenent {
  inline-size: --circle-area(--r, 1.5rem); /* = ~7.065rem */
}

Seems like we could achieve the same thing as a custom property with current CSS features:

:root {
  --r: 1rem;
  --r2: var(--r) * var(--r);
  --circle-area: calc(pi * var(--r2));
}

.element {
  inline-size: var(--circle-area, 1.5rem);
}

That said, the reasons we’d reach for a custom function over a custom property are that (1) they can return one of multiple values in a single stroke, and (2) they support conditional rules, such as @supports and @media to determine which value to return. Check out Miriam’s example of a custom function that returns one of multiple values based on the inline size of the viewport.

/* Function name */
@function --sizes(
  /* Array of possible values */
  --s type(length),
  --m type(length),
  --l type(length),
  /* The returned value with a default */
) returns type(length) {
  --min: 16px;

  /* Conditional rules */
  @media (inline-size < 20em) {
    result: max(var(--min), var(--s, 1em));
  }
  @media (20em < inline-size < 50em) {
    result: max(var(--min), var(--m, 1em + 0.5vw));
  }
  @media (50em < inline-size) {
    result: max(var(--min), var(--l, 1.2em + 1vw));
  }
}

Miriam goes on to explain how a comma-separated list of parameters like this requires additional CSSWG work because it could be mistaken as a compound selector.

Mixins help maintain DRY, reusable style blocks

Mixins feel more familiar to me than custom functions. Years of writing Sass mixins will do that to you, and indeed, is perhaps the primary reason I still reach for Sass every now and then.

Mixins sorta look like the new custom functions. Instead of @function we’re working with @mixin which is exactly how it works in Sass.

/* Custom function */
@function <function-name> [( <parameter-list> )]? {
  <function-rules>
  result: <result>;
}

/* CSS/Sass mixin */
@mixin <mixin-name> [( <parameter-list> )]? {
  <mixin-rules>
}

So, custom functions and mixins are fairly similar but they’re certainly different:

  • Functions are defined with @function; mixins are defined with @mixin but are both named with a dashed ident (e.g. --name).
  • Functions result in a value; mixins result in style rules.

This makes mixins ideal for abstracting styles that you might use as utility classes, say a class for hidden text that is read by screenreaders:

.sr-text {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

In true utility fashion, we can sprinkle this class on elements in the HTML to hide the text.

<a class="sr-text">Skip to main content</a>

Super handy! But as any Tailwind-hater will tell you, this can lead to ugly markup that’s difficult to interpret if we rely on many utility classes. Screereader text isn’t in too much danger of that, but a quick example from the Tailwind docs should illustrate that point:

<div class="origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg">

It’s a matter of preference, really. But back to mixins! The deal is that we can use utility classes almost as little CSS snippets to build out other style rules and maintain a clearer separation between markup and styles. If we take the same .sr-text styles from before and mixin-erize them (yep, I’m coining this):

@mixin --sr-text {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

Instead of jumping into HTML to apply the styles, we can embed them in other CSS style rules with a new @apply at-rule:

header a:first-child {
  @apply --sr-text;

  /* Results in: */
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

Perhaps a better example is something every project seems to need: centering something!

@mixin --center-me {
  display: grid;
  place-items: center;
}

This can now be part of a bigger ruleset:

header {
  @apply --center-me;
  /*
    display: grid;
    place-items: center;
  */

  background-color: --c-blue-50;
  color: --c-white;
  /* etc. */
}

That’s different from Sass which uses @include to call the mixin instead of @apply. We can even return larger blocks of styles, such as styles for an element’s ::before and ::after pseudos:

@mixin --center-me {
  display: grid;
  place-items: center;
  position: relative;

  &::after {
    background-color: hsl(25 100% 50% / .25);
    content: "";
    height: 100%;
    position: absolute;
    width: 100%;
  }
}

And, of course, we saw that mixins accept argument parameters just like custom functions. You might use arguments if you want to loosen up the styles for variations, such as defining consistent gradients with different colors:

@mixin --gradient-linear(--color-1, --color-2, --angle) {
  /* etc. */
}

We’re able to specify the syntax for each parameter as a form of type checking:

@mixin --gradient-linear(
  --color-1 type(color),
  --color-2 type(color),
  --angle type(angle),
) {
  /* etc. */
}

We can abstract those variables further and set default values on them:

@mixin --gradient-linear(
  --color-1 type(color),
  --color-2 type(color),
  --angle type(angle),
) {
  --from: var(--color-1, orangered);
  --to: var(--from-color, goldenrod);
  --angle: var(--at-angle, to bottom right);

  /* etc. */
}

…then we write the mixin’s style rules with the parameters as variable placeholders.

@mixin --gradient-linear(
  --color-1 type(color),
  --color-2 type(color),
  --angle type(angle),
) {
  --from: var(--color-1, orangered);
  --to: var(--from-color, goldenrod);
  --angle: var(--at-angle, to bottom right);

  background: linear-gradient(var(--angle), var(--from), var(--to));
}

Sprinkle conditional logic in there if you’d like:

@mixin --gradient-linear(
  --color-1 type(color),
  --color-2 type(color),
  --angle type(angle),
) {
  --from: var(--color-1, orangered);
  --to: var(--from-color, goldenrod);
  --angle: var(--at-angle, to bottom right);

  background: linear-gradient(var(--angle), var(--from), var(--to));

  @media (prefers-contrast: more) {
    background: color-mix(var(--from), black);
    color: white;
  }
}

This is all set to @apply the mixin in any rulesets we want:

header {
  @apply --gradient-linear;
  /* etc. */
}

.some-class {
  @apply --gradient-linear;
  /* etc. */
}

…and combine them with other mixins:

header {
  @apply --gradient-linear;
  @apply --center-me;
  /* etc. */
}

This is all very high level. Miriam gets into the nuances of things like:

  • Applying mixins at the root level (i.e., not in a selector)
  • Working with Container Queries with the limitation of having to set global custom properties on another element than the one that is queried.
  • The possibility of conditionally setting mixin parameters with something like @when/@else in the mixin. (Which makes me wonder about the newly-proposed if() function and whether it would be used in place of @when.)
  • Why we might draw a line at supporting loops the same way Sass does. (CSS is a declarative language and loops are imperative flows.)
  • Scoping mixins (@layer? scope? Something else?)

Miriam has an excellent outline of the open questions and discussions happening around mixins.

That’s, um, it… at least for now.

Gah, this is a lot for my blonde brain! Anytime I’m neck-deep in CSS specification drafts, I have to remind myself that the dust is still settling. The spec authors and editors are wrestling with a lot of the same questions we have — and more! — so it’s not like a cursory read of the drafts is going to make experts out of anyone. And that’s before we get to the fact that things can, and likely will, change by the time it all becomes a recommended feature for browsers to implement.

This will be an interesting space to watch, which is something you can do with the following resources:


CSS Functions and Mixins Module Notes originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Categories: Designing, Others Tags:

Where You Can Still Get A Book Apart Titles

July 31st, 2024 No comments

It’s been a few months out since A Book Apart closed shop. I’m sad about it, of course. You probably are, too, if you have one of their many brightly-colored paperbacks sitting on a bookshelf strategically placed as a backdrop for your video calls.

It looked for a bit like the books would still be available for purchase through third-party distributors who could print them on demand or whatever. And then a redaction on A Book Apart’s original announcement:

UPDATE: Ownership and publishing rights for all books have been given back to their respective authors. Many authors are continuing to offer their work for free or in new editions. Our hope is that these books will continue to live on forever. A Book Apart no longer sells or distributes books, please reach out to authors for information about availability.

Oh, snap. The books are on the loose and several authors are making sure they’re still available. Eric Meyer, for example, says he and co-author Sara Wachter-Boettcher still figuring out what’s next for their Design for Real Life title:

One of the things Sara and I have decided to do is to eventually put the entire text online for free, as a booksite. That isn’t ready yet, but it should be coming somewhere down the road.

In the meantime, we’ve decided to cut the price of print and e-book copies available through Ingram. [Design for Real Life] was the eighteenth book [A Book Apart] put out, so we’ve decided to make the price of both the print and e-book $18, regardless of whether those dollars are American, Canadian, or Australian.

Ethan Marcotte has followed suit by listing his three titles on his personal website and linking up where they can be purchased at a generous discount off the original price tag, including his latest, You Deserve a Tech Union.

Others have quickly responded with free online versions of their books. Mat Marquis has offered JavaScript for Web Designers free online for a long time. He helped Chris Coyier do the same with Practical SVG this past week. Jeremy Keith put out one of my personal ABA faves (and the first ever ABA-published book) for free, HTML5 for Web Designers.

What about all the other titles? I dunno. A Book Apart simply doesn’t sell or distribute them anymore. Rachel McConnell sells Leading Content Design directly. Every other book I checked seems to be a link back to A Book Apart. We’ll have to see where the proverbial dust settles. The authors now hold all the rights to their works and may or may not decide to re-offer them. Meanwhile, many of the titles are listed in places like Goodreads, Amazon, Barnes & Nobile, etc.

Thanks for all the great reads and years, A Book Apart! You’ve helped man, many people become better web citizens, present company included.


Where You Can Still Get A Book Apart Titles originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Categories: Designing, Others Tags:

Top 10 Strategies for B2B ECommerce Personalization In 2024

July 31st, 2024 No comments

The B2B online­ marketplace is changing quickly, powere­d by advanced technology and changing customer de­mands. In 2023, the worldwide B2B online sale­s hit a staggering $18.6 billion, a notable jump from its $6.8 billion rate in 2021. 

As 2024 rolls in, having an online presence isn’t enough. Customizing B2B sale­s has become extre­mely vital. It leads to more sales and conversions, among other benefits. Let’s look at the top ten strategies for B2B ecommerce personalization.

Top Personalization Strategies for B2B eCommerce

1. Personalized Product Recommendations

Personalize­d suggestions for items are ke­y to B2B ecommerce personalization and success, possibly ratcheting up earnings substantially. For example, Amazon gains 35% of its revenues through recommendations, shooting up conversion rates by as much as 320%.

For B2B, these­ impacts are even gre­ater as purchasers might be unaware­ of the complete product line­up. AI-assisted algorithms and customer data allow selle­rs to propose suitable items, improving custome­r interaction and assisting buyers in finding useful re­solutions.

2. Dynamic Content and Search Results

Personalizing B2B e­commerce is critical to me­et unique buyer re­quirements. Customizing product listings, content, and se­arch results according to user profiles he­lps customers view pertine­nt information. This dynamic approach may feature­ products specific to the buyer’s industry or job role­.

Plus, it may display content such as whitepapers and case­ studies that match their position in the buying proce­ss. Such tailoring improves user interaction and dire­cts buyers effective­ly towards beneficial solutions.

3. Account-Based Personalization

Image Source

In the B2B world, long-te­rm partnerships and customized solutions are re­gular. So, account-based personalization is vital to success. This process me­ans changing the online shopping expe­rience for particular accounts and buye­rs. 

This way, companies can meet the­ specific needs, price­s, and buying methods of their top customers. For example, they can show custom price­s, deals, and agreed-upon te­rms. Another option is offering unique product lists, package­s, and setups based on the account’s re­quirements.

4. Smart Chatbots and Virtual Assistants

Intelligent chatbots and virtual assistants in B2B ecommerce are essential for personalization. These AI-driven instrume­nts improve customer service­ by giving customized help, responding to que­stions, and assisting shoppers through buying.

They can be adapte­d to give product suggestions based on custome­r wants and browsing history and offer tailored support as pe­r the user’s job, field, or purchase­ phase. This strategy fulfills B2B buyers’ de­sire for a consumer-leve­l web experie­nce.

5. Personalized Pricing and Quotes

Online B2B sales require tailored prices and personalized quotes to build trust and boost sales. Adjusting prices and custom quotes according to customer groups, past purchase­s, and agreed contracts upholds fairness and clarity. 

The strategies include crafting custom quotes considering special needs, previous orders, and valid discounts based on account status and contract conditions. This me­thod forms a smooth buying journey modified to the circumstance­ of each B2B shopper.

6. Self-Service Portals and Account Dashboards

The self-service experience and account overviews offered by B2B ecommerce help ease the customer’s journey while prioritizing speed and ease. These tailor-made scre­ens let buyers run orde­rs, check account data, and perform tasks themselve­s. 

They primarily offer a combined vie­w of past orders, bills, and account facts. Plus, they allow for easy re­peat orders, monitor delive­ries, and manage account prefe­rences. This thoughtfulness simplifie­s tasks and boosts customers’ happiness in the­ B2B area.

7. Personalized Communication and Marketing

Image Source

Personal touches in communication and marketing stand out in B2B ecommerce. The­y help build stronger relations and incre­ase involvement. Companies can inspire deeper connections by tailoring emails, website details, and other contact points to meet their clients’ wants and needs.

Consider dividing email lists by busine­ss type, role, or buying stage. Also, modify we­bsite details based on how use­rs interact, what they look at, and their past purchase­s. This focused method improves clie­nt interactions and makes B2B relations more­ effective.

8. Mobile-First Personalization

For B2B e-comme­rce, focusing on mobile-first personalization is critical as more­ buyers turn to their phones for re­search and purchase. Making the e­xperience mobile­-friendly and providing personalization across all channels give­s a reliable and intere­sting experience­ for customers who are constantly moving.

 Important aspects are­ adaptable designs, easy navigation, customize­d recommendations, search re­sults, and content that adjusts based on the use­r’s device and place. This strate­gy pays attention to the changing behaviors and like­s of B2B buyers.

9. Leveraging Headless Commerce

More and more­ B2B companies are now using headle­ss commerce systems for adde­d personalization across various contact points. In these syste­m, user interfaces are­ separate from back-end ope­rations thanks to APIs. 

There’s a quick adaptation of distinct e­xperiences without limitations from the­ system or integrating exte­rnal tools. This adaptability enables B2B companies to come­ up with specialized tech for a comple­te personalization plan. 

10. A/B Testing and Personalization Optimization

Image Source

Continuous checking and improving personalization strategies are vital for B2B ecommerce success. Data insights help e­nhance customer service­ and drive better results. A/B testing is critical to comparing tactics like­ product suggestions, content changes, and cost mode­ls. 

This method discovers powerful strate­gies, boosts the number of succe­ssful transactions, and maintains a competitive­ advantage. Constantly updated based on test re­sults, it ensures that customization tactics stay powe­rful and up to date in the eve­r-changing B2B environment.

Conclusion

B2B personalization isn’t optional; it’s crucial for strate­gy. In the future, AI will play an increasingly significant role in advising and customizing loyalty schemes for B2B online trade. Businesses that adopt personalization will flourish, where­as those that trail may lose the­ir competitive advantage. The­ time has come: eithe­r must personalize or risk falling behind.

Featured Image by rawpixel.com on Freepik

The post Top 10 Strategies for B2B ECommerce Personalization In 2024 appeared first on noupe.

Categories: Others Tags:

Optimizing Website Performance with Serverless Architecture

July 31st, 2024 No comments

Imagine in some parallel universe, your website always loads at lightning speed, no matter how many visitors you have, and you never have to worry about scaling servers or maintaining them. Sounds like a dream, right? Well, in that parallel universe, you’re probably using serverless architecture.

In this article, we’ll show you how to bring serverless architecture into your reality and how this solution can significantly improve your website’s performance. Besides covering the key benefits, we’ll also give you practical tips on implementation. Let’s jump right in and get to it!

What Is Serverless Architecture?

Serverless architecture isn’t just a buzzword. It’s a popular and probably indispensable approach to developing and running web applications. So, today we’re talking about serverless architecture, or simply put, a way to develop and run applications without worrying about server management. It’s a hot topic. Seriously, a survey conducted by CNCF found that 58% of participants use serverless computing for certain applications.

Source: https://www.grandviewresearch.com/industry-analysis/serverless-architecture-market

Imagine having an invisible assistant that automatically scales your app’s resources, and handles all the configuration, and monitoring issues. This assistant is cloud services like AWS Lambda, Google Cloud Functions, or Azure Functions.

How Does It Work?

Serverless apps are made up of small functions that run in response to specific events. For example, someone uploads a file — a function processes it. Someone submits a form — a function handles the data and saves it. Imagine someone places an order. A function automatically processes the payment, updates inventory, and sends notifications to both the customer and the seller. All of this happens without you lifting a finger.

You can set up functions to automatically create backups of important data on a schedule and store them in secure cloud storage. You don’t need to worry about scaling or maintaining servers in advance. The cloud provider handles all of that. 

With data engineering solutions, you can ensure that your backups are efficiently managed and seamlessly integrated into your overall data strategy. Utilizing data engineering solutions also enables you to streamline the backup process, ensuring data integrity and security without additional manual effort.

Here are some benefits of serverless architecture:

  • Automatic scaling. One of the main perks is automatic scaling. Suppose you launch a promotion and your website gets ten times more traffic than usual. With traditional servers, you’d be scrambling to increase capacity. With serverless architecture, everything scales automatically. The cloud provider adds the necessary resources on its own. As a result, your site won’t crash under the load.
  • Pay only for usage. When you use traditional hosting, you pay for server rental. With serverless architecture, you only pay for the actual runtime of the functions. For example, if a function runs just a few minutes a day, you only pay for those few minutes.
  • Simplified management. Configuring and monitoring servers can be exhausting. All of that is handled by the cloud provider.

Even though other public cloud services like database-as-a-service (DBaaS) have more overall users, serverless is actually more popular than newer, trendy services such as machine learning and IoT.

Source: https://www.cbinsights.com/research/serverless-cloud-computing/ 

Challenges and Limitations

Of course, serverless architecture has its pitfalls. For example, cold starts can increase latency when a function is first called (especially if it hasn’t been used for a long time). Also, state management and complex computational tasks require additional planning. 

But what matters here is the right approach. With it, a significant improvement in the performance and flexibility of your web application is a pretty realistic goal.

Plus, an AWS Serverless Hero Ben Kehoe quote would be cool to mention at this point:

“If you go serverless because you love Lambda, you’re doing it for the wrong reason. If you go serverless because you love FaaS in general, you’re doing it for the wrong reason. Functions are not the point. … The point is focus: Serverless is a way to focus on business value. It is a trait. It is a direction, not a destination. Climb the never-ending serverless ladder… Find your part of the business value, and achieve a serverless state of mind.” 

Maximizing Website Speed with Advanced Serverless Architecture

Step 1: Selecting the Ideal Platform

So you’ve started working with serverless architecture, and now choosing the right platform is key. It’s as important as picking a new computer. You don’t just grab the first one you see, right? You look for the perfect blend of features, price, and compatibility with your needs. The same goes for choosing a serverless platform. Let’s check out how to pick the ideal one.

Main Serverless Platforms Description
AWS Lambda One of the pioneers in serverless architecture. It offers tons of integration options with other AWS services (like S3, DynamoDB, and API Gateway). So, if you’re already using AWS, it’s a great choice.
Google Cloud Functions This is Google’s platform. It’s cool, fast, and flexible. It obviously integrates well with other Google Cloud services (like Firebase and BigQuery). It’s perfect if your project heavily uses data.
Azure Functions Microsoft’s platform, so it naturally integrates well with Microsoft products (Azure Storage, Cosmos DB, and Active Directory). We’d recommend this for enterprise applications.

Do you want to know how to choose the right platform? Let’s find out!

Compare Performance

Each platform has its own way of handling automatic scaling and load management. For example, AWS Lambda is known for its reliability and scalability. Google Cloud Functions, on the other hand, offers low latency for global applications thanks to Google’s distributed infrastructure.

Consider the Cost 

Serverless platforms usually follow a “pay-as-you-go” model. This means you only pay for the actual usage of resources. However, pricing structures can vary. AWS Lambda charges based on the number of requests and function execution time. Google Cloud Functions and Azure Functions might offer free tiers with certain limits. This can be a big deciding factor. 

We suggest roughly calculating the cost of using each platform based on your current and anticipated loads. This way, you won’t face any unpleasant surprises later on.

Integration with Other Services 

If your project already uses cloud services, it’s important to choose a platform that easily integrates with them. For example, if your site uses Google Analytics and Firebase for data management, Google Cloud Functions would be a logical choice. If your application heavily relies on Microsoft products like Office 365 or Azure Active Directory, then Azure Functions makes sense.

Additionally, integrating a password manager with your chosen cloud platform can enhance security by managing credentials seamlessly. For instance, a password manager that works well with Azure can help protect sensitive data and streamline user authentication processes.

Developer Experience and Tools 

Check out the tools and SDKs each platform provides. AWS Lambda, for instance, supports a wide range of programming languages and has excellent documentation. Google Cloud Functions offers handy tools for local development and testing, speeding up the development and deployment process.

Location of Data Centers 

The location of data centers affects latency and access speed to your site. If your online store serves customers worldwide, you’ll need a platform with a wide range of data center locations. In this case, AWS Lambda or Google Cloud Functions are ideal. AWS Lambda ensures quick load times due to its scalability, while Google Cloud Functions offers low latency thanks to Google’s global infrastructure.

Step 2: Enhance Code Efficiency

So, we’ve reached one of the most important parts of optimizing serverless architecture — optimizing the code. Just like you constantly organize your workspace, it’s the same with your code. You’d be surprised at how much faster and more efficiently everything runs when everything is in its place. Here’s how you can make your code as fast and efficient as possible.

Minimize Cold Start Time

Cold start is when your function runs after being idle for a while. This usually takes longer than normal. We have to admit that you can’t completely avoid cold starts. But here are some tips to minimize their impact:

  • Use fewer dependencies. The more dependencies you have, the longer the initialization time. Stick to only the essential libraries.
  • Break functions into smaller tasks. If possible, split your function into smaller, specialized functions. This not only improves performance but also makes the code easier to maintain.
  • Use serverless frameworks. Frameworks like Serverless Framework help you automatically manage dependencies and simplify deployment.

Imagine you’re creating an API for image processing. Break it down into functions that handle uploading, processing, and saving images separately. You’ll be impressed with how much this reduces load time and makes the process more manageable.

Incorporating llm data analytics into your API can provide deeper insights into image processing efficiency and performance. By leveraging llm data analytics, you can optimize each function to ensure faster upload, processing, and saving times, enhancing the overall user experience.

Optimize Execution Time

The execution time of a function is another key aspect. The faster your function completes a task, the better your site’s performance.

How to do it?

  • Use asynchronous operations. Asynchronous operations allow your functions to keep running without waiting for long processes (like database queries or external API requests) to complete.
  • Cache data. If you frequently access the same data, caching is your friend. Tools like Redis or Memcached can reduce database query times. For example, if your function fetches user data from a database, cache the results in Redis. Next time the request comes in, the function can quickly get the data from the cache, speeding up response time.
  • Optimize algorithms. Regularly review your algorithms and look for ways to improve them. Simple changes, like using more efficient data structures, can significantly speed up execution.

Reduce Data Volume

Handling large volumes of data can significantly slow down function execution. So, it’s crucial to optimize the data volume.

How can you do it?

  • Use data compression. Compress data before transmission and decompress it after receiving. This reduces data transfer time.
  • Minimize payload. Only send the necessary data. Avoid transferring extra information that the function doesn’t need. If your function receives large JSON objects, try sending only the required fields. You’ll reduce data volume and speed up function execution.

Profiling and Monitoring

To optimize your code, you need to know where the delays are and which parts take the most time. Here’s how you can achieve it:

  • Use profiling tools. Tools like AWS X-Ray or Google Cloud Profiler help you see which parts of your function take the most time and where you can optimize the code.
  • Performance monitoring. Set up monitoring and alerting to track your functions’ performance in real time. This allows you to quickly address issues and optimize the code as needed.

Remember, in serverless architecture, every optimization can significantly impact performance and user experience. 

Step 3: Resort to a Content Delivery Network (CDN)

So, we’ve already talked about how important it is to choose the right platform and optimize your code to improve your site’s performance. Now, let’s move on to another key aspect — using a Content Delivery Network, or CDN. This is one of the coolest tools to speed up your site, and here’s why.

A CDN is a network of servers located around the world. They store copies of your static files (like images, CSS, JavaScript), and deliver them to users from the server closest to them. Content loads faster simply because the data has less distance to travel.

Imagine your site is hosted in New York, and you have a user in Tokyo. Without a CDN, all user requests go to New York. This obviously slows down the load time. With a CDN, the requests are handled by a server in Asia, and it eliminates the delay.

Plus, a great thing about using a CDN is that it reduces the load on your serverless functions since the CDN handles part of the work.

Here are a few more benefits of a CDN besides reducing delays:

  • Load Balancing. A CDN spreads the load across multiple servers. It prevents any single server from getting overwhelmed. Imagine during a sale, your site suddenly gets a surge in visitors. The CDN distributes the traffic across several servers and prevents your site from crashing due to overload. 
  • Protection from DDoS Attacks. A CDN can help protect your site from DDoS attacks. Suppose your site is targeted with thousands of requests per second. The CDN blocks malicious traffic and distributes the load, and it prevents your site from going down.
  • Improving User Experience. Fast-loading pages not only improve convenience but also impact SEO and conversions. Users facing slow load times are more likely to leave your site and head to competitors who don’t have this problem.

How to Choose a CDN

  1. Server Locations. Check the provider’s map of server locations to ensure they cover key regions where your users are.
  2. Support for HTTP/2. HTTP/2 significantly speeds up page loading through multiplexing requests and other optimizations. Make sure your chosen CDN supports HTTP/2.
  3. Integration with Your Stack. Ensure the CDN integrates easily with your current architecture and tools, like AWS Lambda, Azure Functions, or Google Cloud Functions.

Using a CDN is a must for any business looking to optimize site performance in a serverless architecture. It makes your site more reliable and faster.

Step 4: Monitor and Test Your Site Speed

So, you’ve chosen the right platform, optimized your code, and even set up a CDN. What’s next? Now it’s time to start monitoring and testing your site’s speed. This isn’t just a good step—it’s an essential one. If you want to catch potential performance bottlenecks early, you need to regularly run these procedures.

Monitoring and Testing Tools

Monitoring and Testing Tools Description
Google PageSpeed Insights This free tool from Google analyzes your site and provides recommendations to improve performance. It gives you scores for both mobile and desktop versions of your site.

Additionally, it offers detailed suggestions. For instance, if your site loads slowly on mobile devices, PageSpeed Insights might recommend optimizing images or reducing JavaScript size to address the issue.

Lighthouse Another tool from Google, Lighthouse provides a comprehensive performance analysis of your site. It covers various aspects, including accessibility and SEO metrics. You can run it using Chrome DevTools or as a standalone tool.

Imagine using Lighthouse and finding out that your site’s slow loading is due to numerous render-blocking resources. Lighthouse offers steps to resolve these issues, such as loading JavaScript asynchronously or employing lazy loading for images.

New Relic New Relic offers advanced performance monitoring capabilities, allowing you to track metrics such as server response time, database performance, and resource utilization.
AWS CloudWatch If you’re using AWS Lambda, AWS CloudWatch provides robust monitoring and logging features. You can set up alerts to notify you of any performance issues.

Practical Monitoring Tips

Here are a few practical tips to simplify these important but sometimes laborious processes of monitoring and testing:

  1. Regular Checks. Don’t rely solely on one-off tests. Establish automated tests using tools like Google PageSpeed Insights or Lighthouse and receive reports via email or Slack.
  2. Real User Monitoring (RUM). RUM collects performance data based on actual user interactions. Utilize tools such as New Relic or Google Analytics to gather RUM data and analyze it.
  3. Load Testing. Evaluate how your site performs under heavy traffic conditions. This is particularly crucial for serverless architecture. While serverless functions can scale, it’s essential to remain vigilant as performance issues can still arise. Employ tools like Apache JMeter or k6 for load testing, as they simulate high-traffic scenarios effectively.

Regular checks, real user monitoring, and load testing will help you ensure a fast and reliable experience for your users. Isn’t that what we’re all aiming for?

Conclusion

This guide covers most aspects related to implementing serverless architecture. We hope this information inspires you to adopt this excellent approach and transform the dream of a lightning-fast site, regardless of visitor volume, into reality.

Featured Image by Growtika on Unsplash

The post Optimizing Website Performance with Serverless Architecture appeared first on noupe.

Categories: Others Tags:

Sweet Nostalgia In August (2024 Wallpapers Edition)

July 31st, 2024 No comments

Everybody loves a beautiful wallpaper to freshen up their desktops and home screens, right? To cater for new and unique artworks on a regular basis, we started our monthly wallpapers series more than 13 years ago, and from the very beginning to today, artists and designers from across the globe have accepted the challenge and submitted their designs to it. Just like this month.

In this post, you’ll find their wallpaper designs for August 2024. All of them come in versions with and without a calendar and can be downloaded for free. As a little bonus goodie, we also added a selection of August favorites from our wallpapers archives that are just too good to be forgotten. A big thank-you to everyone who shared their designs with us this month! Happy August!

  • You can click on every image to see a larger preview,
  • We respect and carefully consider the ideas and motivation behind each and every artist’s work. This is why we give all artists the full freedom to explore their creativity and express emotions and experience through their works. This is also why the themes of the wallpapers weren’t anyhow influenced by us but rather designed from scratch by the artists themselves.
  • Submit a wallpaper!
    Did you know that you could get featured in our next wallpapers post, too? We are always looking for creative talent.

Nostalgia

“August, the final breath of summer, brings with it a wistful nostalgia for a season not yet past.” — Designed by Ami Totorean from Romania.

Relax In Bora-Bora

“As we have taken a liking to diving through the coral reefs, we’ll also spend August diving and took the leap to Bora-Bora. There we enjoy the sea and nature and above all, we rest to gain strength for the new course that is to come.” — Designed by Veronica Valenzuela from Spain.

Sandcastle Day

“Join us on Sandcastle Day for a fun-filled beach adventure, where creativity meets the sand — build, play, and enjoy the sun!” — Designed by PopArt Studio from Serbia.

Banana!

Designed by Ricardo Gimenes from Sweden.

Cullion

Designed by Bhabna Basak from India.

Pirate Aged Rum

Designed by Ricardo Gimenes from Sweden.

World Friendship Day

“Cherish the bonds of friendship, share smiles, and create beautiful memories with your friends. Let’s spread love and joy together!” — Designed by Reethu from London.

Summer Day

Designed by Kasturi Palmal from India.

Retro Road Trip

“As the sun dips below the horizon, casting a warm glow upon the open road, the retro van finds a resting place for the night. A campsite bathed in moonlight or a cozy motel straight from a postcard become havens where weary travelers can rest, rejuvenate, and prepare for the adventures that await with the dawn of a new day.” — Designed by PopArt Studio from Serbia.

Spooky Campfire Stories

Designed by Ricardo Gimenes from Sweden.

Happiness Happens In August

“Many people find August one of the happiest months of the year because of holidays. You can spend days sunbathing, swimming, birdwatching, listening to their joyful chirping, and indulging in sheer summer bliss. August 8th is also known as the Happiness Happens Day, so make it worthwhile.” — Designed by PopArt Studio from Serbia.

Bee Happy!

“August means that fall is just around the corner, so I designed this wallpaper to remind everyone to ‘bee happy’ even though summer is almost over. Sweeter things are ahead!” — Designed by Emily Haines from the United States.

Colorful Summer

“‘Always keep mint on your windowsill in August, to ensure that the buzzing flies will stay outside where they belong. Don’t think summer is over, even when roses droop and turn brown and the stars shift position in the sky. Never presume August is a safe or reliable time of the year.’ (Alice Hoffman)” — Designed by Lívi from Hungary.

Psst, It’s Camping Time…

“August is one of my favorite months, when the nights are long and deep and crackling fire makes you think of many things at once and nothing at all at the same time. It’s about heat and cold which allow you to touch the eternity for a few moments.” — Designed by Igor Izhik from Canada.

Oh La La… Paris’ Night

“I like the Paris’ night! All is very bright!” — Designed by Verónica Valenzuela from Spain.

Summer Nap

Designed by Dorvan Davoudi from Canada.

Shrimp Party

“A nice summer shrimp party!” — Designed by Pedro Rolo from Portugal.

Cowabunga

Designed by Ricardo Gimenes from Sweden.

Childhood Memories

Designed by Francesco Paratici from Australia.

Live In The Moment

“My dog Sami inspired me for this one. He lives in the moment and enjoys every second with a big smile on his face. I wish we could learn to enjoy life like he does! Happy August everyone!” — Designed by Westie Vibes from Portugal.

Swimming In The Summer

“It’s the perfect evening and the water is so warm! Can you feel it? You move your legs just a little bit and you feel the water bubbles dancing around you! It’s just you in there, floating in the clean lake and small sparkly lights shining above you! It’s a wonderful feeling, isn’t it?” — Designed by Creative Pinky from the Netherlands.

It’s Vacation O’Clock!

“It’s vacation o’clock! Or is it? While we bend our backs in front of a screen, it’s hard not to think about sandy beaches, flipping the pages of a corny book under the umbrella while waves splash continuously. Summer days! So hard to bear them in the city, so pleasant when you’re living the dolce far niente.” — Designed by ActiveCollab from the United States.

Launch

“The warm, clear summer nights make me notice the stars more — that’s what inspired this space-themed design!” — Designed by James Mitchell from the United Kingdom.

Ahoy

Designed by Webshift 2.0 from South Africa.

Rain, Rain Go Away!

“Remember the nursery rhyme where the little boy pleads the rain to go away? It is one of the most pleasant and beautiful seasons when the whole universe buckles up to dance to the rhythm of the drizzles that splash across the earth. And, it is August, the time of the year when monsoons add a lot of color and beauty to nature. We welcome everyone to enjoy the awesomeness of monsoons.” — Designed by Acodez from India.

Olympic Summer

“The Summer Olympic Games promise two weeks of superhuman struggle for eternal glory. Support your favorites and enjoy hot August.” — Designed by PopArt Studio from Serbia.

Handwritten August

“I love typography handwritten style.” — Designed by Chalermkiat Oncharoen from Thailand.

Hello Again

“In Melbourne it is the last month of quite a cool winter so we are looking forward to some warmer days to come.” — Designed by Tazi from Australia.

El Pollo Pepe

“Summer is beach and swimming pool, but it means countryside, too. We enjoy those summer afternoons with our friend ‘El pollo Pepe’. Happy summer!” — Designed by Veronica Valenzuela from Spain.

Coffee Break Time

Designed by Ricardo Gimenes from Sweden.

Subtle August Chamomiles

“Our designers wanted to create something summery, but not very colorful, something more subtle. The first thing that came to mind was chamomile because there are a lot of them in Ukraine and their smell is associated with a summer field.” — Designed by MasterBundles from Ukraine.

Work Hard, Play Hard

“It seems the feeling of summer breaks we had back in school never leaves us. The mere thought of alarm clocks feels wrong in the summer, especially if you’ve recently come back from a trip to the seaside. So, we try to do our best during working hours and then compensate with fun activities and plenty of rest. Cheers!” — Designed by ActiveCollab from the United States.

Categories: Others Tags:

Smashing Hour With Dave Rupert

July 30th, 2024 No comments

Smashing Magazine invited me to sit down for a one-on-one with “Uncle” Dave Rupert to discuss web components, yes, but also check in on Dave’s new Microsoft gig and what the ShopTalk co-host is working on these days.

I first met Dave in 2015 when CSS Dev Conf took place in my backyard, Long Beach. It’s not like we’ve been in super close touch between then and now — we may have only chatted one-on-one like that a couple other times — but talking with Dave each time feels like hanging with a close friend ands this time was no different. Good, good vibes and web nerdery.

To Shared LinkPermalink on CSS-Tricks


Smashing Hour With Dave Rupert originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Categories: Designing, Others Tags:

From Paper to Digital: The Benefits of Switching to E-invoicing

July 30th, 2024 No comments

E-invoicing or electronic invoicing is the process of generating, sending, receiving, and storing invoices digitally. In contrast with traditional invoicing, which eliminates the need for sending paper invoices or PDF files via email, e-invoicing employs structured data formats such as XML (Extensible Markup Language) to streamline and automate the invoicing process.

Traditional invoicing methods typically involve creating an invoice in a word processor or accounting software, converting it to a PDF, and emailing it to the recipient. While this approach, is more efficient than paper-based invoicing, it still requires manual data entry and processing at the receiving end. 

However, with an e-invoicing solution that leverages structured data formats, the recipient’s accounting systems can seamlessly integrate, eliminating the need for manual data entry, reducing errors, and accelerating the overall invoicing process

How Does E-invoicing Work? 

E-invoicing works by transmitting invoices as XML files that contain structured data, which can be directly received and processed by the recipient’s accounting software. Often, these XML files have embedded PDFs to provide a human-readable version of the invoice for reference. The process typically involves the following steps:

  1. Invoice Generation: The supplier creates an invoice using their e-invoicing software. This software generates an XML file with all the necessary invoice details, like line items, prices, tax information, and payment terms. A PDF version of the invoice is also embedded within the XML file for easy viewing.
  2. Sending the Invoice: The XML file is sent to the recipient’s e-invoicing mailbox. This can be done through various secure transmission methods, such as EDI (Electronic Data Interchange), API (Application Programming Interface), or other e-invoicing networks.
  3. Receiving the Invoice: Upon receiving the invoice, the XML file is automatically processed by the recipient’s e-invoicing system. The structured data within the XML file is extracted and integrated into the recipient’s accounting software, updating accounts payable records instantly.
  4. Instant Availability: Because the invoice data is sent in a structured format, it is immediately available for processing upon receipt. There is no need for manual data entry, which significantly reduces the risk of errors and speeds up the payment cycle.

The instant availability of invoice data is one of the key advantages of e-invoicing. It enables businesses to automate their invoicing workflows, improve accuracy, and ensure timely payments. Additionally, e-invoicing provides greater visibility into the invoicing process, allowing both suppliers and buyers to track the status of invoices in real time. This enhanced transparency fosters better financial management and stronger business relationships.

Key Benefits of Switching to E-invoicing

Improved Efficiency

Switching to e-invoicing significantly enhances efficiency by automating workflows like invoice processing, eliminating the need for manual data entry, which is not only time-consuming but also prone to errors. With e-invoicing, invoices are generated, sent, received, and processed electronically, allowing for quicker and more accurate handling of invoice data.

Cost Savings

E-invoicing offers substantial cost savings compared to traditional paper or email/PDF invoicing methods. The expenses related to printing, postage, and physical storage of paper invoices are removed. Additionally, the reduced need for manual processing translates to lower labor costs. Businesses can reinvest these savings into other critical areas of their operations.

Enhanced Accuracy and Compliance

One of the key advantages of e-invoicing is the minimization of human errors. Since data is transmitted in a structured, electronic format, the likelihood of errors during data entry is greatly reduced. Furthermore, e-invoicing helps ensure compliance with various tax regulations and industry standards by automating the application of the correct tax codes and maintaining accurate records.

Faster Payment Cycles

E-invoicing accelerates the entire invoicing process, from invoice generation to payment. Automating invoice approval workflows allows for quicker approval times, leading to faster payments. This improved speed not only enhances cash flow management but also strengthens supplier relationships by ensuring timely payments.

Better Data Management

With e-invoicing, businesses can access invoice data in real time, facilitating better data management and analytics. This immediate access to accurate and up-to-date information enables more informed decision-making and improves financial reporting. Enhanced data management capabilities also support more effective audit processes and compliance monitoring.

Environmental Benefits

E-invoicing contributes to environmental sustainability by reducing paper usage and waste. By transitioning to electronic invoices, businesses can support their corporate sustainability goals and demonstrate their commitment to environmentally responsible practices. This reduction in paper consumption also aligns with broader efforts to reduce the carbon footprint and promote greener business operations.

What Challenges Come with Implementing E-invoicing?

While the benefits of e-invoicing are clear, transitioning to this system can present several challenges including initial setup costs and system integration are common concerns. Businesses may need to invest in new software or upgrade their existing systems to accommodate e-invoicing capabilities.

Additionally, integrating e-invoicing with current accounting and ERP systems can be complex and may require technical expertise. However, some best practices can be implemented to ease the transition. 

E-invoicing Best Practices

Implementing e-invoicing can significantly streamline business operations, improve cash flow, and reduce errors. Here are some best practices for e-invoicing:

Adopt a Standard Format

  • Standardization: Use a standardized invoice format such as UBL (Universal Business Language) or PEPPOL BIS. This ensures compatibility with various accounting and ERP systems.
  • Compliance: Ensure that the format complies with regional and international regulations.

Ensure Data Accuracy

  • Validation: Implement data validation checks to ensure accuracy before sending invoices. This includes verifying customer details, invoice amounts, and item descriptions.
  • Automated Checks: Use automated systems to cross-check invoices against purchase orders and delivery receipts.

Integrate with ERP and Accounting Systems

  • Seamless Integration: Integrate an e-invoicing solution with your ERP or accounting systems to streamline the invoicing process.
  • Real-time Updates: Ensure that the systems provide real-time updates to maintain accurate financial records.

Secure Transmission

  • Encryption: Use encryption to protect invoice data during transmission.
  • Authentication: Implement authentication mechanisms such as digital signatures to verify the sender’s identity and ensure data integrity.

Compliance with Legal and Tax Requirements

  • Legal Framework: Adhere to local and international e-invoicing regulations, including tax reporting requirements.
  • Audit Trails: Maintain detailed audit trails to provide transparency and support compliance audits.

Conclusion

Switching to e-invoicing offers numerous advantages, including improved efficiency, cost savings, enhanced accuracy and compliance, faster payment cycles, better data management, and environmental benefits. Adopting best practices can help you successfully implement e-invoicing and unlock its full potential.

Featured image by Cytonn Photography on Unsplash

The post From Paper to Digital: The Benefits of Switching to E-invoicing appeared first on noupe.

Categories: Others Tags:

Rethinking The Role Of Your UX Teams And Move Beyond Firefighting

July 29th, 2024 No comments

In my experience of building and supporting UX teams, most of them are significantly under-resourced. In fact, the term “team” can often be a stretch, with many user experience professionals finding themselves alone in their roles.

Typically, there are way more projects that impact the user experience than the team can realistically work on. Consequently, most UX teams are in a constant state of firefighting and achieve relatively little in improving the overall experience.

We can complain about being under-resourced as much as we want, but the truth is that our teams are unlikely to grow to a size where we have sufficient staff to address every detail of the experience. Therefore, in this post, I want to step back and reconsider the role of user experience professionals and how UX teams can best improve the user experience of an organization.

What Is The Role Of A UX Professional?

There is a danger that as UX professionals, we focus too much on the tools of our trade rather than the desired outcome.

In other words, we tend to think that our role involves activities such as:

  • Prototyping
  • User research
  • Interface design
  • Testing with users

But these are merely the means to an end, not the end goal itself. These activities are also time-consuming and resource-intensive, potentially monopolizing the attention of a small UX team.

Our true role is to improve the user experience as they interact with our organization’s digital channels.

The ultimate goal for a UX team should be to tangibly enhance the customer experience, rather than solely focusing on executing design artifacts.

This reframing of our role opens up new possibilities for how we can best serve our organizations and their customers. Instead of solely focusing on the tactical activities of UX, we must proactively identify the most impactful opportunities to enhance the overall customer experience.

Changing How We Approach Our Role

If our goal is to elevate the customer experience, rather than solely executing UX activities, we need to change how we approach our role, especially in under-resourced teams.

To maximize our impact, we must shift from a tactical, project-based mindset to a more strategic, leadership-oriented one.

We need to become experience evangelists who can influence the broader organization and inspire others to prioritize and champion user experience improvements across the business.

As I help shape UX teams in organizations, I achieve this by focusing on four critical areas:

Let’s explore these in turn.

The Creation Of Resources

It is important for any UX team to demonstrate its value to the organization. One way to achieve this is by creating a set of tangible resources that can be utilized by others throughout the organization.

Therefore, when creating a new UX team, I initially focus on establishing a core set of resources that provide value and leave an impressive impression.

Some of the resources I typically focus on producing include:

  • User Experience Playbook
    An online learning resource featuring articles, guides, and cheatsheets that cover topics ranging from conducting surveys to performing AB testing.
  • Design System
    A set of user interface components that can be used by teams to quickly prototype ideas and fast-track their development projects.
  • Recommended Supplier List
    A list of UX specialists that have been vetted by the team, so departments can be confident in hiring them if they want help improving the user experience.
  • User Research Assets
    A collection of personas, journey maps, and data on user behavior for each of the most common audiences that the organization interacts with.

These resources need to be viewed as living services that your UX team supports and refines over time. Note as well that these resources include educational elements. The importance of education and training cannot be overstated.

The Provision Of Training

By providing training and educational resources, your UX team can empower and upskill the broader organization, enabling them to better prioritize and champion user experience improvements. This approach effectively extends the team’s reach beyond its limited internal headcount, seeking to turn everybody into user experience practitioners.

This training provision should include a blend of ‘live’ learning and self-learning materials, with a greater focus on the latter since it can be created once and updated periodically.

Most of the self-learning content will be integrated into the playbook and will either be custom-created by your UX team (when specific to your organization) or purchased (when more generic).

In addition to this self-learning content, the team can also offer longer workshops, lunchtime inspirational presentations, and possibly even in-house conferences.

Of course, the devil can be in the details when it comes to the user experience, so colleagues across the organization will also need individual support.

The Offering Of Consultative Services

Although your UX team may not have the capacity to work directly on every customer experience initiative, you can provide consultative services to guide and support other teams. This strategic approach enables your UX team to have a more significant impact by empowering and upskilling the broader organization, rather than solely concentrating on executing design artifacts.

Services I tend to offer include:

  • UX reviews
    A chance for those running digital services to ask a UX professional to review their existing services and identify areas for improvement.
  • UX discovery
    A chance for those considering developing a digital service to get it assessed based on whether there is a user need.
  • Workshop facilitation
    Your UX team could offer a range of UX workshops to help colleagues understand user needs better or formulate project ideas through design thinking.
  • Consultancy clinics
    Regular timeslots where those with questions about UX can “drop in” and talk with a UX expert.

But it is important that your UX team limits their involvement and resists the urge to get deeply involved in the execution of every project. Their role is to be an advisor, not an implementer.

Through the provision of these consultative services, your UX team will start identifying individuals across the organization who value user experience and recognize its importance to some degree. The ultimate goal is to transform these individuals into advocates for UX, a process that can be facilitated by establishing a UX community within your organization.

Building A UX Community

Building a UX community within the organization can amplify the impact of your UX team’s efforts and create a cohesive culture focused on customer experience. This community can serve as a network of champions and advocates for user experience, helping spread awareness and best practices throughout the organization.

Begin by creating a mailing list or a Teams/Slack channel. Using these platforms, your UX team can exchange best practices, tips, and success stories. Additionally, you can interact with the community by posing questions, creating challenges, and organizing group activities.

For example, your UX team could facilitate the creation of design principles by the community, which could then be promoted organization-wide. The team could also nurture a sense of friendly competition by encouraging community members to rate their digital services against the System Usability Scale or another metric.

The goal is to keep UX advocates engaged and advocating for UX within their teams, with a continual focus on growing the group and bringing more people into the fold.

Finally, this community can be rewarded for their contributions. For example, they could have priority access to services or early access to educational programs. Anything to make them feel like they are a part of something special.

An Approach Not Without Its Challenges

I understand that many of my suggestions may seem unattainable. Undoubtedly, you are deeply immersed in day-to-day project tasks and troubleshooting. I acknowledge that it is much easier to establish this model when starting from a blank canvas. However, it is possible to transition an existing UX team from tactical project work to UX leadership.

The key to success lies in establishing a new, clear mandate for the group, rather than having it defined by past expectations. This new mandate needs to be supported by senior management, which means securing their buy-in and understanding of the broader value that user experience can provide to the organization.

I tend to approach this by suggesting that your UX team be redefined as a center of excellence (CoE). A CoE refers to a team or department that develops specialized expertise in a particular area and then disseminates that knowledge throughout the organization.

This term is familiar to management and helps shift management and colleague thinking away from viewing the team as UX implementors to a leadership role. Alongside this new definition, I also seek to establish new objectives and key performance indicators with management.

These new objectives should focus on education and empowerment, not implementation. When it comes to key performance indicators, they should revolve around the organization’s understanding of UX, overall user satisfaction, and productivity metrics, rather than the success or failure of individual projects.

It is not an easy shift to make, but if you do it successfully, your UX team can evolve into a powerful force for driving customer-centric innovation throughout the organization.

Categories: Others Tags:

The Next Frontier: How AI and Machine Learning Will Reshape Design and Creativity

July 29th, 2024 No comments

The world of design and creativity has always been a dynamic and evolving landscape, constantly influenced by cultural shifts, technological advancements, and societal changes. 

In recent years, artificial intelligence (AI) and machine learning (ML) have emerged as transformative forces, promising to revolutionize how we approach design and creativity. From automating repetitive tasks to generating novel ideas, these technologies are reshaping the boundaries of what is possible in the creative industries. 

This blog post will explore how AI and ML are set to redefine design and creativity, highlighting their potential, challenges, and the exciting future that lies ahead.

The Current Landscape of AI and ML in Design

AI and ML have already made significant inroads into various aspects of design. Tools like Adobe Sensei and Canva’s Magic Resize leverage AI to enhance user experience, streamline workflows, and offer creative suggestions. These technologies enable designers to focus more on conceptual and strategic aspects by automating routine and repetitive tasks. For instance, AI-powered design tools can generate multiple design variations in seconds, allowing designers to choose and refine the best options rather than starting from scratch.

Moreover, AI is becoming adept at understanding and predicting design trends. By analyzing vast amounts of data from social media, market reports, and previous design works, AI can identify emerging trends and provide insights into what might resonate with audiences shortly. This predictive capability helps designers stay ahead of the curve and create more relevant and impactful designs.

Enhancing Creativity with AI

Source

AI’s potential to enhance human creativity is one of its most exciting prospects. Contrary to the fear that AI might replace human designers, it is more likely to serve as a powerful tool that augments human creativity. AI can assist in generating ideas, offering suggestions that designers might not have considered. 

  • For example, tools like Runway ML and DeepArt use neural networks to create unique visual styles and effects, inspiring designers to experiment with new aesthetics and techniques.

Additionally, AI can facilitate collaborative creativity. Platforms like Google’s DeepDream allow users to create surreal and abstract art by leveraging neural networks. Such tools can bring together artists, designers, and technologists to co-create, pushing the boundaries of traditional design and exploring new artistic frontiers.

Personalized Design Experiences

Personalization is becoming increasingly important in today’s digital age, where consumers expect tailored experiences. AI and ML are pivotal in delivering personalized design experiences at scale. By analyzing user data, AI can create personalized content, recommendations, and interfaces that cater to individual preferences and behaviors.

  • For example, Netflix uses AI to design personalized thumbnails for each user, enhancing engagement and satisfaction. Similarly, e-commerce platforms like Amazon employ AI to personalize product recommendations and website layouts, improving user experience and conversion rates. 

This level of personalization would be impossible to achieve manually, but with AI, it becomes feasible and efficient.

AI-Driven Creative Tools

The rise of AI-driven creative tools is democratizing design, making it accessible to a broader audience. These tools empower non-designers to create professional-quality designs without extensive training or expertise. 

  • Canva, for example, leverages AI to simplify the design process, enabling users to create stunning graphics with minimal effort.

AI-driven tools like GPT-4 by OpenAI are also revolutionizing content creation. These tools can generate text, suggest improvements, and even write entire articles, assisting writers and content creators in their work. The integration of AI in creative tools is fostering a more inclusive creative ecosystem where anyone can participate and contribute.

The Role of Machine Learning in Design Innovation

Machine learning, a subset of AI, is particularly influential in driving design innovation. By learning from vast datasets, ML algorithms can identify patterns, generate insights, and make data-driven decisions. This capability is invaluable in the design process, where understanding user behavior, preferences, and trends is crucial.

  • For example, ML algorithms can analyze user interactions with a website or app, providing designers with insights into how to improve usability and user experience. 

This iterative feedback loop enables designers to continuously refine and optimize their designs based on real user data, leading to more effective and user-centric solutions.

Furthermore, ML can be used to create generative designs, where algorithms generate design options based on specific parameters and constraints. This approach is widely used in architecture and industrial design, where complex requirements and specifications need to be met. Generative design not only accelerates the design process but also opens up new possibilities for innovation and creativity.

Ethical Considerations and Challenges

While the potential of AI and ML in design and creativity is immense, it also raises important ethical considerations and challenges. One of the primary concerns is the potential loss of human touch and authenticity in design. As AI-generated designs become more prevalent, there is a risk that creativity could become homogenized, lacking the unique perspectives and emotional depth that human designers bring.

There is also the issue of bias in AI algorithms, which presents another significant challenge. Due to the fact that AI systems learn from existing data, they can perpetuate biases that are already present in that data. This can lead to discriminatory or exclusionary design outcomes, which is particularly problematic in areas like facial recognition and user interface design. Ensuring that AI and ML systems are trained on diverse and representative datasets is crucial to mitigate these risks.

The Future of Design and Creativity with AI

Source

The future of design and creativity with AI and ML is incredibly promising. As these technologies continue to evolve, they will unlock new levels of innovation and creative potential. We can expect to see more sophisticated AI-driven design tools that offer even greater levels of customization, personalization, and automation.

AI and ML will also play a pivotal role in shaping the future of virtual and augmented reality (VR/AR). These technologies are already transforming how we experience and interact with digital content, and AI will enhance their capabilities even further. 

  • For example, AI can create more realistic and immersive virtual environments, improving user experience and expanding the possibilities for creative expression.

Moreover, the integration of AI in design education and training will equip the next generation of designers with the skills and knowledge to leverage these technologies effectively. As AI becomes an integral part of the design toolkit, designers will need to understand how to work with AI, harness its capabilities, and navigate its limitations.

Conclusion

AI and machine learning are set to reshape the landscape of design and creativity in profound ways. By automating repetitive tasks, enhancing creativity, enabling personalization, and driving innovation, these technologies are empowering designers to push the boundaries of what is possible. 

However, it is essential to address the ethical considerations and challenges that come with the adoption of AI in design. By doing so, we can ensure that the future of design and creativity is not only technologically advanced but also inclusive, authentic, and human-centered. The next frontier of design is here, and it is powered by AI and machine learning.

Featured Image by Andrew Neel on Unsplash

The post The Next Frontier: How AI and Machine Learning Will Reshape Design and Creativity appeared first on noupe.

Categories: Others Tags:

Letter Spacing is Broken and There’s Nothing We Can Do About It… Maybe

July 29th, 2024 No comments
Letter spacing on paper. The letter spacing is only applied between the letters "b"s

This post came up following a conversation I had with Emilio Cobos — a senior developer at Mozilla and member of the CSSWG — about the last CSSWG group meeting. I wanted to know what he thought were the most exciting and interesting topics discussed at their last meeting, and with 2024 packed with so many new or coming flashy things like masonry layout, if() conditionals, anchor positioning, view transitions, and whatnot, I thought his answers had to be among them.

He admitted that my list of highlights was accurate on what is mainstream in the community, especially from an author’s point of view. However, and to my surprise, his favorite discussion was on something completely different: an inaccuracy on how the letter-spacing property is rendered across browsers. It’s a flaw so ingrained on the web that browsers have been ignoring the CSS specification for years and that can’t be easily solved by a lack of better options and compatibility issues.

Emilios’s answer makes sense — he works on Gecko and rendering fonts is an art in itself. Still, I didn’t get what the problem is exactly, why he finds it so interesting, and even why it exists in the first place since letter-spacing is a property as old as CSS. It wasn’t until I went into the letter-spacing rabbit hole that I understood how amazingly complex the issue gets and I hope to get you as interested as I did in this (not so) simple property.

What’s letter spacing?

The question seems simple: letter spacing is the space between letters. Hooray! That was easy, for humans. For a computer, the question of how to render the space between letters has a lot more nuance. A human just writes the next letter without putting in much thought. Computers, on the other hand, need a strategy on how to render that space: should they add the full space at the beginning of the letter, at the end, or halve it and add it on both sides of the letter? Should it work differently from left-to-right (LTR) languages, like English, to right-to-left (RTL) like Hebrew? These questions are crucial since choosing one as a standard shapes how text measurement and line breaks work across the web.

Which of the three strategies is used on the web? Depends on who you ask. The implementation in the CSS specifications completely differs from what the browsers do, and there is even incompatibility between browsers rendering engines, like Gecko (Firefox), Blink (Chrome, Brave, Opera, etc.), and WebKit (Safari).

What the CSS spec says

Let’s backpedal a bit and first know how the spec says letter spacing should work. At the time of writing, letter-spacing:

Specifies additional spacing between typographic character units. Values may be negative, but there may be implementation-dependent limits.

The formal specification has more juice to it, but this one gives us enough to understand how the CSS spec wants letter-spacing to behave. The keyword is between, meaning that the letter spacing should only affect the space between characters. I know, sounds pretty obvious.

So, as the example given on the spec, the following HTML:

<p>a<span>bb</span>c</p>

…with this CSS:

p {
  letter-spacing: 1em;
}

span {
  letter-spacing: 2em;
}

…should give an equal space between the two “b” letters:

However, if we run the same code on any browser (e.g., Chrome, Firefox, or Safari), we’ll see the spacing isn’t contained between the “b” letters, but also at the end of the complete word.

Letter spacing on browsers. The letter spacing is applied between the letters "b"s and on the right-hand side of the last letter "b"

What browsers do

I thought it was normal for letter-spacing to attach spacing at the end of a character and didn’t know the spec said otherwise. However, if you think about it, the current behavior does seem off… it’s just that we’re simply used to it.

Why would browsers not follow the spec on this one?

As we saw before, letter spacing isn’t straightforward for computers since they must stick to a strategy for where spacing is applied. In the case of browsers, the standard has been to apply an individual space at the end of each character, ignoring if that space goes beyond the full word. It may have not been the best choice, but it’s what the web has leaned into, and changing it now would result in all kinds of text and layout shifts across the web.

This leaves a space at the end of elements with bigger letter spacing, which is somewhat acceptable for LTR text, but it leaves a hole at the beginning of the text in an RTL writing mode.

CodePen Embed Fallback

The issue is more obvious with centered text, where the ending space pushes the text away from the element’s dead center. You’ve probably had to add padding on the opposite side of an element to make up for any letter-spacing you’ve applied to the text at least one time, like on a button.

CodePen Embed Fallback

As you can see, the blue highlight creates a symmetrical pyramid which our text sadly doesn’t follow.

What’s worse, the “end of each character” means something different to browsers, particularly when working in an RTL writing mode. Chrome and Safari (Blink/WebKit) say the end of a character is always on the right-hand side. Firefox (Gecko), on the other hand, adds space to the “reading” end — which in Hebrew and Arabic is the left-hand side. See the difference yourself:

Side-by-side comparison of letter spacing on Gecko and Blink/Webkit

Can this be fixed?

The first thought that comes to mind is to simply follow what the spec says and trim the unnecessary space at the ending character, but this (anti) solution brings compatibility risks that are simply too big to even consider; text measurement and line breaks would change, possibly causing breakage on lots of websites. Pages that have removed that extra space with workarounds probably did it by offsetting the element’s padding/margin, which means changing the behavior as it currently stands makes those offsets obsolete or breaking.

There are two real options for how letter-spacing can be fixed: reworking how the space is distributed around the character or allowing developers an option to choose where we want the ending space.

Option 1: Reworking the space distribution

The first option would be to change the current letter-spacing definition so it says something like this:

Specifies additional spacing applied to each typographic character unit except those with zero advance. The additional spacing is divided equally between the inline-start and -end sides of the typographic character unit. Values may be negative, but there may be implementation-dependent limits.

Simply put, instead of browsers applying the additional space at the end of the character, they would divide it equally at the start and end, and the result is symmetrical text. This would also change text measurements and line breaks, albeit to a lesser degree.

Letter spacing with the symmetrical fix. The letter spacing is equally applied around the letters "b"s

Now text that is center-aligned text is correctly aligned to the center:

Different examples of letter spacing being distributed between letters and achieving a symmetrical look

Option 2: Allowing developers an option to choose

Even if the offset is halved, it could still bring breaking layout shifts to pages which to some is still (rightfully) unacceptable. It’s a dilemma: most pages need, or at least would benefit, from leaving letter-spacing as-is, while new pages would enjoy symmetrical letter spacing. Luckily, we could do both by giving developers the option to choose how the space is applied to characters. The syntax is anybody’s guess, but we could have a new property to choose where to place the spacing:

letter-spacing-justify: [ before | after | left | right | between | around];

Each value represents where the space should be added, taking into account the text direction:

  • before: the spacing is added at the beginning of the letter, following the direction of the language.
  • after: the spacing is added at the end of the letter, following the direction of the language.
  • left: the spacing is added at the left of the letter, ignoring the direction of the language.
  • right: the spacing is added at the right of the letter, ignoring the direction of the language.
  • between: the spacing is added between characters, following the spec.
  • around: the spacing is divided around the letter.

Logically, the current behavior would be the default to not break anything and letter-spacing would become a shorthand for both properties (length and placing).

letter-spacing: 1px before;
letter-spacing: 1px right;
letter-spacing: 1px around;

letter-spacing: 1px;
/* same as: */
letter-spacing: 1px before;

What about a third option?

And, of course, the third option is to leave things as they are. I’d say this is unlikely since the CSSWG resolved to take action on the issue, and they’ll probably choose the second option if I had to bet the nickel in my pocket on it.

Now you know letter-spacing is broken… and we have to live with it, at least for the time being. But there are options that may help correct the problem down the road.


Letter Spacing is Broken and There’s Nothing We Can Do About It… Maybe originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Categories: Designing, Others Tags: