Demystifying Screen Readers: Accessible Forms & Best Practices

This is the 3rd post in a small series we are doing on form accessibility. If you missed the 2nd post, check out Managing User Focus with :focus-visible. In this post we are going to look at using a screen reader when navigating a form, and also some best practices.

What is a Screen Reader?

You may have heard the term “screen reader” as you have been moving around the web. You might even be using a screen reader at this moment to run manual accessibility tests on the experiences you are building. A screen reader is a type of AT or assistive technology.

A screen reader converts digital text into synthesized speech or Braille output, commonly seen with a Braille reader.

In this example, I will be using Mac VO. Mac VO (VoiceOver) is built-in to all Mac devices; iOS, iPadOS, and macOS systems. Depending on the type of device you are running macOS on, opening VO could differ. The Macbook Pro that is running VO I am writing this on doesn’t have the touch bar, so I will be using the shortcut keys according to the hardware.

Spinning Up VO on macOS

If you are using an updated Macbook Pro, the keyboard on your machine will look something like the image below.

You will start by holding down the cmd key and then pressing the Touch ID three times quickly.

MacBook Pro Keyboard with steps on how to start mac voiceover.

If you are on a MBP (MacBook Pro) with a TouchBar, you will use the shortcut cmd+fn+f5 to turn on VO. If you are using a traditional keyboard with your desktop or laptop, the keys should be the same or you will have to toggle VO on in the Accessibility settings.. Once VO is turned on, you will be greeted with this dialog along with a vocalized introduction to VO.

Welcome to VoiceOver dialog when opening up voiceover.

If you click the “Use VoiceOver” button you are well on your way to using VO to test your websites and apps. One thing to keep in mind is that VO is optimized for use with Safari. That being said, make sure when you are running your screen reader test that Safari is the browser you are using. That goes for the iPhone and iPad as well.

There are two main ways you can use VO from the start. The way I personally use it is by navigating to a website and using a combination of the tab, control, option, shift and arrow keys, I can navigate through the experience efficiently with these keys alone.

Another common way to navigate the experience is by using the VoiceOver Rotor. The Rotor is a feature designed to navigate directly to where you want to be in the experience. By using the Rotor, you eliminate having to traverse through the whole site, think of it as a “Choose Your Own Adventure”.

Modifier Keys

Modifier keys are the way you use the different features in VO. The default modifier key or VO is control + option but you can change it to caps lock or choose both options to use interchangeably.

VoiceOver utility to change the modifier keys.

Using the Rotor

In order to use the Rotor you have to use a combination of your modifier key(s) and the letter “U”. For me, my modifier key is caps lock. I press caps lock + U and the Rotor spins up for me. Once the Rotor comes up I can navigate to any part of the experience that I want using the left and right arrows.

VoiceOver rotor feature showing the Headings navigation.
Using the Rotor in VoiceOver

Another neat way to navigate the experience is by heading level. If you use the combination of your modifier keys + cmd + H you can traverse the document structure based on heading levels. You can also move back up the document by pressing shift in the sequence like so, modifier keys + shift + cmd + H.

Using the Heading Level Shortcut with VoiceOver

History & Best Practices

Forms are one of the most powerful native elements we have in HTML. Whether you are searching for something on a page, submitting a form to purchase something or submit a survey. Forms are a cornerstone of the web, and were a catalyst that introduced interactivity to our experiences.

The history of the web form dates back to September 1995 when it was introduced in the HTML 2.0 spec. Some say the good ole days of the web, at least I say that. Stephanie Stimac wrote an awesome article on Smashing Magazine titled, “Standardizing Select And Beyond: The Past, Present And Future Of Native HTML Form Controls”.

The following are 5 best practices to follow when building an accessible form for the web.

  1. Make sure that you are using a form element. Forms are accessible by default and should be used over div’s at all times.
<form>
  <!-- Form controls are nested here. -->
</form>
  1. Be sure to use the for and id attributes on label’s and input’s so that they are linked. This way, if you click/tap the label, focus will shift to the input and you can start typing.
<label for="name">Name:</label>
<input type="text" id="name" name="name" required aria-required/>
  1. If a field is required in order for the form to be complete, use the required attribute and the aria-required  attribute. These will restrict the form from being submitted. The aria-required attribute explicitly tells the assistive tech that the field is required.
<input type="text" id="name" name="name" required aria-required/>
  1. Use the, :focus, :focus-within and :focus-visible CSS pseudo classes to manage and customize how a user receives focus.
form:focus-within {
 background-color: #cfffcf;
}

input:focus-within {
 border: 10px solid #000000;
}

input:focus-visible,
select:focus-visible,
textarea:focus-visible {
 outline: 2px solid crimson;
 border-radius: 3px;
}
  1. A button is used to invoke an action, like submitting a form. Use it! Don’t create buttons using div’s. A div by definition is a divider. It has no inherent accessibility properties.

Demo

Navigating a Web Form with VoiceOver

If you want to check out the code, navigate to the VoiceOver Demo GitHub repo. If you want to try out the demo above with your screen reader of choice, check out Navigating a Web Form with VoiceOver.

Screen Reader Software

Below is a list of various types of screen reader software you can use on your given operating system. If a Mac is not your machine of choice, there are options out there for Windows and Linux, as well as for Android devices.

NVDA

NVDA is a screen reader from NV Access. It is currently only supported on PC’s running Microsoft Windows 7 SP1 and later. For more access, check out the NVDA version 2024.1 download page on the NV Access website!

JAWS

“We need a better screen reader”

– Anonymous

If you understood the reference above, you are in good company. According to the JAWS website, this is what it is in a nutshell:

“JAWS, Job Access With Speech, is the world’s most popular screen reader, developed for computer users whose vision loss prevents them from seeing screen content or navigating with a mouse. JAWS provides speech and Braille output for the most popular computer applications on your PC. You will be able to navigate the Internet, write a document, read an email and create presentations from your office, remote desktop, or from home.”

JAWS website

Check out JAWS for yourself and if that solution fits your needs, definitely give it a shot!

Narrator

Narrator is a built-in screen reader solution that ships with WIndows 11. If you choose to use this as your screen reader of choice, the link below is for support documentation on its usage.

Complete guide to Narrator

Orca

Orca is a screen reader that can be used on different Linux distributions running GNOME.

“Orca is a free, open source, flexible, and extensible screen reader that provides access to the graphical desktop via speech and refreshable braille.

Orca works with applications and toolkits that support the Assistive Technology Service Provider Interface (AT-SPI), which is the primary assistive technology infrastructure for Linux and Solaris. Applications and toolkits supporting the AT-SPI include the GNOME Gtk+ toolkit, the Java platform’s Swing toolkit, LibreOffice, Gecko, and WebKitGtk. AT-SPI support for the KDE Qt toolkit is being pursued.”

Orca Website

TalkBack

Google TalkBack is the screen reader that is used on Android devices. For more information on turning it on and using it, check out this article on the Android Accessibility Support Site.

Browser Support

If you are looking for actual browser support for HTML elements and ARIA (Accessible Rich Internet Application) attributes, I suggest caniuse.com for HTML and Accessibility Support for ARIA to get the latest 4-1-1 on browser support. Remember, if the browser doesn’t support the tech, chances are the screen reader won’t either.

DigitalA11Y can help summarize browser and screen reader info with their article,  Screen Readers and Browsers! Which is the Best Combination for Accessibility Testing?

https://support.apple.com/guide/voiceover/with-the-voiceover-rotor-mchlp2719/mac

https://www.w3.org/TR/wai-aria/

https://www.w3.org/WAI/standards-guidelines/aria/

https://support.google.com/accessibility/android/answer/6283677?hl=en

https://support.google.com/accessibility/android/answer/6283677?hl=en


Demystifying Screen Readers: Accessible Forms & Best Practices originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Those Were The Days?! A Humorous Reflection on the Evolution of Software Engineering

Biology insists — and common sense says — that I've started to become that old fogey I used to laugh at in my younger days.

...THIRD YORKSHIREMAN:
Well, of course, we had it tough. We used to 'ave to get up out of shoebox at twelve o'clock at night and lick road clean wit' tongue. We had two bits of cold gravel, worked twenty-four hours a day at mill for sixpence every four years, and when we got home our Dad would slice us in two wit' bread knife.

Skyrocket Performance Up To 126% With Our New High Frequency Hosting Plans

The newest and fastest architecture available in our hosting range, discover the incredible performance benefits of our revolutionary High Frequency hosting plans.

As if our award-winning and highly rated managed hosting wasn’t already amazing enough…

Now we’ve taken it to the next level by introducing 7 brand new High Frequency (HF) plans that give a whole new meaning to performance.

What makes these plans different? How powerful are they? And why should you consider High Frequency Hosting?

All is answered in this article, as we give you the lowdown on our newest high-octane creations and put them to the ultimate test.

Here’s what we’re covering:

What is High Frequency Hosting?

Over the years, we’ve introduced many new plans to our hosting lineup, but these High Frequency plans are an entirely different beast.

Because although they’re built on the same powerful infrastructure as our other plans, they have a completely different hardware setup.

This is what sets these plans apart and allows them to handle more traffic load, perform tasks at a higher speed, and execute operations more effectively (more on that soon).

Here’s a quick look at the next generation technology behind our HF plans:

3GHz+ Intel Xeon CPUs

High Frequency plans are powered by blazing-fast 3GHz+ Intel Xeon processors that are made specifically for sites requiring uncompromising performance.

This cutting edge processor greatly outperforms standard CPUs, which for context, typically fall within the 2GHz range.

NVMe SSD storage

Having next level CPU speed doesn’t mean much if your local disk storage can’t keep up.

This is the advantage of NVMe SSD storage, which unlike regular SSD storage, has the capacity to match the enhanced CPU throughput.

Combine these two hardware elements, and you have a recipe for high-performance architecture that seamlessly handles increasing requests and maintains reliability as your hosted site’s workload continues to grow.

You and your clients also get to enjoy the following benefits:

  • Better and faster user experiences – Superior CPU and disk performance ensures smooth and blazing-fast user experiences with absolute minimal site downtime and disruption.
  • Scale hosting seamlessly – HF servers are designed to accommodate and effortlessly scale with increasing website demand. Plan upgrades are also easy and affordable.
  • Stand out from the crowd – Give your hosting services a competitive edge and target clients seeking high-performance solutions.

But enough about the tech and what performance benefits High Frequency ‘should’ give you.

Next, we will truly put them to the test, so you can see how powerful they really are for yourself.

Putting High Frequency To The Test

Before launching these new plans to the world we had to be sure they lived up to their name.

So, our expert hosting team arranged a set of tests to see how these plans performed in real-world scenarios compared to our regular plans.

We decided to test two crucial categories when it comes to hosting performance: CPU performance and disk performance.

Here’s how it went down:

CPU Performance: High Frequency vs Regular Hosting

Methodology:

For the first two tests in the CPU performance category, we simulated multiple people visiting our website’s cached and uncached home page using the ‘Maintain client load’ method.

For the third test we simulated users adding a product to their cart on our website multiple times using this same load method.

All three tests involved scaling up page visitors to a targeted max client count, specific to each plan, within five minutes. During this time, each client repeatedly made requests, simulating high-traffic website use.

The best plans handle more requests and have a lower (faster) average response time.

Here’s how it all went down:

1. Load test for increasing traffic on *cached* home page

CPU Performance: High Frequency vs Regular hosting plans
CPU Performance test (home page – cached): High Frequency vs Regular hosting plans.

Here is the test data:

A table showing the results of our cached home page test

The Results: Up to 108% performance increase!

  • 40-108% increase in requests handled (Regular vs. HF plans)
  • Improved average response time across the board, including over half the average response time (Bronze Regular vs. Bronze HF)

2. Load test for increasing traffic on *uncached* home page

CPU Performance: High Frequency vs Regular hosting plans (home page - uncached)
CPU Performance test (home page – uncached): High Frequency vs Regular hosting plans.

Here is the test data:

A table showing the results of our uncached home page performance test

Results: Up to 126% performance increase!

  • 61-126% increase in requests handled (Regular vs. HF plans)
  • Improved average response time across the board, including almost half the average response time (Bronze Regular vs. Bronze HF)

3. Stress testing PHP with repeated add-to-cart simulations

CPU Performance: High Frequency vs Regular - add to cart
Results from stress testing PHP with repeated add-to-cart simulations.

Here is the test data:

a table showing the results of our add to card performance test

Results: Up to 108% performance increase!

  • 51-108% increase in requests handled (Regular vs. HF plans)
  • Improved average response time across the board, including a 33.19% speed increase (Bronze Regular vs. Bronze HF)

Disk Performance: High Frequency vs Regular Hosting

Methodology:

For this performance test category we used the FIO (Flexible I/O) tool to perform random read and write operations on the disk.

The higher read/write speed = better upload/download. Faster read/write also means increased database performance.

Testing disk performance through random read/write operations

A table showing the results of our read/write testing

Results: Up to 2.79x performance increase!

  • 1.7-2.78x increase in Read speed (Regular vs. HF plans)
  • 1.71-2.79x increase in Write speed (Regular vs. HF Plans)

Deploy High Frequency Hosting in Minutes

Satisfied that High Frequency can deliver the power, speed, and reliability you’re looking for?

Then check out our new range of HF plans, which, despite the groundbreaking features and performance, offer incredible value for buyers and resellers.

We have a total of 7 plans which scale based on your needs, and you can easily move between plans as well.

Another easy way to try High Frequency, or any of our hosting plans, is through our Agency membership, which automatically gives you $144 worth of free yearly hosting credit, and access to exclusive VIP pricing.

Every WPMU DEV product or plan also comes with an automatic 30-day 100% money-back guarantee, so no matter which option you decide to take, it will be completely risk free.

We hope you are as impressed and excited by our new range of plans as we are. It’s a massive step forward for our hosting, with even more exciting improvements coming in 2024 to look forward to!

Exploring Enhanced Patterns In WordPress 6.3

Reusable blocks, introduced in WordPress 5.0, allow users to create and save custom blocks that can be used across different pages or posts. This increases efficiency and consistency by allowing users to create personalized blocks of content that can be easily reused. Subsequently, in WordPress 5.5, block patterns were introduced, allowing users to design layout patterns comprised of multiple blocks.

While reusable blocks have allowed users to create their own content blocks that can be reused across the site while maintaining their consistency, block patterns have offered a convenient to quickly apply common design patterns to pages and posts.

Reusable blocks and block patterns may seem similar at first glance, but there is one crucial distinction between them. Reusable blocks can be easily created directly in the Post Editor, allowing users to generate and reuse their own custom content blocks. In contrast, block patterns are established patterns installed or registered in block themes that cannot be created directly in the WordPress admin.

Starting with WordPress 6.3, reusable blocks and block patterns have been combined to form a feature called “Patterns” that provides users with the flexibility to choose whether they want to synchronize all instances of a pattern — similar to reusable blocks — or apply patterns without syncing content. The new functionality, available now in the Post Editor, empowers users to craft patterns that can function as both reusable blocks and patterns, catering to their specific requirements.

Selecting the “Create Reusable block” option triggers a popup that prompts you to name the reusable block.

Once named, the reusable block is saved and can be accessed in the Block Inserter. It’s a little tough to spot because it is the only section of the Block Inserter that is labeled with an icon instead of a text label.

Perhaps a more convenient way to access the block is to type a forward slash (/) in the Post Editor, followed by the reusable block’s name.

Making changes to a reusable block isn’t difficult, but finding where to make changes is. You must click on the Post Editor settings while editing a page or post, then select the “Manage Reusable blocks” option.

This will take you to another new editing screen where you can directly edit reusable blocks as you like. I sometimes bookmark this screen as a shortcut. Once saved, changes to reusable blocks are applied throughout the site.

Creating Block Patterns in WordPress 6.2

Unlike reusable blocks, site creators are unable to create block patterns from the Post Editor. Instead, they are treated more like plugins, where block patterns are installed and activated before they are available in the Post Editor. Once they are available, they can be accessed with the Block Inserter or a forward slash command the same way reusable blocks are added to pages and posts.

The neat thing about this plugin-like treatment is that there is a Patterns Directory full of patterns created and submitted by the WordPress community, just like we have the Plugins Directory. But that also means that patterns are developed and need to be included in a theme.

Registering Custom Block Patterns With PHP

The register-block-pattern API function was first introduced in WordPress 6.0, allowing theme authors to register custom block patterns:

register_block_pattern(
  'my-first-pattern/hello-world',
  array(
    'title' => __( 'Hello World', 'my-first-pattern' ),
    'description' => _x( 'A simple paragraph block.', 'my-first-pattern' ),
    'content' => "<!-- wp:paragraph -->Hello world<!-- /wp:paragraph -->",
  )
);

The content argument may contain any raw HTML markup, which means it’s possible to configure a group of blocks that you want to make into a pattern directly in the Post Editor, then copy and paste that group into the content field. Pasting blocks as plain text reveals the underlying raw HTML.

We want to make that into a custom function and add an action that fires the function when the theme is initialized.

function mytheme_register_block_patterns() {
  register_block_pattern( ... );
}
add_action( 'init', 'mytheme_register_block_patterns' );

Just as a block pattern can be registered, it can be unregistered programmatically using the unregister-block-pattern function. All it takes is the title argument.

function mytheme_unregister_my_patterns() {
  unregister_block_pattern(
    'my-first-pattern/hello-world',
    array(
      'title' => __( 'Hello World', 'my-first-pattern' ),
    )
  );
}
add_action( 'init', 'my_first_patterns' );

Registering Custom Block Patterns Via The /patterns Directory

Not to be confused with the Patterns Directory I shared earlier, where you can find and install patterns made by community contributors, WordPress 6.0 has also supported registering block patterns in a /patterns file directory that lives in the theme folder.

The process to register a block pattern from here is similar to the PHP approach. In fact, each pattern is contained in its own PHP file that contains the same raw HTML that can be copied and pasted into the register-block-pattern function’s content argument… only the function is not required.

Here is an example showing a pattern called “Footer with text” that is saved as footer.php in the /patterns folder:

<?php
/**
 * Title: Footer with text.
 * Slug: theme-slug/footer
 * Categories: site-footer
 * Block Types: core/template-parts/footer
 * Viewport Width: 1280
 */
?>
<!-- block markup here -->

This particular example demonstrates another feature of block patterns: contextual block types. Declaring the “Block Types” property as core/template-parts/footer attaches the pattern to a template part (located in a /template-parts folder that sits alongside the /patterns folder) called footer.php. The benefit of attaching a block pattern to a block type is that it registers the pattern as an available transform of that block type, which is a fancy way of saying that the pattern is applied on top of another block. That way, there’s no need to modify the structure of the existing template part to apply the pattern, which is sort of similar to how we typically think of child theming but with patterns instead.

Want to add your custom block pattern to a theme template? That’s possible with the wp:pattern context:

<!-- wp:pattern { "slug":"prefix/pattern-slug" } /-->

Any entire template can be created with nothing but block patterns if you’d like. The following is an example taken from the Automattic’s Archeo theme. The theme’s home.html template file clearly demonstrates how a template can be constructed from previously registered patterns, pattern files in the /patterns theme folder, and the wp:pattern context:

<!-- wp:template-part { "slug":"header","tagName":"header" } /-->

<!-- wp:group { "layout":{ "inherit":"true" } } -->
  <div class="wp-block-group">
    <!-- wp:pattern { "slug":"archeo/image-with-headline-description" } /-->
    <!-- wp:pattern { "slug":"archeo/simple-list-of-posts-with-background" } /-->
    <!-- wp:pattern { "slug":"archeo/layered-images-with-headline" } /-->
  </div>
<!-- /wp:group -->

<!-- wp:template-part { "area":"footer","slug":"footer","tagName":"footer" } /-->

The theme’s footer.php pattern is added to the /parts/footer.html template file before it is used in the home.html template, like this:

<!-- wp:pattern { "slug":"archeo/footer" } /-->

Additional information about registering block patterns is available in the WordPress Theme Handbook. You can also discover many use cases for block patterns in the explainer of Automattic’s themes repository on GitHub.

Reusable Blocks And Patterns In WordPress 6.3

WordPress 6.3 is notable for many reasons, one being that the reusable blocks and block patterns features are combined into a single feature simply called Patterns. The idea is that reusable blocks and block patterns are similar enough in nature that we can decide whether or not a pattern is reusable at the editing level. Instead of determining up-front whether or not you need a reusable block or a block pattern, create a Pattern and then determine whether to sync the Pattern’s content across the site.

The result is a single powerful feature that gives us the best of both worlds. WordPress 6.3 not only combined the reusable blocks and block patterns but made UI changes to the WordPress admin as well. Let’s zero in on those changes and how Patterns work in the new system.

Creating Synced Patterns

Not only are Patterns offered in the Site Editor, but they can be inserted into a page or post with the Post Editor. In fact, it works just like reusable blocks did before combining with block patterns. The only difference is that the “Create Reusable block” option in the contextual menu is now called “Create pattern/reusable block” instead.

The process for creating a pattern is mostly the same, too. Select any block or group of blocks that have been inserted into the page, open the contextual menu, and select “Create pattern/reusable block.” I hope that label becomes simply “Create Pattern” in a future release. This longer label is probably there to help with the transition.

This is where things start to diverge from WordPress 6.2. Clicking “Create pattern/reusable block” still triggers a popup asking you to name the Pattern, but what’s new is a toggle to enable synced content support.

Once the pattern is saved, it is immediately available in the Block Inserter or with a slash (/) command.

Creating Standard, Unsynced Patterns

This feature, which has been a long time coming, allows us to create our own custom patterns, akin to the flexibility of reusable blocks in the Site Editor.

Let’s demonstrate how standard, unsynced Patterns work but do it a little differently than the synced example. This time, we’ll start by copying this two-column text pattern from the Patterns Directory and pasting it into a page. I’m going to change the colors around a bit and make a few other minor tweaks to the copied pattern just for fun. I’m also naming it “Two-columns Text Unsynced Pattern” in the popup. The only difference between this Pattern and the synced Pattern we created earlier is that I’m disabling the Synced setting.

