Merging Worlds: A Detailed Look at Augmented and Virtual Realities

The landscape of emerging technologies is continuously evolving, radically transforming our interaction with the digital world. At the forefront of this revolution are augmented reality (AR) and virtual reality (VR), two technologies that have not only intrigued tech aficionados and gamers but have also become pivotal tools for businesses across various sectors. With the AR and VR market combined projected to generate revenue of approximately USD 32.1 billion in 2023, and expected to grow significantly in the coming years, these technologies hold immense potential to reshape industries like education, healthcare, entertainment, and manufacturing. This article delves into a comparative analysis of AR and VR, aiming to elucidate their distinct characteristics as well as their overlapping functionalities.

These figures indicate that both AR and VR markets are not only substantial in their current state but are also expected to experience robust growth in the coming years. The high growth rates projected for these markets reflect the increasing adoption and integration of AR and VR technologies across various sectors, including entertainment, education, healthcare, and more.

Augmented Reality vs. Virtual Reality: What’s the Difference?


Augmented reality is a technology that overlays digital content, such as images, videos, and 3D models, onto the real world. AR uses cameras, sensors, and other hardware components to recognize and track the user’s surroundings and display relevant information on top of it. For example, you can use AR to see how furniture looks in your living room before you buy it, or to get information about a famous monument by pointing your smartphone camera at it.

On the other hand, virtual reality is a technology that creates a simulated environment that completely immerses the user in a digital world. VR uses head-mounted displays (HMDs) and motion controllers to create a fully immersive experience that can simulate different environments, scenarios, and interactions. For example, you can use VR to explore a virtual museum, play immersive games, or train for hazardous jobs in a safe environment.

Comparing AR and VR

While both AR and VR are immersive technologies, they differ in their applications and usage scenarios. Here are some of the main differences between the two:

  1. Real vs. Virtual Environments: AR overlays digital content on the real world, while VR creates a completely virtual environment.
  2. Interaction: AR allows users to interact with digital objects in the real world, while VR allows users to interact with digital objects in a simulated environment.
  3. Hardware Requirements: AR can be used with a smartphone or tablet camera, while VR requires specialized headsets and controllers.
  4. Applications: AR is commonly used in retail, advertising, and education, while VR is mainly used in gaming, training, and simulations.
  5. Immersion Level: AR provides a semi-immersive experience that blends the real and virtual worlds, while VR provides a fully immersive experience that blocks out the real world.

Benefits and Challenges of AR and VR

AR and VR have several benefits and challenges that make them unique and valuable for different applications. Here are some of the key advantages and limitations of each technology:

AR Benefits:

Augmented Reality (AR) significantly enhances the user experience by overlaying digital content onto the real world, creating a unique blend of the physical and virtual realms. This technology offers a more enriched and interactive environment, allowing users to perceive and interact with digital elements seamlessly integrated into their real-world surroundings. In the realm of learning and education, AR provides a substantial boost by presenting educational content in a more interactive and engaging manner. It transforms traditional learning methodologies into an immersive experience, aiding in better comprehension and retention of information. For instance, AR can bring historical events to life or visualize complex scientific concepts, making them more accessible and understandable. In retail and advertising, AR has the power to revolutionize the way products are showcased and experienced. Customers can visualize products in a realistic setting before purchasing, such as seeing how a piece of furniture would look in their living room or how a pair of glasses would look on their face. This interactive approach not only increases sales but also enhances customer engagement and satisfaction.

AR Challenges:

However, AR also faces its own set of challenges. One significant limitation is the level of immersion and field of view it offers compared to Virtual Reality (VR). While VR completely immerses the user in a digital environment, AR can only augment the existing environment, which may limit the depth of the user experience. Hardware limitations also pose a challenge for AR development and adoption. The need for specific devices or accessories, such as AR glasses or headsets, can be a barrier, and compatibility issues with different types of hardware can hinder widespread use. Additionally, privacy concerns and the potential misuse of AR technology are important considerations. As AR integrates digital information into the real world, it raises questions about data security and personal privacy. There’s also the risk of AR being used in intrusive or unethical ways, which necessitates careful consideration and regulation to ensure the technology is used responsibly and ethically.

VR Benefits:

Virtual Reality (VR) offers a distinct and powerful advantage by providing a fully immersive and interactive experience that can accurately simulate real-world scenarios. This complete immersion allows users to engage with and respond to a virtual environment as if it were real, making it an exceptional tool for various applications. For instance, VR is particularly beneficial in training and simulations, especially for hazardous jobs and environments. It offers a safe and cost-effective alternative to real-life training, reducing the risks and costs associated with physically practicing in potentially dangerous settings. This application of VR is invaluable in sectors like healthcare, military, aviation, and heavy machinery operation, where it can simulate complex scenarios and emergency responses.

Moreover, in the realm of entertainment and gaming, VR takes experiences far beyond the capabilities of traditional media. It offers a new dimension of engagement and interactivity, allowing users to be part of the story or game environment, rather than mere spectators. This enhancement has led to the creation of incredibly vivid and engaging gaming and cinematic experiences that were previously unimaginable.

VR Challenges:

However, the implementation and widespread adoption of VR technology come with several challenges. One of the most significant barriers is the requirement for specialized hardware and software, which can be both expensive and complex. The cost of high-quality VR headsets and the powerful computers needed to run them can be prohibitive for many consumers and small businesses. Additionally, setting up and maintaining VR systems requires a certain level of technical know-how, which can be a deterrent for those who are not tech-savvy.

Another concern associated with VR is the potential for motion sickness and other health issues. The immersive nature of VR can sometimes lead to disorientation and nausea, commonly referred to as VR-induced motion sickness. This is particularly challenging for developers as they strive to create experiences that are both immersive and comfortable for a wide range of users.

Lastly, VR technology, in its current state, often limits social interaction and collaboration compared to real-world experiences. While it offers an immersive individual experience, it can isolate users from their physical environment and from other people. This can be a disadvantage in applications where collaboration and social interaction are key, such as in education and certain work scenarios. Efforts are being made to enhance the collaborative aspects of VR, but it remains a significant challenge to replicate the dynamics and nuances of real-world social interactions in a virtual space.

What the experts are saying:

Mark Zuckerberg, Tim Cook, and Satya Nadella, notable tech leaders from Facebook, Apple, and Microsoft respectively, have shared their perspectives on the evolving landscape of augmented reality (AR) and virtual reality (VR). Zuckerberg envisions AR as a transformative force in daily life, where physical objects like TVs could turn into inexpensive apps within an AR app store. He also sees VR’s potential as a new communication platform that allows for sharing experiences in a more immersive and present manner. Meanwhile, Apple CEO Tim Cook firmly believes in AR as a “core technology,” predicting its impact to surpass that of VR. This belief is reflected in Apple’s focus on AR, envisioning it as a technology that integrates more seamlessly into everyday life. Satya Nadella of Microsoft views AR as “perhaps the ultimate computer,” underscoring its wide-ranging applications and transformative potential. This convergence of views among these industry leaders highlights the significant role AR and VR are poised to play in shaping future technological trends and experiences.


AR and VR are two emerging technologies that have the potential to revolutionize many industries and applications. While they share some similarities, such as their immersive nature, they have different applications, benefits, and challenges. Understanding the differences between AR and VR can help businesses and individuals choose the right technology for their needs and achieve their goals. Whether it’s enhancing user experience, improving learning and education, or providing immersive entertainment and simulations, AR and VR are both here to stay.

By Gary Bernstein

The 20 Best Double Exposure & Duotone Photoshop Action Sets

The double exposure effect, or duotone effect, is a photographic technique where two separate images are overlaid to create a single composite image. This technique has been used in traditional film photography for decades, but with the advent of digital cameras and photo editing software, it has become even more accessible.

If you’re looking to create a double exposure effect without having to manually adjust camera settings, Photoshop action sets are a great solution. They’re designed to streamline your workflow and save you precious time.

To help you get started, we’ve compiled a collection of the best double exposure and duotone effect Photoshop action sets. They will all enhance your photos and add a touch of creativity. With these tools at your fingertips, you can achieve new aesthetics in minutes and take your photography to the next level.

What is the Double Exposure or Duotone Effect?

Double exposure or duotone effects are creative techniques that can transform your photos into visually captivating and artistically expressive works.

Double exposure involves blending two images into one, creating a surreal and dreamlike composition. It’s often used to merge portraits with landscapes, nature, or other subjects, resulting in a striking and visually intriguing image.

Duotone effects, on the other hand, involve converting an image into two dominant colors, usually contrasting shades. This technique adds a bold and dramatic look to your photos, emphasizing certain elements and creating a strong visual impact.

To achieve these effects, photographers often turn to Photoshop actions. They provide the tools to control the blending of images for double exposure and customize the color tones for duotone effects.

Whether you want to create a mesmerizing double exposure or give your images a duotone makeover, these actions can help you achieve your desired artistic effects. Transform your photos into visually engaging and memorable compositions that tell unique visual stories.

Best Double Exposure & Duotone Actions for Creatives

Double Color Exposure Effect Photoshop Action

First in our collection is the Double Color Exposure Effect Photoshop Action. This action is powerful yet easy to use. It comes with six overlay effects and 27 gradient presets. You can apply the effects with just a couple of clicks, and it comes with a help file to help you troubleshoot should anything go awry along the way.

Double Color Exposure Effect Photoshop Action

Advanced Double Exposure Photoshop Action

The Advanced Double Exposure Photoshop Action is easy to use and established in well-organized layers so you can undo your work should you need to. This set comes with 18 mixable color presets and provides a text guide.

Advanced Double Exposure Photoshop Action

Double Exposure Glow Photoshop Action

Another option is the Double Exposure Glow Photoshop Action. This action makes it easy for anyone to add a glowing double exposure effect to your photos with a few clicks. The action has organized layers and comes with complete documentation.

Double Exposure Glow Photoshop Action

Double Exposure Photoshop Action

This double exposure Photoshop action seamlessly combines two photos to create a beautiful finished product. It’s customizable and includes a vintage effect, light leaks, and color grading options.

Double Exposure Photoshop Action

Four Double Exposure Photoshop Actions

Another Photoshop action you might want to consider is this, which includes four variations. It ideally works in medium to high-exposure photographs, comes with a help file, and is generally designed to be used quickly and efficiently.

