15 Best New Fonts, November 2023

Original Source: https://www.webdesignerdepot.com/2023/11/15-best-new-fonts-november-2023/

2023 is almost over, and the new fonts are still coming thick and fast. This month, we’ve found some awesome variable fonts, some revivals, and one or two novelty fonts to get you through the holiday promotion work. Enjoy!

10 Great Black Friday Deals for Designers, Marketers and Small Businesses

Original Source: https://www.hongkiat.com/blog/black-friday-deals-designers-marketers-businesses/

If you know the thrill of nabbing Black Friday deals, you’re aware of the treasure trove that awaits. Black Friday is often seen as the prime time to snag a deal, especially if you’re a web designer or part of a design agency keen on tools to bolster your online business.

The countdown is on, and bargain hunters are gearing up for the rush. But you? You have the luxury to unwind in front of your computer with a cozy cup of coffee, leisurely browsing through this curated list of Black Friday specials tailored for web designers and agencies. Rest assured, each item on this list stands out for its quality and is the best in its class.

So, here’s to smart shopping.

Overview:

Tool Name
Description
Black Friday / Cyber Monday

BeTheme
Website Builder
$39 – 35% off

wpDataTables
WordPress Table and Chart Plugins
Up to 70% off

Amelia
WordPress Event Booking Plugin
Up to 70% off

Brizy
Multiplatform Website Builder
Up to 50% off

LayerSlider
WordPress Slider Builder Plugin
Up to 50% off

Trafft
Appointment Scheduling Tool
Up to 50% off

Getillustrations
Vector Illustrations
$195/year

Hongo
E-commerce Platform
$41

Slider Revolution
Dynamic WordPress Plugin
33% off

XStore
WordPress & WooCommerce Theme
Up to 50% off

BeTheme Black Friday deals
BeTheme

Notable Website Builder for WordPress

BeTheme is recognized for its extensive library of over 700 customizable pre-built websites. Its range of robust core features are noteworthy, including:

BeBuilder, a fast and user-friendly WordPress website builder, available in three versions: blocks, classic, and developer.
Be’s WooCommerce builder, designed to enhance online shopping experiences and potentially increase sales.
Header and Footer builders from BeTheme, which offer customization beyond preset designs, allowing for personalized website sections.
Additional features such as Be’s Popup, Sidebar Menu, Mega Menu builders, and the Loop Builder with dynamic data capabilities.

BeTheme also includes Conditional Logic, a feature to control the display of sections, wraps, or elements.

Click the banner to learn more about BeTheme’s Black Friday offer.

Visit BeTheme

wpDataTables Black Friday deals
wpDataTables

Comprehensive Tables & Charts Plugin for WordPress

Creating interactive tables or charts from a vast amount of data can be challenging. The wpDataTables plugin, however, aims to simplify this task.

wpDataTables is beneficial for data analysts, web developers, and business owners, offering features that aid in data management, such as:

Tools for creating responsive and easily manageable tables and charts.
The ability to process data from various sources in multiple formats.
Features for front-end table editing, sorting, advanced filtering, and conditional formatting to emphasize important data.
Pagination and AJAX loading to manage data efficiently.
More than 8 styles for customizing data tables.
Support for Excel-like formulas, among other features.

A Black Friday promotion offers up to 70% off. More details are available by clicking on the banner.

Visit wpDataTables

Amelia Black Friday deals
Amelia

Leading Appointment and Event Booking Plugin for WordPress

Amelia is suited for various industries like beauty, healthcare, fitness, consulting, education, and training. It facilitates the automation and optimization of appointment booking processes, managing:

A range of services, including packages, event tickets, resource and group bookings, recurrent appointments, and providing real-time notifications and reminders.
The capability to handle an unlimited number of appointments at multiple locations from one platform and dashboard.

Clients can book appointments around the clock and make payments online through Stripe, PayPal, Mollie, or Razorpay. Amelia integrates with WooCommerce, Google Calendar, Outlook Calendar, Google Meet, Zoom, as well as Elementor, Divi, and Lesson Space.

Incorporate the Amelia plugin into your website for added value, especially with a 70% Black Friday discount. Click the banner to learn more.

Visit Amelia

Brizy Black Friday deals
Brizy

Distinctive Multiplatform Website Builder

Brizy stands out as a website builder known for its speed, effectiveness, and ease of use. What sets it apart is its multiplatform capability, which includes Cloud and WordPress support, and an anticipated Shopify integration. This builder is equipped with over 180 pre-made templates, all optimized for high conversion rates.

Additionally, Brizy enhances marketing efforts with tools like a popup builder and CRM integrations. It is especially beneficial for design agencies and SaaS product owners, thanks to Brizy’s 100% white label reseller plans. These plans allow them to provide a DIY website builder to their clients, adding significant value to their services.

Brizy plans are available at a 50% discount for Black Friday.

Visit Brizy

LayerSlider Black Friday deals
LayerSlider

Leading WordPress Slider Builder Plugin

LayerSlider elevates websites with dynamic flair, style, and animations, making it an ideal tool for transforming dull sites or creating visually striking new ones. It offers an affordable way to develop sophisticated websites without incurring substantial expenses.

With a collection of over 210 customizable templates for websites, sliders, and popups, LayerSlider is user-friendly and well-suited for beginners or those embarking on new projects. This accessibility and versatility make it a popular choice for enhancing online presence.

Take advantage of the Black Friday offer of up to 50% off. The discount can be accessed using the coupon code: BF2023.

Visit LayerSlider

Trafft Black Friday deals
Trafft

Comprehensive Appointment Scheduling Software

Trafft is an all-in-one software solution designed to automate bookings, manage calendars, services, staff, customers, and handle payments efficiently. This system is particularly beneficial for businesses operating in multiple locations, offering features such as custom fields and domains, group bookings, as well as comprehensive invoice and payment management.

Additionally, it’s an excellent tool for agencies and web designers, enabling them to offer clients a customized, brand-tailored booking solution. This adaptability makes Trafft a versatile and valuable asset for various business models.

A Black Friday/Cyber Monday discount of up to 50% makes it an attractive option.

Visit Trafft

Getillustrations Black Friday deals
Getillustrations

Quality Vector Illustrations for Digital Projects

Getillustrations provides a wide array of illustrations that cater to diverse digital projects and keep pace with evolving illustration styles. It boasts an extensive collection of over 18,000 vector illustrations, ensuring a broad selection for various needs. Each illustration comes with a commercial use license, granting permanent usage rights.

Moreover, the platform accommodates different requirements by offering illustrations in multiple formats, including PNG, SVG, Ai, and Figma. This makes Getillustrations a comprehensive resource for digital creatives seeking quality and variety in illustrations.

Suitable for websites, apps, presentations, and more, Getillustrations also offers a 40% Black Friday discount with the coupon code BLACK2023.

Visit Getillustrations

Hongo Black Friday deals
Hongo

Comprehensive Shopify Theme for E-commerce

Hongo is a Shopify theme tailored for crafting visually appealing and efficient e-commerce stores, optimized to boost conversions. It comes equipped with features like quick view, product comparison, wishlist, advanced filters, color swatches, and product videos, enhancing the shopping experience.

The theme also offers extensive customization options, including over 150 sections, more than 100 demo pages, various product card styles, and adjustable settings in the Shopify Customize panel. To assist users, Hongo includes detailed documentation and instructional videos, providing valuable guidance for creating a compelling online store.

Visit Hongo

Slider Revolution Black Friday deals
Slider Revolution

Dynamic WordPress Plugin

Slider Revolution is a tool that significantly enhances web pages with its unique features, offering great versatility to web designers. It boasts a wide range of advanced animation effects and provides over 250 website and slider templates, catering to various design needs. A standout feature is the “Fluid Dynamics” addon, which introduces interactive, dynamic fluid simulation effects.

During Cyber Weeks (Nov 17 – Dec 1), enjoy 3 exclusive templates and a 33% discount using code CYBER33.

Visit Slider Revolution

XStore Black Friday deals
XStore

Enhanced WordPress & WooCommerce Theme

XStore, known for its user-friendly interface as a WordPress and WooCommerce theme, now comes with new enhancements. It incorporates the Single Product Builder with Elementor, allowing for detailed customization of product pages.