That’s really it! I just created a new custom pattern based on another pattern pulled from the Patterns Library and can use it anywhere on my site without syncing the content in it. No PHP or special file directories are needed!

Patterns Are Accessible From The Site Editor

You are probably very familiar with the Site Editor. As long as your WordPress site is configured as a block theme, navigating to Appearance → Site Editor opens up the site editing interface.

WordPress 6.3 introduces a newly redesigned sidebar panel that includes options to edit navigation, styles, pages, templates, and… patterns. This is a big deal! Patterns are now treated like modular components that can be used to craft templates at the Site Editor level. In other words, block patterns are no longer relegated solely to the Post Editor.

Clicking into Patterns in the Site Editor displays all of your saved Patterns. The patterns are conveniently split up between synced and unsynced patterns, and clicking on any of them opens up an editing interface where changes can be made and saved.

Another interesting Site Editor update in WordPress 6.3 is that patterns and template parts are now together. Previous versions of WordPress put Template Parts in the Site Editor’s top-level navigation. WordPress 6.3 replaces “Template Parts” in the Site Editor navigation with “Patterns” and displays “Template Parts” alongside patterns in the resulting screen.

I’ll reserve judgment for later, but it’s possible that this arrangement opens up some confusion over the differences between patterns and template parts. That’s what happened when patterns and reusable blocks were separate but equal features with overlapping functionality that needed to be combined. I wonder if template parts will get wrapped up in the same bundle down the road now that there’s less distinction between them and patterns in the Site Editor.

Another thing to notice about the patterns interface in the Site Editor is how patterns are organized in folders in the side panel. The folders are automatically created when a pattern is registered as a contextual block pattern, as we demonstrated earlier when revisiting how block patterns worked in previous versions of WordPress. A lock icon is displayed next to a folder when the patterns are bundled with the active theme, indicating that they are core to the theme’s appearance rather than a pattern that was created independently of the theme. Locked patterns are ones you want to build off of, the same way we registered a Pattern earlier as a contextual block type.

Finally, a new pattern (or template part, for that matter) can be created directly from the Site Editor without having to leave and create it in the Post Editor. This is an extremely nice touch that prevents us from having to jump between two UIs as we’ve had to do in previous versions of WordPress.

Remember that screen I showed earlier that displays when clicking “Manage Reusable blocks” in the Post Editor? Well, now it is called “Patterns,” and it, too, is a direct link in the Site Editor.

This screen displays all custom saved patterns but does not show patterns that are bundled with the theme. This may change in future releases. Matias Ventura, Gutenberg project architect, says in this GitHub discussion thread that patterns will eventually be served through the Pattern Directory instead of being bundled resources. Maybe then we’ll see all available patterns instead of only custom patterns.

Using Patterns As Starter Templates

A common use case of the earlier Patterns API that was introduced in WordPress 6.0 has been to display a few sets of starter content patterns as options that users may choose when creating a new page template in the Site Editor. The idea is to provide you with a template with a predefined layout rather than starting with a blank template and to show a preview of the template’s configuration.

The updated Patterns API in WordPress 6.2 allows us to do this more easily by creating custom patterns for specific template types. For example, we could create a set of patterns associated with the template for single posts. Or another set of patterns for the 404 template. The benefit of this, of course, is that we are able to use patterns as starter templates!

Let’s walk through the process of using patterns as starter page templates, beginning first by registering our custom patterns with our friend, register-block-pattern(). We do have the option to register patterns in the theme’s /patterns folder, as we did earlier, but I found it did not work. Let’s go with the function instead for the tour.

Registering Custom Patterns With register-block-pattern()

We’ll start with a function that registers a Pattern that we are going to associate with the theme’s 404 page template. Notice the templateTypes argument that allows us to link the pattern to the template:

function mytheme_register_block_patterns() {
  register_block_pattern(
    'wp-my-theme/404-template-pattern',
     array(
       'title' => __( '404 Only template pattern', 'wp-my-theme' ),
       'templateTypes' => array( '404' ),
       'content' => '<!-- wp:paragraph { "align":"center","fontSize":"x-large" } --><p class="has-text-align-center has-x-large-font-size">404 pattern</p><!-- /wp:paragraph -->',
    )
  );
}
add_action( 'init', 'mytheme_register_block_patterns' );

I pulled the bulk of this function from a GitHub Gist. It’s a small example, but you can see how cluttered things could get if we are registering many patterns for a single template. Plus, the more patterns registered for a template, the bigger that page gets, making the template as a whole difficult to read, preview, and maintain.

The default Twenty Twenty-Two WordPress theme comes with 66 patterns. That could get messy in the theme folder, but the theme smartly has added an /inc folder containing individual PHP files for each registered pattern. The same sort of strategy the themes have used to break up functions registered in the functions.php to prevent it from getting too convoluted.

For the sake of example, let’s register a few starter patterns the same way. First, we’ll add a new /inc folder to the top level of the theme folder, followed by another folder contained in it called /patterns. And in that folder, let’s add a new file called block-patterns.php. In that file, let’s add a modified version of the Twenty Twenty-Two theme’s block registration function mapped to four patterns we want to register for the 404 page template:

  • 404-blue.php
  • page-not-found.php

Here’s how it all looks:

Let’s turn our attention to the patterns themselves. Specifically, let’s open up the 404-blue.php file and add the code from this Pattern in the Patterns Directory and this one as well:

<?php
/**
  * Blue pattern
  * source: https://wordpress.org/patterns/pattern/seo-friendly-404-page/
**/
?>