Four Double Exposure Photoshop Actions

Double Exposure Photoshop Action

This Double Exposure Photoshop Action is a fantastic effect for your photos. After making that one click, you can add color tones, gradients, and more. It’s easy to use and can make a lasting impression by means of the end result.

Double Exposure Photoshop Action

Double Exposure Photoshop Action Kit

The Double Exposure Photoshop Action Kit allows you to create double exposure effects in many ways. With just one click, you can adjust the brightness, opacity, dodge, masks, gradients, and more. Plus, it comes with 30 textures and double exposure gradients, to boot.

Double Exposure Photoshop Action Kit

Double Exposure Photoshop Action

The Double Exposure Photoshop Action makes it super easy to create a double exposure effect on a whim. It only takes a few seconds to implement, and the end result is stunning. This action comes with 25 color scripts and custom colors. Plus, it’s fully layered, customizable, and comes with documentation. What more could you ask for?

Double Exposure Photoshop Action

Trendy Double Exposure Photoshop Action

This trendy action set is super easy to use and yields results you will be proud of. It has organized layers for easy use and comes with an illustrated guide and video tutorial.

Trendy Double Exposure Photoshop Action

Double Color Exposure Photoshop Actions

Another great option is The Double Color Exposure Photoshop Action set. This one makes it possible to add colorful double exposure effects to photos, text, graphics, and more. With one click, you can transform an image using seven different color styles.

Double Color Exposure Photoshop Actions

Double Exposure Photoshop Actions

This set of double exposure Photoshop actions includes a video tutorial and documentation that make getting started easy. It comes with several actions for blending two photos, and for adding effects to a single photo, adding depth of field, and adding chromatic distortion. It also comes with light effects, textures, and more.

Double Exposure Photoshop Actions

80 Double Exposure Photoshop Actions

Another choice to consider is this set of 80 double exposure Photoshop actions. They all work with a single click, and the set comes with instructions for their specific use.

80 Double Exposure Photoshop Actions

Color Double Exposure Photoshop Action

The Color Double Exposure Photoshop Action delivers professional results in a matter of minutes. It’s easy to use, fully editable, and grouped so that it can be used fast. It comes with 50 color presets, and you have control over each layer, so you can pick and choose which elements of the effect you want to use. Finally, this action is non-destructive, so your original images remain intact.

Color Double Exposure Photoshop Action

Double Exposure Glow Photoshop Actions

The Double Exposure Glow Photoshop Actions is just as solid an option as all others here. It can be implemented in a single click, has organized layers, and includes several adjustment settings for easier use. It’s easy to edit and provides documentation as well. Once added to your photos, you can enjoy a nice glow effect on top of a traditional double exposure.

Double Exposure Glow Photoshop Actions

Animated Parallax Double Exposure Photoshop Action

Here’s another excellent choice. Using two photos, the Animated Parallax Double Exposure Photoshop Action creates a parallax shift effect. It comes with four different shift styles and can be implemented with just a couple of clicks. It’s also fully layered and can be customized to suit your specific needs.

Animated Parallax Double Exposure Photoshop Action

AI Modern Double Exposure Photoshop Actions

You might also consider the AI Modern Double Exposure Photoshop Actions set. This set makes it easy to create double exposure artwork, and it uses AI to detect faces and produces stunning results. It uses well-organized layers that are completely editable, you can swap textures, and it comes with 30 high-resolution textures.

AI Modern Double Exposure Photoshop Actions

Premium Double Exposure Photoshop Action

Another option is the Premium Double Exposure Photoshop Action set. Everything is separated and has grouped elements for easier use. The result is stunning, offering a professional look that’ll make it seem like you spent hours trying to achieve it.

Premium Double Exposure Photoshop Action

Duotone Double Exposure Photoshop Actions

The last action in our collection is the Duotone Double Exposure Photoshop Actions set. This one requires selecting two images and then playing the actions all at once to achieve the desired effect. It comes with duotone effects, on which you can adjust the opacity. It also allows for balance between layers and is non-destructive, so your original images stay intact.

Duotone Double Exposure Photoshop Actions

How to Install Photoshop Actions

  1. Download and unzip the action file
  2. Launch Photoshop
  3. Go to Window > Actions
  4. Select Load Actions from the menu and go to the folder where you saved the unzipped action file to select it
  5. The Action will now be installed
  6. To use the newly installed action, locate it in the Action panel
  7. Click the triangle to the left of the action name to see the list of available actions
  8. Click the action you want to play and press the play button at the bottom of the Actions panel

Striking Double Exposure Effects

Each of these Photoshop actions is a fantastic option that can simplify your workflow and make editing your photos easier than ever. It can also transform your images into striking duotone or double exposure effects that will make a lasting impression.

The best part about these Photoshop actions is that they are fully customizable, allowing you to adjust the colors, opacity, and other variables to achieve your desired effect. So go ahead and try a few of them out to see which ones work best for you.

More Photoshop Action Collections