Additionally, the introduction of the Products Archive Builder enables the creation of attractive product archive pages. With a substantial collection of over 130 prebuilt websites, XStore offers a robust foundation for building a wide range of online stores, catering to diverse e-commerce needs.

Visit XStore

The post 10 Great Black Friday Deals for Designers, Marketers and Small Businesses appeared first on Hongkiat.

Thinkific vs Kajabi vs Teachable: Complete 2024 Guide

Original Source: https://ecommerce-platforms.com/articles/thinkific-vs-kajabi-vs-teachable

Thinkific vs Kajabi vs Teachable, which course creation platform is best for you? In this complete comparison review, we’ll be looking at some of the most important features of each platform, to help you make the right choice.

I’ve experimented with each platform, and assessed the user reviews of other online educators to provide you with a comprehensive insight into the services on offer. Read on for my behind-the-scenes look at what each course creator can do.

Continue reading Thinkific vs Kajabi vs Teachable: Complete 2024 Guide

The post Thinkific vs Kajabi vs Teachable: Complete 2024 Guide appeared first on Ecommerce Platforms.

Capto Screen Capturing Tool – Review (2023)

Original Source: https://www.hongkiat.com/blog/capto-screen-capture/

Capto is an impressive application designed for both screen capturing and screen recording. At first glance, the app might seem a bit daunting due to its wealth of features. It offers numerous modes for taking screenshots and recording your screen, giving you plenty of options to choose from.

Capto Screen RecorderCapto Screen Recorder
It has all of Mac’s screenshot features…

Similar to the native screen recording feature on Mac, Capto allows you to capture:

The entire screen.
A specific area of your choice.
Any particular window, active or inactive.

…plus a little extra.

Beyond the capabilities of Mac’s built-in screen recording features, Capto offers the following enhancements:

Screen capture with a customizable delay time, such as a 4-second delay.
The ability to capture dropdown menus and webpages.

All screenshots and screen recorded videos will be stored within the app. Additionally, the app provides tools that allow you to annotate your screenshots and edit screen recordings right within its interface, details of which I’ll delve into later in the article.

Download Capto:

Official website
Mac store

Getting Started

After downloading, installing, and launching the app for the first time, this is the interface you’ll be greeted with.

Capto initial interfaceCapto initial interface

The first step after installing the Capto is to allow it the necessary permissions to integrate with your system’s default keyboard shortcuts.

To do this, navigate to your System Preferences, then to Security & Privacy > Privacy > Accessibility. Scroll down the list until you find “CaptoHelper,” and make sure to check the box next to it.

Granting permissions to CaptoGranting permissions to Capto

To begin, you can either select options like “Screen”, “Area”, “Window”, “Menu”, etc., from the top bar, or you can utilize keyboard shortcuts. Click here for a list of all the keyboard shortcuts.

All the screenshots taken with the app will be stored under Library > All Images, and screen recordings can be found under Library > All Videos.

And of course, the “Trash” is where you’ll find anything you’ve deleted.

Capto capture optionsCapto capture options

Now, let’s look at how to perform some basic screen capturing using the app.

Screen Capture with Capto

Capto offers a variety of ways to create screenshots. Here’s a complete list:

Capture the entire screen.
Capture the screen with a delay of n seconds.
Capture a specific area in various shapes like rectangular, circle, or custom (freehand).
Capture a window.
Capture a menu.
Capture a webpage.

Next, we’ll explore each of these features in detail, showing you how they work and what the results look like.

Screen Capture

To capture your desktop’s screen, click the “Screen” icon (or use the shortcut key Command + Control + 3). Your cursor will turn into a camera icon.

Then, double-click on your desktop to take the screenshot.

Cursor as camera iconCursor as camera icon
Screen Capture with Delay

If you want to delay a screen capture, click the down arrow next to “Screen,” select “Delayed (5 sec),” or set the time you prefer. After that, follow the same steps as a regular screen capture.

Delayed screen capture settingDelayed screen capture setting
Screen Capture Specific Area

You can also take screenshots of specific areas in various shapes like a rectangle, circle, or freehand drawing. To do this, select the desired shape from the “Area” option on the top toolbar.

Selecting area for captureSelecting area for capture

Draw the shape on the part of the screen you wish to capture and then click the camera icon.

Drawing shape for captureDrawing shape for capture
Screen Capture a Window

You can also capture a specific window, whether it’s currently active or only partially visible on your desktop. After clicking “Window“, move your cursor over the window you want to capture and double-click to take the screenshot.

Screen Capture a Menu

Capto allows you to capture menus as well, which is especially handy if you want to guide someone towards a particular feature or function within an application. I find using keyboard shortcuts is the easiest method.

Here’s how you do it:

In the app whose menu you want to capture, navigate to the feature or option you’re interested in.
Press the keyboard shortcut Command + Shift + M, twice, to highlight the intended menu bar for capture.
App menu highlighted for captureApp menu highlighted for capture
Press Enter to take a screenshot of it.

Screen Capture a Webpage

Lastly, let’s explore how to screen capture a website. Capto offers three ways to do this:

Snap from Capto browser: This opens an in-app browser in Capto, where you then enter a URL and capture the webpage.
Open current URL in Capto:This option opens an in-app browser in Capto, which loads the website currently open in your default browser.
Snap active browser URL: This option captures a screenshot of your active browser window.

For the first two options, click “Exit” in the top right corner to close the in-app browser.

Webpage capture options in CaptoWebpage capture options in Capto

This feature enables you to capture:

The visible part of the webpage,
The entire page, including content below the fold,
A specific section of the page,
Or download the webpage as a PDF.

To ensure a perfect screenshot, make sure the webpage you intend to capture is fully loaded before executing the screenshot command.

Screen Recording with Capto

Before we delve into annotating captured screenshots, let’s explore screen recording with Capto. The process is quite similar to taking screenshots. Similar to the native Mac’s screen recording feature, it allows you to:

record the entire screen,
or just a specific area.

Capto screen recording optionsCapto screen recording options

It’s worth mentioning that Capto also allows for the highlighting of mouse clicks during recording.

Highlighting mouse clicks in CaptoHighlighting mouse clicks in Capto

During a screen recording, you can choose to pause it or cancel the recording entirely. And when you’re finished, simply click “Stop & Save Recording” on the top menu bar.

Capto recording control optionsCapto recording control options

Annotating Screenshots

All screenshots captured using the app are stored within the app and can be accessed under “Image.” Within this section, you have a variety of annotation options, such as:

Hand-drawn sketching.
Adding text and lines.
Inserting symbols, arrows, chat bubbles.
Highlighting areas.
Blurring specific areas.
Adding step numbering, and more.

Also within this interface, you can crop your image, rotate it, or even add tags and notes to further organize your files.

Annotating options in CaptoAnnotating options in Capto

Editing Screen Recording

For the screen recordings you’ve created, there are basic annotation options available, though not as extensive as those for screenshots. Nonetheless, you can add highlight boxes, arrows, callouts, text, blur specific areas, or even overlay images onto your video.

Additionally, the app provides basic video editing capabilities, including trimming to determine where the recording should start and end, cropping the frame, and more.

Editing screen recording in CaptoEditing screen recording in Capto

Sharing Screen Capture and Recordings

Everything created with Capto is saved within the app. To export for sharing, you’ll need to manually select the screenshot or screen recording, right-click, and choose “Save to Desktop“.

Saving Capto files to desktopSaving Capto files to desktop

Alternatively, you can use the Share icon in the top right corner to share instantly via Mail, Messages, or AirDrop.

Sharing options in CaptoSharing options in Capto

Final Thoughts

That covers just about everything the Capto app can do, which is a substantial set of features for a screenshot app. What I particularly appreciate about this app is that it stores all your screenshots and recordings internally, meaning you won’t have to manually customize a location for your screenshots on your Mac. It also enables you to organize them with notes, tags, or even put them into customized smart collections.

Capto’s Price:

The Capto app costs a one-time fee of $29.99 for a single user, valid for use on two Macs. If you find it useful for more people, there’s a family pack available for $44.99, which allows for use on up to five Macs.