return array(
  'title' => __( '404 Blue', 'mytheme' ),
  'categories' => array( 'post' ),
  'templateTypes' => array( '404' ),
  'inserter' => 'yes',
  'content' => '<!-- wp:columns { "align":"full" } -->
<div class="wp-block-columns alignfull"><!-- wp:column { "width":"100%" } -->
<div class="wp-block-column" style="flex-basis:100%"><!-- wp:columns { "style":{" color":{ "gradient":"linear-gradient(308deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100% )" },"spacing":{ "padding":{ "right":"20px","bottom":"100px","left":"20px","top":"100px"} } } } -->
<div class="wp-block-columns has-background" style="background:linear-gradient(308deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);padding-top:100px;padding-right:20px;padding-bottom:100px;padding-left:20px"><!-- wp:column { "width":"1920px" } -->
<div class="wp-block-column" style="flex-basis:1920px"><!-- wp:heading { "textAlign":"center","level":1,"style":{ "typography":{ "textTransform":"uppercase","fontSize":"120px" } },"textColor":"white" } -->
<h1 class="has-text-align-center has-white-color has-text-color" style="font-size:120px;text-transform:uppercase"><strong>404</strong></h1>
<!-- /wp:heading -->

<!-- wp:heading { "textAlign":"center","style":{ "typography":{ "textTransform":"uppercase" } },"textColor":"white" } -->
<h2 class="has-text-align-center has-white-color has-text-color" style="text-transform:uppercase">😭 <strong>Page Not Found</strong> 💔</h2>
<!-- /wp:heading -->

<!-- wp:paragraph { "align":"center","textColor":"white" } -->
<p class="has-text-align-center has-white-color has-text-color">The page you are looking for might have been removed had it's name changed or is temporary unavailable. </p>
<!-- /wp:paragraph -->

<!-- wp:search { "label":"","showLabel":false,"placeholder":"Try Searching for something else...","width":100,"widthUnit":"%","buttonText":"Search","buttonPosition":"no-button","align":"center","style":{ "border":{ "radius":"50px","width":"0px","style":"none" } },"backgroundColor":"black","textColor":"white" } /-->

<!-- wp:paragraph { "align":"center","textColor":"white" } -->
<p class="has-text-align-center has-white-color has-text-color">💡 Or you can return to our <a href="#">home page</a> or <a href="#">contact us</a> if you can't find what you are looking for</p>
<!-- /wp:paragraph -->

<!-- wp:buttons { "layout":{"type":"flex","justifyContent":"center" } } -->
<div class="wp-block-buttons"><!-- wp:button { "backgroundColor":"black","textColor":"white","style":{ "border":{ "radius":"50px" },"spacing":{ "padding":{ "top":"15px","right":"30px","bottom":"15px","left":"30px" } } } } -->
<div class="wp-block-button"><a class="wp-block-button__link has-white-color has-black-background-color has-text-color has-background" style="border-radius:50px;padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px">Go to Homepage</a></div>
<!-- /wp:button -->

<!-- wp:button { "backgroundColor":"black","textColor":"white","style":{ "border":{ "radius":"50px" },"spacing": { "padding":{ "top":"15px","bottom":"15px","left":"60px","right":"60px" } } } } -->
<div class="wp-block-button"><a class="wp-block-button__link has-white-color has-black-background-color has-text-color has-background" style="border-radius:50px;padding-top:15px;padding-right:60px;padding-bottom:15px;padding-left:60px">Contact Us</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:paragraph { "align":"center","textColor":"white","fontSize":"small" } -->
<p class="has-text-align-center has-white-color has-text-color has-small-font-size">Find the page at our <a href="#sitemap">sitemap</a></p>
<!-- /wp:paragraph --></div>
<!-- /wp:column --></div>
<!-- /wp:columns --></div>
<!-- /wp:column --></div>
<!-- /wp:columns -->'

Once again, I think it’s worth calling out the templatesTypes argument, as we’re using it to link this “404 Blue” pattern to the 404 page template. This way, the pattern is only registered to that template and that template alone.

Now that we’ve finished adding the right folders and files and have registered the “404 Blue” pattern to the 404 page template, we can create the 404 page template and see our patterns at work:

  • Open up the WordPress admin and navigate to the Site Editor (Appearance → Editor).
  • Open the Templates screen by clicking “Templates” in the Site Editor side panel.
  • Click “Add New Template”.
  • Select the “Page: 404” option.

Selecting the 404 page template triggers a popup modal that prompts you to choose a pattern for the page using — you guessed it — the patterns we just registered! The default starter pattern established by the theme is displayed as well.

Custom Template With Starter Patterns

What we just did was create a set of patterns linked to the theme’s 404 page template. But what if we want to link a pattern set to a custom page template? When the Site Editor was first introduced, it only supported a few core page templates, like page, post, and front page. Now, however, we not only have more options but the choice to create a custom page template as well.

So, let’s look at that process by adding new files to the /inc/patterns folder we created in the last example:

  • about-me.php,
  • my-portfolio.php.

We won’t grab code examples for these since we spelled out the full process in the last example. But I will point out that the main difference is that we change the templateTypes argument in each pattern file so that it links the patterns to the custom templates we plan on creating in the Site Editor:

<?php
/**
  * About Me
  * source: https://wordpress.org/patterns/pattern/seo-friendly-404-page/
**/
?>

return array(
  'title' => __( 'About Me', 'mytheme' ),
  'categories' => array( 'post' ),
  'templateTypes' => array( 'portfolio', 'author' ),
  // etc.
);

Now we can go back to the Site Editor, open the Templates screen, and select “Add new template” as we did before. But this time, instead of choosing one of the predefined template options, we will click the “Custom template” option at the bottom. From there, we get a new prompt to name the custom template. We’ll call this one “My Portfolio”:

Next, we could try to choose patterns for the template, but it leads to a blank page at the time of this writing. Instead, we can skip that step, open the template in the editor, and add the patterns to the template there as you would any other block or pattern. Click the + button in the top-left corner of the editor to open the block inserter side panel, then open the “Patterns” tab and select patterns to preview them in the custom template.

As a side note, do you see how the patterns are bundled in categories (e.g., Featured, Posts, Text, and so on)? That’s what the categories argument in the pattern file’s return array sets. If a pattern is not assigned a category, then it will automatically go into an “Unclassified” category.

The WordPress Developer Blog provides additional examples of custom starter templates.

Using Patterns In The Post Editor

We can insert custom patterns into pages and posts using the Post Editor in the same way we can insert them into templates using the Site Editor. In the Post Editor, any custom patterns that are registered but not linked to specific templates are listed in the “My patterns” category of the Block Inserter’s “Patterns” tab.

This discussion on GitHub suggests that displaying categories for custom patterns will be prioritized for a future release.

Using Patterns From The Patterns Directory

We’ve certainly danced around this topic throughout the rest of the examples we’ve covered. We’ve been copying and pasting items from the Patterns Directory to register our own custom patterns and link them to specific page templates. But let’s also see what it’s like to use a pattern directly from the Patterns Directory without modifying anything.

If you’ve installed a plugin from the Plugins Directory, then you are already familiar with installing patterns from the Patterns Directory. It’s the same concept: members from the community contribute open-source patterns, and anyone running a WordPress site can use them.

The library allows users to select patterns that are contributed by the “community” or “curated” by the WordPress.org team, all of which fall in a wide range of different categories, from Text and Gallery to Banners and Call to Action, among many others.

Adding a pattern to a site isn’t exactly the same as installing a plugin. A plugin can be installed directly from the Plugins Directory via the WordPress admin and activated from there. Patterns, however, should be added to a block theme’s theme.json, registered in the patterns object using the pattern’s slug as the value. Multiple patterns can be registered with comma-separation:

{
  "version": 2,
  "patterns": [ "short-text", "patterns-slug" ],
  // etc.
}

The following example uses a pattern called “Slanted Style Call To Action” from the Patterns Directory. It is used in the theme.json file of a theme I cloned from the default Twenty Twenty-Three theme:

{
  "version": 2,
  "patterns": [ "slanted-pattern", "slanted-style-call-to-action" ]
}

Now, we can view the newly added pattern in the Post Editor by opening the Block Inserter and selecting the Patterns tab, where the pattern is listed. Similarly, it’s possible to use the Block Inserter’s search function to pull up the pattern:

For those of you who would like to use patterns directly from the Pattern Directory without first registering them, the GutenbergHub team has created a page builder app that makes that possible. They have an introductory video that demonstrates it.

You can copy the code from the app and paste it into a site, which makes it much easier to build complex layout patterns in a low-code fashion. Jamie Marsland shows in this short video (at 1:27) how the app can be used to create an entire page layout, similar to a full-fledged page builder, by selecting desired page sections from the Patterns Directory.

Learn more about creating starter patterns in the “Utilizing patterns” section of the WordPress Developer Resources documentation.

Aspect Ratio For Large Images

You may have already noticed that the core/image block didn’t allow dimensions or aspect-ratio controls for images that were added to the block. With WP 6.3, you can control the aspect ratio of an image, which will be preserved when you change it with another one of different sizes.

This feature will be helpful when replacing images in block patterns. This short video shows you how image aspect ratio can be used in block patterns.

For an additional in-depth discussion and rationale, please visit GitHub PRs #51078, #51144, #50028, and #48079.

Wrapping Up

In this article, we discussed the new evolving block patterns feature in WordPress 6.3 and showed a few use cases for creating custom patterns within the site editor. This new feature provides users with unlimited ways to arrange blocks and save them as patterns for widespread use. The integration of reusable blocks and traditional patterns within the Site and Post Editors aims to streamline workflows, enhance content creation, and prepare for upcoming enhancements in WordPress 6.4.

In addition, the WordPress 6.4 roadmap includes more advanced features for patterns that we have to look forward to:

You can check out this WordPress TV video to learn more details about how the block patterns are evolving. Additionally, work-in-progress issues can be tracked on GitHub.

Note: Since this article was written, WordPress 6.4 Beta 1 has been released. The new release allows users to better organize synced and unsynced patterns with categories as part of the creation process. Please refer to the release note for more up-to-date information.

Further Reading

Introduction to ESP32 for Beginners Using the Xedge32 Lua IDE

What Is the ESP32?

The ESP32 is an incredible microcontroller developed by Espressif Systems. Based on its predecessor's legacy, the ESP8266, the ESP32 boasts dual-core processing capabilities, integrated Wi-Fi, and Bluetooth functionalities. Its rich features and cost-effectiveness make it a go-to choice for creating Internet of Things (IoT) projects, home automation devices, wearables, and more.

What Is Xedge32?

Xedge32, built upon the Barracuda App Server C Code Library, offers a comprehensive range of IoT protocols known as the "north bridge." Xedge32 extends the Barracuda App Server's Lua APIs and interfaces seamlessly with the ESP32's GPIOs, termed the "south bridge." 

visual basic has stopped working on windows 10 home version

hi..
I have a problem when compiling the program
created in VB6, an error message suddenly appears

visual basic has stopped working

the condition of the laptop that I use with 4GB memory specifications
does this correlate directly while executing the process
compile, while if I compile the program with
VB6 installed on windows 7 32bit no problem or
the visual basic has stopped working error doesn't happen

thanks for the enlightenment

Gatsby Headaches And How To Cure Them: i18n (Part 2)

In Part 1 of this series, we peeked at how to add i18n to a Gatsby blog using a motley set of Gatsby plugins. They are great if you know what they can do, how to use them, and how they work. Still, plugins don’t always work great together since they are often written by different developers, which can introduce compatibility issues and cause an even bigger headache. Besides, we usually use plugins for more than i18n since we also want to add features like responsive images, Markdown support, themes, CMSs, and so on, which can lead to a whole compatibility nightmare if they aren’t properly supported.

How can we solve this? Well, when working with an incompatible, or even an old, plugin, the best solution often involves finding another plugin, hopefully one that provides better support for what is needed. Otherwise, you could find yourself editing the plugin’s original code to make it work (an indicator that you are in a bad place because it can introduce breaking changes), and unless you want to collaborate on the plugin’s codebase with the developers who wrote it, it likely won’t be a permanent solution.

But there is another option!

Table of Contents

Note: Here is the Live Demo.

The Solution: Make Your Own Plugin!

Sure, that might sound intimidating, but adding i18n from scratch to your blog is not so bad once you get down to it. Plus, you gain complete control over compatibility and how it is implemented. That’s exactly what we are going to do in this article, specifically by adding i18n to the starter site — a cooking blog — that we created together in Part 1.

The Starter

You can go ahead and see how we made our cooking blog starter in Part 1 or get it from GitHub.

This starter includes a homepage, blog post pages created from Markdown files, and blog posts authored in English and Spanish.

What we will do is add the following things to the site:

  • Localized routes for the home and blog posts,
  • A locale selector,
  • Translations,
  • Date formatting.

Let’s go through each one together.

Create Localized Routes

First, we will need to create a localized route for each locale, i.e., route our English pages to paths with a /en/ prefix and the Spanish pages to a path with a /es/ prefix. So, for example, a path like my-site.com/recipes/mac-and-cheese/ will be replaced with localized routes, like my-site.com/en/recipes/mac-and-cheese/ for English and my-site.com/recipes/es/mac-and-cheese/ for Spanish.

In Part 1, we used the gatsby-theme-i18n plugin to automatically add localized routes for each page, and it worked perfectly. However, to make our own version, we first must know what happens underneath the hood of that plugin.

What gatsby-theme-i18n does is modify the createPages process to create a localized version of each page. However, what exactly is createPages?

How Plugins Create Pages

When running npm run build in a fresh Gatsby site, you will see in the terminal what Gatsby is doing, and it looks something like this:

success open and validate gatsby-configs - 0.062 s
success load plugins - 0.915 s
success onPreInit - 0.021 s
success delete html and css files from previous builds - 0.030 s
success initialize cache - 0.034 s
success copy gatsby files - 0.099 s
success onPreBootstrap - 0.034 s
success source and transform nodes - 0.121 s
success Add explicit types - 0.025 s
success Add inferred types - 0.144 s
success Processing types - 0.110 s
success building schema - 0.365 s
success createPages - 0.016 s
success createPagesStatefully - 0.079 s
success onPreExtractQueries - 0.025 s
success update schema - 0.041 s
success extract queries from components - 0.333 s
success write out requires - 0.020 s
success write out redirect data - 0.019 s
success Build manifest and related icons - 0.141 s
success onPostBootstrap - 0.164 s
⠀
info bootstrap finished - 6.932 s
⠀
success run static queries - 0.166 s — 3/3 20.90 queries/second
success Generating image thumbnails — 6/6 - 1.059 s
success Building production JavaScript and CSS bundles - 8.050 s
success Rewriting compilation hashes - 0.021 s
success run page queries - 0.034 s — 4/4 441.23 queries/second
success Building static HTML for pages - 0.852 s — 4/4 23.89 pages/second
info Done building in 16.143999152 sec

As you can see, Gatsby does a lot to ship your React components into static files. In short, it takes five steps:

  1. Source the node objects defined by your plugins on gatsby-config.js and the code in gatsby-node.js.
  2. Create a schema from the nodes object.
  3. Create the pages from your /src/page JavaScript files.
  4. Run the GraphQL queries and inject the data on your pages.
  5. Generate and bundle the static files into the public directory.

And, as you may notice, plugins like gatsby-theme-i18n intervene in step three, specifically when pages are created on createPages:

success createPages - 0.016 s

How exactly does gatsby-theme-i18n access createPages? Well, Gatsby exposes an onCreatePage event handler on the gatsby-node.js to read and modify pages when they are being created.

Learn more about creating and modifying pages and the Gatsby building process over at Gatsby’s official documentation.

Using onCreatePage

The createPages process can be modified in the gatsby-node.js file through the onCreatePage API. In short, onCreatePage is a function that runs each time a page is created by Gatsby. Here’s how it looks:

// ./gatsby-node.js
exports.onCreatePage = ({ page, actions }) => {
  const { createPage, deletePage } = actions;
  // etc.
};

It takes two parameters inside an object:

  • page holds the information of the page that’s going to be created, including its context, path, and the React component associated with it.
  • actions holds several methods for editing the site’s state. In the Gatsby docs, you can see all available methods. For this example we’re making, we will be using two methods: createPage and deletePage, both of which take a page object as the only parameter and, as you might have deduced, they create or delete the page.

So, if we wanted to add a new context to all pages, it would translate to deleting the pages being created and replacing them with new ones that have the desired context:

exports.onCreatePage = ({ page, actions }) => {
  const { createPage, deletePage } = actions;

  deletePage(page);

  createPage({
    ...page,
    context: {
      ...page.context,
      category: `vegan`,
    },
  });
};

Creating The Pages

Since we need to create English and Spanish versions of each page, it would translate to deleting every page and creating two new ones, one for each locale. And to differentiate them, we will assign them a localized route by adding the locale at the beginning of their path.

Let’s start by creating a new gatsby-node.js file in the project’s root directory and adding the following code:

// ./gatsby-node.js

const locales = ["en", "es"];

exports.onCreatePage = ({page, actions}) => {
  const {createPage, deletePage} = actions;

  deletePage(page);

  locales.forEach((locale) => {
    createPage({
      ...page,
      path: `${locale}${page.path}`,
    });
  });
};

Note: Restarting the development server is required to see the changes.

Now, if we go to http://localhost:8000/en/ or http://localhost:8000/es/, we will see all our content there. However, there is a big caveat. Specifically, if we head back to the non-localized routes — like http://localhost:8000/ or http://localhost:8000/recipes/mac-and-cheese/ — Gatsby will throw a runtime error instead of the usual 404 page provided by Gatsby. This is because we deleted our 404 page in the process of deleting all of the other pages!

Well, the 404 page wasn’t exactly deleted because we can still access it if we go to http://localhost:8000/en/404 or http://localhost:8000/es/404. However, we deleted the original 404 page and created two localized versions. Now Gatsby doesn’t know they are supposed to be 404 pages.

To solve it, we need to do something special to the 404 pages at onCreatePage.

Besides a path, every page object has another property called matchPath that Gatsby uses to match the page on the client side, and it is normally used as a fallback when the user reaches a non-existing page. For example, a page with a matchPath property of /recipes/* (notice the wildcard *) will be displayed on each route at my-site.com/recipes/ that doesn’t have a page. This is useful for making personalized 404 pages depending on where the user was when they reached a non-existing page. For instance, social media could display a usual 404 page on my-media.com/non-existing but display an empty profile page on my-media.com/user/non-existing. In this case, we want to display a localized 404 page depending on whether or not the user was on my-site.com/en/not-found or my-site.com/es/not-found.

The good news is that we can modify the matchPath property on the 404 pages:

// gatsby-node.js

const locales = [ "en", "es" ];

exports.onCreatePage = ({ page, actions }) => {
  const { createPage, deletePage } = actions;
  deletePage(page);
  locales.forEach((locale) => {
    const matchPath = page.path.match(/^\/404\/$/) ? (locale === "en" ? /&#42; : /${locale}/&#42;) : page.matchPath;
    createPage({
      ...page,
      path: ${locale}${page.path},
      matchPath,
    });
  });
};

This solves the problem, but what exactly did we do in matchpath? The value we are assigning to the matchPath is asking:

  • Is the page path /404/?
    • No: Leave it as-is.
    • Yes:
      • Is the locale in English?
        • Yes: Set it to match any route.
        • No: Set it to only match routes on that locale.

This results in the English 404 page having a matchPath of /*, which will be our default 404 page; meanwhile, the Spanish version will have matchPath equal /es/* and will only be rendered if the user is on a route that begins with /es/, e.g., my-site.com/es/not-found. Now, if we restart the server and head to a non-existing page, we will be greeted with our usual 404 page.

Besides fixing the runtime error, doing leave us with the possibility of localizing the 404 page, which we didn’t achieve in Part 1 with the gatsby-theme-i18n plugin. That’s already a nice improvement we get by not using a plugin!

Querying Localized Content

Now that we have localized routes, you may notice that both http://localhost:8000/en/ and http://localhost:8000/es/ are querying English and Spanish blog posts. This is because we aren’t filtering our Markdown content on the page’s locale. We solved this in Part 1, thanks to gatsby-theme-i18n injecting the page’s locale on the context of each page, making it available to use as a query variable on the GraphQL query.

In this case, we can also add the locale into the page’s context in the createPage method:

// gatsby-node.js

const locales = [ "en", "es" ];

exports.onCreatePage = ({page, actions}) => {
  const { createPage, deletePage } = actions;
  deletePage(page);
  locales.forEach((locale) => {
    const matchPath = page.path.match(/^\/404\/$/) ? (locale === "en" ? /&#42; : /${locale}/&#42;) : page.matchPath;
    createPage({
      ...page,
      path: ${locale}${page.path},
      context: {
        ...page.context,
        locale,
      },
      matchPath,
    });
  });
};

Note: Restarting the development server is required to see the changes.

From here, we can filter the content on both the homepage and blog posts, which we explained thoroughly in Part 1. This is the index page query:

query IndexQuery($locale: String) {
  allMarkdownRemark(filter: {frontmatter: {locale: {eq: $locale}}}) {
    nodes {
      frontmatter {
        slug
        title
        date
        cover_image {
          image {
            childImageSharp {
              gatsbyImageData
            }
          }
          alt
        }
      }
    }
  }
}

And this is the {markdownRemark.frontmatter__slug}.js page query:

query RecipeQuery($frontmatter__slug: String, $locale: String) {
  markdownRemark(frontmatter: {slug: {eq: $frontmatter__slug}, locale: {eq: $locale}}) {
    frontmatter {
      slug
      title
      date
      cover_image {
        image {
          childImageSharp {
            gatsbyImageData
          }
        }
        alt
      }
    }
    html
  }
}

Now, if we head to http://localhost:8000/en/ or http://localhost:8000/es/, we will only see our English or Spanish posts, depending on which locale we are on.

Creating Localized Links

However, if we try to click on any recipe, it will take us to a 404 page since the links are still pointing to the non-localized recipes. In Part 1, gatsby-theme-i18n gave us a LocalizedLink component that worked exactly like Gatsby’s Link but pointed to the current locale, so we will have to create a LocalizedLink component from scratch. Luckily is pretty easy, but we will have to make some preparation first.

Setting Up A Locale Context

For the LocalizedLink to work, we will need to know the page’s locale at all times, so we will create a new context that holds the current locale, then pass it down to each component. We can implement it on wrapPageElement in the gatsby-browser.js and gatsby-ssr.js Gatsby files. The wrapPageElement is the component that wraps our entire page element. However, remember that Gatsby recommends setting context providers inside wrapRootElement, but in this case, only wrapPageEement can access the page’s context where the current locale can be found.

Let’s create a new directory at ./src/context/ and add a LocaleContext.js file in it with the following code:

// ./src/context/LocaleContext.js

import * as React from "react";
import { createContext } from "react";

export const LocaleContext = createContext();
export const LocaleProvider = ({ locale, children }) => {
  return <LocaleContext.Provider value={locale}>{children}</LocaleContext.Provider>;
};

Next, we will set the page’s context at gatsby-browser.js and gatsby-ssr.js and pass it down to each component:

// ./gatsby-browser.js & ./gatsby-ssr.js

import * as React from "react";
import { LocaleProvider } from "./src/context/LocaleContext";

export const wrapPageElement = ({ element }) => {
  const {locale} = element.props.pageContext;
  return <LocaleProvider locale={locale}>{element}</LocaleProvider>;
};

Note: Restart the development server to load the new files.

Creating LocalizedLink

Now let’s make sure that the locale is available in the LocalizedLink component, which we will create in the ./src/components/LocalizedLink.js file:

// ./src/components/LocalizedLink.js

import * as React from "react";
import { useContext } from "react";
import { Link } from "gatsby";
import { LocaleContext } from "../context/LocaleContext";

export const LocalizedLink = ({ to, children }) => {
  const locale = useContext(LocaleContext);
  return <Link to={`/${locale}${to}`}>{children}</Link>;
};

We can use our LocalizedLink at RecipePreview.js and 404.js just by changing the imports:

// ./src/components/RecipePreview.js

import * as React from "react";
import { LocalizedLink as Link } from "./LocalizedLink";
import { GatsbyImage, getImage } from "gatsby-plugin-image";

export const RecipePreview = ({ data }) => {
  const { cover_image, title, slug } = data;
  const cover_image_data = getImage(cover_image.image.childImageSharp.gatsbyImageData);

  return (
    <Link to={/recipes/${slug}}>
      <h1>{title}</h1>
      <GatsbyImage image={cover_image_data} alt={cover_image.alt} />
    </Link>
  );
};
// ./src/pages/404.js

import * as React from "react";
import { LocalizedLink as Link } from "../components/LocalizedLink";

const NotFoundPage = () => {
  return (
    <main>
      <h1>Page not found</h1>
      <p>
        Sorry 😔 We were unable to find what you were looking for.
        <br />
        <Link to="/">Go Home</Link>.
      </p>
    </main>
  );
};

export default NotFoundPage;
export const Head = () => <title>Not Found</title>;
Redirecting Users

As you may have noticed, we deleted the non-localized pages and replaced them with localized ones, but by doing so, we left the non-localized routes empty with a 404 page. As we did in Part 1, we can solve this by setting up redirects at gatbsy-node.js to take users to the localized version. However, this time we will create a redirect for each page instead of creating a redirect that covers all pages.

These are the redirects from Part 1:

// ./gatsby-node.js

exports.createPages = async ({ actions }) => {
  const { createRedirect } = actions;

  createRedirect({
    fromPath: `/*`,
    toPath: `/en/*`,
    isPermanent: true,
  });

  createRedirect({
    fromPath: `/*`,
    toPath: `/es/*`,
    isPermanent: true,
    conditions: {
      language: [`es`],
    },
  });
};

// etc.

These are the new localized redirects:

// ./gatsby-node.js

exports.onCreatePage = ({ page, actions }) => {
  // Create localize version of pages...
  const { createRedirect } = actions;

  createRedirect({
    fromPath: page.path,
    toPath: `/en${page.path}`,
    isPermanent: true,
  });

  createRedirect({
    fromPath: page.path,
    toPath: `/es${page.path}`,
    isPermanent: true,
    conditions: {
      language: [`es`],
    },
  });
};

// etc.

We won’t see the difference right away since redirects don’t work in development, but if we don’t create a redirect for each page, the localized 404 pages won’t work in production. We didn’t have to do this same thing in Part 1 since gatsby-theme-i18n didn’t localize the 404 page the way we did.

Changing Locales

Another vital feature to add is a language selector component to toggle between the two locales. However, making a language selector isn’t completely straightforward because:

  1. We need to know the current page’s path, like /en/recipes/pizza,
  2. Then extract the recipes/pizza part, and
  3. Add the desired locale, getting /es/recipes/pizza.

Similar to Part 1, we will have to access the page’s location information (URL, HREF, path, and so on) in all of our components, so it will be necessary to set up another context provider at the wrapPageElement function to pass down the location object through context on each page. A deeper explanation can be found in Part 1.

Setting Up A Location Context

First, we will create the location context at ./src/context/LocationContext.js:

// ./src/context/LocationContext.js

import * as React from "react";
import { createContext } from "react";

export const LocationContext = createContext();
export const LocationProvider = ({ location, children }) => {
  return <LocationContext.Provider value={location}>{children}</LocationContext.Provider>;
};

Next, let’s pass the page’s location object to the provider’s location attribute on each Gatsby file:

// ./gatsby-ssr.js & ./gatsby-browser.js

import * as React from "react";
import { LocaleProvider } from "./src/context/LocaleContext";
import { LocationProvider } from "./src/context/LocationContext";

export const wrapPageElement = ({ element, props }) => {
  const { location } = props;
  const { locale } = element.props.pageContext;

  return (
    <LocaleProvider locale={locale}>
      <LocationProvider location={location}>{element}</LocationProvider>
    </LocaleProvider>
  );
};

Creating An i18n Config

For the next step, it will come in handy to create a file with all our i18n details, such as the locale code or the local name. We can do it in a new config.js file in a new i18n/ directory in the root directory of the project.

// ./i18n/config.js

export const config = [
  {
    code: "en",
    hrefLang: "en-US",
    name: "English",
    localName: "English",
  },

  {
    code: "es",
    hrefLang: "es-ES",
    name: "Spanish",
    localName: "Español",
  },
];

The LanguageSelector Component

The last thing is to remove the locale (i.e., es or en) from the path (e.g., /es/recipes/pizza or /en/recipes/pizza). Using the following simple but ugly regex, we can remove all the /en/ and /es/ at the beginning of the path:

/(\/e(s|n)|)(\/*|)/

It’s important to note that the regex pattern only works for the en and es combination of locales.

Now we can create our LanguageSelector component at ./src/components/LanguageSelector.js:

// ./src/components/LanguageSelector.js

import * as React from "react";
import { useContext } from "react";
// 1
import { config } from "../../i18n/config";
import { Link } from "gatsby";
import { LocationContext } from "../context/LocationContext";
import { LocaleContext } from "../context/LocaleContext";

export const LanguageSelector = () => {
// 2
  const locale = useContext(LocaleContext);
// 3
  const { pathname } = useContext(LocationContext);
// 4
  const removeLocalePath = /(\/e(s|n)|)(\/*|)/;
  const pathnameWithoutLocale = pathname.replace(removeLocalePath, "");
// 5
  return (
    <div>
      { config.map(({code, localName}) => {
        return (
          code !== locale && (
            <Link key={code} to={`/${code}/${pathnameWithoutLocale}`}>
              {localName}
            </Link>
          )
        );
      }) }
    </div>
);
};

Let’s break down what is happening in that code:

  1. We get our i18n configurations from the ./i18n/config.js file instead of the useLocalization hook that was provided by the gatsby-theme-i18n plugin in Part 1.
  2. We get the current locale through context.
  3. We find the page’s current pathname through context, which is the part that comes after the domain (e.g., /en/recipes/pizza).
  4. We remove the locale part of the pathname using the regex pattern (leaving just recipes/pizza).
  5. We render a link for each available locale except the current one. So we check if the locale is the same as the page before rendering a common Gatsby Link to the desired locale.

Now, inside our gatsby-ssr.js and gatsby-browser.js files, we can add our LanguageSelector, so it is available globally on the site at the top of all pages:

// ./gatsby-ssr.js & ./gatsby-browser.js

import * as React from "react";
import { LocationProvider } from "./src/context/LocationContext";
import { LocaleProvider } from "./src/context/LocaleContext";
import { LanguageSelector } from "./src/components/LanguageSelector";

export const wrapPageElement = ({ element, props }) => {
  const { location } = props;
  const { locale } = element.props.pageContext;

  return (
    <LocaleProvider locale={locale}>
      <LocationProvider location={location}>
        <LanguageSelector />
        {element}
      </LocationProvider>
    </LocaleProvider>
  );
};
Localizing Static Content

The last thing to do would be to localize the static content on our site, like the page titles and headers. To do this, we will need to save our translations in a file and find a way to display the correct one depending on the page’s locale.

Page Body Translations

In Part 1, we used the react-intl package for adding our translations, but we can do the same thing from scratch. First, we will need to create a new translations.js file in the /i18n folder that holds all of our translations.

We will create and export a translations object with two properties: en and es, which will hold the translations as strings under the same property name.

// ./i18n/translations.js

export const translations = {
  en: {
    index_page_title: "Welcome to my English cooking blog!",
    index_page_subtitle: "Written by Juan Diego Rodríguez",
    not_found_page_title: "Page not found",
    not_found_page_body: "😔 Sorry, we were unable find what you were looking for.",
    not_found_page_back_link: "Go Home",
  },
  es: {
    index_page_title: "¡Bienvenidos a mi blog de cocina en español!",
    index_page_subtitle: "Escrito por Juan Diego Rodríguez",
    not_found_page_title: "Página no encontrada",
    not_found_page_body: "😔 Lo siento, no pudimos encontrar lo que buscabas",
    not_found_page_back_link: "Ir al Inicio",
  },
};

We know the page’s locale from the LocaleContext we set up earlier, so we can load the correct translation using the desired property name.

The cool thing is that no matter how many translations we add, we won’t bloat our site’s bundle size since Gatsby builds the entire app into a static site.

// ./src/pages/index.js

// etc.

import { LocaleContext } from "../context/LocaleContext";
import { useContext } from "react";
import { translations } from "../../i18n/translations";

const IndexPage = ({ data }) => {
  const recipes = data.allMarkdownRemark.nodes;
  const locale = useContext(LocaleContext);

  return (
    <main>
      <h1>{translations[locale].index_page_title}</h1>
      <h2>{translations[locale].index_page_subtitle}</h2>
      {recipes.map(({frontmatter}) => {
        return <RecipePreview key={frontmatter.slug} data={frontmatter} />;
      })}
    </main>
  );
};

// etc.
// ./src/pages/404.js

// etc.

import { LocaleContext } from "../context/LocaleContext";
import { useContext } from "react";
import { translations } from "../../i18n/translations";

const NotFoundPage = () => {
  const locale = useContext(LocaleContext);

  return (
    <main>
      <h1>{translations[locale].not_found_page_title}</h1>
      <p>
        {translations[locale].not_found_page_body} <br />
        <Link to="/">{translations[locale].not_found_page_back_link}</Link>.
      </p>
    </main>
  );
};

// etc.

Note: Another way we can access the locale property is by using pageContext in the page props.

Page Title Translations

We ought to localize the site’s page titles the same way we localized our page content. However, in Part 1, we used react-helmet for the task since the LocaleContext isn’t available at the Gatsby Head API. So, to complete this task without resorting to a third-party plugin, we will take a different path. We’re unable to access the locale through the LocaleContext, but as I noted above, we can still get it with the pageContext property in the page props.

// ./src/page/index.js

// etc.

export const Head = ({pageContext}) => {
  const {locale} = pageContext;
  return <title>{translations[locale].index_page_title}</title>;
};

// etc.
// ./src/page/404.js

// etc.

export const Head = ({pageContext}) => {
  const {locale} = pageContext;
  return <title>{translations[locale].not_found_page_title}</title>;
};

// etc.
Formatting

Remember that i18n also covers formatting numbers and dates depending on the current locale. We can use the Intl object from the JavaScript Internationalization API. The Intl object holds several constructors for formatting numbers, dates, times, plurals, and so on, and it’s globally available in JavaScript.

In this case, we will use the Intl.DateTimeFormat constructor to localize dates in blog posts. It works by creating a new Intl.DateTimeFormat object with the locale as its parameter:

const DateTimeFormat = new Intl.DateTimeFormat("en");

The new Intl.DateTimeFormat and other Intl instances have several methods, but the main one is the format method, which takes a Date object as a parameter.

const date = new Date();
console.log(new Intl.DateTimeFormat("en").format(date)); // 4/20/2023
console.log(new Intl.DateTimeFormat("es").format(date)); // 20/4/2023

The format method takes an options object as its second parameter, which is used to customize how the date is displayed. In this case, the options object has a dateStyle property to which we can assign "full", "long", "medium", or "short" values depending on our needs:

const date = new Date();

console.log(new Intl.DateTimeFormat("en", {dateStyle: "short"}).format(date)); // 4/20/23
console.log(new Intl.DateTimeFormat("en", {dateStyle: "medium"}).format(date)); // Apr 20, 2023
console.log(new Intl.DateTimeFormat("en", {dateStyle: "long"}).format(date)); // April 20, 2023
console.log(new Intl.DateTimeFormat("en", {dateStyle: "full"}).format(date)); // Thursday, April 20, 2023

In the case of our blog posts publishing date, we will set the dateStyle to "long".

// ./src/pages/recipes/{markdownRemark.frontmatter__slug}.js

// etc.

const RecipePage = ({ data, pageContext }) => {
  const { html, frontmatter } = data.markdownRemark;
  const { title, cover_image, date } = frontmatter;
  const { locale } = pageContext;
  const cover_image_data = getImage(cover_image.image.childImageSharp.gatsbyImageData);

  return (
    <main>
      <h1>{title}</h1>
      <p>{new Intl.DateTimeFormat(locale, { dateStyle: "long" }).format(new Date(date))}</p>
      <GatsbyImage image={cover_image_data} alt={cover_image.alt} />
      <p dangerouslySetInnerHTML={{__html: html}}></p>
    </main>
  );
};

// etc.
Conclusion

And just like that, we reduced the need for several i18n plugins to a grand total of zero. And we didn’t even lose any functionality in the process! If anything, our hand-rolled solution is actually more robust than the system of plugins we cobbled together in Part 1 because we now have localized 404 pages.

That said, both approaches are equally valid, but in times when Gatsby plugins are unsupported in some way or conflict with other plugins, it is sometimes better to create your own i18n solution. That way, you don’t have to worry about plugins that are outdated or left unmaintained. And if there is a conflict with another plugin, you control the code and can fix it. I’d say these sorts of benefits greatly outweigh the obvious convenience of installing a ready-made, third-party solution.

Types of Blogs Starter Guide: Learn the Basics

We recommend starting a blog using WordPress with Hostinger as it’s easy to tailor to your needs. Get started today for $2.59 per month.

Not all blogs set out to accomplish the same things. And around a third of bloggers don’t make any money. That’s why you must consider what type of blog to start carefully. Choosing a blog niche that has an audience and fits your goals is the crucial first step to success. In this post, you’ll learn what you need to know about different blog types and which kinds of blogs are most popular and most profitable according to data.

The 3 Best Blogging Platforms for Creating Different Types of Blogs

We used our wealth of experience creating websites and prior research to identify the top blogging platforms for creating any type of blog. Our top three picks are versatile enough to start you on the right foot, no matter what your goals for your blog are:

Brand logos for WordPress, Wix, and Squarespace.

What Types of Blogs Are There?

Blog creators have a wide array of goals and objectives for their content, but there are four main categories of blogs in general. Let’s discuss each of those in a quick overview:

1. Personal blogs – These are journal-like blogs in which writers document their thoughts, opinions, tastes, or slices of daily life. It’s the way blogging started out on the early internet. Sometimes, bloggers keep their personal blogs private or only share them with friends and family, but nowadays more and more people use them as a sounding board, a place to share advice and experiences, or a way of building a community around a topic or shared interest. 

On Rising Shining, a mom documents her family life and experiences as a working mother:

Example of a personal blog with a post that says Hello, February!
Create a personal blog if you want to share your own stories and experiences.

Personal blogs don’t have to be non-money making ventures. You can utilize affiliate marketing to monetize your soapbox or tie some blog posts to your online store or personal business when it feels appropriate. 

2. Business blogging – Companies deploy blogs on their websites for a variety of reasons, from showcasing their industry expertise and raising awareness about their brand to generating leads for their sales funnel and building customer loyalty through content that promotes their brand values or growth.

Nike’s blog, for example, engages the sporting and fitness community with inspiring stories and tips that are relevant to their many product lines:

Business blog with two posts.
Use a business blog to build a community around your product or service and attract more business.

Business blogs are usually a section of a larger company website, but sometimes they’re standalone sites that focus on a specific product, service, subset of their customer base, or industry-related topic. Their content isn’t always fixated on driving sales, but it always serves to help the company’s sustainability and connection with customers new and old.

3. Personal brand blogging – On a similar note, these blogs are for industry professionals or solopreneurs rather than entire companies. 

Pros use a blog to raise their profile as thought leaders or influencers, which can in turn support their company at large. Or, they use the same approach  to sell their own services as a consultant or digital products like ebooks and online courses.

Entrepreneur Tim Ferriss’s blog is a good example of using a blog to promote your personal brand:

Business & Entrepreneurship blog with 5 posts.
Set up a blog for your personal brand to show how you got to where you are today.

Personal brand blogging is becoming more and more prominent as side hustles become a more common aspect of people’s careers and work. It’s also a great way to capitalize on social media traction and bring followers to your entrepreneurial ventures. 

4. Niche blogs – Niche bloggers focus primarily or exclusively on one subject. That can be anything from broad interests like books and travel to hyperspecific subject matter such as how to use AI for content creation or testing out fitness gadgets. 

People often niche down in order to stand out from the crowd of other blogs and attract a loyal, dedicated audience that they can monetize in one way or another.

Expert Vagabond is one of the top travel blogs with advice, tips, and guides on various locations around the world:

Landing page for a personal blog with a picture of a man on a mountain.
Hone in on a particular niche or subject matter to attract readers that share the same passions.

Niche blogs can be a subset of any of the three previous blog types. You can focus on a niche for blogging about your personal feelings, attracting a specific type of customer to your business, or strongly associate your personal brand with the niche topic. 

In this era, finding a niche is necessary. There is so much content already out there on the internet about just about any broad topic, so niching down is important for gaining some traction and attracting an audience in the first place.

Since this is an important qualification to consider when starting a blog, we’ll talk about some of the most popular niches in a little bit. 

Why Start A Blog?

We’ve written extensively on how to start a blog successfully. If you want a good overview of the steps to take in order to get a blog off the ground, read our guide on how to start a blog

That takes care of the “how”, but what about the “why?” There are more reasons to start a blog than simply trying it out as a new hobby:

  • Make blogging your career – Quit the daily grind and work for yourself or support your income with a new revenue stream. There are multiple ways to monetize a blog, from selling advertising space to promoting products or affiliates.
  • Promote your business or cause Use your blog posts to convince visitors that your service or product is worthwhile and a solution to their problems. Or, get them on your team in terms of trying to enact positive change.
  • Become an influencer or thought leader A blog is a place to start growing a following as you continue to raise your profile and establish your expertise on a topic. Your blog can be a living record of your authority that can demonstrate your bonafides better than a resume.
  • It’s easier than you think Nowadays, blogging platforms provide useful tools, add-ons, and templates out of the box, making it easy for anybody to start their own blog and just focus on the act of writing and sharing one’s thoughts with the world.

The 13 Most Popular Blog Subjects

It’s important to look at the most popular blog niches when choosing what type of blog to create. You’ll not only gain inspiration if you don’t know where to start but also learn what types of blogs have the best potential for gaining a large readership.

According to a recent RankIQ study, here are the types of blogs that get the most traffic:

1. Food Some food bloggers share recipes and step-by-step cooking tutorials with video. Many focus on a specific cuisine or diet. You’ll also find some blogs that do restaurant and dish reviews, though those are usually quite localized in scope.

2. Lifestyle/moms – So-called mommy bloggers are incredibly popular and dad blogs have grown in recent years, too. You’ll find parenting tips and personal insights aplenty, along with product recommendations and project ideas for the kids.

3. Travel – Travel bloggers create country or city guides, even whole itineraries for other people’s trips to new places. There are lots of niches within this topic based on certain types of travel, such as solo adventures, luxury travel, or digital nomadism.

4. Arts and crafts – Arts and crafts bloggers create step-by-step guides for crafts projects, tutorials for getting started on a new hobby, and tips for sourcing materials. They can often be seasonal or based on a theme such as Halloween or Christmas crafts. You’ll find lists of ideas for inspiration and resources for readers to utilize to further their crafting ability.

5. Outdoors – Outdoors bloggers cover a range of sub-niches. You’ll see blogs focused just on specific nature activities like fishing, camping, hiking, and survival. They love to create gear reviews and offer accounts of their own outdoors experiences. Plus, you’ll see a lot of excellent photography incorporated into the blog content.

6. Beauty and fashion – Beauty and fashion bloggers are one of the biggest subsets of influencers on the internet. They set trends, review many products, and create tutorials on makeup, beauty routines, outfit coordination, and even finding unique looks. 

7. Personal finance – This evergreen subject matter often covers topics like saving money, getting out of debt, building credit, preparing for retirement, and making smart investments. You’ll find expert advice and recommendations for credit cards, bank accounts, and financial services.

8. Homeschooling – Like parenting blogs, you see a lot of personal insights and stories here. Homeschool bloggers also share a bunch of resources for others to use such as curriculum ideas, study subject templates, and workbooks. 

9. Pets – Many pet bloggers focus on one type of pet and it can even get more niche by zooming in on particular breeds. They create blogs with lots of advice and tips for pet care, health, and entertainment. You’ll often find product recommendations for toys, food, supplements, and subscription services.

10. Gardening – Some gardening bloggers share landscaping and home design guides and inspiration. Others are all about plant and flower care, garden maintenance, and small-scale subsistence farming. 

11. Decorating – Decorating bloggers cover interior design trends and how to implement them in your own home. You’ll find room or theme-specific guides, tips for remodeling and renovation, and help with matching aesthetics to readers’ personalities. They create lots of shopping guides and product recommendation lists.

12. Health and fitness – Many health and fitness bloggers create nutrition guides and share healthy recipes as a subset of food blogging. But these blogs tend to go beyond food and cover exercise tutorials, workout routines, and tips for maintaining a healthy lifestyle overall. You’ll also find a ton of motivation and inspirational stories.

13. Tech – Tech bloggers review electronics, software, and the like, plus give their thoughts on emerging technology and trends. Here you’ll find lots of guides walking readers through how to use products or get the most out of them. In many cases, tech blogs are directed at businesses and industry professionals, but they can just as easily speak to end users and consumers.

The 4 Highest-Paying Blog Niches

Finding a profitable blog niche is likely high on your agenda. RankIQ also published a study that revealed the highest-paying blog niches based on the median monthly income for bloggers in each category.

The topics may not surprise you, but the monthly revenue might:

  • Food blogs averaged $9,169 in monthly income, and are the niche with the highest percentage of blogs that get over 50,000 monthly visitors
  • Personal finance blogs weren’t far behind with a monthly median of $9,100
  • Lifestyle and mommy blogging is the most popular topic for new blogs and averaged $5,174 in monthly revenue
  • Travel blogging is the fourth-most lucrative niche at a monthly median of $5,000

Now, just because these four blog niches are able to deliver lofty, four-digit monthly income numbers doesn’t mean you should go chasing them. 

You should choose a niche in which you can become the go-to expert for your audience, like gluten-free cooking or personal finance budgeting for students. It’s too difficult to compete with all the other blogs out there as a generalist without unique expertise on a subject.

Though some blog categories tend to make more money than others, remember that you can make money in any blog niche as long as your approach is strategic.

Digital products may be popular in the niche you choose. Online courses, in particular, are high-ticket items when it comes to monetizing a blog. You can charge hundreds of dollars for a high-value course. 

Search an online course provider such as Udemy to see how many people actually sign up for courses in your category.

For example, hundreds of students have paid for gluten-free baking classes:

Screenshot of a class titled "The Gluten Free Sourdough Masterclass."
Online course networks show you how many students have previously purchased a course.

Set up a course on anything from plant care to drawing. Artist/blogger Nancy Hillis, for example, offers a range of courses and an advanced masterclass:

Online course showing three steps that include Start, Experiment, and Evolve.
Online courses are extremely lucrative for bloggers.

Or, you can find related products or services you’d be able to promote and earn a commission from by tapping into an affiliate marketplace

For example, a quick search on ShareASale for the keyword “gluten free” shows a bunch of relevant merchants whose affiliate programs your nutrition or health blog could join.

Affiliate marketplace screenshot showing two products.
Use affiliate marketplaces as part of your research when validating your blog idea.

Another way to monetize any blog niche effectively is through premium memberships. Just be sure to offer enough value that users would be willing to pay to be a part of the community. 

For example, you might be effective enough at presenting yourself as an expert in your niche that people are willing to pay for extra content or a newsletter. Or, you might grow a thriving discussion board that users would pay to gain access to.

Furthermore, when thinking about what type of blog to start, consider putting a business-to-business (B2B) angle on your blog. For example, you might focus on executive travel over consumer travel, or start a blog aimed at catering companies rather than home cooks.

Software, products, and services aimed at businesses tend to offer higher commissions, and therefore offer a higher potential income for you. Getting two businesses to make a purchase might make you the same amount of affiliate income as getting 100 consumers to purchase. 

Whatever you choose, ensure your narrower niche will be profitable through research. Look into monetization opportunities of all kinds. This kind of research establishes whether there’s a paying audience in your chosen niche that you can tailor your content to and make money from.

The 6 Proven Types of Blog Content

The majority of blog content falls into well-established formats. These are already popular and familiar to readers, so they’re most likely to perform well and show up high in search results. 

You don’t need to reinvent the wheel, so stick to these popular types of blog content, at least while you’re starting out:

  • “How to” guides are comprehensive tutorials or explainers on a given topic that help readers accomplish a specific goal.
  • List posts deliver power rankings or sets of tips, ideas, examples, or methods relevant to a set topic.
  • Reviews can entail detailed assessments of a product, service, or experience.
  • Resource libraries are specific list posts that deliver a helpful collection of links, vendors, or materials for readers to use themselves.
  • Industry news and trends are timely, up-to-date stories and reporting that is relevant to your blog niche and the audience you’re targeting.
  • Case studies or personal accounts can cover first-hand knowledge, inspirational or aspirational stories, or deep dives into professional endeavors related to your industry.

Among these options, you must find the types of blog content that resonate best with your audience. Do this by looking at your competitors’ top posts or the blogs that inspired you to make one of your own. See what their audiences already engage with and take that as guidance for the content types to start with.

After you’ve published some, monitor the data related to your posts as you grow. Find your own top-performing pages by analyzing metrics such as the number of views and time spent on the page and take note of any post types that are more successful than others. 

Semrush page showing top pages and results.
Semrush helps you find your top-performing pages so you can create data-driven content.

This removes guesswork to show you precisely what types of blog content your audience wants to see and gives you a roadmap for future content creation.

Final Thoughts About Types of Blogs

You may want to start a blog to leave the nine-to-five and become an influential online figure. Or, you may just want to create a digital soapbox that occasionally earns you a bit of extra cash. 

Either way, you must think carefully about the type of blog you want to start. To ensure you choose the right type of blog, you need a solid understanding of what types of blogs perform well and make the most profit. And you have to put in the research to establish whether there’s a paying audience for what you intend to do and consider the best monetization strategies.

We recommend using WordPress with Hostinger when you’re ready to set up your blog site. Then, figure out what topics you will blog about and what types of blog content you will create.

What Is Design Thinking?

In a world of fast-paced action and reactions, quality results are something that we all aim for. But how can you make something better? Whether it is a product, a service, or perhaps a process, we aim to make things better. It leaves us to wonder how we are going to design a world that is long and equitable to attain a degree of excellence.

When we are talking about making “things better,” we cannot deny the role of the Kanban system in implementing TQM (Total Quality Management) for Toyota. If TQM did that for manufacturing, design thinking has the potential to bring human-centric solutions for innovations.

Design thinking takes the human-centric approach in order to understand how to deal with the problem before we jump into all possible solutions. We could see its use in various places. The buzz is everywhere, from the social sector to policy making, health care to business. So what is design thinking?

The Meaning Of Design Thinking
Design thinking fosters tackling complex problems in a creative way that prioritizes human needs with a huge emphasis on finding creative solutions with what is technically feasible.

Though it’d be hard to put the definition of “design thinking” in a few words, I’d rather look at design thinking as a philosophy or a mindset to solve complex problems that are too tough to be solved with the conventional and standard practices of problem-solving. Design thinking takes the route to give solutions that are: feasible, viable, and desirable.

Generally, solutions to problems are sometimes overlooked with the conventional approach to solving them, while some approaches are highly rational and analytical while others are emotional. Design thinking might just be the third way that augments the rational, emotional, and functional needs of human problems. Design thinking is not restricted to only building products; any new initiatives that foster innovations can leverage the design thinking principles of problem-solving.

The Origin

While there are no solid indications of the origin of design thinking, design thinking as a mindset could be traced back to John E. Arnold, a professor of Mechanical engineering who pioneered the study of “Creative Engineering” at Stanford University. He was one of the first few people to write about design thinking and considered the seed for design thinking as a movement. His lectures motivate being more imaginative and innovative. His theory of problem-solving focuses on human needs by relating personal, scientific, and practical aspects of the problem.

He emphasizes the importance of approaching the problem like an artist and having humans as the cornerstone for the solutions you want to build. “Creative problems” do not have one right answer.

“The engineer can take on some aspects of the artist and try to improve or increase the salability of a product or machine by beautifying or bettering its appearance, or by having a keener sensitivity for the market and for the kinds of things people want or don’t want.”

— John E. Arnold
The Design Thinking Process

In an effort to contextualize and apply design thinking, it is often identified with a process that guides the values to hold sway on how you approach the problem. This process may not necessarily be linear or sequential but rather a loop that makes sense for the particular problem or use-case one undertakes.

Empathize

Designing for humans could be tricky. Sometimes the needs or desires are left uncovered and may not be fully reflective of the real problem. While traditional market research processes go by facts, design thinking approaches to address the problem through empathy. Empathy attempts to understand latent needs and translate the current realities of the environment. This helps solution designers understand the people, their behavior, and the context that can explain the problem to build better solutions.

So, the first step to getting inspired by the problem is to understand the people you design for and what motivates them to search for a solution. This is especially very useful for businesses to understand the opportunity space available. Just the way Apple did. While MP3 players were already a thing, iPods changed the way people consumed music. When Sony ruled the consumer electronics market with their Walkman and CDs, Apple revolutionized the world of music with IPods. Apple empathized with people’s problem of carrying around cassette tapes, and iPods changed the game!

In order to identify and understand the pulse of the problem and to contextualize this step, gathering information is key. This is where you talk to people in the problem space to understand what they care about and how they currently deal with the problem. User interviews and their feedback help you get into their shoes.

Define

This is one of the most important steps where the problem gets shaped.

In design thinking, ill-conceived problem statements pave the way to building solutions to “a problem,” not “the problem.”

Let me explain.

For example, you talk to someone about a problem. You record the observation and pitch in a plausible solution to that problem. The user gets excited that your solution might solve that problem. But what really happens here is that you and the person have been discussing just one of the problems among their many other problems. Therefore, their decision to adopt your solution depends on the importance the person gives to the problem that you promise to solve.

Here is where defining the pulse of the problem becomes very crucial. Often, in hindsight, the spotlight falls on the problem you are trying to solve rather than the many other problems the person might actually have.

Hence defining the problem goes a long way to give you leads on how to go about building human-centric solutions.

Ideate

This is the phase where your observations find a home to be synthesized to create an opportunity for change. You brainstorm to define and redefine the potential solution to create competing ideas to solve the problem. This step ideally helps you to get to the core of the problem.

As said earlier, this is not going to be a linear process, and you might often find yourself going back to previous steps as you work together to challenge the idea or perhaps the problem itself. Thereby you cull out good ideas to implement.

Prototype

The next phase is the prototype, where you validate your ideas by creating a mockup of your final solution. Your solution takes a tangible form to show evidence in this implementation phase of the prototype. It also shows you the limits and limitations of your idea that are left unaccounted for during the ideation phase.

One of the classic companies which nailed building a great prototype is Uber. Uber focused on solving the core problem of “finding taxis ” in its initial release. The first beta version of the product was a very minimalist app where all the orders were managed manually, where the CEO contacted drivers to book the ride. And it did not have features to pay. The goal was to test and validate the problem of hailing a cab, which is the core benefit of the app. Eventually, when they understood the target market and pain point, they rolled out to improve other features.

Test

The final prototype is then tested with your target group and is reiterated to accommodate the learning that comes your way. The validation takes the final form here and may again require you to revisit some of the previous steps to implement the plan at scale.

Design Thinking In Action: Case Studies

Design Thinking In Social Sector

Malaria, one of the nerving problems in Africa, was one of the top 5 causes of death for children under the age of five. This is a social problem highly complex in nature, and the design thinking approach to distributing mosquito nets helped to combat the disease effectively. The World Health Organization reported a 50%-60% decline in death in countries like Ethiopia and Rwanda and a 34% decline in Ghana.

It was found that the design of nets was unappealing to some people in Ghana. A group of researchers identified a potential solution to address the problem of getting people to use the net. They came up with a human-centered design of nets that paved the way to provide a long-lasting solution to this social problem.

Airbnb

Design thinking has also played a huge role in transforming an almost failing company- Airbnb. Their business was crippling down, and when they got into the problem, they saw a pattern in their ads with the pictures which weren’t working great. The pictures on display were taken on low-quality phones. When looking at the photos on the site, the people who wanted to rent felt that they did not get to see what they were actually paying for. As soon as the founders realized this, they rented a camera to take good pictures of the customer’s property. Gebbia, one of the founders, went on to explain how the design school experience helped them reinvent themselves to serve customers better.

Netflix

Another household name, Netflix, has come a long way, and design thinking has had a huge part in the decisions that they make. Netflix came up with a DVD rental service delivered straight to the doorstep while other rivals had people drive through the stores to pick movies.

Later when cable started to give on-demand movies, Netflix understood the pain points of the customers and began online streaming services on a monthly basis without having to pay for every single DVD. They built an online directory with a subscription model and delighted customers with the convenience of watching their favorite movies from the comforts of the home.

When picking something to watch took a long time than actually watching, Netflix came up with “previews” that helped people to choose what to watch. As simple as it may sound, the thought behind Netflix’s recommendation system helps to cut down the time people spend deciding what to watch. While change is inevitable, Netflix keeps reinventing itself with a design-thinking approach to uncover innovative solutions focused on the end user in mind.

From renting DVDs to online streaming, Netflix has continuously aimed to understand the end user to design solutions in a human-centric way.

And not just this. The list goes on and on.

Final Thoughts

Design thinking has been evolving itself. People have been contributing to making it more useful to contextualize its use in various fields. Applying the design thinking framework and getting into creating a human-centric solution comes with different shapes, depending on the size and complexity of the problem.

Given its flexibility, design thinking helps you get familiar and comfortable with ambiguity. The approach lets you play around dynamically at various scales, making it a valuable pursuit.

Try it by starting with any problem you want to solve, and let me know how it worked for you in the comments below. I’d love to hear and help if you wish.

Related Resources

PBX vs. VoIP: 7 Key Differences

We recommend Nextiva as the best VoIP phone system for most businesses due to its call quality, flexibility, and reliability. Save up to 28% when you sign up today.

Every business needs a phone solution. Historically, most companies just used a traditional landline because there weren’t any alternatives. But today, organizations have more options to choose from, and most are torn between two choices—PBX and VoIP. This in-depth guide will break down the key differences between PBX and VoIP phones so you can determine which one is right for your business.

The 12 Best Phone Systems For PBX vs. VoIP

As you compare the differences between PBX and VoIP, you also need to find a business phone service that aligns with your needs. These are our top recommendations for different business types and use cases:

  • Nextiva — Best Overall VoIP Provider
  • RingCentral — Best for Hybrid and Remote Work Environments
  • Ooma — Best for Small Businesses That Want Simple Setups
  • 8×8 — Best VoIP Provider for International Calling
  • Dialpad — Best AI Functionality for VoIP Phone Systems
  • GoTo Connect — Best Feature-Packed Entry-Level VoIP Plan
  • Phone.com — Best For Businesses on a Tight Budget
  • Google Voice — Best Simple and Lightweight VoIP Phone Service
  • Aircall — Best Built-In Call Management Tools
  • CallHippo — Best VoIP Phone System for Industry-Specific Compliance
  • 11Sight — Best One-Click Audio and Video Calling for Sales and Marketing Teams
  • Zoom — Best Call Monitoring Features For Business Users

1. Call Quality and Reliability

One of the most significant differences between PBX and VoIP is how each service is delivered. This delivery method directly impacts the quality of the calls and the reliability of the phone service.

PBX (private branch exchange) systems rely on traditional PSTNs (publicly switched telephone networks) to facilitate calls. PBX phone systems are similar to traditional landlines in the sense that they use copper wiring and circuit switching. While traditional landlines are typically used to connect two parties, PBX phones allow businesses to operate a private phone network.

As a result, PBX systems are often highly reliable and provide high-quality calling. 

VoIP (voice over internet protocol) phones rely on stable internet connections to work. When there’s a strong and fast connection, the quality and reliability of the calls are excellent—especially if you’re using a top VoIP phone provider. In most cases, nobody on the call will even be able to tell that VoIP technology is being used.

With that said, if the internet goes down, VoIP phones can have problems. This won’t be an issue for most businesses. But if you’re in a rural or remote location with spotty internet, then PBX might be more reliable.

One quick way to check your connection is by running a VoIP speed test.

Nextiva speed test webpage
Use Nextiva’s speed test to check your internet connection.

This can help you determine if your current internet connection can support the VoIP calling capabilities that you’ll need on a daily basis. 

2. Costs

VoIP phone systems are significantly less expensive than PBX systems. 

While your total costs will depend on your business size, required lines, employees, and other factors, you can almost always expect to pay more for a PBX system than a VoIP service.

A business with around 20 users can expect to pay anywhere from $5,000 to $10,000 on hardware and equipment alone. Software licensing fees are an additional $2,000 to $3,000, and you’ll typically pay around $1,500 for installation. Ongoing maintenance for your PBX phone can cost around $3,000 annually. 

Business VoIP services typically start around $20 per user per month. 

Nextiva VoIP pricing for Essential, Professional, and Enterprise plans
Nextiva VoIP is an affordable alternative to PBX phone systems.

Your dollar also goes much further when you use a VoIP phone. That’s because many of the best VoIP phone providers include features that go beyond basic telephone calling. 

Depending on your provider and plan, you can access features like internet faxing, SMS messaging, video calling, and more, all included with your flat monthly rate.

For smaller businesses on a limited budget, VoIP systems are a no-brainer. They also work well for larger organizations, as you typically get better per-user rates based on volume and contract length. 

3. Installation and Setup

Cost aside, setting up a PBX network for your business can be complex. This is not something that most businesses will handle on their own, and it typically requires IT assistance and installation from your PBX provider. 

The process involves lengthy steps for KSU wall attachments, circuit cards, and connecting your private branch to a telephone network. PBX vendors provide the cables and cords that are required for the private branch, and these act as the main line for your PBX system. All of the individual phones need to be connected to the system as well. 

Deploying a PBX system for your business may include drilling some holes in your walls and running new wires through the ceilings. It’s definitely not a DIY job.

Conversely, VoIP phones are ultra-easy to set up and deploy. There’s virtually no installation process, and you likely already have many of the prerequisites handled. 

Nextiva VoIP webpage with headline that says "Set up your business phone system in minutes" and an example call flow diagram
VoIP phone systems can be deployed in minutes.

In some cases, setting up your VoIP phone system can be done on the same day. This is especially true if you don’t need any additional hardware and your calls are being made from existing laptops, smartphones, and VoIP phones. 

The only thing that may need to be installed is a piece of software for each device. Beyond that, all you need to do is get your users onboarded to the system, which is not something that requires any IT assistance. 

So for those of you who don’t have dedicated in-house IT support, a VoIP phone system will make your life much easier. 

4. Scalability and Flexibility

Since PBX systems rely on on-premises hardware and connectivity, scaling them is not easy. For example, if your company is opening a second office in a different location, you need to build a PBX infrastructure there as well.

Even if you’re adding new devices and users at an existing location, you may need to replace certain modules with something that can handle the increased capacity. 

Scaling your VoIP system is much easier. Whether you’re adding new employees to one location, opening completely new locations, or wanting to onboard remote staff, scalability is achieved with just one or two clicks. 

Nextiva user management webpage with headline that says "Add or manage users in seconds - on one screen"
You can add new users to your Nextiva plan in seconds.

You can manage all of your users, phones, lines, extensions, and features from a simple admin portal. You won’t have to send a technician out to an employee’s home if you want to add a new remote user. Everything is handled from the cloud. 

You can only go so far with a PBX. The ability to add more features is much more limited compared to a VoIP system. 

VoIP phone providers typically don’t lock you into strict contracts either. So if you want to upgrade your plan to support new features or new users, you can do so without having to jump through hoops. The only thing that might change is your monthly subscription rate.

PBX systems typically tie users to specific desk phones. An employee couldn’t take calls on the road or answer calls from home. The calls must be made from the phone associated with their extension. 

VoIP systems are highly flexible—allowing users to make and receive calls from virtually anywhere. Someone could start a call on their computer at work, then transfer it to the mobile app while they’re leaving the office, and transfer it again to a laptop when they get home. 

5. Hardware Requirements

VoIP phone systems have minimal hardware requirements. 

You really only need to have internet access and a router. Beyond that, calls can be made using existing smartphones and computers. You don’t have to purchase any actual phones to use a VoIP system.

However, you do have the option to use traditional-style phones with a VoIP subscription. You just need to make sure the phones are VoIP-enabled, so it’s best to get them directly from your VoIP provider.

Nextiva VoIP desk phone options
Nextiva has a wide range of VoIP phones to choose from.

You can also get VoIP cordless phones, conference calling phones, headsets, and more. There are even VoIP adapters that transform traditional analog phones into VoIP phones. This will help keep your costs low if you don’t want to purchase more hardware.

PBX hardware is more involved.

You need to get desk phones, cables, splitters, modems, circuits, and wall jacks. These systems also require on-site PBX servers; most businesses need backup power sources.

6. Advanced Features

PBX phones don’t really come with any advanced features. A PBX is a phone system that comes with everything you’d expect in a high-quality business phone system, but it ends there. 

VoIP systems take basic business calling to the next level. Depending on the provider and plan you select, your VoIP phone system is included with an entire business communication suite. 

Nextiva webpage highlighting its all-in-one solution for talk, text, chat, and video
Nextiva is an all-in-one solution for voice, video, and live chat.

Some examples of advanced VoIP features beyond call capabilities include:

  • Unified communications
  • Video calling and conference calling
  • Team chat
  • Helpdesk software
  • Sales CRMs
  • Screen sharing
  • File sharing
  • Call analytics and live data
  • Automated workflows
  • Customer journey management
  • Third-party software integrations

You won’t find these in a PBX solution.

7. International Calling

PBX phones typically charge high rates for international calls. But with a VoIP phone system, you can make international calls for just a few cents per minute.

These rates vary by location, but they’re often extremely flexible. This means that you won’t necessarily have to get an international calling plan that’s separate from your monthly subscription. Any international calls will just be added to your bill. 

Nextiva international calling webpage
Nextiva offers built-in international calling capabilities.

For businesses with global branches, VoIP phone systems make it possible to communicate with users on the same network at no additional cost. For example, your New York office can communicate with your London team if the calls are made directly through the same VoIP platform. 

The Similarities Between PBX and VoIP

While PBX and VoIP phone systems have several differences, the two also share some common ground. 

First and foremost, these are the two top options to consider for business phones. Both VoIP and PBX systems have options for basic local calls and domestic calling. You’ll have the ability to keep your existing phone number, add new phone numbers, and set up custom extensions and new lines for your staff. 

Both systems come with basic business phone features. This includes voicemail, call holding, call transfers, overhead paging, conference calling, and more.

It’s also worth noting that both PBX and VoIP phones are both highly secure. There’s sometimes a misconception that VoIP systems can have security problems because it uses the internet for calling. But this is a non-issue if you’re using a reputable VoIP phone service.

Nextiva security and reliability webpage
Nextiva handles security on your behalf, so you won’t have to worry about it.

For example, Nextiva offers 24/7 monitoring, call encryption, and biometric checkpoints to access their servers. The network also has HIPAA-compliant and PCI-compliant solutions, meaning businesses in every industry can rely on Nextiva for security. 

Final Thoughts About PBX vs. VoIP

PBX and VoIP phone systems are very different. PBX solutions are better for businesses in rural locations that can’t rely on internet connectivity for calls. They also work well for organizations with on-site IT teams and offices that won’t be scaling beyond a single location.

VoIP phone systems are much more cost-effective than PBX phones. They’re easy to use, highly flexible, mobile, and can be deployed anywhere. A VoIP system will be much easier for you to scale and maintain if your business has multiple offices or remote workers. 

Another standout of using a VoIP phone system is that you can often get an entire suite of communication tools with your subscription. This includes video calling capabilities, team chat, collaboration features, SMS messaging, and so much more. 

How To Search For A Developer Job Abroad

Many millions of people dream of flying the coop and spending time working abroad.

The opportunity to work abroad is a popular prospect, one undimmed by the years of restriction due to the pandemic and made only more accessible thanks to hybrid working and the rise of the digital native.

However, despite the still-growing desire to work abroad, many people — including professionals in the IT sphere — don’t know where to start. With that in mind, I wanted to write the ultimate guide for finding international employment opportunities.

The article primarily aims at seasoned developers, focusing on where to look for jobs, how to apply, and how to prepare a resume to get called for interviews. I will explore the dos and don’ts during international job interviews and hopefully provide the right sort of advice that should be able to help any IT professional, at any stage of their career, be able to seek out career options abroad.

So, let’s dive in!

Table of Contents:

How To Prepare Your Resume For Getting A Developer Job Abroad

Let’s start with the basics — your resume.

The critical thing to remember about creating a resume for an international employer is the relevance and flexibility of skills to match your target company’s needs and their specific market.

While there are some hard and fast rules to resume writing that apply no matter where you’re sending an application, your resume needs to be tailored to your new market. This is where a little research goes a long way.

I’ll give you an example: In Malaysia, it’s considered good practice to include your personal details like marital status or date of birth on your resume. However, in other markets, these sorts of details (especially around age, sex, or marital status) are unnecessary or, in some cases, considered inappropriate.

So choose the information you share wisely! Your resume has to reflect your desire to relocate to your chosen market/region, it has to be hyper-personalized in approach, and it needs to sound like you’re passionate about your work.

Resume Length, Format, And Size

  • Depending on your skill set and experience, the details in a developer resume will vary, but I stand by my rule of not making a resume more than 2 pages.
  • Your resume should be formatted in a simple, easy-to-read font (Lato, Merriweather, or Helvetica, for example).
  • You should also include succinct summaries in sections like About Me or Key Achievements. Keep it short, keep it direct, and don’t repeat information.

Achievements

  • Instead of giving generic lists of tasks/duties/responsibilities, I advise you to clearly communicate your achievements and accomplishments, with statistics to back them up. This will help you stand out from other applicants.

For example, if you helped develop an app, make sure you include a variety of proven KPI deliverables, such as engagement KPI metrics, UX KPI metrics, and revenue metrics, rather than just a final product showcase:

Developed a social sharing feature using Android Studio, which increased downloads by 150% in the first three months.

Language

  • Use strong action verbs, such as built, led, deployed, reduced, developed, automated, managed, re-architected, implemented, designed, overhauled, and so on to describe your experience/accomplishments. They will bring a confident tone to your resume.
  • Use industry-specific adjectives like scalable, fault-tolerant, multi-threaded, and robust (to name a few) to highlight your expertise.

Tailoring

  • Tailoring doesn’t mean changing every line of your resume. It means adapting the direction and desire of your resume for a specific employer and their market.
  • Tailoring your application can take many forms: you can write a personalized cover letter, adapt your introductory paragraph to reflect your desire to work at a specific company, add specific terminology used in the job listing you’re applying for, or angle your achievements to the market and needs of a particular employer. It shows you’ve done your research and are willing and able to adapt your skill set to the needs of an employer abroad.

For some great advice on writing an effective developer resume, head to Stack Overflow and FreeCodeCamp for a further deep-dive.

Where Do You Find An International Developer Job?

My advice is to build a strategy based around four key international job-seeking means:

  • Job boards and aggregators;
  • Networking and network news;
  • International recruitment agencies;
  • Boolean search logic on Google.

Jumping onto Google and leaving your international career in the hands of algorithmic fate is not the way to approach getting a developer job abroad.

Job Boards And Aggregators

Job boards and job aggregators (the differences between the two are sometimes vague but transformative to the scale of your international job search) are a popular and effective first port of call for job hunters.

I suggest using job boards for specificity (specific markets and employers in certain countries) and aggregators as overview searches (a generalist overview of where employers are hiring the most and in what sectors).

It’s also important to utilize international job boards that have filters for “relocation” and “visa sponsorship.” In other words, fish in the right pond. Here are some sites I recommend:

  • AngelList Talent is now one of the go-to websites for finding a tech job with a startup.

You need to sign up and complete the mandatory profile information in order to filter for positions that offer visa sponsorship. Once you’re all set up on the site, you can enter your search parameters at https://angel.co/jobs.

If you open the Filters tab, you’ll find a section called “Immigration.” Choose “Only show companies that can sponsor a visa” to narrow your search appropriately.

If you don’t turn on this filter, you’ll find all jobs that meet your other criteria, regardless of whether they offer visa sponsorship.

  • Relocate.me is a job board for IT professionals (mainly software engineers) that is designed with relocation in mind.

You can see job opportunities in Europe, Asia, and North America from verified employers who offer relocation benefits. The listings include specific details about the relocation packages, making it easy to compare your options.

  • Japan Dev is a job board for finding a variety of tech jobs in Japan.

This site features hand-curated jobs from companies that have immediate openings. You can search for positions that offer relocation benefits by clicking the “Jobs with Relocation” button on the home page. You’ll be taken to the Jobs page, where you can further refine your search.

Most of the listings are for software developers and programmers, but other positions for those who work directly with developers are listed as well.

  • TokyoDev is another site that helps foreign developers find positions in Japan.

You’ll be able to filter your search with labels such as “No Japanese Required,” “Apply From Abroad,” “Residents Only,” and so on.

  • Landing.Jobs is specifically for tech jobs in Europe, with a focus on Portugal.

When you’re looking for jobs through this site, be sure to find the “Visa & work permit” filter section and select the options you need.

  • SwissDevJobs is, as the name indicates, specifically for IT jobs in Switzerland.

The site is well-designed, with a modern and easy-to-navigate UI. In the advanced filters, you can narrow your search down to only show jobs that provide visa sponsorship with a simple checkbox.

  • Arbeitnow is based in Berlin and features positions in Germany. It makes it simple to filter for jobs that provide visa sponsorship and many other options.

Indeed, LinkedIn Jobs, SimplyHired, and Monster are major job aggregators that can be very effective when searching for developer jobs abroad if you use the appropriate keywords.

When searching on LinkedIn, for example, you should add “relocation,” “visa support,” or “visa sponsorship” into the keywords tab, and select the city/country/region that’s your choice for relocation. Of course, some searches can come back with opportunities not quite suited to your situation, but using relevant keywords does a good job of filtering them out.

The same method works for Indeed, Monster, and other similar aggregators. Include “relocation,” “visa sponsorship,” or “visa support” along with your job title (or other keywords) in your search.

Networking And Network News

Networking takes time but is a highly effective source of referral recommendations. Utilizing social networks (LinkedIn, GitHub, Twitter, and even Instagram) is a highly personal and effective way of making connections with hiring teams and business leaders worldwide.

But I also urge the eagle-eyed developer to look at the market and network leaders like Hacker News’ Ask HN: Who is hiring? and TechCrunch to see where the movers and shakers are in the tech world and where upticks in hiring are occurring. You can then use these media-led referrals to directly approach companies and hiring managers online, via social media channels, and through their own websites.

International Recruitment Agencies

For a complete end-to-end application handling service, specialist developer support is available for those looking for a little more hands-on guidance via international recruitment agencies.

My suggested best first ports of call are international talent acquisition agencies like Global Skills Hub, Zero to One Search, Toughbyte, Orange Quarter, and TechBrainJobs, amongst others.

Tech companies often outsource hiring international talent to recruitment agencies, so going through a recruitment agency can be very beneficial. In addition to helping you find the right position, a good recruiter can fill you in on all of the relevant information on a company, including company relocation policy, benefits, and more.

Boolean Search

The trick to finding unadvertised yet very alive jobs is by using a rarely-utilized search tool strategy called Boolean logic.

Boolean logic refers to an algebraic formula that creates a clear “true” or “false” value to a data type by using “operator” terms while searching for jobs. For job seekers, “data type” refers to a job vacancy query, and “operator” terms refer to the words used to search for the jobs!

So, applying Boolean logic to a job search very quickly gives you a highly relevant shortlist of live jobs from your chosen country, region, or industry and even from targeted companies’ applicant tracking systems like Lever, Workable, and Greenhouse!

It sounds complex (and the theory behind it is), but the search terms are super effective and simple to deploy. As Reed highlights in their piece on Boolean job searches, “You can use keyword searching almost everywhere, ranging from big search engines through to search functions within smaller sites.”

So, how does it work?

You add the relevant “operator” terms into your search platform or site that refer to specific jobs, skills, or criteria you’re looking for. It’s not as complex as it sounds!

These operator terms are the following:

  • AND: for job searches containing multiple keywords, for example, developer AND javascript AND python will guarantee search results with only those primary keywords as priority indexed terms.
  • OR: for job searches where one of several keywords are prioritized, but not all of them need to be. For example, web developer OR software developer will bring you back jobs with both web and software developer in the title or text, but no other jobs.
  • "" marks: used in searches for a particular phrase or term. For example, putting "mobile developer" into a job search will only bring back mobile rather than other developer roles.
  • *: for searches where you want to start with a certain term. For example, *Engineer will return all jobs that start with the term Engineer, such as Engineering Manager.
  • ( ): when you want to group certain job criteria together. For example, software developer (startup and python) will only bring back specific jobs that fit the startup and tech stack mold you’re looking for.

Example: (site:https://jobs.lever.co OR site: https://apply.workable.com) (engineer OR developer) AND android AND (relocation assistance OR relocation support OR relocation package OR visa sponsorship OR visa support)

Ex-Amazoner Kip Brookbank has a great article on LinkedIn about using Boolean searches to source a job. Make sure to check it out!

Put It All Together

The end result of using all four strategies above is a highly targeted, specific, niche, and personal job search that utilizes the best of digital job searching tools and the international recruitment consultant market.

But above all else, the above four points should drive home the feeling that you can get the perfect international tech job with a bit of patience and consideration using these very effective, free tools at your disposal.

By using each specific search platform’s own location tools, you can narrow down the right sort of opportunities for you. Recruiters offer advice, targeted recruitment support, and hands-on help finding a role. Through networking, you can get job referrals. Finally, using Boolean search removes a lot of the stress of sifting through hundreds of jobs.

Your Primary Considerations When Looking For A Developer Job Abroad

Now you’ve got your resume sorted, and you’re utilizing a raft of different strategies to source your new developer role abroad. So what are your primary considerations beyond clicking the “apply” button?

My advice is to start by building an application strategy (or multiple strategies) that will handle the complexity of relocation and which will keep you focused on building a foundation of credible, flexible professionalism in the eyes of your new employer.

These strategies include some of the points raised above and further details on referral systems, social media approaches, and watching out for red flags!

Application Strategies

My top 5 applications strategies are:

  1. Apply through specific job boards or aggregators.
    As mentioned above, utilize all digital options at your disposal.
  2. Apply with information from company websites.
    Go directly to your chosen company or use Boolean search terms to shortlist your chosen jobs better.
  3. Seek referrals.
    One of the most versatile and personal job search channels, referrals are found via your network and network news.
  4. Contact your target companies’ HR departments through LinkedIn or email.
    Utilizing social media is no bad thing, and LinkedIn is your primary weapon.
  5. Watch out for red flags.
    Get yourself savvy about what constitutes a poor job advert (Workable provides some eye-opening advice on bad job ads), and use Glassdoor and Blind to sift through companies with bad reviews. You might dodge a career bullet by doing so.

Interview Preparation

In my experience working with incredibly exacting tech talent, sometimes the basics of interview prep can get lost in the melting pot of assessment testing and high-value candidate handling.

There are some absolutely crucial dos and don’ts for getting a developer job abroad you must adhere to:

Do:

  • Learn about the company.
    Do your research, understand your employer’s journey, and get under the skin of their company’s purpose and mission.
  • Look up interview questions that the company may ask and consider your answers.
    Prepare for any and every question, from coding to critical thinking, from teamwork to timekeeping.
  • Prepare your own questions to ask to show your interest.
    Your research should guide the types of questions you want to ask your prospective new employer. This is your one chance to mine them for information!
  • Be on time. A basic interview must is not be late.
  • Reiterate your desire to relocate and your plans to do so.
    Although I do go into more detail on this below, international employers will want to know how you plan to factor in a relocation into your application. Better to be prepared than caught out.

Don’t:

  • Criticize or otherwise speak poorly about former or current employers.
    It’s not a good look, shows a lack of professionalism, and will reflect poorly on your exit strategies.
  • Imply that your main interest in the job is relocation.
    Although relocation is important, it shouldn’t be the main reason for moving as it makes the job sound like a means to an end.
  • Say “I don’t know” during the interview.
    Contrary to popular belief, you are allowed to make mistakes in an interview. But rather than so you don’t know, say you’d be happy to provide an answer for it in a follow-up interview or post-interview as you don’t have the right information to hand or something to that effect. In short, indicate you may not know now, but you can find out easily.
  • Ask about salary, bonuses, and benefits during the interview.
    Interviews are designed to determine whether you have the character, skills, drive, and determination for a role. The salary and bonus conversation will come later. It’s not a conversation for now unless an interviewer asks you directly. My advice is to be prepared and know your worth!
  • Forget details on your resume.
    You will be asked about certain points on your resume, and your interview will ask you to elaborate on key points. You must know your resume back to front. If you don’t, you run the risk of looking half-prepared and out of your depth.

How To Negotiate A Job Offer And Navigate Discussions About Your Salary

Contract, salary, and compensation negotiation is a vital moment in your international developer job search. This discussion is not just about money alone; this is your opportunity to talk about everything from relocation packages to IP rights, expat taxes, and more.

  • First things first, do your research.
    Understand the expectations for tech talent in the market (and for the size of the company) you wish to relocate to, and formulate an idea of what you’d want from your pay packet commensurate with the situation of your ideal employer.
  • Be careful about offering salary expectations.
    The best way to approach a discussion around salary is to ask for an offer first rather than put in your expectations based on your research. See if the offer meets your idea of fair pay and relocation package (if offered).
  • Relocation packages
    Does your new employer help with relocation, and if so, by how much and at which stage?
  • Negotiate perks and benefits
    From subsidized travel to commute costs, your employer needs to put a whole package in writing.

Other negotiation considerations should be:

  • Factor in expat taxes: do you pay more tax while working abroad?
  • Discuss intellectual property rights: do you retain any IP in the course of product creation, or are there other options available?
  • Ensure agreement is enforceable: international employment contracts can be a foggy minefield to navigate through, so do your research regarding everything from employer’s rights to e-signing capability.
Relocation, Preparation, And Moving To Your New Developer Job

Relocation is a complex, emotional, and risky endeavor, and never one a developer should take lightly. I advise relocating developer talent to run through a pre-travel hitlist to guarantee smooth sailing:

  • Learn everything you can about your destination.
    The first thing you should do is deep-dive into the place you’re moving to, from intercity travel to the nuances of the local language. It’ll help reduce the culture shock of the first few weeks and months in a new place.
  • Visit your new location before your move.
    I appreciate international travel isn’t cheap, but if it’s possible to visit pre-move, you’ll benefit from a bit of a headstart with getting around and making some local connections. It’s also beneficial when it comes to meeting potential landlords, work colleagues, and so on.
  • Determine the cost of living in your new location.
    Cost of living fact-finding will be done around the negotiation stage. Still, it’s worthwhile understanding how far your salary will stretch and any nuances around pay and tax bandings, cost of living, rent, food, travel, and the like. That’s where websites like Numbeo come in handy.
  • Understand what’s included in your relocation package.
    This is vital. How much of your travel, accommodation, or relocation will be subsidized, if at all, by a new employer? This is a cornerstone of your financial planning arrangements.
  • Consider your family’s requirements in your planning.
    Finally, although it should never be far from your mind and it no doubt won’t be, your family is an important factor in your relocation. I urge you to include them as much as possible in the process and remember the emotional toll of moving away from home to a new country, as much as the physical and financial.

Finding a developer job abroad is a labor of love — one that has to take stock of everything from financial planning to tweaking and perfecting your resume for an international audience.

It takes a lot of preparation, but the results of a well-planned international job search are incredibly rewarding.

Moving abroad for work is one of the most rewarding and life-changing things you can do, especially if you’re a talented worker with an in-demand skill set like software development.

The world is your oyster!

How To Create an Electronic Signature in 5 Simple Steps

If you want to create a usable email signature in a few minutes, SignNow is the best option for most people, thanks to its range of features and how easy it is to set up. You can try it now for free, no credit card required

Once upon a time, everything needed to be signed by hand. But things have changed, and now, having a digital signature is non-negotiable in the digital age. Whether it’s for work contracts, rental applications, or just signing an email, there are plenty of reasons you might need an electronic signature. 

But, having a consistent and professional signature can be challenging if you don’t know how or you don’t have software to help. In this guide, we’ll break down exactly how you can create an electronic signature and how to use it to make your life easier. 

How To Create an Electronic Signature in 5 Simple Steps

The 11 Best Software For Creating an Electronic Signature 

To be able to create a digital email signature, you’ll need to use an online software tool that can help you with the technical side of things. Here are our top picks for the best options on the market right now based on our extensive research into user reviews, functionality, and features being offered. 

  • SignNow – Best value electronic signature software
  • SignWell – Best free electronic signature software
  • SIGN.PLUS – Best electronic signature app
  • PandaDoc – Best for document management
  • DocuSign – Best multi-purpose electronic signature software
  • HelloSign – Best for legally binding documents
  • Adobe Sign – Best for small businesses
  • Signeasy – Best for individual and personal use
  • KeepSolid Sign – Best for signing documents offline
  • GetAccept – Best for B2B sales
  • SignRequest – Best for simplifying the e-signature process
Company logos for our best electronic signature software

Create an Email Signature in 5 Easy Steps

If you use software to help, creating an email signature is fast and easy – it only takes about 5 minutes before your signature is set up and you can start using it. 

Although any of the software we’ve listed above are great options, we’ll be using SignNow for the purposes of this tutorial, because it’s really easy to use, it’s reliable, and comes with plenty of great integration options. Plus, it offers new users a free trial so you can start right away and test it yourself with no commitment.  

Here are the steps we’ll be breaking down for creating your electronic signature:

  1. Sign Up to SignNow
  2. Update Your User Profile 
  3. Manage Your Signature 
  4. Edit Your Signature 
  5. Start Using Your Signature 

Step 1: Sign up to SignNow

The first step to creating an electronic signature is to sign up for an electronic signature software. We’re choosing SignNow because it’s simple to use and multifunctional, so whether you need it for something serious like a contract, or something fun like signing a blog post, there are features to make it easier.  

For new users, you get a free trial, so you can get started without needing a credit card or committing to a plan. Just head over to the home page and click on Free Trial.

Screenshot of SignNow homepage with a red arrow pointing to Free trial button
Start your free trial with SignNow. 

You’ll then be asked to verify your email and add a password to set up your account, and then you’ll be able to access your dashboard and start using the different features. 

There are a lot of different features included, like creating documents or migrating them from Docusign, but we’re just going to focus on using SignNow to create an email signature. 

Once you’re signed up and have access to your dashboard, you can move on to the next step. 

Step 2: Update Your User Profile 

Once you’ve created an account with SignNow, head over to your user profile to set up your signature. 

You’ll be asked to add a little information like your first and last name, and then you’ll get three options for creating your signature. 

The first option is just to get a signature generated for you by SignNow. If you just want something simple, this is an easy option because SignNow will generate a signature with your first and last name, as well as initials, that you can use for any kind of electronic signing. 

Screenshot of SignNow user profile where you can add your signature
Start by creating a basic electronic signature. 

We would recommend trying to create a signature with one of the later steps that looks like the one you do by hand, but if you just want something simple, this works great and will give you something consistent to use online. 

As a word of warning, if you are planning to sign anything important or official, this might be too simple for you. If you don’t have a consistent signature from hand-drawn to electronic, it can make it hard to verify you actually signed something, which is the point of a signature. 

Once you’ve updated your profile and SignNow has generated a basic signature and initials for you, save them and then move on to the next step. 

Step 3: Manage Your Signature

Once you’ve saved your profile in SignNow, click on Manage Your Signature. You’ll then see an option to Add a New Signature – click on this.

Screenshot of SignNow Manage Signature page with red arrow pointing to Add New Signature button
Add your new signature to your profile. 

Once you do, you can choose to either draw your signature with a cursor or upload an image of a signature you’ve drawn by hand. 

Screenshot of SignNow page to add signature with red arrows pointing to Draw Your Signature and Upload Your Signature options
Choose to draw your signature by hand or upload an image of your handwriting. 

Drawing your signature by hand is fast, but it can be a little tricky to create an accurate signature using a keyboard cursor, especially with a laptop. 

It’s easier to create an accurate and professional-looking signature by choosing the draw-by-hand option, but it does take a little longer as you have to take a photo and then upload it for SignNow to scan and convert.

Choose your favorite option, and then once you are happy with a choice, save it, and move on to the next step. 

Step 4: Edit Your Signature 

You might have noticed that when you click the option to add your signature, you also have the option to change the style. 

Screenshot of SignNow page to add signature with red arrow pointing to Change Style button
Customize your signature by choosing a style that works for you. 

If you click on this option, you can customize the auto-generated version of your signature that includes either your full name or initials.

This is another good option if you want to keep things simple but you also want to personalize your signature. For example, if you’re using a signature mainly for branding purposes, like adding a signature to commercial emails or to blog posts.

Screenshot of SignNow signature style options
Examples of different styles to choose from. 

Once you’ve played around with the different styles and formats, you can choose your favorite signature and make it your default. 

Then, move on to the next step. 

Step 5: Start Using Your Signature 

Once you’ve created your electronic signature, you can then start putting it into practice. 

One of the best things about SignNow, and one of the reasons we recommend them, is their great functionality when it comes to using your signature. 

Not only can you upload all your documents directly into the platform by uploading them from your computer or from a cloud service, but you can also integrate SignNow with tons of other platforms to help you add your signature easily. 

These include cloud storage options like Box and Google Drive, as well as things like Gmail and Microsoft word. 

Screenshot of SignNow Integrations page
Integrate your signature into different business apps you use. 

You can also create your own documents and send them to other people asking them to sign, or share signed documents with your team. Depending on what you need to do, you’ll likely find an integration available in SignNow that lets you use your signature wherever you want to. 

Final Thoughts About Creating an Email Signature 

As the world becomes more digital, it’s pretty much a necessity to have an electronic signature. And when you consider how useful it is to have one and how easy it is to set up, there’s really no downside to creating an online signature. 

Especially when combined with document signing software like SignNow, you can elevate your branding and sign documents safely with virtually no effort on your part. You can try them for free here and create your own electronic signature in minutes. 

How To Start an LLC in Indiana in 5 Simple Steps

Want to get started right now? Click here to sign up for ZenBusiness and start your LLC today.

Most new entrepreneurs exploring the market and setting up a business juggle various roles at a time and have limited time and budget. Therefore, it can be challenging for them to start an LLC.

Nowadays, several LLC service providers are available in the market. The Online LLC setup process provides cost-effective, fast, and reliable services to help you register an LLC without hassle. 

These experienced service providers save you from the red tape and provide simple solutions to start an LLC in no time.

Let’s look at the various steps you need to follow to start an LLC in Indiana.

How To Start an LLC in Indiana in 5 Simple Steps

The 7 Best LLC Services For Starting an LLC in Indiana

You can avail the services of a reliable LLC service provider to easily create an LLC without any problem. To choose an LLC service, we recommend comparing each service’s pricing, plans, and benefits. We have shortlisted the seven best LLC services on the market today:

Start an LLC in Indiana in 5 Easy Steps

Whether you create an LLC on your own or with the help of an LLC service, you are required to follow specific steps. Each state in the US has different laws and regulations for the creation of LLCs. Therefore, the specific steps can differ based on the state you reside in.

To start an LLC in Indiana, here’s what you need to do.

  1. Select a name for your Indiana LLC
  2. Provide an official business address for your Indiana LLC
  3. Take the services of a registered agent for your LLC in Indiana
  4. File your Indiana LLC articles of organization
  5. Create an operating agreement for your Indiana LLC 
  6. Get an Indiana LLC employer identification number (EIN)
  7. Submit your biennial business reports to the Indiana Secretary of State 

Step 1: Select a Name For Your Indiana LLC

The first step is selecting a name for your company. When choosing a name, it is crucial to carefully analyze and choose a name that follows the LLC naming guidelines of Indiana. You can easily search for the guidelines online.

Follow Indiana’s Naming Guidelines

Some of the rules that you must follow for naming an LLC in Indiana are:

  • Whichever name you choose must be followed by or include the phrase “Limited Liability Company” or its abbreviation “LLC.”
  • Any words in your company’s name that link it to or resemble a government agency’s name like the FBI can land you into legal problems.
  • If you want to use a restricted word like bank or university, get a license first to avoid any legal complications.
  • The name of your LLC must be unique and should not resemble the name of any Indiana LLC, limited partnership, corporation, or limited liability partnership.

You can easily use the LLC name availability checker to ensure that the name of your LLC isn’t already taken and is unique. You can also reserve a name by submitting a name reservation request to the Indiana Secretary of the State. Just apply online, however, if you do it by post, it can cost you around $10.

Ensure the Availability of the URL

It is crucial to ensure that the URL for your business name is also available before selecting the name of your LLC. Moreover, it is recommended to buy a URL for your company even if you don’t plan on creating a website. Ensuring availability and buying the URL prevents any future legal battles over your company’s name.  

Using an Assumed Business Name

You are allowed to use an assumed name for your business for informal purposes. You can register the assumed name of your LLC with a county in Indiana, where your LLC operates.  

After choosing a name for your LLC and securing a URL, your next step should be to select an LLC service provider to complete the process of registering an LLC. We recommend using ZenBusiness, which helps you get started within minutes.

Step 2: Provide an Official Business Address For Your Indiana LLC

In Indiana, every LLC needs to have an official street address. You can select the address of your home, office, or any other physical location as your official LLC address. The address is essential as it will go into public records and any relevant documents from the state will be received at the provided address. 

If you find it challenging to secure a physical location for your LLC, you can use the address of a virtual mailbox. However, it must not be a PO box address. Another way to get an official address is by registering with an LLC service provider who will receive your mail for you and provide you with an address. Registering an LLC service’s address as your official LLC address can be beneficial for people who work from home and don’t want their private address to go public. 

Step 3: Take the Services of a Registered Agent For Your LLC in Indiana

In the state of Indiana, it is mandatory to nominate a registered agent who will help you in the process of forming an LLC. Individuals and companies both can provide LLC creation services. The LLC agent or services that you choose should help you resolve any legal problems that your LLC may encounter. For example, if someone files a lawsuit against your LLC, your LLC agent or service should take responsibility and resolve the issue.

Moreover, the registered agent is also the point of contact for your business which means any tax forms, legal notices, or other official correspondence will be sent to them. 

Your registered agent must fulfill the following criteria:

  • The chosen agent should be a resident of Indiana
  • The chosen agent should have an address in Indiana

If you are taking an agency’s services, ensure that the selected company is allowed to do business in Indiana.

Step 4: File Your Indiana LLC Articles of Organization

The next step in the process of an LLC formation is to file articles of organization with the Indiana Secretary of State. You can file the article of organization with the Secretary of State Business Services Division. These articles must include:

  • The name of the LLC
  • The email address of the LLC
  • The address and phone number of the main office of the LLC
  • The name and address of the registered agent of the LLC
  • The names and addresses of all the people signing the articles
  • The signature of the organizer, a member, or representative
  • The date of the articles from when they become effective
Sample of the top half of a form for filing Articles of Organization.
Sample of a form for filing Articles of Organization.

You can file these articles online or send them by mail.  

Step 5: Create an Operating Agreement For Your Indiana LLC 

An operating agreement is an essential document that helps you run your LLC without any problems. It helps clarify various company tasks like how profits and losses will be shared, which members will be authorized to conduct business, and more such decisions. 

An operating agreement highlights the duties, obligations, rights, powers, and liabilities of all the members of an LLC. It is an internal document that helps to easily run your LLC. 

In the absence of an operating agreement, the state laws will have more control over the fate of your company. In the case of a new LLC without an operating agreement, the articles of organization and limited liability company agreement automatically become the operating agreement of the company.

Other benefits that an operating agreement provides are:

  • It helps resolve disputes among members
  • It helps protect the company’s LLC status
  • It helps to protect operational flexibility
  • It aids in opening financial accounts
  • It ensures that your business runs smoothly

A good operating agreement must specify whether your LLC would be managed by a member or a manager.

Member-Managed LLC

All the owners and members of an LLC collectively manage and operate the operations of a member-managed LLC. 

Manager-Managed LLC

In manager-managed LLCs, a few chosen members manage the main operations of a business, whereas a few other members act as passive investors who don’t engage in the business operations.

Step 6: Get an Indiana LLC Employer Identification Number (EIN)

You have to comply with all tax and regulatory requirements that apply to your LLC. Some of the requirements include:

Employer Identification Number (EIN)

You can obtain an employer identification number from the internal revenue service. It is necessary to get an EIN even if you don’t hire any employees. Moreover, an EIN is also essential for a one-member LLC that is registered as a corporation to solve any tax-related issues. 

Business Licenses

The location of your LLC or the type of business that you do may require you to obtain specific local and state business permits or licenses for your LLC. Information about state licenses can easily be found online. However, to get a local license, you need to check with the clerks of the city in which your LLC is located. 

Department of Revenue

You may have to register your LLC with the Indiana Department of Revenue based on the type of business your LLC operates. For example, if you plan to hire employees, sell goods, and collect sales tax, you have to register with the Department of Revenue. The Department of Revenue has a straightforward online application process that helps you conveniently register and get started.

Step 7: Submit Your Biennial Business Reports To the Indiana Secretary of State 

Once you have created an LLC in Indiana, it is essential to stay on top of Indiana’s filing deadlines to avoid unnecessary fines and maintain a good reputation. 

All the LLCs in Indiana are expected to file biennial business reports with the Indiana Secretary of State. These reports should regularly be filed after every two years to update the information regarding your business.

The information can include:

  • The name and address of your registered agent
  • The address of your main office
  • Name, email addresses, and official addresses of the members, managers, directors, and officers.

Moreover, an LLC report also specifies the activities of your business, details the finances, and highlights the growth strategy. Another reason to file a biennial report for your business is to maintain an active LLC status.

The primary purpose of the report is to keep your business records up to date with the State of Indiana. The government can use these records to track your LLC’s sales tax payments. Moreover, creditors and other parties can use this information to contact you.

You can file your report online or send it by mail. It is important to note that the failure to file your biennial report can result in the dissolution of your LLC. You can take the services of a registered agent to maintain privacy, avoid late filing penalties, and gain more flexibility. 

Final Thoughts About Starting an LLC in Indiana

Starting an LLC can seem like a daunting experience. However, if you carefully read the rules and regulations and correctly follow the steps, it is a simple process. Many businessmen may not have enough time to handle all the aspects involved in establishing an LLC. Therefore, it is always easier to take the services of an LLC service to avoid any mistakes and quickly create an LLC in any US state.

There are seven steps involved in the creation of an LLC in Indiana. First, you must select a name and physical address for your LLC. Contact a registered agent and file your articles of organization. Afterward, create an operating agreement and get your EIN. Ensure that you follow all the deadlines and regularly submit a biennial report to maintain the active status of your LLC.  

Multi-Cloud vs. Hybrid Cloud

Cloud environments have become a necessity for modern organizations across all industries. But choosing the right cloud computing system for your company size, goals, and infrastructure can be challenging. 

“Multi-cloud” and “hybrid cloud” are two terms that are often used interchangeably, but they’re not the same. Understanding the key differences and benefits between these cloud environments will help your business grow and ensure you have the right cloud computing system that addresses your unique needs. 

This in-depth guide will explain everything you need to know about multi-cloud and hybrid cloud, including tools, tricks, and best practices for success.

The Top-Rated Cloud Storage Services For Multi-Cloud and Hybrid Cloud Environments

In addition to cloud computing, your organization needs to have a cloud storage solution to safely store assets—and these are the best options on the market today:

You can read our full reviews of the best cloud storage services here

Company logos for our best cloud storage services

What is Multi-Cloud and What is Hybrid Cloud?

Multi-cloud refers to a cloud computing infrastructure involving multiple cloud services that perform different functions, such as SaaS, IaaS, and PaaS. Most multi-clouds include at least one public cloud service, with each solution coming from different providers.

A hybrid cloud environment always includes at least one private cloud in addition to public cloud services. The data and processes of a hybrid cloud typically work together to complement each other, managed almost like a single entity.

In short, multi-cloud infrastructures blend two or more of the same type of clouds, while hybrid infrastructures blend two or more different cloud types. 

The Basics of Multi-Cloud vs. Hybrid Cloud

Let’s take a closer look at the core components of multi and hybrid clouds. This will help you understand how these cloud environments work while comparing the similarities and differences.

Data Storage

Storing, protecting, and easily accessing sensitive data must be a priority for every organization. So when you’re looking for cloud solutions, this needs to be a top-of-mind initiative. 

Both multi-cloud and hybrid cloud environments use infrastructure that combines different clouds. So in each scenario, storing sensitive data will be crucial to operations and infrastructure design.  

You can store your data on-premise, on a private cloud, in a public cloud, or on an internal server. As long as the data is safe, backed up, and accessible, each type of cloud infrastructure can support sensitive data storage.

Security

Securing your cloud environment relies on the system’s architecture. 

If you’re using a system that involves multiple public clouds, you’ll need to evaluate the security protocols and reliability of your cloud service providers and vendors. These providers should have processes and protocols in place to protect you from both internal and external threats. 

Organizations that want more control over data encryption, endpoint security, access controls, and other system configurations can think about deploying a private cloud. This pairs multiple public services with a private cloud, resulting in a hybrid cloud environment. 

Regulatory Compliance

Some organizations must follow industry-specific rules and regulations. This might include HIPAA, GDPR, PCI, or similar protocols. 

You might be able to find public cloud service providers that offer these industry-specific solutions out-of-the-box. So it’s typically in your best interest to seek out these providers that likely have better cybersecurity resources than private cloud solutions. 

If you’re also dealing with highly sensitive data storage, such as patient data or payment information, you need a cloud environment that is highly controlled and secured. You might be able to get this directly from public cloud providers. But sometimes you may need a hybrid solution that involves some type of private cloud in your infrastructure. 

System Architecture

Multi-cloud systems mix different cloud solutions of a similar type. But there isn’t any communication between the systems, as each solution is used for different purposes. 

A multi-cloud architecture also lacks a centralized management system for the network, and data is stored on at least two public clouds. 

Hybrid cloud architectures contain at least one public cloud service and at least one private cloud or on-premises data center. All of the infrastructures can be managed from a single source of truth with the capability of identity management, cloud monitoring, alerts, and more. This higher level of interconnectivity makes it possible for public cloud solutions to behave as an extension of the private cloud architecture. 

Many hybrid solutions also utilize private clouds and on-site data centers to store sensitive data. So certain records aren’t kept in the public cloud services. 

System Availability

Multi-cloud systems rely on vendors for availability. If one vendor has a problem, you’ll need a backup system so end users don’t have any downtime. 

With a multi-cloud infrastructure, you can also set up separate public clouds that are closer in location to different users. This type of deployment solves problems related to latency for users in different regions. 

Availability for hybrid cloud systems falls on the shoulders of in-house IT teams. That’s because the entire workload is based on private clouds or on-premises systems. 

As a result, hybrid clouds could have more issues with downtime if there’s a failure on a public or private cloud. Some downtime is inevitable if there’s a traffic spike or something goes wrong.

Vendor Lock-In

Multi-cloud organizations are vendor-independent—meaning they aren’t locked into a relationship with a single cloud services provider. Workloads and processes can easily be changed so that new vendors can be added, old vendors can be removed, and any vendor can be changed. 

You may want to change vendors based on technology, cost, experience, location, or other factors. Regardless of the reason, multi-cloud systems are the easiest if you want to adapt and change with ease. 

Hybrid clouds require more integrations between public cloud systems and private clouds. This presents more challenges when you’re changing or moving to a new vendor. While they’re not necessarily locked in and unable to change, cloud organizations could experience significant downtime as they’re transitioning from one vendor to another. 

3 Tools to Improve Cloud Computing for Multi-Cloud and Hybrid Cloud

Below are the top tools that we recommend for implementing and managing your cloud environment. 

#1 — VMware

Screenshot of VMware homepage
WMware has tech just for multi-cloud.

VMware offers cloud computing technology that’s specifically designed for multi-cloud environments. You can use the service to simplify your multi-cloud systems while adding enterprise-grade security.

With VMware, organizations can run enterprise apps from anywhere and scale operations across public cloud environments. The solution can even be used to add enhanced visibility and governance across multiple public clouds, which would otherwise be challenging in a multi-cloud deployment. 

#2 — Azure Stack

Screenshot of Azure Stack product overview webpage
Azure Stack can handle all cloud infrastructure.

Some tools on the market are designed for multi-cloud, while others are built for hybrid cloud. But Azure Stack can accommodate both types of cloud infrastructures. 

Developed by Microsoft, Azure Stack has multiple solutions for both hybrid and multi-cloud systems. It’s an excellent product for businesses that need to meet regulatory and data sovereignty requirements, which is why it’s a top choice for industries like healthcare, financial services, and government. You can also use Azure Stack to speed up your cloud migration process with its simple tools, resources, and dedicated training. 

#3 — Kubernetes

Screenshot of Kubernetes homepage
For hybrid Cloud and IT teams.

Kubernetes is an open-source solution for enterprise IT departments managing a hybrid cloud. It’s a way for tech teams to leverage both on-premises and public cloud infrastructures with flexibility and consistency. 

You can use Kubernetes to quickly move workloads and applications to different parts of your IT environment. The solution has been used to help organizations migrate over 150+ different cloud services to a single source of truth for scalability and management. You’ll never outgrow Kubernetes, and you can use it to deliver applications consistently from a hybrid cloud setup.

5 Best Practices For Cloud Computing With Multi-Cloud and Hybrid Cloud

As you’re deciding between a multi-cloud or hybrid cloud environment, there are several things you need to keep in mind. The following best practices will not only help you choose the right cloud system, but they’ll also help you deploy, manage, and scale your organization.

#1 — Start With a “Cloud First” Mindset

Before you select and deploy a cloud computing system, you must first prepare your organization for a cloud shift. This goes beyond your IT department and involves a company-wide approach to define your business technology. 

Whether you’re using a multi-cloud or hybrid cloud approach, neither will be totally effective if you don’t have a cloud-first mindset. 

This mindset helps you start to move away from your legacy systems and outdated tech, and look for replacements that are available as cloud services.

It’s worth noting that not every application and process is suitable for a cloud deployment. So you may need to refactor some of your enterprise applications if you want to move them to the cloud. 

#2 — Look Ahead for Your Future and Growth

Migrating to the cloud is not a one-time occurrence. It doesn’t happen overnight, and the changes will define your organization in the long run. 

For both multi-cloud and hybrid cloud deployments, you need to understand that your infrastructure and resources will eventually evolve. Planning for that evolution will help you choose the right systems and services for your goals. 

You should be looking for ways to acquire new skills and knowledge related to cloud systems. Understand the differences between vendors and systems.

Some cloud migrations can take multiple years. So start with a plan to map out exactly what that migration process will look like. Then re-evaluate that plan on an annual or semi-annual basis based on your progress. 

#3 — Implement a Process for Continuous Assessment

Cloud service providers are constantly changing offerings. A single provider could be the best available option for your needs today. But that could quickly change in a few months as your needs change or their services evolve. 

So you need to have a system in place to constantly assess your vendors. 

Does their technology still support your needs? Do they have new technology as a separate service that you should be leveraging? Is there another vendor on the market that can better support the initiative in question?

Assessments can be scheduled on a quarterly, semi-annual, or annual basis. But you can also have ad-hoc assessments based on needs if something happens or a unique situation arises that requires some extra attention for a vendor. 

#4 — Prioritize Management and Governance Rules

Governing systems through multi and hybrid cloud environments can be challenging. 

Hybrid systems give you more flexibility and control, but they’re harder to set up and maintain. Multi-cloud systems are easier to deploy, but governance is difficult because the solutions aren’t managed from a single location. 

Regardless of which system you choose, you need to think about the way you’re going to manage each cloud service. If you’re not going to manage everything under a single entity, you need to have rules in place for each public cloud so that your team can appropriately control access and secure the environment. 

You should also have systems in place that can track the consumption of your cloud service usage, which will help you with this initiative. 

#5 — Look at Individual Workloads in Your Cloud Environment

Cloud applications hosted on-site could potentially be replaced by SaaS. Generally speaking, moving to SaaS will be more cost-effective than PaaS or IaaS.

So you can look at the individual workloads of your cloud computing systems to see if the process can be handled by a different SaaS tool. Modern cloud-native applications are typically more agile than legacy applications. 

In some cases, the applications you’re using for individual workloads may become obsolete. Shifting to a public SaaS could be the only answer. 

What to Do Next

Now that you understand the differences between multi and hybrid cloud systems, it’s time to decide which solution will be better for your organization. The easiest way to start this process is by moving on-site data to a public cloud. You can use our reviews of the best cloud storage services to compare the best options on the market today. 

From there, you can continue to evaluate your systems and see if it makes more sense to continue deploying multiple cloud services for different processes. If you decide that you want to go with a hybrid approach, you need to prioritize IT security. You can compare the best endpoint security software as a starting point. 

Dropbox Alternatives and Competitors

Our favorite Dropbox alternative is IDrive because it’s secure, offers top-notch backup services, and comes at an affordable price. Save 25% on a one-year subscription or 50% on the first year of a two-year subscription. 

Dropbox has been a reliable way for teams to upload and share files for over a decade. The company states that it has over 700 million registered users, including National Geographic, Lonely Planet, and Servcorp. While the brand is definitely on our list of the top cloud storage software services, it’s far from the only choice. 

The research team at Quick Sprout spent hours scouring the web, testing services, and analyzing reviews to find the top Dropbox alternatives and competitors. 

The 5 Best Cloud Storage Services

IDrive offers users a reliable, affordable, and super-efficient cloud storage service. Plus, it suits companies both large and small, providing them with a secure place to back up important files. Get the first-year promotion of 25% off a one-year subscription or 50% off the first year of a two-year subscription when you sign up with IDrive. You can also see our top list of the best cloud storage services here. 

Company logos for our best Dropbox alternatives

IDrive – Best for Backups

Company logo for IDrive, one of our best Dropbox alternatives

Founded in 1995, IDrive has nearly 30 years of experience providing backup services. Impressively, IDrive has kept up with its competitors and continues to emerge as a leading player in the backup software space. 

IDrive offers multiple-device backup, online file syncing, electronic and physical backup retrieval, a history of each file going back 30 versions, and 256-bit AES encryption for security.

We love that IDrive offers a range of plans to fit any company’s needs, including a free plan that gives users up to 10 GB of storage—and doesn’t require a credit card. Paid plans offer a lot more storage space and begin at $59.62 for the first year.

How IDrive Compares to Dropbox 

IDrive is best for businesses that want a no-nonsense backup service, while Dropbox is ideal for brands of any size that want file sharing and document signing services in addition to cloud storage. 

We evaluated these two brands according to three criteria: syncing, integrations, and scalability.  IDrive does back up files on a semi-automatic basis—if you put them in the relevant Sync folder. 

An example of how IDrive’s Sync folders look.
An example of how IDrive’s Sync folders look.

Dropbox, on the other hand, automatically backs up all the files on your computer once you install the Dropbox app and set up Dropbox Backup. Dropbox Backup is available on every paid Dropbox plan. It’ll also automatically back up any external hard drives that are plugged into your computer. If you like automatic syncing, you’ll prefer Dropbox. If you’d rather pick and choose what to sync, IDrive is for you.

Dropbox offers integrations with popular apps like Google Suite, Salesforce, Slack, Adobe, Microsoft Office, Zoom, AWS, Canva, and Autodesk. IDrive does not. If you don’t use any of those apps, that won’t be a problem. 

Both services scale well, offering affordable rates for 5 TB of storage, although Dropbox claims it’ll give you as much space as you need at a rate of $24 per month. IDrive gets pricey when you get much past 5 TB. 

Microsoft OneDrive – Best for Home Use

Company logo for OneDrive, one of our best Dropbox alternatives

If you’re already a devoted PC user, you’re probably already using Microsoft OneDrive. This online backup service is ideal for families who want to share photos, files, and other documents seamlessly—and securely—across devices. 

It’s less optimal for business use, but Microsoft OneDrive does offer business plans in addition to its personal plans. Plus, OneDrive has a free plan that gives you up to 5 GB of cloud storage space. Its additional plans are all affordable, too, with business plans beginning at $5 per month

How Microsoft OneDrive Compares to Dropbox

When it comes to syncing capabilities, integrations, and scalability, Microsoft OneDrive and Dropbox are pretty even. Both come with automatic syncing, along with syncing of external hard drives when they’re plugged in. Both also let you upload photos and videos straight from a plugged-in camera. 

Microsoft OneDrive and Dropbox both come with a robust suite of integrations, including Microsoft Office, Salesforce, DocuSign, Trello, Zoom, Google Suite, and Slack. 

An example of some of the solutions and integrations you’ll get with OneDrive.
An example of some of the solutions and integrations you’ll get with OneDrive.

In addition, both services come with impressive scalability. Microsoft OneDrive lets business users utilize up to 25 TB of storage, but it takes a bit of hoop-jumping to get there. Dropbox scales with you as much as you need it to. 

Microsoft OneDrive can work for businesses, but the business plans and features can be trickier to navigate than those for Dropbox—there are multiple business tiers offering different groupings of features, and you have to read the fine print to get information on how much storage space you’ll get beyond 1 TB. 

Google Drive – Best Free Cloud Storage Service

Company logo for Google Drive, one of our best Dropbox alternatives

You’re probably already familiar with Google Drive if you have a Google Workspace account of any kind. Google Drive is the cloud storage powerhouse that backs up everything you work with in Workspace, like files produced in Google Docs, Google Sheets, and Google Forms.

But Google Drive backs up more than just Google Workspace files. You can back up PDFs, Word documents, photos, and other files on your computer or mobile device. Google Drive’s best feature is its robust free plan, which gives users up to 15 GB of cloud storage space for free. The Business Standard plan, which comes with 2 TB of space for each user, begins at just $12 per user per month.

How Google Drive Compares to Dropbox 

Google Drive and Dropbox exist on such a level playing field that it all comes down to preference. If you’re already familiar with Google Workspace, utilizing Google Drive to upload more files from your computer makes more sense than switching to Dropbox. But you can use either service and enjoy high-quality, high-capacity file sharing and storage capabilities. 

When we analyzed Google Drive according to syncing capability, integrations, and scalability, we found that it matched up with Dropbox in just about every way. Like Dropbox, Google Drive comes with automatic syncing after an initial setup.

Google Drive offers many of the same integrations Dropbox does, including Asana, Adobe, Slack, Trello, and DocuSign. However, Google Drive also wastes space with many poorly rated, obscure integrations that you’ll probably never use, and it doesn’t come with a Canva integration.

A sampling of Google Drive’s integrations, some of which are high-quality and some of which aren’t.
A sampling of Google Drive’s integrations, some of which are high-quality and some of which aren’t.

All in all, both Google Drive and Dropbox work well for individuals or large companies. It all depends on what you prefer—and Google Drive does have an edge in its free plan, which offers 15 GB compared with the Dropbox free plan’s 2 GB limit.

Apple iCloud – Most Intuitive Cloud Storage Service

Company logo for Apple iCloud, one of our best Dropbox alternatives

For Apple users, iCloud is the built-in cloud storage solution that keeps music, notes, videos, files, and photos safely stored in the cloud. All Apple products come with iCloud storage of up to 5 GB. 

With iCloud+, users can get up to 2 TB of storage. iCloud+ comes with HomeKit Secure Video capabilities, a Hide My Email function, and Family Sharing. iCloud+ is also rolling out a private web browsing feature called Private Relay. 

Plans begin at $0.99 per month for 50 GB of storage

How Apple iCloud Compares to Dropbox

iCloud is ideal for personal use, but it doesn’t stack up as a business solution. Like Dropbox, it comes with automatic syncing, along with automatic full backups when devices are connected to WiFi and power. However, iCloud doesn’t come with any integrations, and its scalability is limited to 2 TB per user. It’s ideal for freelancers, particularly those who work in photography, as its photo storage is phenomenal. 

Apple does have a solution for small businesses, though. It’s a newer service called Apple Business Essentials, and it comes with automatic backups, management of third-party apps the business uses, and other IT essentials. Because it’s new, it’s hard to gauge how much people use or like this service. 

Screenshot of Apple Business Essentials webpage
Apple Business Essentials is geared toward IT and app management for small businesses.

In addition, Apple Business Essentials doesn’t come with any extra storage. Even its most expensive plan is limited to 2 TB, making it difficult for mid- to large-sized companies to use it. Individuals who already use Apple products, along with small businesses that are invested in the Apple ecosystem, will benefit the most from iCloud+ or Apple Business Essentials. 

Contact Center vs. Call Center

Disorganized customer service can quickly lead to lost business, dissatisfied consumers, and points against your reputation. To create a positive experience for everyone involved, your team needs a solution that boosts their confidence in handling customer issues while directing customers to the right places.

With a contact center or call center, your business gets a tool that ensures customers speak to the right person to resolve their problems. However, these solutions work differently, even though they serve a similar purpose. Before you buy one, know which services work best for your business.

Top-Rated Call Center Services to Optimize Customer Service

The right call center or contact center service can transform your business and allow you to help more customers than ever. Explore these options to see which one matches your customer service needs.

  • Nextiva—Best overall
  • Go Answer—Best inbound call center outsourcing for small business
  • TeleDirect—Best call center service for managing reservations
  • Five Star Call Center—Best outbound call center outsourcing
  • SAS—Best outsourced call center answering services
  • Signius—Best call center service for low-volume calls

You can read our full reviews of each call center service here.

What Are Contact and Call Centers?

A call center handles incoming and outgoing calls from customers to a business. Call centers are generally limited to voice communication. Call center agents typically handle customer questions and support, telemarketing, market research, and similar types of communication.

A contact center serves a similar purpose, but instead of being limited to phone calls, it uses omnichannel support. In other words, customers can contact agents by phone, chat, social media, email, or website contact forms, depending on which channels a particular business uses.

The Basics of Call Centers and Contact Centers

Call centers can prove a valuable tool for keeping your team organized and efficient. Here’s what you need to know about how they can help your business.

Voice Calling

Screenshot of Nextiva page for business VoIP built for teams

Voice calling is the primary feature of most call center services. It allows agents to answer incoming calls and make outgoing calls. For example, a call center’s voice calling feature lets an agent accept calls from customers who have questions, as well as make telemarketing calls for the business.

With this feature, customers have a direct connection with someone who can help them. It increases trust between customers and your brand when the customer knows someone is available to help them with their problem, whether they have a technical issue or want to return their purchase.

While voice calling once meant picking up the phone, today’s VoIP services make voice calling even simpler with the cloud. This method of voice communication allows for more flexibility among call centers, so they can handle multiple lines and create more efficiency with one-click calling systems.

Ideally, call centers come with the ability to direct customer calls, too. When calls go to the person who has the knowledge to handle specific questions or problems, customers walk away satisfied with their experience.

Call Recording

With call recording, you can store previous calls made with your call center. It allows you to reference previous inbound or outbound calls when necessary and save them as long as you have enough storage.

Call recording isn’t available with every call center, but it’s a critical feature for improving the customer and agent experience. Agents and customers can rest assured that should something go wrong on their call, there’s evidence of what happened.

Additionally, call recording helps train new agents. When they can listen back over their previous calls, they can understand where they can improve and where they did well. That allows them to refine their script and help customers more effectively.

Video Conferencing

Video conferencing helps you connect with your team through video and audio. It improves collaboration by allowing you to make a call within your organization or to a client outside it. This feature can come with helpful tools, including screen sharing, that make it easier to communicate ideas and information.

Video conferencing can be hit or miss with call centers, and you may want to go with a contact center for this option. Contact centers often have more comprehensive services, whereas some call centers focus more on the phone aspect without giving other types of communication the attention they require to be useful.

Voicemail

Screenshot showing Nextiva features: Auto attendant, call waiting, video conferencing, text messaging, call recording, call waiting, voicemail to email, and unlimited calling

Call centers and contact centers typically have voicemail service as an essential component. Many businesses can’t offer 24/7 customer service, especially by phone. With a good voicemail system, customers can leave messages so that agents can return their calls and help them when they are available.

Many call and contact centers can transcribe these messages to email or SMS. However, this depends on the service, and the transcriptions aren’t always accurate. If a customer has poor cell phone reception, for example, it can be difficult to understand whether you listen to or read their message.

Email and SMS

Both contact and call centers usually have email and SMS services. Along with voicemail to email, these services typically allow you to send text messages to your customers for business communication. For example, with a contact list with customer emails and phone numbers you can send out promotions, deals, sale information, and more without interrupting their day with a phone call.

Many contact and call centers also let you use SMS in-house. The software allows you to open a new chat to get in touch on any device, even if they work from home. It creates more efficient communication so that not everything has to be a meeting.

Social Media Channels

Screenshot of Lead Response Management page

Many businesses use social media to promote their products and engage with their audience. You won’t typically find social media channels in a call center service, but contact centers offer more text-based options, like chat and social media.

Most customers interact with and discover brands on social media. Whether through ads or the brand account, having a reliable contact center that lets you answer customer questions and comments in one place increases engagement. It allows you to show customers you’re paying attention, and a contact center can condense your social media operations so that you don’t have to jump between each account.

Self-Service Options

Call center services have limited self-service options, and they’re usually limited to finding basic information on your business. Contact centers allow customers to use keywords, frequently asked questions, and other scripted elements to get the information they need without contacting a customer service representative directly.

A self-service option in your contact center reduces the workload on your agents, resolves questions and issues faster, empowers the customer, and creates a more inclusive and convenient way for customers to get what they need. Self-service contact centers also lower costs, shorten call queues, and let your agents focus on answering complex, in-depth questions customers can’t find on their own.

5 Tools to Improve Contact and Call Centers

Improving your contact or call center may mean choosing a call center service to support your agents. These solutions all have excellent capabilities for creating more efficiency and reducing overwhelm while boosting customer satisfaction.

Nextiva

Nextiva pricing plans

Nextiva earns the best overall spot for enhancing your contact center. It uses the cloud to connect your team, so your agents can work from home and from anywhere in the world.

Its VoIP system is a quick setup, and it’s affordable at $14.95 per user per month for its Essential package. That plan comes with unlimited voice calling, unlimited video calling, and free local and toll-free phone numbers. Plus, if you want to automate your service, you can do that with this plan.

Even the Professional package at $20.95 and the Enterprise plan at $26.95 are fairly cheap for what they offer. Professional adds collaboration tools, business texting, and voicemail to email and SMS. Enterprise offers call recording and voice analytics, so you have tools to help you train your agents and satisfy customers.

Go Answer

Go Answer services, including answering services, contact centers services, and legal intake services

When your team isn’t around to field calls and messages, Go Answer is. Outsourcing your calls and messages to them means that no matter what time of day your customers need help, they can find it by phone, chat, SMS, and email. Go Answer has options to help your business no matter your industry, including:

  • Medical
  • Legal
  • Finance
  • Real estate
  • Publishing
  • Ecommerce

Go Answer customizes their help to your business, and they can handle large call volumes. With Go Answer’s free trial, you can try the solution for 30 days, and the company gives you a free quote tailored to the services you need.

TeleDirect

TeleDirect home page

TeleDirect specializes in managing reservations, order processing, and technical support. They work across varied industries and they handle outbound calls as well as inbound ones.

With TeleDirect, you can conduct market research and generate leads as well as register customers for events. TeleDirect works for businesses of all sizes, whether you need after-hours support or a 24/7 team to field calls. The company doesn’t publish its prices online, so you have to call to get a custom quote.

Five Star Call Center

Five Star Call Center home page

Five Star Call Center works for businesses that handle B2B and B2C calls. Its agents can generate leads, perform quality assurance, send payment reminders, and follow up on previous calls.

While Five Star Call Center offers a wide range of outbound call services, they specialize in:

  • Finance
  • Healthcare
  • Hospitality
  • Product support
  • Professional services
  • Retail

These specialties make them work well for many different businesses, but if yours falls outside of those listed, you may want to try another service. The company is based in the United States, so it may not work well for all international businesses.

Signius

Signius Communications home page

When you only need to handle overflow or after-hours calls, Signius may be the best choice. The company works to learn about your business before its agents handle your calls to become a more impactful part of your team.

They offer services that include setting up hotlines, customer care, taking orders, and functioning as a help desk. Signius makes it worth your while as a small business owner and offers a free consultation to determine your needs and pricing.

4 Tricks for Call Centers and Contact Centers

When you want to improve your call center or contact center, you can take some quick, simple actions to make sure you and your agents have all the tools for success.

Train Your Agents Well

Screenshot of page that says A Better Customer Experience with statistics for average speed to answer, dedicated client call quality assurance score, and number of calls monitored and scored monthly

Before you put your agents on a call, make sure they have all the training materials they need to understand their role. When you onboard clients correctly, you set them up to help customers effectively while maintaining their confidence in their role. Giving proper training can include:

  • Communicating good call etiquette
  • Teaching technical skills, such as using call software
  • Shadowing other agents
  • Setting goals for agents
  • Providing self-help resources, like an employee manual

By giving agents these materials from the start, they can do their jobs better. After all, even if you use tools to improve your call center, the tools are only as good as the team behind them.

Invest In Call Center Software

With call center software like Nextiva, you give your team the necessary tools to reduce overwhelm and manage calls and messages appropriately. Call or contact center software can direct calls to the right person, provide self-help resources for customers, record calls, and enable your team to efficiently solve customer problems.

It reduces team workload while allowing you to help more customers in a shorter amount of time. Some software has a shorter learning curve than others, but by implementing it, you save your team stress and time in the long run.

Record And Review Calls

Recording calls is one of the easiest and fastest ways to improve customer satisfaction and raise agent confidence in their calls. This practice should be part of your agent training, but it can help agents to listen over their previous calls to:

  • Hear how they sound
  • Show the effectiveness of their script
  • Identify areas they could do better next time
  • See their own improvement over time

Most call center software has the capability to record calls, including Nextiva. While it protects your agents and customers, you can use it for training and reviews to maintain and boost your company’s reputation and service.

Create Call Scripts

Go Answer page that shows service features, including after sales service, appointment services, help desk services, and hotline services

A script helps novice and experienced agents excel at their jobs. It sets the expectation for your business while allowing the agent to feel more comfortable with a model to refer to while on their call.

Have agents practice their script and even run through practice calls with more seasoned members of your team. Offer feedback on how to improve the script and incorporate it so that each agent has the best possible tools for communicating with customers.

What to Do Next

Running a successful business goes beyond having a capable call or contact center. To get the most out of your contact center, you may want to look at how to run an email campaign, managing your online reputation, and how to market online.

Knowing how to use your call center to get the word out about your business will help you grow and improve how your team functions. Meanwhile, pay attention to your business analytics to help you understand what your audience wants and how your team can give it to them.

Meet Skeleton: Svelte + Tailwind For Reactive UIs

If you’ve ever found yourself tasked with creating and implementing custom UI, then you know how difficult it can be to meet the demands of the modern web. Your interface must be responsive, reactive, and accessible, all while remaining visually appealing to a broad spectrum of users. Let’s face it; this can be a challenge for even the most seasoned frontend developer.

Over the last ten years, we’ve seen the introduction of UI frameworks that help ease this burden. Most rely on JavaScript and lean into components and reactive patterns to handle real-time user interaction. Frameworks such as Angular, React, and Vue have been established as the standard for what we currently know as modern frontend development.

Alongside the tools, we’ve seen the rise of framework-specific libraries like Angular Material, Mantine (for React), and Vuetify that to provide a “batteries included” approach to implementing UI, including deep integration of each framework’s unique set of features. With the emergence of new frameworks such as Svelte, we might expect to see similar libraries appear to fulfill this role. To gain insight into how these tools might work, let’s review what Svelte brings to frontend development.

Svelte And SvelteKit

In 2016, Rich Harris introduced Svelte, a fresh take on components for the web. To understand the benefits of Svelte, see his 2019 conference talk titled “Rethinking Reactivity,” where Rich explains the origins of Svelte and demonstrates its unique compiler-driven approach.

Skeleton was founded by the development team at Brain & Bones. The team, myself included, has been consistently impressed with Svelte and the tools it brings to the frontend developer’s arsenal. The team and I were looking to migrate several internal projects from Angular to SvelteKit when we realized there was an opportunity to combine Svelte’s intuitive component system with the utility-driven design systems of Tailwind, and thus Skeleton was born.

The team realized Skeleton has the potential to benefit many in the Svelte community, and as such, we’ve decided to make it open-source. We hope to see Skeleton grow into a powerful UI toolkit that can help many developers, whether your skills lie within the frontend space or not.

To see what we mean, let’s take a moment to create a basic SvelteKit app and integrate Skeleton.

Getting Started With Skeleton

Open your terminal and run each of the following commands. Be sure to set “my-skeleton-app” to whatever name you prefer. When prompted, we recommend using Typescript and creating a barebones (aka “skeleton”) project:

npm create svelte@latest my-skeleton-app
cd my-skeleton-app
npm install
npm run dev -- --open

This will generate the SvelteKit app, move your terminal into the project directory, install all required dependencies, then start a local dev server. Using the -- --open flag here will open the following address in your browser automatically:

http://localhost:5173/

In your terminal, use Ctrl + C to close and stop the server. Don’t worry; we’ll resume it in a moment.

Next, we need to install Tailwind. Svelte-add helps make this process trivial. Simply run the following commands, and it’ll handle the rest.

npx svelte-add@latest tailwindcss
npm install

This will install the latest Tailwind version into your project, create /src/app.css to house your global CSS, and generate the necessary tailwind.config.cjs. Then we install our new Tailwind dependency.

Finally, let’s install the Skeleton package via NPM:

npm i @brainandbones/skeleton --save-dev

We’re nearly ready to add our first component, and we just need to make a couple of quick updates to the project configuration.

Configure Tailwind

To ensure Skeleton plays well with Tailwind, open tailwind.config.cjs in the root of your project and add the following:

module.exports = {
    content: [
        // ...
        './node_modules/@brainandbones/skeleton/*/.{html,js,svelte,ts}'
    ],
    plugins: [
        require('@brainandbones/skeleton/tailwind.cjs')
    ]
}