50+ Best Free Photoshop Actions
With this comprehensive collection of free Photoshop actions, you will be able to save time editing photos, freeing you up for your real work – being creative.

  • Art Effect Photoshop Actions
    A collection of Photoshop actions that makes it incredibly easy to add popular art effects to your photos quickly and beautifully.
  • Black & White Photo Effect Photoshop Actions
    From simple conversions to advanced enhancements, transform your photos into black and white works of art with this collection of Photoshop actions.
  • Bokeh Effect Photoshop Actions
    A fantastic collection of Photoshop actions that greatly simplify the process of creating the bokeh effect. One-click and stunning results!
  • Cinema & Movie Effect Photoshop Actions
    A fantastic collection of one-click cinema & movie effect Photoshop action sets that will take your photos to the next level.
  • Dispersion Effect Photoshop Actions
    Achieve a visually stunning shattered look in your photos or graphics with this selection of dispersion effect Photoshop actions.
  • Glitch Effect Photoshop Action
    These glitch effect Photoshop actions make it easy to achieve a stunning, distorted look without the need for manual editing.
  • HDR Effect Photoshop Actions
    Transform your photos with incredible depth and detail using these HDR Effects Photoshop Actions and add a professional touch to your photos.
  • Retro & Vintage Effect Photoshop Actions
    Transform photos and graphics into vintage-inspired pieces with this collection of Photoshop actions for creating retro and vintage effects.
  • Sketch Effect Photoshop Actions
    Streamline your workflow and transform your photos into beautiful sketches with ease using this collection of sketch effects Photoshop actions.
  • Text Effect Photoshop Actions
    Browse and download this collection of the best actions for creating beautiful text effects in Photoshop. It’s time to wow everyone!
  • Related Topics

    8 CSS & JavaScript Snippets for Creating Complex Gradients

    Gradients are a true staple of web design. Their beauty lies in their versatility. Use them to make a big, bold statement. Or use them as an accent piece to create a mood.

    The possibilities have never been greater. Modern CSS and JavaScript allow us to do more than mimic print design. We can use them to add movement and interactivity to the mix. But it goes deeper.

    Gradients are no longer limited to container backgrounds. They can also style text content. It’s an opportunity to enhance headlines and calls to action.

    So, what kinds of things can you do with gradients? We scanned the archives of CodePen to find eight great examples.

    Grainy & Gradients Text Using color-mix by LukyVJ

    This snippet uses the recent CSS color-mix property. The property simplifies the process of darkening, lightening, and desaturating colors. The result is a beautiful text gradient that allows the page background to come through. We don’t often associate gradients with graininess. But it works to perfection here.

    See the Pen Grainy & Gradients text by LukyVJ

    Single Element Gradient Background Patterns by Ana Tudor

    Conic gradients add a unique twist to the element. The color transitions rotate around a center point. You can see it on display in this example. Each card sports a unique and intricate pattern.

    See the Pen 1 element card background patterns (see description) by Ana Tudor

    Animated Radial Gradient Pattern by Loktar

    Gradients still make great backgrounds. And this animated presentation demonstrates how far they’ve come. It looks amazing. The relatively few lines of code that powers it are equally impressive.

    See the Pen Moving Radial Gradient Pattern by Loktar

    Single DIV Radial Gradient Swirl by Adam Argyle

    How can a single div element contain so many colors? The magic is in multiple radial gradients. Four gradients start at the edges and meet in the middle. The result is a colorful delight.

    See the Pen 4 Corner Radial Gradient Swirl by Adam Argyle

    AI Prompt UI with Subtle Gradient by Vincent Durand

    Check out the subtle gradient on this artificial intelligence (AI) interface. It cleverly mixes with glassmorphism to produce a unique aesthetic. The effect brings life to the page.

    See the Pen Imagica – AI prompt UI by Vincent Durand

    Radial Gradient Cursor Trailer by Uzo Awili

    Here’s an example of gradients shining a light on a background image. Move your cursor and watch as it casts a bright pink hue. A tiny bit of CSS and JavaScript makes it work.

    See the Pen Radial Gradient Cursor Trailer – Using Gradient Positioning by Uzo Awili

    Magical CSS Blossoming Flowers at Night Md Usman Ansari

    Gradients play a sizeable role in this “magical” snippet. They add dimension and allow the virtual plant life to fade into black. The CSS repeating-linear-gradient function simplifies the effect’s usage.

    See the Pen CSS Blossoming Flowers at Magical Night by Md Usman Ansari

    Complex Gradient Examples by Drew McConville

    Combining multiple gradients into a CSS background can produce compelling results. Scroll through this snippet to see four such examples. You’ll find a mix of colors and gradient types. It may even convince you to do some experimentation.

    See the Pen Complex Gradient Examples by Drew McConville

    A Fresh Look at a Design Staple

    There was a time when designers shied away from gradients. The era of flat design encouraged the use of solid colors. But we rightfully came back to them.

    The examples above show that gradients are still a valuable tool. They add flavor to all sorts of design elements. And it seems like designers are constantly finding creative uses.

    That speaks to their flexibility. You can tweak gradients in endless ways. Make them as simple or complex as you like.

    Want to see even more CSS and JavaScript gradient ideas? Be sure to check out our CodePen collection!

    Related Topics

    Insider Threats: The Trojan Horses in Intellectual Property Theft

    In the rapidly evolving landscape of global business, intellectual property (IP) stands as the cornerstone of innovation and competitive advantage in industries ranging from manufacturing to entertainment. Yet, as much as technology has fortified the defenses of corporations, it has also paved the way for new vulnerabilities. Among these, insider threats loom large, often overlooked yet devastatingly effective – the modern-day Trojan Horses of the business world.

    This blog post aims to enlighten CISOs and business executives about the nuances of insider threats in the context of IP theft, offering insights into not only recognizing but effectively countering these hidden dangers within their organizations.

    The Historical Parallel: The Trojan Horse

    The tale of the Trojan Horse is one etched in the annals of history and mythology, a narrative of deception and strategic cunning that led to the fall of the ancient city of Troy. The Greeks, unable to penetrate the fortified walls of Troy, resorted to subterfuge by constructing a large wooden horse, ostensibly as a peace offering. The Trojans, unaware of its contents, brought the horse into the city. Under the cover of night, Greek soldiers hidden inside emerged, opening the gates for their army and leading to the city’s downfall.

    This age-old story mirrors the insidious nature of insider threats in today’s corporate world. Just as the Trojans unwittingly welcomed their downfall within their walls, businesses, too, can inadvertently harbor threats from within. These insider threats, whether stemming from malicious intent or negligence, can bypass many of the traditional defenses organizations put in place, leading to significant IP theft and subsequent damage.

    Understanding Insider Threats

    Insider threats are incidents where current or former employees, contractors, or business associates who have access to an organization’s network, data, or premises misuse their access to negatively impact the organization’s critical information or systems. These threats can manifest in various forms:

    1. Malicious Insiders: These individuals intentionally harm the organization, often for personal gain or out of spite. They may steal sensitive information, sabotage systems, or facilitate external attacks.
    2. Negligent Insiders: Often overlooked, these threats stem from employees or associates who inadvertently cause harm due to carelessness or lack of awareness. This includes mishandling data, falling prey to phishing attacks, or improper usage of IT resources.
    3. Infiltrators: These are external actors who gain internal access through various means, often masquerading as legitimate employees or partners.

    Trade secret theft often occurs at the crossroads of internal access and employee conduct. The misappropriation of trade secrets by employees, driven by internal discontent or external incentives, poses a significant threat to businesses. For instance, external rivals may try to lure key employees away with the promise of valuable commercial insights, or disgruntled employees may start competing ventures by misusing trade secrets.

    Considering that the total estimated cost from the theft of American intellectual property is projected to increase by 36% in 2023 alone, businesses must defend against these trojan horses to limit the potential and the subsequent impact.

    The Impact of Insider Threats on IP Security

    The ramifications of insider threats on intellectual property security are both profound and multifaceted. Unlike external attacks, which are often blunt and easily detectable, insider threats can be subtle, elusive, and, consequently, more damaging. This section delves into the impacts of these threats on businesses, particularly in industries where IP is the linchpin of value and innovation.

    Financial and Competitive Losses

    The most immediate and tangible impact of insider-induced IP theft is financial loss. When sensitive designs, formulas, or creative content are misappropriated, businesses face not only the direct costs of these losses but also potential revenue decline due to compromised market positions. In industries like pharmaceuticals or automotive, where R&D investments are colossal, a breach in IP can result in monumental setbacks, both in terms of financial outlays and time-to-market delays. Furthermore, when this stolen IP finds its way to competitors or is illicitly commercialized, the original innovators suffer significant competitive disadvantages.

    Even when sensitive data are not the target of IP theft, the financial ramifications can be enormous. An often-cited estimate from 2007 by the Institute for Policy Innovation says that music piracy costs the U.S. economy more than $12 billion annually.

    Long-term Strategic Impediments

    Finally, the impact of insider threats extends to the strategic level. Intellectual property theft is not limited to domestic borders; it is a global issue as well. The U.S. Chamber of Commerce ranks countries based on their protection of intellectual property. Unfortunately, some countries with weak enforcement measures and inadequate legal frameworks can provide havens for infringers. This not only undermines the efforts of innovators but also disrupts fair competition and international trade.

    Strategies to Combat Insider Threat

    In the battle against insider threats, a multi-layered approach to IP protection is essential. Here are key strategies to strengthen defenses against such threats:

    • Start by conducting thorough risk assessments to identify potential insider threat vectors. This involves analyzing employee roles, access levels, and the sensitivity of the data they handle. Regular audits and monitoring systems can highlight unusual activities or access patterns that might indicate a threat.
    • Implement strict access controls to ensure that employees have only the necessary level of access to perform their duties. Regularly review and adjust these permissions. Employing advanced monitoring tools can also help in detecting suspicious activities in real-time.
    • Educate employees about the risks and indicators of insider threats. Regular training sessions can enhance awareness and encourage employees to report suspicious activities. This not only helps in early detection but also fosters a culture of security within the organization.
    • Invest in specialized insider threat detection solutions that utilize machine learning and behavioral analytics to identify potential threats. These tools can provide early warnings of malicious activities, allowing for prompt intervention.
    • Have a well-defined incident response plan that includes procedures for dealing with insider threats. This ensures a swift and effective response, minimizing potential damage.

    Building a Resilient Defense

    Creating a resilient defense against insider threats requires a holistic approach, blending technology, policies, and culture. Encourage a culture where security is everyone’s responsibility. This includes fostering open communication and trust among employees, making it easier to identify and report potential threats.

    While technology plays a crucial role in detecting and preventing threats, human insight is equally important. Regular interaction and engagement with employees can often reveal underlying issues that might lead to insider threats.

    As the cybersecurity landscape constantly evolves, regularly reviewing and updating security policies and practices is essential to stay ahead of emerging threats, including insider risks.


    Insider threats, akin to the ancient Trojan Horse, are a formidable challenge in safeguarding intellectual property. They require a nuanced understanding and a multifaceted defense strategy. For CISOs and business executives, the key is not just to build walls higher but to foster a vigilant, informed, and responsive organizational environment. Proactivity is the watchword, and with the right mix of technology, policy, and culture, businesses can effectively safeguard their invaluable intellectual assets.

    By Anastasios Arampatzis

    What to Look For in Maintenance-Only Clients

    Web designers can spend a lot of time performing maintenance tasks. It may even be the primary service provided by some. It makes perfect sense, as booking maintenance-only clients can provide a steady source of revenue.

    But maintenance is a unique niche. It typically doesn’t provide the large payouts that new builds offer. Plus, a client’s needs can vary quite a bit.

    Some websites require constant attention. Others may only need a periodic software update. That means some maintenance clients are more profitable than others.

    With that, you’ll want to target clients who fit your goals. Not everyone will be a match, however.

    Much depends on how busy you want to be and how much you want to charge. Then there’s the matter of who built the website. Some designers won’t touch a site built by someone else.

    Are you looking for maintenance-only web design clients? Here are some things to consider, along with how to determine your business goals.

    Does The Website Fit Your Niche?

    The first factor involves how a client’s website fits your niche. For instance, let’s say that you specialize in websites built with Webflow. Ideally, you’d like to book clients that work with the content management system (CMS).

    Maintenance clients can provide a path to expanding your horizons, however. Picking up a WordPress client could better familiarize you with the software.

    Still, you’ll want to consider the consequences. A site that’s unlike the others on your roster requires special attention. You may spend significant time researching tasks. And it could cut into your profit margin.

    That may be fine if you’re planning to expand your services. The experience of learning another CMS can prove valuable in the long term.

    Otherwise, staying within your niche is usually the way to go. That is unless you want to invest the time to learn something new.

    Look for clients that fit within your niche - unless you want to expand your horizons.

    How Much Work Is Expected?

    Maintenance clients can run the gamut in terms of need. Those using WordPress will have a baseline of work. The core software, theme, and plugins will need routine updates. But things can scale quickly.

    eCommerce websites require a lot of attention, for instance. You’ll want to test software updates on a staging environment. And troubleshooting problems are often more complex.

    News and membership-based sites also fit this category. They tend to be frequently updated. And clients may be looking to roll out new features regularly.

    These types of clients can be a boon for revenue. You might charge a significant monthly or yearly fee. The right opportunity could transform your business.

    But you’ll also need to balance that against your time limitations. How many large-scale clients can you manage? A solo freelancer or small agency may have difficulty here.

    It may be that you work with clients across the spectrum. Or you could focus solely on one type of website. The key is becoming comfortable with your workload.

    Consider how much maintenance work a client's website will require.

    Is the Website Worth Your Time?

    A lot of web designers work with small organizations. These clients offer valuable learning experiences. And their maintenance needs tend to be minimal.

    This arrangement is beneficial if your core focus is on building new websites. You can earn a little extra money along the way. Meanwhile, your expected workload will be minimal.

    It doesn’t always work out this way, though. The prevalence of malware means that a security issue can happen at any time. And cleaning up a hacked website can be arduous and time-consuming.

    Compatibility issues can also come into play. Websites built with PHP may have to be tweaked as new versions are released. And keeping up with the latest version of a CMS can also be tricky.

    Therefore, it’s not wise to consider these clients as “easy money.” You may not touch their site daily. But they could still require significant work down the road. Keep this in mind as you weigh the pros and cons of working with them.

    Some maintenance clients may be more trouble than they're worth.

    Who Built the Website?

    There’s no accounting for quality when inheriting a website. You can’t know every step the original designer took. Did they follow best practices?

    You may not find out until a problem arises. That can lead to a wild goose chase of sorts. You’re stuck digging through code, trying to identify what went wrong.

    Some designers are understandably uncomfortable with these situations. No one wants to be on the hook for fixing someone else’s mistakes. Thus, they avoid these websites at all costs.

    It’s something to think about. If you’re comfortable with the risks, sign on. Explain the situation to your client. Conduct a thorough review to try and catch potential issues. You may not find everything. But the process could provide some peace of mind.

    Also, be sure to charge accordingly. There’s no telling what’s going on beneath the surface.

    There may be unknown problems lurking behind an inherited website.

    Find the Right Website Maintenance Clients

    Maintaining websites can be lucrative. But it still pays to be choosy. Picking the wrong clients to work with can negatively impact your business.

    Think about your ideal website maintenance situation. How much work do you expect? How much revenue would you like to bring in? Most importantly – does the website fit within your niche?

    The idea is to build a business that runs smoothly. Too much technical variety can send you scrambling. And you may not have enough time to handle multiple large websites.

    Write a list of what you’re looking for in a maintenance client. Next, develop a process for managing related tasks. Consider how much time and effort each site will take. And don’t forget to account for the occasional unexpected issue.

    There’s no shortage of websites that require maintenance. Take time to ensure that you work with the ones that are a good fit for your business!

    Related Topics

    Weekly News for Designers № 720

    The Rules for Drawing
    A manifesto covering the ten rules for drawing from Illustrator Christopher Niemann.
    The Rules for Drawing

    Open-Source RadiantKit
    A new development framework for building graphics applications in Figma and Canva. It’s free and open source.
    Open-Source RadiantKit

    The Pros & Cons of Customizing WooCommerce
    It’s great that you can make WooCommerce your own. But customization comes with risks, so here are some tips to help you along the way.
    The Pros & Cons of Customizing WooCommerce

    A new web-based visual CSS animation editor.

    Monaspace Type System
    A new monospaced type family that consists of five variable axis typefaces.
    Monaspace Type System

    The New CSS Math: rem() and mod()
    This series aims to look at each function with common use cases and the less common as well.
    The New CSS Math: rem() and mod()

    Develop Processes for These Web Design Tasks
    Small web design tasks can become inefficient, especially at scale. Developing new processes for these tasks can help.
    Develop Processes for These Web Design Tasks

    Understanding Accessibility
    This new website has been created to address the lack of accessibility knowledge and understanding.
    Understanding Accessibility
    A collection of copy and paste CSS buttons. All buttons have been sourced from CodePen.

    UI Considerations for Designing Large Data Tables
    Data powers our world but the user interface often gets in the way. Learn design techniques to build better data tables.
    UI Considerations for Designing Large Data Tables

    Creating Accessible UI Animations
    How is it possible to strike a balance between elements that move and the possible negative effects they expose to users who are sensitive to motion?
    Creating Accessible UI Animations

    Web Design When a Logo Is Your Only Brand Asset
    Smaller organizations and clients may only have a basic logo and no other brand assets. But is that enough to build a web design around?
    Web Design When a Logo Is Your Only Brand Asset

    Surprising Facts About New CSS Selectors
    Surprising Facts About New CSS Selectors <

    Introducing the Twenty Twenty-Four WordPress Theme
    Learn all about the new default WordPress theme, and how it can be used on any type of site.
    Introducing the Twenty Twenty-Four WordPress Theme

    AI is Eating the World: The Evolution of Content in the Age of AI

    In the constantly evolving landscape of technology, “AI is eating the world” has become more than just a catchphrase; it’s a reality that’s reshaping numerous industries, especially those rooted in content creation.

    The advent of generative AI marks a significant turning point, blurring the lines between content generated by humans and machines. This transformation, while awe-inspiring, brings forth a multitude of challenges and opportunities that demand our attention.

    AI is not only eating the world.

    It’s flooding it.

    The AI Revolution in Content Creation

    AI’s advancements in producing text, images, and videos are not only impressive but also transformative. As these AI models advance, the volume of original content they generate is growing exponentially. This isn’t a mere increase in quantity; it’s a paradigm shift in the creation and dissemination of information.

    As AI-generated content becomes indistinguishable from human-produced work, the economic value of such content is likely to plummet. This could lead to significant financial instability for professionals like journalists and bloggers, potentially driving many out of their fields.

    The Economic Implications of AI-Generated Content

    AI's 5th Symphony comic

    The narrowing gap between human and AI-generated content has far-reaching economic implications. In a market flooded with machine-generated content, the unique value of human creativity could be undervalued. This situation mirrors the economic principle where bad money drives out good. In the context of content, uninspired, AI-generated material could overshadow the richness of human creativity, leading the internet to become a realm dominated by formulaic and predictable content. This change poses a significant threat to the diversity and depth of online material, transforming the internet into a mix of spam and SEO-driven writing.

    The Challenge of Discerning Truth in the AI Age

    In this new landscape, the task of finding genuine and valuable information becomes increasingly challenging. The current “algorithm for truth,” as outlined by Jonathan Rauch in “The Constitution of Knowledge,” may not be sufficient in this new era. Rauch’s principles have historically guided societies in determining truth:

    1. Commitment to Reality: Truth is determined by reference to external reality. This principle rejects the idea of “truth” being subjective or a matter of personal belief. Instead, it insists that truth is something that can be discovered and verified through observation and evidence.
    2. Fallibilism: The recognition that all humans are fallible and that any of our beliefs could be wrong. This mindset fosters a culture of questioning and skepticism, encouraging continuous testing and retesting of ideas against empirical evidence.
    3. Pluralism: The acceptance and encouragement of a diversity of viewpoints and perspectives. This principle acknowledges that no single individual or group has a monopoly on truth. By fostering a diversity of thoughts and opinions, a more comprehensive and nuanced understanding of reality is possible.
    4. Social Learning: Truth is established through a social process. Knowledge is not just the product of individual thinkers but of a collective effort. This involves open debate, criticism, and discussion, where ideas are continuously scrutinized and refined.
    5. Rule-Governed: The process of determining truth follows specific rules and norms, such as logic, evidence, and the scientific method. This framework ensures that ideas are tested and validated in a structured and rigorous manner.
    6. Decentralization of Information: No central authority dictates what is true or false. Instead, knowledge emerges from decentralized networks of individuals and institutions, like academia, journalism, and the legal system, engaged in the pursuit of truth.
    7. Accountability and Transparency: Those who make knowledge claims are accountable for their statements. They must be able to provide evidence and reasoning for their claims and be open to criticism and revision.

    These principles form a robust framework for discerning truth but face new challenges in the age of AI-generated content. In particular, the 4th rule – is likely to break if the cost of generating new content is zero, while the cost of finding needles in the haystacks keeps rising as the signal-to-noise ratio of content on the internet becomes lower.

    Proposing a New Layered Approach

    To navigate the complexities of this new era, we propose an enhanced, multi-layered approach to complement and extend Rauch’s 4th rule. We believe that the “social” part of Rauch’s knowledge framework must include at least three layers:

    This is the approach we have been focusing on in our company, the Otherweb, and I believe that no algorithm for truth can scale without it.

    • Editorial Review by Humans: Despite AI’s efficiency, the nuanced understanding, contextual insight, and ethical judgment of humans are irreplaceable. Human editors can discern subtleties and complexities in content, offering a level of scrutiny that AI currently cannot.

    This is the approach you often see in legacy news organizations, science journals, and other selective publications.

    • Collective/Crowdsourced Filtering: Platforms like Wikipedia demonstrate the power of collective wisdom in refining and validating information. This approach leverages the knowledge and vigilance of a broad community to ensure the accuracy and reliability of content.

    This echoes the “peer review” approach that appeared in the early days of the enlightenment – and in our opinion, it is inevitable that this approach will be extended to all content (and not just scientific papers) going forward. Twitter’s community notes is certainly a step in the right direction, but there is a chance that it is missing some of the selectiveness that made peer review so successful. Peer reviewers are not picked at random, nor are they self-selected. A more elaborate mechanism for selecting whose notes end up amending public posts may be required.

    Integrating these layers demands substantial investment in both technology and human capital. It requires balancing the efficiency of AI with the critical and ethical judgment of humans, along with harnessing the collective intelligence of crowdsourced platforms. Maintaining this balance is crucial for developing a robust system for content evaluation and truth discernment.

    Ethical Considerations and Public Trust

    Implementing this strategy also involves navigating ethical considerations and maintaining public trust. Transparency in how AI tools process and filter content is crucial. Equally important is ensuring that human editorial processes are free from bias and uphold journalistic integrity. The collective platforms must foster an environment that encourages diverse viewpoints while safeguarding against misinformation.

    Conclusion: Shaping a Balanced Future

    As we venture into this transformative period, our focus must extend beyond leveraging the power of AI. We must also preserve the value of human insight and creativity. The pursuit of a new, balanced “algorithm for truth” is essential in maintaining the integrity and utility of our digital future. The task is daunting, but the combination of AI efficiency, human judgment, and collective wisdom offers a promising path forward.

    By embracing this multi-layered approach, we can navigate the challenges of the AI era and ensure that the content that shapes our understanding of the world remains rich, diverse, and, most importantly, true.

    By Alex Fink

    An Efficient Design-to-Code Handoff Process Using Uno Platform For Figma — Smashing Magazine

    An Efficient Design-to-Code Handoff Process Using Uno Platform For Figma — Smashing Magazine

    Effective collaboration between designers and developers is vital to creating good user experiences. However, bridging the handoff between design and development with the many tools and workflows available today has its pitfalls. Matthew Mattei introduces you to the Uno Platform. This free and open-source project offers a robust set of productivity boosters, including a design-to-code plugin that fosters better designer/developer collaboration.

    Effective collaboration between designers and developers is vital for creating a positive user experience, but bridging the gap between design and code can be challenging at the best of times. The handoff process often leads to communication gaps, inconsistencies, and, most importantly, lost productivity, causing frustration for both designers and developers.

    When we try to understand where most of the time is spent building software applications, we will notice that a significant amount of it is lost due to a lack of true collaboration, miscommunication, and no single “source of truth.” As a result, we see designers creating great user experiences for clients and passing on their approved designs with little input from the developers. They then attempt to recreate the designs with their developer tools, resulting in a complicated, cost-intensive process and often unimplementable designs.

    Developers and integrators are supposed to closely inspect a design and try to analyze all there is to it: the margins, spacing, alignments, the types of controls, and the different visual states that the user interface might go through (a loading state, a partial state, an error state, and so on) during the interactions with it, and then try to figure out how to write the code for this interface. Traditionally, this is the design handoff process and has long become the norm.

    We at Uno Platform believe that a better, more pragmatic approach must exist. So, we focused on improving the workflow and adding the option to generate the code for the user interface straight from the design while allowing developers to build upon the generated code’s foundation and further expand it.

    “When designers are fully satisfied with their designs, they create a document with all the details and digital assets required for the development team to bring the product to life. This is the design handoff process.”

    — UX Design Institute, “How to create a design handoff for developers”

    Let’s look at some of the problems associated with the handoff process and how the Uno Platform for Figma Plugin may help alleviate the pitfalls traditionally seen in this process.

    Note: The Uno Platform Plugin for Figma is free, so if you’d like to try it while reading this article, you can install it right away. Uno Platform is a developer productivity platform that enables the creation of native mobile, web, desktop, and embedded apps using a single codebase. As part of its comprehensive tooling, Uno Platform offers the Uno Figma plugin, enabling easy translation of designs to code. (While Uno Platform is free and open-source, the plugin itself is free but not open-source.) If you want to explore the code or contribute to the Uno project, please visit the Uno Platform GitHub repository.

    A screenshot of the Uno Platform repository on Github
    The GitHub repository of the open-source project Uno Platform. (Large preview)
    Uno Platform 5.0: Figma plugin, C# Markup, and Hot Reload showcase via Uno Tube Player app
    Feature Panel

    Unifying Design And Development

    “Translating” design elements from Figma to code is time-consuming and prone to errors. Too often, projects are abandoned at handoff; developers and designers may opt to change a specific requirement in their designs but only sometimes communicate these changes effectively. Once designers pass their work files and documentation to the development team, they are on to the next project.

    Our philosophy is that your Figma Design is the single source of truth on which end-users, designers, and developers should agree.

    Designers and developers should not work in a waterfall system. Instead, they should have their own sets of specifications and requirements evolving in parallel. Developers usually work from a backlog, which is rarely used by designers whose point of view is generally a much wider lens, not well represented in granular backlog-type structures.

    “The waterfall model is a linear, sequential approach to the software development lifecycle (SDLC) that is popular in software engineering and product development. The waterfall model uses a logical progression of SDLC steps for a project, similar to the direction in which water flows over the edge of a cliff. It sets distinct endpoints (or goals) for each phase of development. Those endpoints (goals) can’t be revisited after their completion.”

    — Ben Lutkevich, “What is the waterfall model?”

    When managing the dynamic aspect of the workflow — it’s not a waterfall type where you hand off the entire design project when it’s completely done — you need to constantly communicate the changes (colors, assets, layouts, typography, interactions, and so on). The more designers work on an interface, the more they have to effectively communicate the changes and details to the developers — making detailed documentation does not always suffice.

    Another important point should be mentioned. Individual developers will not always have an extensive picture overview of what they are working on as their work is broken down into a set of granular tasks, which may lead to unnecessary rework, double work (that needs to be QA’ed multiple times), or a developer asking for changes that may not benefit the project as a whole. At the same time, designers often have the opposite issue where they constantly move vast chunks of layouts, which sometimes leads them to miss states and assets necessary to complete the details of a specific interaction. Even then, when the design is ready, it still requires a lot of implementation effort on the developers’ part once they start working inside their integrated development environment (IDE).

    In the past, designers and developers have often used different platforms and workflows, which led to miscommunication and delays in the handoff process. Nowadays, software development teams can benefit from the availability of many new technologies and tools, and by leveraging them, they can work together more efficiently, reducing the burden on both parties and ultimately delivering better results for their clients and customers. Figma and Uno Platform are some of those new available tools.

    Why Figma?

    Uno Platform is one of many tools trying to solve the handoff issues for the designers and developers and improve their collaboration efficiency. In fact, many platforms are tackling every aspect of the workflow for every programming language.

    Screenshot of the main page of Uno Platform for Figma.
    Uno Platform for Figma Plugin: export Figma designs as XAML and C# code. (Large preview)

    A significant factor in choosing our current development path lies in the belief that Figma outperforms the Sketch + Zeplin combination (and not only) because of its platform-agnostic nature. Being a web-based tool, Figma is more universal, while Sketch is limited to MacOS, and sharing designs with non-Mac developers necessitates using third-party software. Figma offers an all-in-one solution, making it a more convenient option.

    In addition, Figma now also supports plugins, many of them assisting with the handoff process specifically. For example, Rogie King recently launched a plugin “Clippy — add attachments” that allows attachments to your Figma files, which is very useful during the handoff process. Of course, there are many others.

    This and other factors “weighed” us towards Figma Design. And we aren’t alone; others have picked up Figma as their key design tool after doing some research and then trying things in practice.

    “Comparing the must-haves against the features of a list of possible design apps we compiled (including Sketch, Axure RP, Framer, and more), Figma came out as the clear forerunner. We decided to proceed with a short-term trial to test Figma’s suitability, and we haven’t looked back since. It met all of our key feature requirements but surprised us with a lot of other things along the way.”

    — Simon Harper, “Why we chose Figma as our primary design tool”

    Working with the Uno Figma Plugin

    1: Get Started with Uno Platform for Figma Plugin

    Uno for Figma presents a significant advantage for teams that rely on Figma as their primary design tool.

    By combining the familiarity and efficiency of Figma with the capabilities of the Uno Platform, designers can seamlessly continue working in a familiar environment that they are already comfortable with while knowing their designs will be integrated practically by their development team.

    Getting started with the Uno Figma plugin is a straightforward process:

    1. Install the Uno Platform (Figma to C# or XAML) plugin.
    2. Open the Uno Platform Material Toolkit design file available from the Figma Community.
    Screenshot of the Uno Material Toolkit file available in Figma Community.
    Uno Platform Material Toolkit (available in Figma Community). (Large preview)

    With the Uno Material Toolkit, you no longer need to design many of the components from scratch as the toolkit provides UI (user interface) controls designed specifically for multi-platform, responsive applications.

    Note: To use the plugin, you must create your design inside the Uno Material Toolkit Figma file, using its components. Without it, the plugin won’t be able to generate any output, making it incompatible with existing Figma designs.

    2: Setting Up Your Design

    Once you have installed the Uno Platform for Figma plugin and opened the Material Toolkit design file, you can use the “Getting Started” page in the file layers to set up your design. The purpose of this page is to simplify the process of defining your application’s theme, colors, and font styles.

    You can also use DSP Tooling in Uno.Material for Uno Platform applications. This feature has been one of the top requests from the Uno Platform community, and it is now available both as a package and as part of the App Template Wizard.

    If you’re unfamiliar with DSP (Design System Packages), it’s essentially a repository of design assets, including icons, buttons, and other UI elements, accompanied by JSON files containing design system information. With a DSP, you can craft a personalized theme that aligns with your brand, effortlessly integrate it into your Uno Platform application through the Figma plugin, and implement theme changes across the entire user interface of your application.

    The ability to import custom Design System Packages (DSPs) is a significant development for Uno Platform. With this feature, designers can create and manage their own design systems, which can be shared across projects and teams. This not only saves time but also ensures consistency across all design work. Additionally, it allows designers to maintain control over the design assets, making it easier to make updates and changes as needed.

    Note: The “Getting Started” page offers step-by-step instructions for modifying the colors and fonts of the user interface, including previewing your overall theme. While you can modify these later, I’d recommend doing this right at the beginning of your project for better organization.

    Screenshot of the Getting Started instructions page in Uno Material Toolkit file.
    The Getting Started page in the Material Toolkit file. (Large preview)

    Afterward, create a new page and ensure that you begin by using the Standard Page Template provided in the Uno Toolkit components to start the design of your application. It’s essential to remember that you will have to detach the instance from the template to utilize it.

    Screenshot of the steps needed in order to detach the instance from the template in Figma Design.
    To get started with the Page Template, first, you need to detach the instance from the template. (Large preview)

    3: Start Creating The Design

    Most Toolkit Components have variants that will act as time savers, allowing a single component to contain its various states and variations, with specific attributes that you may toggle on and off.

    For example, button components have a Leading Icon variant so you can use the same element with or without icons throughout the design.

    Screenshot of the button components with a Leading Icon variant — the same set of icons is shown with an icon in front of the labels, and then without.
    Button components with a Leading Icon variant: you can use the same element with or without icons in your design. (Large preview)

    The Uno Toolkit provides a comprehensive library of pre-built components and templates that come with the appropriate layer structures to generate XAML (eXtensible Application Markup Language is Microsoft’s variant of XML for describing a graphic user interface) and C# markup and allows designers to preview their designs using the Uno plugin. This helps synchronize design and development efforts, maintain project consistency, and optimize code output. Furthermore, these components can be reused, making creating and managing consistent designs across multiple projects easier.

    4: Live Preview Your App

    The Previewer in the Uno Platform is a powerful tool that enables designers to troubleshoot their designs and catch issues before the handoff process starts, avoiding redundancy in communications with developers. It provides a live interactive preview of the translated look, behavior, and code of the application’s design, including all styling and layout properties. Designers can interact with their design as if it is a running app, scrolling through content and testing components to see how they behave.

    To preview the designed user interface, follow these steps:

    1. In Figma, select the screen you want to preview.
    2. Right-click the screen → PluginsUno Platform (Figma to C# or XAML).
    3. Once the plugin has launched, select the Preview tab.
    4. Press the Refresh button.
    Figma → Uno Platform (Figma to C# or XAML) plugin → Preview tab (providing a live interactive preview of the user interface).

    The Export tab view allows you to see the C# or XAML code separately, saving you the effort of writing the code yourself. The generated code uses Uno Toolkit components, which are provided with comprehensive developer documentation. Moreover, you are skipping the handoff where developers must inspect the assets to extract the visual specifications, which usually requires more communication efforts and multiple rounds of back-and-forth design “polishing.”

    Figma → Uno Platform (Figma to C# or XAML) plugin → Export tab (for the generated code).

    5: Generate and Export your Code

    Relying on a third-party tool to generate the code automatically may cause some initial reservations, but it can significantly improve workflow efficiency and save the designers’ and developers’ time. By “translating” the design to code directly from the Figma file, the developers can ensure that the application looks and behaves as intended, and designers can ensure that their designs remain pixel-perfect and provide the interaction/UX experience as they were originally intended.

    Uno Platform uses C# and XAML as languages of choice. C# markup and XAML provide a wide range of features, such as support for animations, styles, and templates. In addition, XAML is generally perceived to be providing a good separation between UI styling and business logic, allowing the developers to focus more on high-level business logic during the development process while reducing the amount of code they need to write as XAML can be reused across Windows, iOS, Android, WebAssembly, macOS, and Linux. This level of precision ensures that the user experience is consistent throughout the application (regardless of the software platform being used), saves time, and reduces the likelihood of human error, even for the most experienced developers.

    “XAML is a declarative markup language which simplifies creating user interfaces for .NET apps. You can create visible UI elements in the declarative XAML markup and then separate the UI definition from the run-time logic by using code-behind files that are joined to the markup through partial class definitions. XAML directly represents the instantiation of objects in a specific set of backing types defined in assemblies and enables a workflow where separate parties can work on the UI and the logic of an app, using potentially different tools.”

    — XAML overview (Microsoft Docs)

    How can you leverage the generated code from the Uno Figma plugin?

    The Export tab in the Uno Figma plugin allows you to inspect and export the generated code — the code can be later used in your preferred IDE and by the developers. Using the top-left dropdown menu, you can alternate between C#, XAML,Color, and Fonts Override File to export. Additionally, the contextual controls at the bottom of the tab allow you to set the view type and refresh the view.

    Example of generated XAML and C# Markup from Simple Calc workshop.

    To generate and export the code, copy the Export tab’s content to the clipboard and paste it into your preferred IDE tool. As a designer, you do not have to do this; your development team can use the plugin (even without Figma editor role fees) using Dev Mode to access the code directly from your design.

    To do this, follow these steps:

    1. Select the page or component that you want to inspect.
    2. From the Plugins menu in Figma, choose Uno Platform (Figma to C# or XAML).
    3. Select the Export tab.
    4. Click the Refresh button located at the bottom of the tab.
    5. Optionally, you can change the left-top dropdown to other files to view the theme’s colors, fonts, and Localization files. You can also export each of these files into your project. For Color Override File, copy the generated code into your application’s “Color Override” file. (This is documented in detail in the “Uno Material library → Customize Color Palette” help page.)

    6: Build in Visual Studio

    Moving the generated code (C# markup and XAML) to Visual Studio is just as easy when your design is good enough to go into the development stage.

    If you create a new project using the Uno Solution Template Wizard for Visual Studio, this user-friendly tool will automatically configure your project to your exact preferences and will allow you to use as many (or as few) of the Uno Platform features as you’d like, including the Uno.Material theme, which is made for designing applications that have a great look yet don’t feel too standard. Alternatively, you can use the Fluent theme, the default theme for WinUI-based applications.

    Note: The Toolkit file’s default theme is Material. However, since Uno Platform supports overrides, you have the flexibility to customize your components and achieve a Fluent theme or any other style you like.

    Practical Exercise: Flight App UI Tutorial

    Let’s review together a detailed practical example!

    In this mini-tutorial, I will guide you step-by-step through the process of effectively using Uno Toolkit components and mastering some of the capabilities of the Uno Figma plugin. By the end of the tutorial, you will have the tools and knowledge needed for creating elegant interfaces and how to generate C# Markup and XAML, which could be extended further by you or your team.

    Screenshot of a flight app user interface and the generated code.
    Uno Flights: a tutorial that will teach you how to create a mobile Uno Platform app. (Large preview)

    Getting Started With The Tutorial: First Steps

    If you’re new to using the Uno Platform for Figma plugin, the first step is to install it from the Figma community. After downloading the plugin, proceed with the following steps:

    1. Navigate to the Uno Material Toolkit File in the Figma community and select Open in Figma to start a new project.
    2. Setting up your project theme first is optional but recommended. You can set your desired theme from the Getting Started page (included in the file) or import a DSP (Design System Package) file to quickly transform your theme.
    3. Create a new page. Within the Resources tab of the menu, under Components, find and select the “Standard Page Template.”
    4. Right-click on the template and select Detach the instance.

    These are the initial steps for all new projects using the Uno Platform for Figma plugin and Uno Material Toolkit — not only the steps for this tutorial. This workflow will set you on the right path to creating various mobile app designs effectively.

    Designing With Uno Material Toolkit

    You can follow along here with the Uno Flights file template, which you can use for reference. Please note that when building your UI design, you should only use components that are part of the material toolkit file. Refer to the components page to see the list of available components.

    First, implement the search results and the Sort and Filter action buttons by following these steps:

    1. Add a TextBox and change the placeholder text.
    2. In the TextBox properties, toggle on a leading/trailing icon. (optional)
    3. Add Text to display the number of results and the associated text. (Use Shift + A to add them to an Auto Layout.)
    4. Add an IconButton (use the components provided by the Material Toolkit) and swap the default icon to a Filter icon. Include accompanying Text for the icon, and group them within a frame with a horizontal Auto Layout.
    5. Repeat the previous step for the filter action, adding an IconButton with a filter icon accompanied by Text and placing them in an Auto Layout.
    6. Nest both actions within another Auto Layout.
    7. Finally, group the three sections (number of results, sort action, and filter action) into an Auto Layout.
    8. Add the SearchBox and your final Layout and nest them inside Content.Scrollable.

    By following these steps, you should see a result similar to the example below:

    Screenshot of step 1 in the flight app tutorial: adding search and filter results.
    Step 1: Adding the Result Actions. (Large preview)

    Step 2: Flight Information

    The Flight Itinerary block can be divided into three sections:

    The card component with flight information (step 2. in the flight app tutorial).
    Step 2: The result we are trying to achieve for the flight blocks. (Large preview)
    • Flight Times and the ProgressBar are included in the first Auto Layout.
    • Airport and Flight Information are organized in a separate Auto Layout.
    • Airline Information and Flight Costs are presented in a third Auto Layout.

    Flight Times and ProgressBar

    1. Insert two Text elements for arrival and departure times.
    2. Locate the ProgressBar component in the Resources tab and add it between the two times created.
    3. Group the three components (arrival time, ProgressBar, departure time) into an Auto Layout.
    4. Add an icon and swap the instance with a plane icon.
    5. Select the absolute position and place the plane icon at the beginning of the ProgressBar.

    Flight Info

    1. Insert Text for your flight time and flight status.
    2. Apply an Auto Layout to organize them and set it to Fill.
    3. Proceed to add Text for the Airport initials.
    4. Combine the two Texts and the previously created Auto Layout into a new horizontal Auto Layout.

    Airline Information

    1. Add the necessary Text for Airline Information and pricing.
    2. Select both Text elements and apply an Auto Layout to them.
    3. Set the frame of the Auto Layout to Fill.
    4. Adjust the horizontal gap as desired.

    Select the three sections you want to modify:

    1. Add a new Auto Layout.
    2. Apply a Fill color to the new layout.
    3. Adjust the vertical and horizontal spacing according to your preference.
    4. Move your component to the Standard Page Template by dragging it below the content.Scrollable layer.
    The UI with the first card component created (step 2. completed).
    The results after completing Step 2. (Large preview)

    Step 3. Bottom TabBar

    The Bottom TabBar is relatively simple to modify and is part of the Standard Page Template. To complete this section:

    1. Select each item from the Bottom TabBar.
    2. Expand it to the lowest icon layer.
    3. In the Design tab, replace the current instance with the appropriate one.
    4. Next, select the associated Text and update it to match the corresponding menu item.
    Changing icons in the bottom tab bar screen (step 3. in progress).
    Step 3: Swapping icon instances in the Bottom TabBar (Swap instance → Local components → Icons). (Large preview)

    Step 4. Preview, Export, And Transition From Figma To Visual Studio

    Once the user interface design is finalized in Figma, the Uno Platform Plugin enables us to render and preview our application with the click of a button. Within the Previewer, you can interact with the components, such as clicking the buttons, scrolling, toggling various functionalities, and so on.

    Preview of final user interface (final step 4. now complete).
    Step 4: The result in the Plugin Previewer. (Large preview)

    After previewing the app, we can examine the XAML code generated in the Export tab.

    Open the Uno Figma Plugin (right-click the screen → PluginsUno Platform (Figma to C# or XAML).

    For XAML

    1. You can change your namespace in the first tab (Properties) under Application (optional).
    2. Go to the Export tab and select Copy to Clipboard (bottom right button).
    3. Open Visual Studio and create a new project using the Uno App Template Wizard (this is where you will choose between using XAML or C# Markup for your user interface).
    4. Open your MainPage.xaml file, remove the existing code, and paste your exported code from the Uno Figma Plugin.
    5. Change your x:class and xmlns:local namespaces.
    6. Export the color override file and paste it into your ColorPaletteOverride.xaml.

    For C# Markup

    1. Go to the Export tab and select all contents from the line after this to the semicolon ; at the end. (See the screenshot below.)
    2. Copy the selected code to the clipboard (Ctrl/Cmd + C on Win/Mac).
    3. In Visual Studio, create a new project using the Uno App Template Wizard. (This is where you will choose between using XAML or C# Markup for your user interface.)
    4. Open MainPage.cs and replace all the Page contents with the copied code.
    5. To set the appropriate font size for all buttons, access the MaterialFontsOverride.cs file in the Style folder. Go to the Figma Plugin, and in the Export tab, select Fonts Override File from the dropdown menu. Copy the content in the ResourceDictionary and replace it in your MaterialFontsOverride.cs.
    Preview of the C# markup code when you need to copy it to the clipboard.
    Example of where to start when you need to copy the code to the clipboard. (Large preview)

    Here’s an example of the generated XAML (and also C#) code that you can import into Microsoft Visual Studio:

    ⏬ flightXAML.txt (38 kB)

    ⏬ flightCsharp.txt (56 kB)

    Screenshot of the exported XAML code of the UI in the emulator.
    Design-to-code results: exported XAML code. (Large preview)


    Harmonizing design and development is no easy task, and the nuances between teams make it so there is no one-size-fits-all solution. However, by focusing on the areas that most often affect productivity, the Uno Platform for Figma tool helps enhance designer-developer workflows. It facilitates the efficient creation of high-fidelity designs, interactive prototypes, and the export of responsive code, making the entire process more efficient.

    The examples provided in the article primarily showcase working with mobile design versions. However, there are no limitations in the document or the generated code that restrict you from creating suitable versions for desktops, laptops, tablets, and just the world of the World Wide Web. Specify the desired resolutions and responsive elements (and how they should behave), and the designs you create should be easily adaptable across different platforms and screen sizes.

    Further Reading

    • “Five is for 5X productivity. Announcing Uno Platform 5.0,” (Uno Platform )
      This article provides an overview of all the new features available in the Uno Platform, including the new Figma to C# Markup plugin feature.
    • “Intro to Figma for .NET Developers,” (Uno Platform )
      This article provides an overview of Figma and its features and how .NET developers can use it together with the Uno Platform to streamline their design-to-development workflows.
    • “Uno Platform 5.0 — Figma plugin, C# Markup, and Hot Reload showcase via Uno Tube Player sample app,” (YouTube)
      This is a short video highlight for Uno Platform v. 5.0, edited from the following steps in the Tube Player workshop (this is a Figma Design file which is part of the Tube Player workshop and is tailored to .NET developers specifically).
    • “Uno Platform for Figma — Uno Flight speed build,” (YouTube)
      A short video that shows the making of the Uno Flight app UI compressed into only a minute and a half.
    • “Building a Login Page with Uno Platform and Figma,” (Uno Platform)
      The Uno Platform’s plugin and toolkit offer a large library of ready-to-use components, allowing developers and designers to take advantage of a set of higher-level user interface controls designed specifically for multi-platform, responsive applications.
    • “Building a Profile Page with Uno Platform for Figma,” (Uno Platform)
      In this tutorial, you will learn how to build a completely functional Profile page using Figma and Uno Platform and how to generate responsive and extendable XAML code.
    • “Replicating Pet Adoption UI with Uno Platform and Figma,” (Uno Platform)
      This tutorial will walk you through creating a Pet Adopt user interface mobile screen and exporting your Figma designs into code, including setting up your Figma file and designing using Uno Material Toolkit components.
    • “From Figma to Visual Studio — Adding Back-End Logic to Goodreads App,” (Uno Platform)
      The Uno Platform has an XAML tab (which houses the generated code for the page you created in Figma) and a Themes tab (which houses the Resource Dictionary for the page you created). This tutorial contains a working Goodreads sample and provides many details as to using the XAML and Themes tabs.
    • “Replicating a Dating App UI with .NET, Uno Platform and Figma,” (Uno Platform)
      In this tutorial, you’ll learn how to use Uno Platform to create a dating app user interface, covering in detail various sections and components of the interface; at the end, you’ll also be able to export the design into Visual Studio Code.
    • “Getting Started with Uno Toolkit,” (Uno Platform)
      Detailed developer documentation pages for working with Uno Platform.
    • “The 12 best IDEs for programming,” Franklin Okeke
      To keep up with the fast pace of emerging technologies, there has been an increasing demand for IDEs among software development companies. We will explore the 12 best IDEs that currently offer valuable solutions to programmers.
    • “Why we chose Figma as our primary design tool,” Simon Harper (Purplebricks Digital)
      Comparing the must-haves against the features of a list of possible design apps we compiled (including Sketch, Axure RP, Framer, and more), Figma came out as the clear forerunner. It met all of our key feature requirements but surprised us with a lot of other things along the way.
    • “Why we switched to Figma as the primary design tool at Zomato,” Vijay Verma
      Before Figma, several other tools were used to facilitate the exchange of design mockups and updates; after Figma, the need to use other tools and services was reduced as everything comes in one single package.
    • “The Best Handoff Is No Handoff,” Vitaly Friedman (Smashing Magazine)
      Design handoffs are often inefficient and painful; they cause frustration, friction, and a lot of back and forth. Can we avoid them altogether? This article discusses in detail the “No Handoff” fluid model, where product and engineering teams work on the product iteratively all the time, with functional prototyping being the central method of working together.
    • “Designing A Better Design Handoff File In Figma,” Ben Shih (Smashing Magazine)
      Creating an effective handoff process from design to development is a critical step in any product development cycle. This article shares many practical tips to enhance the handoff process between design and development in product development, with guidelines for effective communication, documentation, design details, version control, and plugin usage.
    • “How I use Sketch with Zeplin to Design and Specify Apps,” Marc Decerle
      Sketch is a very powerful tool in combination with Zeplin. In this article, the author describes how he organizes his Sketch documents and how he uses Sketch in conjunction with Zeplin.
    • Design System Package (DSP)
      This document describes the Design System Package structure, including details on how each internal file or folder should be used.
    Smashing Editorial
    (mb, yk)
    The Frontline of Healthcare: Defending Patient Data Integrity

    The Frontline of Healthcare: Defending Patient Data Integrity

    In the digitized corridors of modern healthcare, patient data emerges as the lifeblood, fueling every aspect of clinical decision-making, personalized treatment, and ongoing research. As we entrust our most intimate health details to electronic health records (EHRs), the imperatives of robust data backup and ironclad security protocols cannot be overstated. The importance of patient data transcends mere record-keeping; it represents the sanctity of personal health information and the collective wisdom gleaned from countless medical interactions.

    However, this invaluable data trove is not impervious to threats. Cyber-attacks targeting healthcare systems and their data backups have surged, data breaches have led to significant losses, and unexpected downtimes have jeopardized both patient safety and trust. In the face of such risks, the backup and security of patient data evolve from IT concerns to foundational pillars of healthcare integrity. This article will delve into the multifaceted importance of patient data, the potentially devastating consequences of its compromise, and the critical strategies required to safeguard it against the growing sophistication of digital threats. The commitment to protecting patient data is not just a technical challenge; it is a moral imperative that upholds the very essence of healthcare provision in the 21st century.

    Securing Healthcare Data with Innovation: The Ciox Health and Veeam Success Story

    Ciox Health, a member of the Datavant Group, spearheads innovative data technology solutions that facilitate the flow of healthcare information, thereby enhancing patient care. Ciox is dedicated to transforming health data into valuable insights, overcoming hurdles in areas including clinical data collection, information disclosure, and medical coding

    In the ever-evolving world of healthcare, the safety and accessibility of patient data are paramount. Ciox Health, a leader in healthcare information management, has pioneered the use of cutting-edge hybrid cloud backup solutions to ensure that their vast data reserves are both secure and readily available. By integrating Veeam Data Platform – Advanced Edition, along with Veeam Backup for cloud services like AWS and Microsoft Azure, Ciox has set a new standard for data management within the industry.

    Ciox’s forward-thinking approach is encapsulated by their embrace of Veeam’s technology, which thrives on flexibility and doesn’t get bogged down by the specifics of data location or hardware variations. As Mike Hudec, a key voice at Ciox, affirms, Veeam’s ability to offer top-notch backup and recovery tools across their varied technological environments made it the standout choice for their needs. It’s the blend of adaptability and cost-efficiency that makes Veeam an indispensable part of their operation.

    With a robust system safeguarding 14,000 workloads and handling over 500 terabytes of data daily, Ciox has created an impenetrable fortress for their data. This includes everything from their life sciences research data to their administrative functions. The unique feature of Veeam is its agility – Ciox can transfer their backups between Azure and AWS with ease, ensuring data recovery is possible from multiple sources, a testament to the seamless integration with multi-cloud environments.

    The shift towards cloud-centric operations has been significant, with Ciox strategically retiring physical data centers to make way for more cloud-based solutions. Veeam has been pivotal in this transition, enabling swift and cost-effective data migrations without the need for additional external services. It’s become the go-to tool for Ciox, exemplifying efficiency and reliability.

    As Ciox continues to delve into innovative technology avenues, Veeam stands as a guardian, adding an extra layer of protection. This protective shell allows Ciox the freedom to explore and integrate sophisticated technologies such as Kubernetes, Amazon S3, and Azure Blob Storage. Veeam’s flexibility is again highlighted by its capability to dynamically scale and restore complex workloads quickly, accommodating for systems that aren’t naturally scalable.

    Embracing what they refer to as ‘Data Freedom,’ Ciox, with Veeam’s support, is not only redefining their technological landscape but is also reinforcing their commitment to delivering premium, cost-effective healthcare services. The Veeam solution has not just been a data backup tool for Ciox; it has become a strategic partner in their journey towards technological advancement and excellence in healthcare data management.

    Veeam Powers Ciox’s High-Availability of Medical Records Across Clouds for Enhanced Patient Care

    With the support of Veeam’s native, purpose-built solutions, Ciox health has the confidence to be able to provide access to an unprecedented level of medical records for healthcare professionals. With the Veeam Data Platform, Ciox can provide access to over 100,000 medical records each minute between their diverse cloud environments making what they do a cornerstone of successful patient care outcomes.

    Our business is incredibly data-intensive,” said Hudec. “For example, one of our most critical databases logs 40,000 transactions per minute. Managing data at scale is a challenge, but we must do it well — people’s lives depend on it. So, we looked for a robust data protection solution that would allow us to recover fast in the event of disasters such as cyberattacks or hardware failures.”

    Moreover, Veeam’s efficiency is evident in its cost-effective data management. Ciox creates immutable backups totaling 500 terabytes daily, with monthly expenses under USD 20,000—a figure that Hudec highlights as impressively economical given the volume and cross-cloud backup strategy involved.

    Additionally, Veeam has been instrumental in reducing costs and facilitating agility during Ciox’s data center consolidation efforts. By enabling smooth data transfers between various clouds, Veeam has positioned itself as Ciox’s preferred tool for backup and recovery solutions. The approach offers substantial savings, both in terms of time and finances, when compared to other methods. Veeam’s platform-agnostic solutions also diminish the risks associated with data management, by providing Ciox with centralized management, end-to-end layered security and a hybrid and multi-cloud ready platform they are able to maintain an environment that can adapt to changing needs.

    In conclusion, Veeam’s solutions have not only helped Ciox continue to secure their position within the healthcare data management sector, but have also underscored the importance of having a fast, secure, and agile hybrid cloud backup solution that supports hybrid- and multi-cloud environments, end-to-end- layered security with fast-reliable recovery to support mission-critical workloads in patient care.

    Branded series by Veeam

    By Randy Ferguson

    CSS Responsive Multi-Line Ribbon Shapes (Part 1) — Smashing Magazine

    CSS Responsive Multi-Line Ribbon Shapes (Part 1) — Smashing Magazine

    Ribbons have been used to accent designs for many years now. But the way we approach them in CSS has evolved with the introduction of newer features, like calc(), color-mix(), and trigonometric functions. In this article, Temani Afif combines background and gradient tricks to create ribbon shapes in CSS that are not only responsive but support multi-line text and are easily adjustable with a few CSS variables.

    Back in the early 2010s, it was nearly impossible to avoid ribbon shapes in web designs. It was actually back in 2010 that Chris Coyier shared a CSS snippet that I am sure has been used thousands of times over.

    And for good reason: ribbons are fun and interesting to look at. They’re often used for headings, but that’s not all, of course. You’ll find corner ribbons on product cards (“Sale!”), badges with trimmed ribbon ends (“First Place!”), or even ribbons as icons for bookmarks. Ribbons are playful, wrapping around elements, adding depth and visual anchors to catch the eye’s attention.

    I have created a collection of more than 100 ribbon shapes, and we are going to study a few of them in this little two-part series. The challenge is to rely on a single element to create different kinds of ribbon shapes. What we really want is to create a shape that accommodates as many lines of text as you throw at them. In other words, there is no fixed dimension or magic numbers — the shape should adapt to its content.

    Here is a demo of what we are building in this first part:

    See the Pen [Responsive multi-line ribbon shapes]( by Temani Afif.

    See the Pen Responsive multi-line ribbon shapes by Temani Afif.

    You can play with the text, adjust the screen size, change the font properties, and the shape will always fit the content perfectly. Cool, right? Don’t look at the code just yet because we will build this together from scratch.

    How Does It Work?

    We are going to rely on a single HTML element, an <h1> in this case, though you can use any element you’d like as long as it can contain text.

    <h1>Your text goes here</h1>

    Now, if you look closely at the ribbon shapes, you can notice a general layout that is the same for both designs. There’s really one piece that repeats over and over.

    Ribbon shape with a selected one piece which repeats through the whole shape
    (Large preview)

    Sure, this is not the exact ribbon shape we want, but all we are missing is the cutouts on the ends. The idea is to first start with this generic design and add the extra decoration as we go.

    Both ribbons in the demo we looked at are built using pretty much the same exact CSS; the only differences are nuances that help differentiate them, like color and decoration. That’s my secret sauce! Most of the ribbons from my generator share a common code structure, and I merely adjust a few values to get different variations.

    Feature Panel

    Let’s Start With The Gradients

    Any time I hear that a component’s design needs to be repeated, I instantly think of background gradients. They are perfect for creating repeatable patterns, and they are capable of drawing lines with hard stops between colors.

    We’re essentially talking about applying a background behind a text element. Each line of text gets the background and repeats for as many lines of text as there happens to be. So, the gradient needs to be as tall as one line of text. If you didn’t know it, we recently got the new line height (lh) unit in CSS that allows us to get the computed value of the element’s line-height. In our case, 1lh will always be equal to the height of one line of text, which is perfect for what we need.

    Lines of text with a measurement next to a line height, which equals to 1lh
    (Large preview)

    Note: It appears that Safari uses the computed line height of a parent element rather than basing the lh unit on the element itself. I’ve accounted for that in the code by explicitly setting a line-height on the body element, which is the parent in our specific case. But hopefully, that will be unnecessary at some point in the future.

    Let’s tackle our first gradient. It’s a rectangular shape behind the text that covers part of the line and leaves breathing space between the lines.

    A rectangular shape gradient in red color marked with 70% and 30% of transparent color between lines
    (Large preview)

    The gradient’s red color is set to 70% of the height, which leaves 30% of transparent color to account for the space between lines.

    h1 {
      --c: #d81a14;
      background-image: linear-gradient(var(--c) 70%, #0000 0);
      background-position: 0 .15lh;
      background-size: 100% 1lh;

    Nothing too complex, right? We’ve established a background gradient on an h1 element. The color is controlled with a CSS variable (--c), and we’ve sized it with the lh unit to align it with the text content.

    Note that the offset (.15lh) is equal to half the space between lines. We could have used a gradient with three color values (e.g., transparent, #d81a14, and transparent), but it’s more efficient and readable to keep things to two colors and then apply an offset.

    Next, we need a second gradient for the wrapped or slanted part of the ribbon. This gradient is positioned behind the first one. The following figure demonstrates this with a little opacity added to the front ribbon’s color to see the relationship better.

    Two line of text with a gradient for the wrapped part of the ribbon positioned behind the first gradient
    (Large preview)

    Here’s how I approached it:

    linear-gradient(to bottom right, #0000 50%, red 0 X, #0000 0);

    This time, we’re using keywords to set the gradient’s direction (to bottom right). Meanwhile, the color starts at the diagonal (50%) instead of its default 0% and should stop at a value that we’re indicating as X for a placeholder. This value is a bit tricky, so let’s get a visual that illustrates what we’re doing.

    A gradient for the wrapped part of the ribbon with the green arrow that illustrates the gradient direction with different color stops
    (Large preview)

    The green arrow illustrates the gradient direction, and we can see the different color stops: 50%, X, and 100%. We can apply some geometry rules to solve for X:

    (X - 50%) / (100% - 50%) = 70%/100%
    X = 85%

    This gives us the exact point for the end of the gradient’s hard color stop. We can apply the 85% value to our gradient configuration in CSS:

    h1 {
      --c: #d81a14;
        linear-gradient(var(--c) 70%, #0000 0), 
        linear-gradient(to bottom left, #0000 50%, color-mix(in srgb, var(--c), #000 40%) 0 85%, #0000 0);
      background-position: 0 .15lh;
      background-size: 100% 1lh;

    You’re probably noticing that I added the new color-mix() function to the second gradient. Why introduce it now? Because we can use it to mix the main color (#d81a14) with white or black. This allows us to get darker or lighter values of the color without having to introduce more color values and variables to the mix. It helps keep things efficient!

    See the Pen [The gradient configuration]( by Temani Afif.

    See the Pen The gradient configuration by Temani Afif.

    We have accomplished the main piece of the design! We can turn our attention to creating the ribbon shape. You will notice some unwanted repetition at the top and the bottom. Don’t worry about it; it will be fixed in the next section.

    Next, Let’s Make The Ribbons

    Before we move in, let’s take a moment to remember that we’re making two ribbons. The demo at the beginning of this article provides two examples: a red one and a green one. They’re similar in structure but differ in the visual details.

    For the first one, we’re taking the start and end of the ribbon and basically clipping a triangle out of it. We’ll do a similar thing with the second ribbon example with an extra fold step for the cutout part.

    The First Ribbon

    The only thing we need to do for the first ribbon is apply a clip-path to cut the triangular shape out from the ribbon’s ends while trimming unwanted artifacts from the repeating gradient at the top and bottom of the ribbon.

    Two variants of the first ribbon before and after applied clip-path
    (Large preview)

    We have all of the coordinates we need to make our cuts using the polygon() function on the clip-path property. Coordinates are not always intuitive, but I have expanded the code and added a few comments below to help you identify some of the points from the figure.

    h1 {
      --r: 10px; /* control the cutout */
      clip-path: polygon(
       0 .15lh, /* top-left corner */
       100% .15lh, /* top right corner */
       calc(100% - var(--r)) .5lh, /* top-right cutout */
       100% .85lh,
       100% calc(100% - .15lh), /* bottom-right corner  */
       0 calc(100% - .15lh), /* bottom-left corner */
       var(--r) calc(100% - .5lh), /* bottom-left cutout */
       0 calc(100% - .85lh)

    This completes the first ribbon! Now, we can wrap things up (pun intended) with the second ribbon.

    The Second Ribbon

    We will use both pseudo-elements to complete the shape. The idea can be broken down like this:

    1. We create two rectangles that are placed at the start and end of the ribbon.
    2. We rotate the two rectangles with an angle that we define using a new variable, --a.
    3. We apply a clip-path to create the triangle cutout and trim where the green gradient overflows the top and bottom of the shape.
    The second ribbon in three pictures: with two rectangles created, two rectangles rotated, and applied clip-path
    (Large preview)

    First, the variables:

    h1 {
      --r: 10px;  /* controls the cutout */
      --a: 20deg; /* controls the rotation */
      --s: 6em;   /* controls the size */

    Next, we’ll apply styles to the :before and :after pseudo-elements that they share in common:

    h1:after {
      content: "";
      position: absolute;
      height: .7lh;
      width: var(--s);
      background: color-mix(in srgb, var(--c), #000 40%);
      rotate: var(--a);

    Then, we position each pseudo-element and make our clips:

    h1:before {
      top: .15lh;
      right: 0;
      transform-origin: top right;
      clip-path: polygon(0 0, 100% 0, calc(100% - .7lh / tan(var(--a))) 100%, 0 100%, var(--r) 50%);
    h1:after {
      bottom: .15lh;
      left: 0;
      transform-origin: bottom left;
      clip-path: polygon(calc(.7lh / tan(var(--a))) 0, 100% 0, calc(100% - var(--r)) 50%, 100% 100%, 0 100%);

    We are almost done! We still have some unwanted overflow where the repeating gradient bleeds out of the top and bottom of the shape. Plus, we need small cutouts to match the pseudo-element’s shape.

    The second ribbon before and after clip-path
    (Large preview)

    It’s clip-path again to the rescue, this time on the main element:

    clip-path: polygon(
        0 .15lh,
        calc(100% - .7lh/sin(var(--a))) .15lh,
        calc(100% - .7lh/sin(var(--a)) - 999px) calc(.15lh - 999px*tan(var(--a))),
        100% -999px,
        100% .15lh,
        calc(100% - .7lh*tan(var(--a)/2)) .85lh,
        100% 1lh,
        100% calc(100% - .15lh),
        calc(.7lh/sin(var(--a))) calc(100% - .15lh),
        calc(.7lh/sin(var(--a)) + 999px) calc(100% - .15lh + 999px*tan(var(--a))),
        0 999px,
        0 calc(100% - .15lh),
        calc(.7lh*tan(var(--a)/2)) calc(100% - .85lh),
        0 calc(100% - 1lh)

    Ugh, looks scary! I’m taking advantage of a new set of trigonometric functions that help a bunch with the calculations but probably look foreign and confusing if you’re seeing them for the first time. There is a mathematical explanation behind each value in the snippet that I’d love to explain, but it’s long-winded. That said, I’m more than happy to explain them in greater detail if you drop me a line in the comments.

    Our second ribbon is completed! Here is the full demo again with both variations.

    See the Pen [CodePen Home
    Responsive multi-line ribbon shapes]( by Temani Afif.

    See the Pen CodePen Home
    Responsive multi-line ribbon shapes by Temani Afif.

    Wrapping Up

    We looked at two ribbon variations that use almost the same code structure, but we can make many, many more the same way. Your homework, if you accept it, will be to make the following variations using what you have learned so far.

    Final versions of two ribbon variations
    (Large preview)

    You can still find the code within my ribbons collection, but it’s a good exercise to try writing code without. Maybe you will find a different implementation than mine and want to share it with me in the comments! In the next article of this two-part series, we will increase the complexity and produce two more interesting ribbon shapes.

    Smashing Editorial
    (gg, yk)