Black Friday Deal: The app is now available at a 50% discount, priced at $15 during Black Friday sales.

Capto comes with a 15-day free trial with no payment details required. You can download it from the Mac App Store. The trial version of Capto includes a watermark on all screenshots. To enjoy all features without watermarks, you’ll need to purchase the app.

Try Capto

The post Capto Screen Capturing Tool – Review (2023) appeared first on Hongkiat.

How to Integrate Zoho Voice with Zoho Desk for Your Business

Original Source: https://www.hongkiat.com/blog/integrate-zoho-voice-zoho-desk/

Combining Zoho Voice with Zoho Desk lets you handle both call and contact center tasks in one place. This integration brings features that boost efficiency, cut costs, and enhance customer satisfaction. Once you experience these benefits, you’ll likely not want to look for other solutions.

In this article, I’ll guide you through the steps to link Zoho Voice with Zoho Desk, helping your online business thrive.

But first, for those who are unfamiliar with Zoho Voice and Zoho Desk, let’s give you an idea of what these tools do.

Table of Content

What’s Zoho Desk?
What’s Zoho Voice?
Integrating Zoho Voice with Zoho Desk
The Benefits
Conclusion

What’s Zoho Desk?

Zoho Desk is a cloud-based platform for customer support that helps you connect with your customers through various channels like email, phone, live chat, and social media.

It provides a range of tools to help manage and grow your business, including CRM, project management, team collaboration, and eCommerce capabilities.

Zoho Desk is a key part of Zoho One, a collection of business apps designed for small businesses. It simplifies managing customer interactions and includes project and employee management features.

Zoho Desk InterfaceZoho Desk Interface

Automated workflows in Zoho Desk boost your productivity by bringing all customer requests into a single inbox, regardless of how they contact you.

Users can tailor Zoho Desk by changing tab names, adding departments, customizing email templates, setting business hours, and adding help folders. It can also integrate with your existing systems.

Price of Zoho Desk:

Zoho Desk is free for up to 3 agents, and its paid plans start at $10.30, varying based on the selected plan. Here’s a more detailed list:

Free: $0 (up to 3 agents)
Standard: $10.30/agent/month
Professional: $18.02/agent/month
Enterprise: $30.89/agent/month

Try Zoho Desk

What’s Zoho Voice?

Zoho Voice, on the other hand, is a cloud-based system for web and phone communication offering multiple lines, extensions, call recording, automated attendants, and IVR. It’s an effective tool for enhancing your business’s productivity, especially when mobile.

Zoho Voice enables you to make calls using your computer or mobile device via an internet connection. It uses Zoho’s cloud-based PBX (Private Branch Exchange) technology to power these capabilities.

Zoho Voice InterfaceZoho Voice Interface

With Zoho Voice, you can easily integrate your CRM and helpdesk systems with your phone system to make communication more efficient. It allows you to set up processes for when agents are unavailable, ensuring that customers are not left waiting.

This system also includes options for directing calls to voicemail, allowing for quicker responses and improved customer service efficiency.

Price of Zoho Voice:

Zoho Voice offers a free starting option, with plans beginning at $100 per month.

Free: $0
Team: $100/month
Office: $300/month
Corporate: $1000/month

Try Zoho Voice

How to Integrate Zoho Voice with Zoho Desk?

Having learned about Zoho Voice and Zoho Desk, let’s explore how to combine them for an effective customer support system.

Start by logging in to your Zoho Voice account.
After logging in, you’ll need to select an editor. You have two options:
Editor Options in Zoho VoiceEditor Options in Zoho Voice

Business Phone – Ideal for startups and sales teams. Features include CRM and Desk integrations, simple IVRs, call queues, call transfers, recording, CDRs, etc.

Enterprise Telephony – Suitable for SMBs, sales, and support teams. Offers advanced CRM and Desk integrations, live call monitoring, complex IVRs, custom greetings, set business hours, and more.

After choosing your editor, you’ll be directed to the main dashboard of Zoho Voice. Here, click on the Integrations tab in the left-hand menu.
Zoho Voice Main DashboardZoho Voice Main Dashboard
In the next step, you’ll see a list of Zoho integrations. Select Zoho Desk from this list.
Selecting Zoho Desk IntegrationSelecting Zoho Desk Integration
On the Integration page, take a moment to read the Zdialer Introduction, which explains the benefits of integrating Zoho Voice with Zoho Desk. Click Next after reading.
Zdialer Introduction PageZdialer Introduction Page
Finally, import your sales and support agents into Zoho Voice and add them as users. This step allows Zoho Voice to access your contacts.

Benefits of Integrating Zoho Voice with Zoho Desk

Identify callers quickly with Zoho Desk’s caller information in screen pop-ups.
Make and receive calls right from Zoho Desk using ZDialer.
Easily call numbers in Zoho Desk with the click-to-call feature.
Effortlessly add Zoho Desk agents as Zoho Voice users in large numbers.
Automatically record all calls made with your numbers.
Conveniently handle calls in Zoho Desk using ZDialer.

Conclusion

Zoho Voice is a dynamic phone system that enhances your business’s productivity. When integrated with Zoho Desk, it forms a comprehensive customer support system. This integration lets you handle calls, whether you’re at your desk or on the move, and includes features like easy call transfers and recording.

By adopting these three business communication tools, you’ll enhance communication and streamline operations for greater efficiency. Consider incorporating these tools into your business strategy today.

The post How to Integrate Zoho Voice with Zoho Desk for Your Business appeared first on Hongkiat.

How to Use the Grep Command in Linux

Original Source: https://www.hongkiat.com/blog/linux-command-grep/

In the world of Linux, searching through text files to find specific content is a common task, and one that can be achieved efficiently with the grep command. Short for “Global Regular Expression Print,” grep is a powerful command-line tool that allows users to search through files using patterns defined by regular expressions.

Whether you’re looking for a particular error in a log file, or trying to locate all instances of a specific term in a large codebase, grep is the go-to tool for text searching and manipulation. With the ability to match complex patterns, filter results, and even perform operations across multiple files, grep stands as a vital utility for system administrators, programmers, and data analysts alike.

General syntax for grep command:

$ grep [OPTIONS…] [PATTERN] [FILE…]

1. Search for something within a file
grep exp FileName.txt

grep is a powerful command that allows you to search for a specific set of characters, or words exist in a file, or multiple files. The command above search for exp within FileName.txt, and return results when found.

Note: grep is by default case-sensitive, and without other parameters involved, grep would return results as long as it matches “exp”.

Example:

Assuming that FileName.txt contains the following text:

This is an example file.
The word exp is here.
No match in this line.
Expression is a good word.
Experience teaches wisdom.

The command grep exp FileName.txt would result in the following output:

This is an example file.
The word exp is here.
Expression is a good word.
Experience teaches wisdom.

This output displays all the lines in FileName.txt that contain the substring “exp”.

2. Search for something in multiple files
grep all name1.txt name2.txt name3.txt

This command expands searching to multilple specified filenames.

Example:

The command grep all name1.txt name2.txt name3.txt uses grep to search for the string “all” within the files name1.txt, name2.txt, and name3.txt. If the string is found, it will print the lines containing that string along with the file names.

name1.txt:We are all in this together.
name2.txt:All the best for your future.
name3.txt:all of these lines match.
name3.txt:All is well.

3. Finding an exact word with grep
grep -w example Example.txt

With the -w parameter, grep gets more precise in its search and only return true if the exact word matches. In the command above, grep search for “example” in Example.txt.

Any of the following would return false:

Example
examples

4. Case-insensitive search with grep
grep -i being ExampleFile.txt

With the -i parameter, grep will search in a case-insensitive manner and will return true as long the input matches, regardles if it’s lowercase or uppercase characters.

The command above searches for the word “being” in ExampleFile.txt, and will return result if found.

All the following will return true with existence of -i:

“Being”
“beING”

5. Count and output word repeatation with grep
grep -c smallness TextFile.txt

With the -c parameter, grep will first find if a specific word exist, and then count how many times it’s being repeated. The command above search for “smallness” and return the number of times it existed in TextFile.txt.

Here’s a hypothetical sample output for the given command:

5