The content section ensures the compiler is aware of all Tailwind classes within our Skeleton components, while plugins uses a Skeleton file to prepare for the theme we’ll set up in the next section.

Implement A Skeleton Theme

Skeleton includes a simple yet powerful theme system that leans into Tailwind’s best practices. The theme controls the visual appearance of all components and intelligently adapts for dark mode while also providing access to Tailwind utility classes that represent your theme’s unique color palette.

The Skeleton team has provided a curated set of themes, as well as a theme generator to help design custom themes using either Tailwind colors or hex colors to match your brand’s identity.

To keep things simple, we’ll begin with Skeleton’s default theme. Copy the following CSS into a new file in /src/theme.css.

:root {
    /* --- Skeleton Theme --- */
    /* primary (emerald) */
    --color-primary-50: 236 253 245;
    --color-primary-100: 209 250 229;
    --color-primary-200: 167 243 208;
    --color-primary-300: 110 231 183;
    --color-primary-400: 52 211 153;
    --color-primary-500: 16 185 129;
    --color-primary-600: 5 150 105;
    --color-primary-700: 4 120 87;
    --color-primary-800: 6 95 70;
    --color-primary-900: 6 78 59;
    /* accent (indigo) */
    --color-accent-50: 238 242 255;
    --color-accent-100: 224 231 255;
    --color-accent-200: 199 210 254;
    --color-accent-300: 165 180 252;
    --color-accent-400: 129 140 248;
    --color-accent-500: 99 102 241;
    --color-accent-600: 79 70 229;
    --color-accent-700: 67 56 202;
    --color-accent-800: 55 48 163;
    --color-accent-900: 49 46 129;
    /* warning (rose) */
    --color-warning-50: 255 241 242;
    --color-warning-100: 255 228 230;
    --color-warning-200: 254 205 211;
    --color-warning-300: 253 164 175;
    --color-warning-400: 251 113 133;
    --color-warning-500: 244 63 94;
    --color-warning-600: 225 29 72;
    --color-warning-700: 190 18 60;
    --color-warning-800: 159 18 57;
    --color-warning-900: 136 19 55;
    /* surface (gray) */
    --color-surface-50: 249 250 251;
    --color-surface-100: 243 244 246;
    --color-surface-200: 229 231 235;
    --color-surface-300: 209 213 219;
    --color-surface-400: 156 163 175;
    --color-surface-500: 107 114 128;
    --color-surface-600: 75 85 99;
    --color-surface-700: 55 65 81;
    --color-surface-800: 31 41 55;
    --color-surface-900: 17 24 39;
}

Note: Colors are converted from Hex to RGB to properly support Tailwind’s background opacity.

Next, let’s configure SvelteKit to use our new theme. To do this, open your root layout file at /src/routes/__layout.svelte. Declare your theme just before your global stylesheet app.css.

import '../theme.css'; // <--
import '../app.css';

To make things look a bit nicer, we’ll add some basic <body> element styles that support either light or dark mode system settings. Add the following to your /src/app.css.

body { @apply bg-surface-100 dark:bg-surface-900 text-black dark:text-white p-4; }

For more instruction, consult the Style documentation which covers global styles in greater detail.

Add A Component

Finally, let’s implement our first Skeleton component. Open your app’s home page /src/routes/index.svelte and add the follow. Feel free to replace the file’s entire contents:

<script lang="ts">
    import { Button } from '@brainandbones/skeleton';
</script>

<Button variant="filled-primary">Skeleton</Button>

To preview this, we’ll need to restart our local dev server. Run npm run dev in your terminal and point your browser to http://localhost:5173/. You should see a Skeleton Button component appear on the page!

Customizing Components

As with any Svelte component, custom “props” (read: properties) can be provided to configure your component. For example, the Button component’s variant prop allows us to set any number of canned options that adapt to your theme. By switching the variant value to filled-accent we’ll see the button change from our theme’s primary color (emerald) to the accent color (indigo).