This would mean that the word “smallness” was found in 5 lines within the TextFile.txt file. If the word “smallness” is not found in the file at all, the command would output:

0

6. Inverse search with grep
grep -v lorem sometext.txt

The parameter -v excludes the entire line that matches the input pattern, and output the rest that doesn’t contain it. The command above searches for “lorem” in sometext.txt. Any lines without “lorem” will return true.

Example:

Imagine sometext.txt contains the following lines:

lorem ipsum dolor sit amet
consectetur adipiscing elit
lorem sed do eiusmod tempor

When you run the command grep -v ‘lorem’ sometext.txt, the output would be:

consectetur adipiscing elit

This line is the only one that does not contain the word “lorem.”

7. Display matching line and list line number
grep -n ipsum randomtext.txt

The parameter -n returns content with line-count. When a search word is included, it returns the entire line (where word exists) with its line-count. The command above search for “ipsum” in randomtext.txt, and its output shows which line “ipsum” is at.

Example:

Assuming that randomtext.txt has the following content:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Another line without the search term.
Yet another line.
ipsum ipsum ipsum
Here’s an ipsum too.

The command grep -n ipsum randomtext.txt would produce:

1:Lorem ipsum dolor sit amet, consectetur adipiscing elit.
4:ipsum ipsum ipsum
5:Here’s an ipsum too.

Here, the numbers before the colons represent the line numbers in the file where the string “ipsum” was found.

8. List filenames that contain matched string
grep -l dolor *txt

With the -l parameter, only .txt extension files that contain the word “dolor” will return true. Filenames will be printed instead of the entire lioe.

Example:

Assuming you have three files in the directory, namely file1.txt, file2.txt, and file3.txt, and “dolor” is found in file1.txt and file3.txt, the output would look like this:

file1.txt
file3.txt

9. Search lines starting with a pattern
grep ^Example TextFile.txt

The character ^ in front of a search-pattern suggests grep should only look words that starts with the search-pattern and nothing else. The command above will search in TextFile.txt, and return all lines that begins with “Example”.

Example:

Assuming TextFile.txt contains the following text:

Example line 1
This is another line
Example line 2
Yet another line without the keyword
Example line 3

The output of the command would be:

Example line 1
Example line 2
Example line 3

10. Multiple pattern search with grep
grep -e lorem -e amet ExampleFile.txt

The -e parameter can be used multiple times in the same command; each paired with a search-pattern, allows you to be more specific in searching for something in a file. The command above searches for the words “lorem”, and “amet” in ExampleFile.txt, and return if true/found.

Example:

Assume ExampleFile.txt contains the following lines:

lorem ipsum dolor sit amet
consectetur adipiscing elit
amet, consectetur adipiscing
sed do eiusmod tempor
lorem incididunt ut

Running the command grep -e lorem -e amet ExampleFile.txt would output:

lorem ipsum dolor sit amet
amet, consectetur adipiscing
lorem incididunt ut

More Linux commands:

Directory Operations
rmdir · cd · pwd · exa · ls

File Operations
cat · cp · dd · less · touch · ln · rename · more · head

File System Operations
chown · mkfs · locate

Networking
ping · curl · wget · iptables · mtr

Search and Text Processing
find · grep · sed · whatis · ripgrep · fd · tldr

System Information and Management
env · history · top · who · htop · glances · lsof

User and Session Management
screen · su · sudo · open

The post How to Use the Grep Command in Linux appeared first on Hongkiat.

Where to Find Working Canva Coupons & Deals

Original Source: https://designrfix.com/graphic-design/where-to-find-working-canva-coupons-deals

Did you know you can save a significant amount on your Canva purchases and subscriptions? With Canva coupons and special offers, you can unlock powerful design tools without breaking the bank. In this guide, we’ll walk you through the process of maximizing your savings and getting the best deals on Canva using Canva coupons. Key […]

WordPress Playground: From 5-Minute Install To Instant Spin-Up

Original Source: https://smashingmagazine.com/2023/11/wordpress-playground-5-minute-install-instant-spin-up/

Many things have changed in WordPress over the years, but installation has largely remained the same: download WordPress, drop it on a server, create a database, sprinkle in some configuration, and presto, we have a WordPress site. This process was once lovingly referred to as the “famous five-minute install,” although that moniker seems to have faded with time, particularly as many hosting providers offer a more streamlined experience.

But what if WordPress didn’t require any setup at all? As in, you tap a link, and WordPress spins up a site for you right there, on demand? That’s probably difficult to imagine, considering WordPress runs on top of PHP, MySQL databases, and Apache. It’s not the most portable system.

That’s the aim of WordPress Playground, which got its first public boost when Matt Mullenweg introduced it during State of Word 2022.

Notice how the URL is a subdomain of a TasteWP-related top-level domain: hangingpurpose.s1-tastewp.com. It generates an instance on the multi-site network and establishes a URL for it based on a randomized naming system.

There’s a giant countdown timer on the screen that indicates when the site is scheduled to expire. That makes sense, right? Allowing anyone and everyone to create a site on the spot without so much as a login could become taxing on the server, so allowing sites to self-destruct on a schedule is likely as much to do with self-preservation as it does economics.

Speaking of economics, the countdown timer is immediately followed by a call to action to upgrade, which buys you permanence, extra server space, and customer support.

Without upgrading, though, you are only allowed two free instant sites. But if you create an account and log into TasteWP, then you can create up to six test sites on a free pricing tier.

That’s a look at the “quick” onboarding, but TasteWP does indeed have a more robust way to spin up a WordPress testing site with a set of advanced configurations, including which WordPress version to use with which version of PHP, settings you might normally define in wp-config.php, and options for adding specific themes and plugins.

So, how does that compare to WordPress Playground? Perhaps the greatest difference is that a TasteWP site is connected to the internet. It’s not a WordPress simulation, but an actual instance with a URL you can link up and share with others… as long as the site hasn’t expired. That could very well be enough of a differentiation to warrant more players in this space, even with WordPress Playground hanging around.

I wanted to give you a sense of what’s already offered before actually unboxing WordPress Playground. Now that we know what else is out there let’s turn our attention back to Playground and explore it.

Starting Up WordPress Playground

One of the first interesting things about WordPress Playground is that it is available in not just one but several places. I wouldn’t liken it completely to a service like TasteWP, where you create an account to create and manage WordPress instances. It’s more like a developer tool, one that you can reach for when testing your work in a WordPress environment.

You can simply hit the playground.wordpress.net URL in your browser to launch a new site on the spot. Or, you can launch an instance from the command line. Perhaps you prefer to use the official Chrome extension instead. Whatever the case, let’s look at those options.

1. Using The WordPress Playground URL

This is the most straightforward way to get a WordPress Playground instance up and running. That’s because all you do is visit the playground.wordpress.net address in the browser, and a WordPress site is created immediately.

This is exactly how the WordPress Playground demo works, prompting you to click a button to open a new WordPress site. In fact, try clicking the following button to create one now.

Create A WordPress Site

If you want to use a specific version of WordPress and PHP in your Playground, all it takes is adding a couple of parameters to the URL. For example, we can instruct Playground to run WordPress 6.2 on PHP 8.2 with the following URL:

https://playground.wordpress.net/?php=8.2&wp=6.2

You can even try out the developmental versions of WordPress using Playground by using the following parameter:

https://playground.wordpress.net/?wp=beta

2. Using The GitHub Repository

True to the WordPress ethos, WordPress Playground is very much an open-source project. The repo is available over at GitHub, and we can pull it into a local environment and use WordPress Playground right from a terminal.

First, let’s clone the repository from the command line:

git clone https://github.com/WordPress/wordpress-playground.git

There is a slightly faster alternative that fetches just the latest revision:

git clone -b trunk –single-branch –depth 1 git@github.com:WordPress/wordpress-playground.git

Now that we have the WordPress Playground package in our local environment, we can formally install it:

cd wordpress-playground
npm install
npm run dev

Once the local server is running, we should get a URL from the terminal that we can use to access the new Playground instance, likely pointed to http://localhost:5400/website-server/.

We are also able to set which versions of WordPress and PHP to use in the virtual environment by adding a couple of instructions to the command. For example, this command triggers a new WordPress 5.9 instance running on PHP 7.4:

wp-now start –wp=5.9 –php=7.4

3. Using wp-now In The Command Line

An even quicker way to get Playground running from the command line is to globally install the wp-now CLI tool:

npm install -g @wp-now/wp-now

This way, we can create a new Playground instance anytime you want with a single command:

wp-now start

Be sure that you’re using Node 18 or higher. Otherwise, you’re likely to bump into some errors. Once the command executes, however, the browser will automatically open a new tab pointing to the new instance. You’re already signed into WordPress and everything!

We can configure the environment just as we could with the npm package:

wp-now start –wp=5.9 –php=7.4

A neat thing about this method is that there are several different “modes” you can run this in, and which one you use depends on the directory you’re in when running the command. For example, if you run the command from a directory that already contains WordPress, then Playground will automatically recognize that and run the directory as a full WordPress installation. Or, it’s possible to execute the command from a directory that contains nothing but an index.php file, and Playground will start the server and run requests through that file.

There are other options, including modes for theme, plugin, wp-content, and wordpress-develop, that are worth checking out in the documentation.

4. Using The Visual Studio Code Extension

WordPress Playground is also available as a Visual Studio Code extension. It provides a nice one-click process to launch a local WordPress site.

Installing the extension adds a WordPress icon to the sidebar menu that, when clicked, opens a panel for launching a new WordPress Playground site.

Open a project folder, click the “Start WordPress Server,” and the Playground extension boots up a new site on the spot. The extension also provides server details, including the local URL, the mode it’s in, and settings to change which versions of WordPress and PHP are in use.

One thing I noticed while poking at the instance is that it automatically installs and activates the
SQLite Database Integration plugin. Obviously, that’s a required component for things to work, but I thought it was worth pointing out that the installation does indeed include at least one pre-installed plugin right out of the gate.

5. Using A Chrome Extension To Preview Themes & Plugins

Have you ever found yourself perusing the WordPress Theme Directory and wanting to take a particular theme out for a test drive? There’s already a “Preview” button baked right into the directory to do exactly that.

That’s nice, as it opens up the theme in a frame that looks a lot like the classic WordPress Customizer.

But how cool would it be to really open up the theme and see what it is like to do actual tasks with it in the WordPress admin, such as creating a post, editing a page, or exploring its block patterns?

That is what the “Open in WordPress Playground” extension for Chrome can do. It literally adds a button to “Preview” a theme in a fresh WordPress Playground instance that, when clicked, allows you to interact with the theme in a real WordPress environment.

I tried out the extension, and it worked as described, and not only that, but it works with the WordPress Plugin Directory as well. In other words, it’s now possible to try a new plugin on the spot without having to install, activate, and test it yourself in some sandbox or, worse, your live or staging WordPress environments.

This is a potential game-changer as far as lowering the barrier to entry for using WordPress and for theme and plugin developers offering a convenient way to provide users with a demo experience. I can easily imagine a future where paid commercial plugins adopt a similar user experience to help reduce refunds from customers merely wanting to try a plugin before formally committing to it.

The extension is available free of charge in the Chrome Web Store, but you can check out the source code in its GitHub repository as well. While we’re on it, it’s worth noting that this is a third-party extension rather than an official WordPress or Automattic release.

The Default Playground Site

No matter which Playground method you use, the instances that spin up are nearly identical. For example, all of the methods we covered have the WordPress Twenty Twenty-Three theme installed and activated by default. That makes a lot of sense: a standard WordPress installation does the same.

Similarly, all of the instances we covered make use of the SQLite Database Integration plugin developed by the WordPress Performance Team. This also makes sense: we need the plugin to establish a database. It also sounds like from the plugin description that the intent is to eventually integrate the plugin into WordPress Core, so perhaps we’ll eventually see zero plugins in a default Playground instance at some point.

There are a few differences between instances. They’re not massive, but worth calling out so you know what you are activating or have available when using a particular method to create a WordPress instance. The following table breaks down the current components included in each method at the time of this writing:

Method
WordPress Version
PHP Version
Themes
Plugins

WordPress Playground website
6.3.2
8.0
Twenty Twenty-Three (active)
SQLite Database Integration (active)

GitHub repo
6.3.2
8.0
Twenty Twenty-Three (active)
SQLite Database Integration (active)

wp-now package
6.3.2
8.0.10-dev
Twenty Twenty-Three (active)Twenty Twenty-TwoTwenty Twenty-One
AkismetHello DollySQLite Database Integration (active)

VS Code extension
6.3.2
7.4
Twenty Twenty-Three (active)Twenty Twenty-TwoTwenty Twenty-One
AkismetHello DollySQLite Database Integration (active)

Chrome extension
6.3.2
8.0
Twenty Twenty-Three (active)
SQLite Database Integration (active)

And, of course, any other differences would come from how you configure an instance. For example, if you run the wp-now package on the command line when you’re in a directory with WordPress and several themes and plugins installed, then those themes and plugins will be available to activate and use. Similarly, using the Chrome Extension on any WordPress Theme Directory page or Plugin Directory page will install that particular theme or plugin.

Installing Themes, Plugins, and Block Patterns

In a standard WordPress installation, you might log into the WordPress admin, navigate to Appearance → Themes, and install a new theme straight from the WordPress Theme Directory. That’s because your site has a web connection and is able to pull things in from WordPress.org. Since a WordPress Playground instance from the WordPress Playground website (which is essentially the same as the Chrome extension) is not technically connected to the internet, there is no way to install plugins and themes to it.

If you want the same sort of point-and-click experience in your Playground site that you would get in a standard WordPress installation, then go with the GitHub repo, the wp-now package, or the VS Code extension. Each of these is indeed connected to the internet and is able to install themes and plugins directly from the WordPress admin.

You may notice a note about using the Query API to install a theme or plugin to a WordPress Playground instance that is disconnected from the web:

“Playground does not yet support connecting to the themes directory yet. You can still upload a theme or install it using the Query API (e.g. ?theme=pendant).”

That’s right! We’re still able to load in whatever theme we want by passing the theme’s slug into the Playground URL used to generate the site. For example,

https://playground.wordpress.net/?theme=ollie

The same goes for plugins:

https://playground.wordpress.net/?plugin=jetpack

And if we want to bundle multiple plugins, we can pass in each plugin as a separate parameter chain with an ampersand (&) in the URL:

https://playground.wordpress.net/plugin=jetpack&plugin=woocommerce

It does not appear that we can do the same thing with themes. If you’re testing several themes in a single instance, then it’s probably best to use the wp-now package or the VS Code extension when pointing at a directory that already includes those themes.

What about block patterns, you ask? We only get two pre-defined patterns in a default WordPress Playground instance created on Playground’s site: Posts and Call to Action.

That’s because block patterns, too, are served to the WordPress admin from an internet connection. We get a much wider selection of options when creating an instance using any of the methods that establish a local host connection.

There appears to be no way, unfortunately, to import patterns with the Query API like we can for themes and plugins. The best way to bring in a new pattern, it seems, is to either bundle them in the theme you are using (or pointing to) or manually navigate to the Block Pattern Directory and use the “Copy” option to paste a pattern into the page or post you are testing in Playground.

Importing & Exporting Playgrounds

The transience of a WordPress Playground instance is its appeal. The site practically evaporates into thin air with the trigger of a page refresh. But what if you actually want to preserve an instance? Perhaps you need to come back to your work later. Or maybe you’re working on a visual tweak and want to demo it for your team. Playground instances can indeed be exported and even imported into other instances.

Open up a new WordPress site over at the playground.wordpress.net and locate the Upload and Download icons at the top-right corner of the frame.

No worries, this is not a step-by-step tutorial on how to click buttons. The only thing you really need to know is that these buttons are only available in instances created at the WordPress Playground site or when using the Chrome Extension to preview themes and plugins at WordPress.org.

What’s more interesting is what we get when exporting an instance. We get a ZIP file — wordpress-playground.zip to be exact — as you might expect. Extract that, and what we have is the entire website, including the full WordPress installation. It resembles any other standard WordPress project with a wp-content directory that contains the source files for the installed themes and plugins, as well as media library uploads.