Each component provides a set of props for you to configure as you please. See the Button documentation to try an interactive sandbox where you can test different sizes, colors, etc.

You may notice that many of the prop values resembled Tailwind class names. In fact, this is exactly what these are! These props are provided verbatim to the component’s template. This means we can set a component’s background style to any theme color, any Tailwind color, or even set a one-off color using Tailwind’s arbitrary value syntax.

<!-- Using our theme color -->
<Button background="bg-accent-500">Accent</Button>

<!-- Using Tailwind colors -->
<Button background="bg-orange-500">Orange</Button>

<!-- Using Tailwind's arbitrary value syntax -->
<Button background="bg-[#BADA55]">Arbitrary</Button>

This gives you the control to maintain a cohesive set of styles or choose to “draw outside of the lines” with arbitrary values. You’re not limited to the default props, though. You can provide any valid CSS classes to a component using a standard class attribute:

<Button variant="filled-primary" class="py-10 px-20">Big!</Button>

Form Meets Function

One of the primary benefits of framework-specific libraries like Skeleton is the potential for deep integration of the framework’s unique set of features. To see how Skeleton integrates with Svelte, let’s try out Skeleton’s dialog system.

First, add the Dialog component within the global scope of your app. The easiest way to do this is to open /src/routes/__layout.svelte and add the following above the <slot /> element:

<script lang="ts">
    // ...
    import { Dialog } from '@brainandbones/skeleton';
</script>

<!-- Add the Dialog component here -->
<Dialog />

<slot />

Note: The Dialog component will not be visible on the page by default.

Next, let’s update our home page to trigger our first Dialog. Open /src/routes/index.svelte and replace the entire contents with the following:

<script lang="ts">
    import { Button, dialogStore } from '@brainandbones/skeleton';
    import type { DialogAlert } from '@brainandbones/skeleton/Notifications/Stores';

    function triggerDialog(): void {
        const d: DialogAlert = {
            title: ‘Welcome to Skeleton.’,
            body: ‘This is a standard alert dialog.’,
        };
        dialogStore.trigger(d);
    }
</script>

<Button variant="filled-primary" on:click={() => { triggerDialog() }}>Trigger Dialog</Button>

This provides all the scaffolding needed to trigger a dialog. In your browser, click the button, and you should see your new dialog message appear!

Skeleton accomplishes this using Svelte’s writable stores, which are reactive objects that help manage the global state. When the button is clicked, the dialog store is triggered, and an instance of a dialog is provided to the store. The store then acts as a queue. Since stores are reactive, this means our Dialog component can listen for any updates to the store’s contents. When a new dialog is added to the queue, the Dialog component updates to show the contents on the screen.

Skeleton always shows the top-most dialog in the queue. When dismissed, it then displays the following dialog in the queue. If no dialogs remain, the Dialog component hides and returns to its default non-visible state.

Here’s a simple mock to help visualize the data structure of the dialog store queue:

dialogStore = [
    // dialog #1, <-- top items the queue, shown on screen
    // dialog #2, <-- the next dialog in line
    // dialog #3, <-- bottom of the queue, the last added
];

It’s Skeleton’s tight integration with Svelte features that makes this possible. That’s the power of framework-specific tooling — structure, design, and functionality all in one tightly coupled package!

Learn More About Skeleton

Skeleton is currently available in early access beta, but feel free to visit our documentation if you would like to learn more. The site provides detailed guides to help get started and covers the full suite of available components and utilities. You can report issues, request walkthroughs, or contribute code at Skeleton’s GitHub. You’re also welcome to join our Discord community to chat with contributors and showcase projects you’ve created with Skeleton.

Skeleton was founded by Brain & Bones. We feed gamers’ love for competition, providing a platform that harnesses the power of hyper-casual games to enhance engagement online and in-person.

Further Resources

How to Start an LLC in North Carolina

Want to get started right now? Click here to sign up for ZenBusiness and start your LLC today

New entrepreneurs with limited time and budget find it challenging to form an LLC.

However, various online LLC services provide reliable, cost-effective, and fast services to help you start your business without hassle.

LLC services can save you from the lengthy process of creating a company and provide solutions that help you start an LLC quickly. 

Let’s look at the factors and considerations for creating an LLC in North Carolina. 

Top-Rated LLC Services to Create an LLC

If you want to create an LLC quickly and without any hassle, you’d have to avail the services of a reliable LLC service provider. To achieve this objective, we recommend comparing the plans, pricing, and other benefits offered by each service so you can choose the one that best suits your needs. Here are some of the best options:

You can read our full reviews of each of these LLC services here.

7 Steps to Start an LLC in North Carolina

Creating an LLC, even with the help of a reliable LLC service, requires you to follow certain steps. Each state in the US has slightly different laws and regulations regarding creating an LLC, so the steps can differ slightly based on where you are.

Here’s the process you must follow to start an LLC in North Carolina:

  1. Decide a name for your North Carolina LLC
  2. Provide an official business address for your LLC
  3. Take the services of a registered agent for your LLC
  4. File articles of organization
  5. Draft an operating agreement for your North Carolina LLC
  6. Get an employer identification number (EIN) and follow tax-related and other regulatory requirements
  7. File yearly reports with the North Carolina Secretary of State

The Easy Parts of Starting an LLC

Other than in a few select states, people of any age can start a business.

Plenty of online resources are available to answer all of your LLC-related questions and you don’t have to consult an attorney or accountant to file articles of organization and other important documents for you.

North Carolina is one of the easiest places in the US to start a business. It has relaxed laws and regulations regarding LLCs and offers plenty of benefits and support to people forming an LLC.

Some people believe that forming an LLC would involve tons of official documents, visits to different offices, and other hassles. However, various LLC services available online allow you to form a company within a day.

ZenBusiness page to create your LLC in minutes

ZenBusiness is a relatively new LLC service provider in the industry. However, it has proved itself in a limited time. The website has a modern, clean, simple, and easy-to-use interface. It smoothly walks you through the entire process of forming an LLC. Different plans and prices offered by ZenBusiness include:

  • Starter: $49 a year
  • Pro: $129 a year
  • Premium: $299 a year

Each plan is designed to help you prepare and file all LLC documentation, assist with the name search, and more.

The Difficult Parts of Starting an LLC

All US states have laws and regulations you must follow when forming an LLC. Many people struggle with choosing the right state to create their LLC. We recommend forming an LLC in the state where you plan to run your business.

Another difficulty many entrepreneurs face while creating an LLC is filing issues. Entrepreneurs don’t have enough time to review all the documentation and deal with the red tape and paperwork involved. The right LLC service can help you navigate this process with ease.

Naming your LLC is a crucial step in the process. One mistake can limit the growth of your business at a later stage, give it a bad reputation or confuse the customers to a point where they simply stop using your service. For example, Emily Lipstick LLC has lower chances of growth compared to Emily Cosmetics LLC. Therefore, choosing a scalable name for your company can also prove to be challenging.   

Step 1: Decide a Name For Your North Carolina LLC

Selecting a name for your company is the first step to creating an LLC in North Carolina. It requires you to carefully analyze and select a name that follows North Carolina’s LLC naming conventions. Potential clients can easily search the guidelines online.

Follow North Carolina’s Naming Guidelines

Some of the rules you must follow for naming an LLC in North Carolina are:

  • The name of your LLC must include the phrase “Limited Liability Company” or its abbreviation “LLC.”
  • Do not include confusing words in your LLC name that may link it to or resemble that of a government agency, like the FBI or State Department.
  • If you want to use a restricted word like bank or university, it will require more paperwork and a licensed professional individual to be a part of your LLC.
  • The name of your LLC must not be the same as any other North Carolina LLC, corporation, limited partnership, or limited liability partnership.
  • The name must be available for use

You can easily look up the name database of businesses on North Carolina State’s website. A quick search can help you figure out that the name you have chosen for your LLC isn’t already taken. You can reserve a name by applying with the North Carolina Secretary of State. The application costs $30, is sent by mail and allows you to reserve a name for 120 days.

Make Sure the URL is Available

Before officially selecting a name for your LLC, make sure the URL for your business name is available. Even if you are not creating a website today, you’ll likely want one in the future. Therefore, it is better to buy a URL before someone else acquires it.

Using an Assumed Business Name

You don’t have to use your LLC’s legal name while doing business. You can use an assumed, fictitious, or trade name for informal purposes. You can register an assumed name with the North Carolina county where your LLC does business. One application is enough for an LLC doing business in multiple counties and costs $26.

Once you select and verify the name of your LLC and secure a URL, the next step is to select a professional LLC service to complete the process on your behalf. We recommend using ZenBusiness, which helps you get started within minutes.

Step 2: Provide an Official Business Address for your LLC

Every LLC created in North Carolina has a street address. It can be the location of your home, office, or any other physical place. The address can even be outside of the state of North Carolina. However, it must not be a PO box address.   

If you find it challenging to secure a physical location for your LLC, you can use a virtual mailbox. You can also register with an LLC service provider who will receive your mail for you and provide you with an address. It can be especially beneficial for people who run their business from home but don’t want their private addresses to be published everywhere.

Step 3: Nominate a Registered Agent For Your LLC

It is mandatory to nominate an agent who will assist you in the process of creating an LLC in the state of North Carolina. LLC creation services can be provided by individuals or companies. Your chosen LLC agent or service agrees to accept and resolve any legal problems that the LLC may encounter. For example, if someone sues the company, the LLC agent or service would take responsibility and resolve the issue.

Moreover, the registered agent or service acts as a point of contact for your business, and any official correspondence, tax forms, and legal notices will be sent to them.

Your chosen LLC agent must be a resident of North Carolina and must have a North Carolina address. If you are utilizing the services of an agency, it must be an authorized company allowed to do business in North Carolina.

Step 4: File Articles of Organization

The next step is to file articles of organization with the North Carolina Secretary of State to create an LLC in North Carolina. You must file the article of organization with the Business Registration Division. The articles should include:

  • The name of your LLC
  • The name and address of the registered agent of the LLC
  • The names and addresses of all the people signing the articles
  • The address and phone number of the main office of the LLC
  • The email address of the LLC
  • The date of the articles from when they become effective
  • The signature of the organizer, a member, or representative

You can conveniently file articles online or by mail, and it will cost you around $125.  

Step 5: Draft an Operating Agreement For Your North Carolina LLC

It is not mandatory to have an LLC operating agreement in North Carolina. However, we still recommend you have one.

An operating agreement helps clarify crucial company tasks like how profits and losses will be shared, which members are authorized to conduct business, and more. If you don’t draft an operating agreement for your LLC, the state laws will have more control over the rules governing the management of your company.

An operating agreement is the main document that highlights the powers, duties, rights, obligations, and liabilities of the members of the LLC. You are not obligated to file this document with the North Carolina Secretary of State. The operating agreement is purely an internal document.

If you are a newly formed LLC without an operating agreement, then the articles of organization, limited liability company agreement, and bylaws would automatically become the operating agreement of the LLC.

One thing that your operating agreement must specify is whether your LLC would be managed by a member or a manager.

Manager-Managed LLC

In manager-managed LLCs, chosen members or non-members run the business’s operations, whereas some members-only act as passive investors and don’t engage in the business operations.   

Member-Managed LLC

Member-managed LLCs are managed by all of the owners or members of the LLC. They are all collectively engaged in the operations of the company.

Step 6: Get an Employer Identification Number (EIN) and Follow Tax-Related and Other regulatory requirements

After setting up an LLC, you need to comply with all tax and regulatory requirements that apply. Some of these additional requirements include:

Employer Identification Number

If you create an LLC with only one member and hire no employees, your LLC still needs to obtain its employee identification number from the internal revenue service. You can simply get an EIN for free by filling out an online application.

If you create a one-member LLC and elect it to be taxed as a corporation instead of a sole proprietorship, obtaining an EIN is necessary.

Business Licenses

You may be required to obtain local and state business permits or licenses for your LLC based on the type of business you do or the location of your business.

You can easily find information online for state licensing. However, you need to check with the clerks of the city where your LLC is located to obtain local licenses.

Department of Revenue

You may have to register with the North Carolina Department of Revenue based on the type of business you operate. For example, if you plan to sell goods, hire employees, and collect sales tax, you must register with the DOR. The Department of Revenue has a convenient and straightforward online application process.

Step 7: File Yearly Reports with the North Carolina Secretary of State

All the LLCs in North Carolina are mandated to file annual reports with the North Carolina Secretary of State. All LLC reports are due for the year in which they are filed.

An Annual LLC report specifies the activities of your business throughout the year, indicates the financial position of your company, and highlights the strategy for growth in the future. Moreover, it is necessary to file a yearly report for your business to maintain an active status.

Therefore, if you register an LLC on the 15th of April, you must file your annual report by the end of the year. However, if you create your LLC after the 15th of April, you would have to file a report on the 15th of April of the next year.

You can file your yearly report online at the online annual report editor of the secretary of state or send it by mail. The annual report filing process can cost $200 to $202.