The only difference I could spot between this WordPress Playground package and a standard project is that Playground provides the SQLite database in the export, also conveniently located in the wp-content directory.

This is a complete WordPress project. Now that we have it and have confirmed it has everything we would expect a WordPress site to have, we can use Playground’s importing feature to replicate the exported site in a brand-new WordPress Playground instance. Click the Upload icon in the frame of the new instance, then follow the prompts to upload the ZIP file we downloaded from the original instance.

You can probably guess what comes next. If we can export a complete WordPress site with Playground, we can not only import that site into a new Playground instance but import it to a hosting provider as well.

In other words, it’s possible to use Playground as a testing ground for development and then ship it to a production or staging environment when ready. Similarly, the exported files can be committed to a GitHub repo where your production files are, and that triggers a fresh build in production. However you choose to roll!

Sharing Playgrounds

There are clear benefits to being able to import and export Playground sites. WordPress has never been the more portable system. You know that if you’ve migrated WordPress sites and data. But when WordPress is able to move around as freely as it does with Playground, it opens up new possibilities for how we share work.

Sharing With The Query API

We’ve been using the Query API in many examples. It’s extremely convenient in that you append parameters on the WordPress Playground site, hit the URL, and a site spins up with everything specified.

The WordPress Playground site is hosted, so sharing a specific configuration of a Playground site only requires you to share a URL with the site’s configurations appended as parameters. For example. this link shares the Blue Note theme configured with the Gutenberg plugin:

https://playground.wordpress.net/?plugin=gutenberg&theme=blue-note

We can do a little more than that, like link directly to the post editor:

https://playground.wordpress.net/?plugin=gutenberg&theme=blue-note&url=/wp-admin/post-new.php

Even better, let’s link someone to the theme’s templates in the Site Editor:

https://playground.wordpress.net/?plugin=gutenberg&theme=blue-note&url=/wp-admin/site-editor.php?path=%2Fwp_template

Again, there are plenty more parameters than what we have explored in this article that are worth checking out in the WordPress Playground documentation.

Sharing With An Embedded iFrame

We already know this is possible because the best example of it is the WordPress Playground developer page. There’s a Playground instance running and embedded directly on the page. Even when you spin up a new Playground instance, you’re effectively running an iframe within an iframe.

Let’s say we want to embed a WordPress site configured with the Pendant theme and the Gutenberg plugin:

<iframe width=”800″ height=”650″ src=”https://playground.wordpress.net/?plugin=gutenberg&theme=pendant&mode=seamless” allowfullscreen></iframe>

So, really, what we’re doing is using the source URL in a different context. We can share the URL with someone, and they get to access the configured site in a browser. In this case, however, we are dropping the URL into an iframe element in HTML, and the Playground instance renders on the page.

Not to get too meta, but it’s pretty neat that we can log into a WordPress production site, create a new page, and embed a Playground instance on the page with the Custom HTML Block:

What I like about sharing Playground sites this way is that the instance is effectively preserved and always accessible. Sure, the data will not persist on a page refresh, but create the URL once, and you always have a copy of it previewed on another page that you host.

Speaking of which, WordPress Playground can be self-hosted. You have to imagine that the current Playground API hosted at playground.wordpress.net will get overburdened with time, assuming that Playground catches on with the community. If their server is overworked, I expect that the hosted API will either go away (breaking existing instances) or at least be locked for creating new instances.

That’s why self-hosting WordPress Playground might be a good idea in the long run. I can see WordPress developers and agencies reaching for this to provide customers and clients with demo work. There’s so much potential and nuance to self-hosting Playground that it might even be worth its own article.

The documentation provides a list of parameters that can used in the Playground URL.

Sharing With JSON Blueprints

This “modern” era of WordPress is all about block-based layouts that lean more heavily into JaveScript, where PHP has typically been the top boss. And with this transition, we gained the ability to create entire WordPress themes without ever opening a template file, thanks to the introduction of theme.json.

Playground can also be configured with structured data. In fact, you can see the Playground website’s JSON configurations via this link. It’s pretty incredible that we can both configure a Playground site without writing code and share the file with others to sync environments.

Here is an example pulled directly from the Playground docs:

{
“$schema”: “https://playground.wordpress.net/blueprint-schema.json”,
“landingPage”: “/wp-admin/”,
“preferredVersions”: {
“php”: “8.0”,
“wp”: “latest”
},
“steps”: [{
“step”: “login”,
“username”: “admin”,
“password”: “password”
}]
}

We totally can send this file to someone to clone a site we’re working on. Or, we can use the file in a self-hosted context, and others can pull it into their own blueprint.

Interestingly, we can even ditch the blueprint file altogether and write the structured data as URL fragments instead:

https://playground.wordpress.net/#{“preferredVersions”: {“php”:”7.4″, “wp”:”5.9″}}

That might get untenable really fast, but it is nice that the WordPress Playground team is thinking about all of the possible ways we might want to port WordPress.

Advanced Playground Configurations

Up to now, we’ve looked at a variety of ways to configure WordPress Playground using APIs that are provided by or based on playground.wordpress.net. It’s fast, convenient, and pretty darn flexible for something so new and experimental.

But let’s say you need full control to configure a Playground instance. I mean everything, from which themes and plugins are preinstalled to prepublished pages and posts, defining php.ini memory limits, you name it. The JavaScript API is what you’ll need because it is capable of executing PHP code, make requests, manage files and directories, and configuring parts of WordPress that none of the other approaches offer.

The JavaScript API is integrated into an iframe and uses the @wp-playground/client npm package. The Playground docs provide the following example in its “Quick Start” guide.

<iframe id=”wp” style=”width: 100%; height: 300px; border: 1px solid #000;”></iframe>

<script type=”module”>
// Use unpkg for convenience
import { startPlaygroundWeb } from ‘https://unpkg.com/@wp-playground/client/index.js’;

const client = await startPlaygroundWeb({
iframe: document.getElementById(‘wp’),
remoteUrl: https://playground.wordpress.net/remote.html,
});
// Let’s wait until Playground is fully loaded
await client.isReady();
</script>

This is an overly simplistic example that demonstrates how the JavaScript API is embedded in a page in an iframe. The Playground docs provide a better example of how PHP is used within JavaScript to do things, like execute a file pointed at a specific path:

php.writeFile(
“/www/index.php”,
`<?php echo “Hello world!”;”`
);
const result = await php.run({
scriptPath: “/www/index.php”
});
// result.text === “Hello world!”

Adam Zieliński and Thomas Nattestad offer a nicely commented example with multiple tasks in the article they published over at web.dev:

import {
connectPlayground,
login,
connectPlayground,
} from ‘@wp-playground/client’;

const client = await connectPlayground(
document.getElementById(‘wp’), // An iframe
{ loadRemote: ‘https://playground.wordpress.net/remote.html’ },
);
await client.isReady();

// Login the user as admin and go to the post editor:
await login(client, ‘admin’, ‘password’);
await client.goTo(‘/wp-admin/post-new.php’);

// Run arbitrary PHP code:
await client.run({ code: ‘<?php echo “Hi!”; ?>’ });

// Install a plugin:
const plugin = await fetchZipFile();
await installPlugin(client, plugin);

Once again, the scope and breadth of using the JavaScript API for advanced configurations is yet another topic that might warrant its own article.

Wrapping Up

WordPress Playground is an excellent new platform that’s an ideal testing environment for WordPress themes, plugins… or even WordPress itself. Despite the fact that it is still in its early days, Playground is already capable of some pretty incredible stuff that makes WordPress more portable than ever.

We looked at lots of ways that Playground accomplishes this. Just want to check out a new theme? Use the playground.wordpress.net URL configured with parameters supported by the Query API, or grab the Chrome extension. Need to do a quick test of your theme in a different PHP environment? Use the wp-now package to spin up a test site locally. Want to let others demo a plugin you made? Embed Playground in an iframe on your site.

WordPress Playground is an evolving space, so keep your eye on it. You can participate in the discussion and request a feature through a pull request or report an issue that you encounter in your testing. In the meantime, you may want to be aware of what the WordPress Playground team has identified as known limitations of the service:

No access to plugins and theme directories in the browser.
The theme and plugin directories are not accessible due to the fact that Playgrounds are not connected to the internet, but are virtual environments.
Instances are destroyed on a browser refresh.
Because WordPress Playground uses a browser-based temporary database, all changes and uploads are lost after a browser refresh. If you want to preserve your changes, though, use the export feature to download a zipped archive of the instance. Meanwhile, this is something the team is working on.
iFrame issues with anchor links.
Clicking a link in a Playground instance that is embedded on a page in an iframe may trigger the main page to refresh, causing the instance to reset.
iFrame rendering issues.
There are reports where setting the iframe’s src attribute to a blobbed URL instead of an HTTP URL breaks links to assets, including CSS and images.

How will you use WordPress Playground? WordPress Playground creator Adam Zieliński recently shipped a service that uses Playground to preview pull requests in GitHub. We all know that WordPress has never put a strong emphasis on developer experience (DX) the same way other technical stacks do, like static site generators and headless configurations. But this is exactly the sort of way that I imagine Playground improving DX to make developing for WordPress easier and, yes, fun.

References & Resources

“InstaWP Review: Create WordPress Sandbox Sites the Easy Way,” Colin Newcomer (WP Mayor)
“TasteWP Review: Free WordPress Hosting to Test Plugins & Themes,” Xaif (WebVerge)
WordPress Playground Resources (WordPress Developer Resources)
WordPress Playground for VS Code (Visual Studio Marketplace)
“Exploring the Future of Web Development with WebAssembly and PHP,” Angel M De Miguel (WordPress Developer Blog)
“Build In-browser WordPress Experiences with WordPress Playground and WebAssembly,” Adam Zieliński and Thomas Nattestad (web.dev)
“WordPress Playground Lets You Run WordPress Entirely in Your Browser,” Romain Dillet (TechCrunch)
“An Introduction to WordPress Playground,” Tom Rankin (WPShout)
“Preview WordPress Core Pull Requests with Playground,” Sarah Gooding (WP Tavern)

Designing Web Design Documentation

Original Source: https://smashingmagazine.com/2023/11/designing-web-design-documentation/

As an occasionally competent software developer, I love good documentation. It explains not only how things work but why they work the way they do. At its best, documentation is much more than a guide. It is a statement of principles and best practices, giving people the information they need to not just understand but believe.

As soft skills go in tech land, maintaining documentation is right up there. Smashing has previously explored design documents in a proposal context, but what happens once you’ve arrived at the answer and need to implement? How do you present the information in ways that are useful to those who need to crack on and build stuff?

Documentation often has a technical bent to it, but this article is about how it can be applied to digital design — web design in particular. The idea is to get the best of both worlds to make design documentation that is both beautiful and useful — a guide and manifesto all at once.

An Ode To Documentation

Before getting into the minutia of living, breathing digital design documentation, it’s worth taking a moment to revisit what documentation is, what it’s for, and why it’s so valuable.

The documentation describes how a product, system, or service works, what it’s for, why it’s been built the way it has, and how you can work on it without losing your already threadbare connection with your own sanity.

We won’t get into the nitty-gritty of code documentation. There are plenty of Smashing articles to scratch that itch:

“Designing A Better Design Handoff File In Figma,” Ben Shih
“Code Documentation, Streamlined,” Atila Fassina
“How To Automate Documentation Workflow For Developers,” Portia Burton
“Better Documentation And Team Communication With Product Design Docs,” Ismael González

However, in brief, here are a few of the key benefits of documentation.

Less Tech Debt

Our decisions tend to be much more solid when we have to write them down and justify them as something more formal than self-effacing code comments. Having clear, easy-to-read code is always something worth striving for, but supporting documentation can give essential context and guidance.

Continuity

We work in an industry with an exceptionally high turnover rate. The wealth of knowledge that lives inside someone’s head disappears with them when they leave. If you don’t want to reinvent the wheel every time someone moves on, you better learn to love documentation. That is where continuity lies.

Prevents Needless Repetition

Sometimes things are the way they are for very, very good reasons, and someone, somewhere, had to go through a lot of pain to understand what they were.

That’s not to say the rationale behind a given decision is above scrutiny. Documentation puts it front and center. If it’s convincing, great, people can press on with confidence. If it no longer holds up, then options can be reassessed, and courses can be altered quickly.

Documentation establishes a set of norms, prevents needless repetition, allows for faster problem-solving, and, ideally, inspires.

Two Worlds

In 1959, English author C. P. Snow delivered a seminal lecture called “The Two Cultures” (PDF). It is well worth reading in full, but the gist was that the sciences and the humanities weren’t working together and that they really ought to do so for humanity to flourish. To cordon ourselves off with specialisations deprives each group of swathes of knowledge.

“Polarisation is sheer loss to us all. To us as people and to our society. It is at the same time practical and intellectual and creative loss […] It is false to imagine that those three considerations are clearly separable.”

— Charles Percy Snow

Although Snow himself conceded that “attempts to divide anything into two ought to be regarded with much suspicion,” the framing was and remains useful. Web development is its own meeting of worlds — between designers and engineers, art and data — and the places where they meet are where the good stuff really happens.

“The clashing point of two subjects, two disciplines, two cultures — two galaxies, so far as that goes — ought to produce creative chances.”

— Charles Percy Snow

Snow knew it, Leonardo da Vinci knew it, Steve Jobs knew it. Magic happens when we head straight for that collision.

A Common Language

Web development is a world of many different yet connected specialisations (and sub-specialisations for that matter). One of the key relationships is the one between engineers and designers. When the two are in harmony, the results can be breathtaking. When they’re not, everything and everyone involved suffers.

Digital design needs its own language: a hybrid of art, technology, interactivity, and responsiveness. Its documentation needs to reflect that, to be alive, something you can play with. It should start telling a story before anyone reads a word. Doing so makes everyone involved better: writers, developers, designers, and communicators.

Design documentation creates a bridge between worlds, a common language composed of elements of both. Design and engineering are increasingly intertwined; it’s only right that documentation reflects that.

Design Documentation

So here we are. The nitty-gritty of design documentation. We’re going to cover some key considerations as well as useful resources and tools at your disposal.

The difference between design documentation, technical documentation, and a design system isn’t always clear, and that’s fine. If things start to get a little blurry, just remember the goal is this: establish a visual identity, explain the principles behind it, and provide the resources needed to implement it as seamlessly as possible.

What should be covered isn’t the point of this piece so much as how it should be covered, but what’s listed below ought to get you started:

Design principles
Typography
Component libraries
Illustration
Photography
Iconography
Color
Branding
Accessibility
Sounds

The job of design documentation is to weave all these things (and more) together. Here’s how.

Share The Why

When thinking of design systems and documentation, it’s understandable to jump to the whats — the fonts, the colors, the components — but it’s vital also to share the ethos that helped you to arrive at those assets at all.

Where did this all come from? What’s the vision? The guiding principles? The BBC does a good job of answering these questions for Global Experience Language (GEL), its shared design framework.

On top of being public-facing (more on that later), the guidelines and design patterns are accompanied by articles and playbooks explaining the guiding principles of the whole system.

Include proposal documents, if they exist, as well as work practices. Be clear about who the designs are built for. Just about every system has a target audience in mind, and that should be front and center.

Cutting the guiding principles is like leaving the Constitution out of a US history syllabus.

Make Its Creation Is A Collaborative Process

Design systems are big tents. They incorporate design, engineering, copywriting, accessibility, and even legal considerations — at their best anyway.

All of those worlds ought to have input in the documentation. The bigger the company/project, the more likely multiple teams should have input.

If the documentation isn’t created in a collaborative way, then what reason do you have to expect its implementation to be any different?

Use Dynamic Platforms

The days are long gone when brand guidelines printed in a book are sufficient. Much of modern life has moved online, so too should guidance for its documentation. Happily (or dauntingly), there are plenty of platforms out there, many with excellent integrations with each other.

Potential resources/platforms include:

Storybook
Figma
Component libraries
GitHub wikis
Zeplin
Sketch
Invision

There can be a chain of platforms to facilitate the connections between worlds. Figma can lead into Storybook, and Storybook can be integrated directly into a project. Embrace design documentation as an ecosystem of skills.

Accommodate agile, constant development by integrating your design documentation with the code base itself.

Write With Use Cases In Mind

Although the abstract, philosophical aspects of design documentation are important, the system it described is ultimately there to be used.

Consider your users’ goals. In the case of design, it’s to build things consistent with best practices. Show readers how to use the design guidelines. Make the output clear and practical. For example,

How to make a React component with design system fonts;
How to choose appropriate colors from our palette.

As we’ve covered, the design breaks down into clear, recognizable sections (typography, color, and so on). These sections can themselves be broken down into steps, the latter ones being clearly actionable:

What the feature is;
Knowledge needed for documentation to be most useful;
Use cases for the feature;
Implementation;
Suggested tooling.

The Mailchimp Pattern Library is a good example of this in practice. Use cases are woven right into the documentation, complete with contextual notes and example code snippets, making the implementation of best practices clear and easy.

Humanising Your Documentation, a talk by Carolyn Stranksy, provides a smashing overview of making documentation work for its users.

Documentation should help people to achieve their goals rather than describe how things work.

As StackOverflow founder Jeff Atwood once put it, “A well-designed system makes it easy to do the right things and annoying (but not impossible) to do the wrong things.”

“Use Case Driven Documentation” by Tyner Blain is a great breakdown of this ethos, as is “On Design Systems: Sell The Output, Not The Workflow” by our own Vitaly Friedman.

Language

The way things are said is important. Documentation ought to be clear, accessible, and accepting.

As with just about any documentation, give words like ‘just’, ‘merely’, and ‘simply’ a wide berth. What’s simple to one person is not always to another. Documentation should inform, not belittle. “Reducing bias in your writing” by Write the Docs gives excellent guidance here.

Another thing to keep in mind is the language you use. Instead of using “he” or “she,” use “one,” “they,” “the developer,” or some such. It may not seem like a big deal to one (see what I did there), but language like that helps reinforce that your resources are for everyone.

More generally, keep the copy clear and to the point. That’s easier said than done, but there are plenty of tools out there that can help tidy up your writing:

Alex, a tool for catching insensitive, inconsiderate writing;
Write Good, an English prose linter.

In a previous Smashing article, “Readability Algorithms Should Be Tools, Not Targets,” I’ve shared a wariness about tools like Grammarly or Hemingway Editor dictating how one writes, but they’re useful tools.

Also, I can never resist a good excuse to share George Orwell’s rules for language:

Never use a metaphor, simile, or other figure of speech that you are used to seeing in print.
Never use a long word where a short one will do.
If it is possible to cut a word out, always cut it out.
Never use the passive where you can use the active.
Never use a foreign phrase, a scientific word, or a jargon word if you can think of an everyday English equivalent.
Break any of these rules sooner than say anything outright barbarous.

Books like The Elements of Style (PDF) by William Strunk Jr are good to be familiar with, too. Keep things informative but snappy.

Make It Beautiful

Design documentation has a lot more credibility if it’s walking the walk. If it looks like a hot mess, what are the chances of it being taken seriously?

Ideally, you should be showcasing a design ethos, not just explaining it. NASA showed way back in 1976 (PDF) that manuals can themselves be beautiful. The Graphics Standards Manual by Richard Danne and Bruce Blackburn feels like a creative work in its own right.

Show the same care and attention to detail in your design documentation that you expect users to show in applying it. Documentation should be the first and best example of it in action.

Make your documentation easy to navigate and search. The most wonderful resources in the world aren’t doing anyone much good if they can’t be found. It’s also a splendid opportunity to show information architecture best practice in action too.

Publish it

Once you’ve gone through the trouble of creating a design system and explaining how it works, why keep that to yourself? Publishing documentation and making it freely available for anyone to browse is a fantastic final polish.

Here at the Guardian, for example, our Source design system Storybook can be viewed by anyone, and its code is publicly available on GitHub. As well as being a proving ground for the system itself, it creates a space for knowledge sharing.

Here are just a few fantastic examples of publicly available design documentation:

Material Design by Google
GOV.UK Design System
Thumbprint
Global Experience Language (GEL) by the BBC
Origami by The Financial Times
The Sunlight Foundation
Human Interface Guidelines by Apple
Backpack by Skyscanner
Mailchimp Pattern Library

There are plenty more where these came from in the Design Systems Gallery — a fantastic place to browse for inspiration and guidance.

What’s more, if there are stories from the formation of your system, writing articles or blog posts are also totally legit ways of documenting it. What did the New York Times do when they developed a design system? They wrote an article about it, of course.

Publishing design documentation — in all its forms — is a commitment, but it’s also a statement of purpose. Why not share something beautiful, right?

And Maintain It

This is all well and good, I hear you say, arms crossed and brow furrowed, but who’s going to keep all this stuff up to date? That’s all the time that could be spent making things.

I hear you. There are reasons that Tweets (Xs?) like this make the rounds from time to time:

Yes, it requires hard work and vigilance. The time, effort, and heartache you’ll save by having design documentation will be well worth the investment of those same things.

The better integrated the documentation is with the projects it guides, the more maintenance will take care of itself. As components and best practices change, as common issues arise and are ironed out, the system and its documentation can evolve in kind.

To spare you the suspense, your design documentation isn’t going to be perfect off the bat. There will be mistakes and situations that aren’t accounted for, and that’s fine. Own them. Acknowledge blindspots. Include ways for users to give feedback.

As with most things digital, you’re never really “done.”

Start Small

Such thorough, polished design documentation can almost be deterrents, something only those with deep pockets can make. It may also seem like an unjustifiable investment of time. Neither has to be true.

Documentation of all forms saves time in the long run, and it makes your decisions better. Whether it’s a bash script or a newsletter signup component, you scrutinize it that little bit more when you commit to it as a standard rather than a one-off choice. Let a readme-driven ethos into your heart.

Start small. Choose fonts and colors and show them sitting together nicely on your repo wiki. That’s it! You’re underway. You will grow to care for your design documentation as you care for the project itself because they are part of each other.

Go forth and document!

Innovative Branding for CCO's Special Coffees

Original Source: https://abduzeedo.com/innovative-branding-ccos-special-coffees

Innovative Branding for CCO’s Special Coffees
Innovative Branding for CCO's Special Coffees

abduzeedo1113—23

Explore the unique branding and visual identity designed by Junior Ferpazzi for CCO’s Special Coffees, reflecting expertise and creativity.

In the realm of branding and visual identity, the recent work of Junior Ferpazzi for CCO – Ca. Comerk Special Coffees stands as a remarkable example. The campaign, initiated by Carolina Comerk, a founder and coffee specialist, revolves around a monthly introduction of novel coffee flavors, each accompanied by distinct packaging designs that celebrate the essence of the product.

The inaugural design for CCO’s campaign is a tribute to the fundamental stages of coffee production. Utilizing wireframes as the primary graphic element, this design choice symbolically represents the ‘root’ of every seed project, a nod to the origin story of each coffee variety. This approach not only enhances the visual appeal but also deepens the connection between the product and its origins.

Further elevating the design is the moodboard’s sunny atmosphere, intentionally crafted to embody a sense of positivity and freshness. This element aims to evoke the pleasant experience of enjoying a meticulously crafted coffee. The bright and airy mood of the packaging mirrors the uplifting effect of a good coffee, creating a harmonious visual and sensory experience.

Ferpazzi’s design philosophy for CCO’s campaign effectively marries functionality with aesthetics. The packaging serves not just as a container but as a storytelling medium, offering consumers a glimpse into the journey of each coffee variety from its roots to the cup. This holistic approach to branding and visual identity is reflective of an understanding that good design goes beyond mere appearance; it creates an experience, a narrative that resonates with the audience.

In summary, the branding and visual identity crafted for CCO by Junior Ferpazzi are exemplary in their ability to capture the essence of the product while also engaging the consumer on a deeper, more experiential level. It’s a testament to the power of thoughtful design in elevating a brand and creating a lasting impression in the competitive world of specialty coffees.

Branding and visual identity artifacts 

Branding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brandBranding Packaging Design brand identity Logo Design visual identity Logotype brand

For more information make sure to check Junior Ferpazzi Behance profile.