PyPassword is a Simple Follow up to PyPassphrase

PyPassword

PyPassword is a simple follow up to PyPassphrase. After finishing that project it occured to me that while some may wish to use that option, may not be able to do so due to pre-defined password requirements (for example, spaces not allowed or an arbitrary limit on the number of characters). Therefore, it seemed reasonable to create a more traditional password generator but wrap it also in a GUI frontend with PySimpleGUI.

There is nothing particularly special about this application past its compliment to PyPassphrase. In fact, I will likely merge the two applications so that both options exist in one.

Stay Tuned!

In the meantime, if you choose to use this as a stand-alone password generator keep in mind no attempts are made to make the resulting passwords easier to remember and it is highly recommended that you use a trusted and secure password manager such as Keepass or Linux Pass to store and manage the passwords.

The passwords are generated using the Python string library using lowercase, uppercase, digits and punctuation characters. Which group is used is chosen at random using the Python secrets library. A loop is used to randomize the list of characters and then from that list a random sample is taken that is the length of the password specified.

The result is some truly cyrptic passwords that, if using sufficient length (generally 15 characters or more), will be strong enough for most applications.

Currently only the command line option exists to launch the application and that for only Linux at the moment. To use the application simply download the binary and from the location where it is saved launch a terminal session and run the command ./pypassword. This will launch the GUI frontend.

Screenshots

Download Details:

Author: RedDirtBits
Download Link: Download The Source Code
Official Website: https://github.com/RedDirtBits/PyPassword

#security #python

What is GEEK

Buddha Community

PyPassword is a Simple Follow up to PyPassphrase

PyPassword is a Simple Follow up to PyPassphrase

PyPassword

PyPassword is a simple follow up to PyPassphrase. After finishing that project it occured to me that while some may wish to use that option, may not be able to do so due to pre-defined password requirements (for example, spaces not allowed or an arbitrary limit on the number of characters). Therefore, it seemed reasonable to create a more traditional password generator but wrap it also in a GUI frontend with PySimpleGUI.

There is nothing particularly special about this application past its compliment to PyPassphrase. In fact, I will likely merge the two applications so that both options exist in one.

Stay Tuned!

In the meantime, if you choose to use this as a stand-alone password generator keep in mind no attempts are made to make the resulting passwords easier to remember and it is highly recommended that you use a trusted and secure password manager such as Keepass or Linux Pass to store and manage the passwords.

The passwords are generated using the Python string library using lowercase, uppercase, digits and punctuation characters. Which group is used is chosen at random using the Python secrets library. A loop is used to randomize the list of characters and then from that list a random sample is taken that is the length of the password specified.

The result is some truly cyrptic passwords that, if using sufficient length (generally 15 characters or more), will be strong enough for most applications.

Currently only the command line option exists to launch the application and that for only Linux at the moment. To use the application simply download the binary and from the location where it is saved launch a terminal session and run the command ./pypassword. This will launch the GUI frontend.

Screenshots

Download Details:

Author: RedDirtBits
Download Link: Download The Source Code
Official Website: https://github.com/RedDirtBits/PyPassword

#security #python

Reid  Rohan

Reid Rohan

1657844400

Follow: Very Stable, Very Reliable, NodeJS CouchDB _changes Follower

Follow: CouchDB changes and db updates notifier for NodeJS

Follow (upper-case F) comes from an internal Iris Couch project used in production for over a year. It works in the browser (beta) and is available as an NPM module.

$ npm install follow

Example

This looks much like the request API.

var follow = require('follow');
follow("https://example.iriscouch.com/boogie", function(error, change) {
  if(!error) {
    console.log("Got change number " + change.seq + ": " + change.id);
  }
})

The error parameter to the callback will basically always be null.

Objective

The API must be very simple: notify me every time a change happens in the DB. Also, never fail.

If an error occurs, Follow will internally retry without notifying your code.

Specifically, this should be possible:

  1. Begin a changes feed. Get a couple of change callbacks
  2. Shut down CouchDB
  3. Go home. Have a nice weekend. Come back on Monday.
  4. Start CouchDB with a different IP address
  5. Make a couple of changes
  6. Update DNS so the domain points to the new IP
  7. Once DNS propagates, get a couple more change callbacks

Failure Mode

If CouchDB permanently crashes, there is an option of failure modes:

  • Default: Simply never call back with a change again
  • Optional: Specify an inactivity timeout. If no changes happen by the timeout, Follow will signal an error.

DB Updates

If the db url ends with /_db_updates, Follow will provide a _db_updates feed.

For each change, Follow will emit a change event containing:

  • type: created, updated or deleted.
  • db_name: Name of the database where the change occoured.
  • ok: Event operation status (boolean).

Note that this feature is available as of CouchDB 1.4.

Simple API: follow(options, callback)

The first argument is an options object. The only required option is db. Instead of an object, you can use a string to indicate the db value.

follow({db:"https://example.iriscouch.com/boogie", include_docs:true}, function(error, change) {
  if(!error) {
    console.log("Change " + change.seq + " has " + Object.keys(change.doc).length + " fields");
  }
})

All of the CouchDB _changes options are allowed. See http://guide.couchdb.org/draft/notifications.html.

  • db | Fully-qualified URL of a couch database. (Basic auth URLs are ok.)
  • since | The sequence number to start from. Use "now" to start from the latest change in the DB.
  • heartbeat | Milliseconds within which CouchDB must respond (default: 30000 or 30 seconds)
  • feed | Optional but only "continuous" is allowed
  • filter |
    • Either a path to design document filter, e.g. app/important
    • Or a Javascript function(doc, req) { ... } which should return true or false
  • query_params | Optional for use in with filter functions, passed as req.query to the filter function

Besides the CouchDB options, more are available:

  • headers | Object with HTTP headers to add to the request
  • inactivity_ms | Maximum time to wait between changes. Omitting this means no maximum.
  • max_retry_seconds | Maximum time to wait between retries (default: 360 seconds)
  • initial_retry_delay | Time to wait before the first retry, in milliseconds (default 1000 milliseconds)
  • response_grace_time | Extra time to wait before timing out, in milliseconds (default 5000 milliseconds)

Object API

The main API is a thin wrapper around the EventEmitter API.

var follow = require('follow');

var opts = {}; // Same options paramters as before
var feed = new follow.Feed(opts);

// You can also set values directly.
feed.db            = "http://example.iriscouch.com/boogie";
feed.since         = 3;
feed.heartbeat     = 30    * 1000
feed.inactivity_ms = 86400 * 1000;

feed.filter = function(doc, req) {
  // req.query is the parameters from the _changes request and also feed.query_params.
  console.log('Filtering for query: ' + JSON.stringify(req.query));

  if(doc.stinky || doc.ugly)
    return false;
  return true;
}

feed.on('change', function(change) {
  console.log('Doc ' + change.id + ' in change ' + change.seq + ' is neither stinky nor ugly.');
})

feed.on('error', function(er) {
  console.error('Since Follow always retries on errors, this must be serious');
  throw er;
})

feed.follow();

Pause and Resume

A Follow feed is a Node.js stream. If you get lots of changes and processing them takes a while, use .pause() and .resume() as needed. Pausing guarantees that no new events will fire. Resuming guarantees you'll pick up where you left off.

follow("https://example.iriscouch.com/boogie", function(error, change) {
  var feed = this

  if(change.seq == 1) {
    console.log('Uh oh. The first change takes 30 hours to process. Better pause.')
    feed.pause()
    setTimeout(function() { feed.resume() }, 30 * 60 * 60 * 1000)
  }

  // ... 30 hours with no events ...

  else
    console.log('No need to pause for normal change: ' + change.id)
})

Events

The feed object is an EventEmitter. There are a few ways to get a feed object:

  • Use the object API above
  • Use the return value of follow()
  • In the callback to follow(), the this variable is bound to the feed object.

Once you've got one, you can subscribe to these events:

  • start | Before any i/o occurs
  • confirm_request | function(req) | The database confirmation request is sent; passed the request object
  • confirm | function(db_obj) | The database is confirmed; passed the couch database object
  • change | function(change) | A change occured; passed the change object from CouchDB
  • catchup | function(seq_id) | The feed has caught up to the update_seq from the confirm step. Assuming no subsequent changes, you have seen all the data.
  • wait | Follow is idle, waiting for the next data chunk from CouchDB
  • timeout | function(info) | Follow did not receive a heartbeat from couch in time. The passed object has .elapsed_ms set to the elapsed time
  • retry | function(info) | A retry is scheduled (usually after a timeout or disconnection). The passed object has
    • .since the current sequence id
    • .after the milliseconds to wait before the request occurs (on an exponential fallback schedule)
    • .db the database url (scrubbed of basic auth credentials)
  • stop | The feed is stopping, because of an error, or because you called feed.stop()
  • error | function(err) | An error occurs

Error conditions

Follow is happy to retry over and over, for all eternity. It will only emit an error if it thinks your whole application might be in trouble.

  • DB confirmation failed: Follow confirms the DB with a preliminary query, which must reply properly.
  • DB is deleted: Even if it retried, subsequent sequence numbers would be meaningless to your code.
  • Your inactivity timer expired: This is a last-ditch way to detect possible errors. What if couch is sending heartbeats just fine, but nothing has changed for 24 hours? You know that for your app, 24 hours with no change is impossible. Maybe your filter has a bug? Maybe you queried the wrong DB? Whatever the reason, Follow will emit an error.
  • JSON parse error, which should be impossible from CouchDB
  • Invalid change object format, which should be impossible from CouchDB
  • Internal error, if the internal state seems wrong, e.g. cancelling a timeout that already expired, etc. Follow tries to fail early.

Tests

Follow uses node-tap. If you clone this Git repository, tap is included.

$ ./node_modules/.bin/tap test/*.js test/issues/*.js
ok test/couch.js ...................................... 11/11
ok test/follow.js ..................................... 69/69
ok test/issues.js ..................................... 44/44
ok test/stream.js ................................... 300/300
ok test/issues/10.js .................................. 11/11
total ............................................... 435/435

ok

Author: iriscouch
Source Code: https://github.com/iriscouch/follow 
License: Apache-2.0 license

#javascript #node #follow 

Guide to @ConfigurationProperties in Spring Boot for Beginners

1. Introduction

Spring Boot has many useful features including externalized configuration and easy access to properties defined in properties files. An earlier tutorial described various ways in which this could be done.

We are now going to explore the @ConfigurationProperties annotation in greater detail.

2. Setup

This tutorial uses a fairly standard setup. We start by adding spring-boot-starter-parent as the parent in our pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0</version>
    <relativePath/>
</parent>

To be able to validate properties defined in the file, we also need an implementation of JSR-303, and hibernate-validator is one of them.

Let's add it to our pom.xml as well:

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-validator</artifactId>
   <version>6.0.16.Final</version>
</dependency>

The “Getting Started with Hibernate Validator” page has more details.

3. Simple Properties

The official documentation advises that we isolate configuration properties into separate POJOs.

So let's start by doing that:

@Configuration
@ConfigurationProperties(prefix = "mail")
public class ConfigProperties {
    
    private String hostName;
    private int port;
    private String from;

    // standard getters and setters
}

We use @Configuration so that Spring creates a Spring bean in the application context.

@ConfigurationProperties works best with hierarchical properties that all have the same prefix; therefore, we add a prefix of mail.

The Spring framework uses standard Java bean setters, so we must declare setters for each of the properties.

Note: If we don't use @Configuration in the POJO, then we need to add @EnableConfigurationProperties(ConfigProperties.class) in the main Spring application class to bind the properties into the POJO:

@SpringBootApplication
@EnableConfigurationProperties(ConfigProperties.class)
public class EnableConfigurationDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(EnableConfigurationDemoApplication.class, args);
    }
}

That's it! Spring will automatically bind any property defined in our property file that has the prefix mail and the same name as one of the fields in the ConfigProperties class.

Spring uses some relaxed rules for binding properties. As a result, the following variations are all bound to the property hostName:

mail.hostName
mail.hostname
mail.host_name
mail.host-name
mail.HOST_NAME

Therefore, we can use the following properties file to set all the fields:

#Simple properties
mail.hostname=host@mail.com
mail.port=9000
mail.from=mailer@mail.com

3.1. Spring Boot 2.2

As of Spring Boot 2.2, Spring finds and registers @ConfigurationProperties classes via classpath scanning. Therefore, there is no need to annotate such classes with @Component (and other meta-annotations like @Configuration), or even use the @EnableConfigurationProperties:

@ConfigurationProperties(prefix = "mail") 
public class ConfigProperties { 

    private String hostName; 
    private int port; 
    private String from; 

    // standard getters and setters 
}

The classpath scanner enabled by @SpringBootApplication finds the ConfigProperties class, even though we didn't annotate this class with @Component.

In addition, we can use the @ConfigurationPropertiesScan annotation to scan custom locations for configuration property classes:

@SpringBootApplication
@ConfigurationPropertiesScan("com.baeldung.configurationproperties")
public class EnableConfigurationDemoApplication { 

    public static void main(String[] args) {   
        SpringApplication.run(EnableConfigurationDemoApplication.class, args); 
    } 
}

This way Spring will look for configuration property classes only in the com.baeldung.properties package.

4. Nested Properties

We can have nested properties in Lists, Maps, and Classes.

Let'S create a new Credentials class to use for some nested properties:

public class Credentials {
    private String authMethod;
    private String username;
    private String password;

    // standard getters and setters
}

We also need to update the ConfigProperties class to use a List, a Map, and the Credentials class:

public class ConfigProperties {

    private String host;
    private int port;
    private String from;
    private List<String> defaultRecipients;
    private Map<String, String> additionalHeaders;
    private Credentials credentials;
 
    // standard getters and setters
}

The following properties file will set all the fields:

#Simple properties
mail.hostname=mailer@mail.com
mail.port=9000
mail.from=mailer@mail.com

#List properties
mail.defaultRecipients[0]=admin@mail.com
mail.defaultRecipients[1]=owner@mail.com

#Map Properties
mail.additionalHeaders.redelivery=true
mail.additionalHeaders.secure=true

#Object properties
mail.credentials.username=john
mail.credentials.password=password
mail.credentials.authMethod=SHA1

5. Using @ConfigurationProperties on a @Bean Method

We can also use the @ConfigurationProperties annotation on @Bean-annotated methods.

This approach may be particularly useful when we want to bind properties to a third-party component that's outside of our control.

Let's create a simple Item class that we'll use in the next example:

public class Item {
    private String name;
    private int size;

    // standard getters and setters
}

Now let's see how we can use @ConfigurationProperties on a @Bean method to bind externalized properties to the Item instance:

@Configuration
public class ConfigProperties {

    @Bean
    @ConfigurationProperties(prefix = "item")
    public Item item() {
        return new Item();
    }
}

Consequently, any item-prefixed property will be mapped to the Item instance managed by the Spring context.

6. Property Validation

@ConfigurationProperties provides validation of properties using the JSR-303 format. This allows all sorts of neat things.

For example, let's make the hostName property mandatory:

@NotBlank
private String hostName;

Next, let's make the authMethod property from 1 to 4 characters long:

@Length(max = 4, min = 1)
private String authMethod;

Then the port property from 1025 to 65536:

@Min(1025)
@Max(65536)
private int port;

Finally, the from property must match an email address format:

@Pattern(regexp = "^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,6}$")
private String from;

This helps us reduce a lot of if – else conditions in our code, and makes it look much cleaner and more concise.

If any of these validations fail, then the main application would fail to start with an IllegalStateException.

The Hibernate Validation framework uses standard Java bean getters and setters, so it's important that we declare getters and setters for each of the properties.

7. Property Conversion

@ConfigurationProperties supports conversion for multiple types of binding the properties to their corresponding beans.

7.1. Duration

We'll start by looking at converting properties into Duration objects.

Here we have two fields of type Duration:

@ConfigurationProperties(prefix = "conversion")
public class PropertyConversion {

    private Duration timeInDefaultUnit;
    private Duration timeInNano;
    ...
}

This is our properties file:

conversion.timeInDefaultUnit=10
conversion.timeInNano=9ns

As a result, the field timeInDefaultUnit will have a value of 10 milliseconds, and timeInNano will have a value of 9 nanoseconds.

The supported units are ns, us, ms, s, m, h and d for nanoseconds, microseconds, milliseconds, seconds, minutes, hours, and days, respectively.

The default unit is milliseconds, which means if we don't specify a unit next to the numeric value, Spring will convert the value to milliseconds.

We can also override the default unit using @DurationUnit:

@DurationUnit(ChronoUnit.DAYS)
private Duration timeInDays;

This is the corresponding property:

conversion.timeInDays=2

7.2. DataSize

Similarly, Spring Boot @ConfigurationProperties supports DataSize type conversion.

Let's add three fields of type DataSize:

private DataSize sizeInDefaultUnit;

private DataSize sizeInGB;

@DataSizeUnit(DataUnit.TERABYTES)
private DataSize sizeInTB;

These are the corresponding properties:

conversion.sizeInDefaultUnit=300
conversion.sizeInGB=2GB
conversion.sizeInTB=4

In this case, the sizeInDefaultUnit value will be 300 bytes, as the default unit is bytes.

The supported units are B, KB, MB, GB, and TB. We can also override the default unit using @DataSizeUnit.

7.3. Custom Converter

We can also add our own custom Converter to support converting a property to a specific class type.

Let's add a simple class Employee:

public class Employee {
    private String name;
    private double salary;
}

Then we'll create a custom converter to convert this property:

conversion.employee=john,2000

We will convert it to a file of type Employee:

private Employee employee;

We will need to implement the Converter interface, then use @ConfigurationPropertiesBinding annotation to register our custom Converter:

@Component
@ConfigurationPropertiesBinding
public class EmployeeConverter implements Converter<String, Employee> {

    @Override
    public Employee convert(String from) {
        String[] data = from.split(",");
        return new Employee(data[0], Double.parseDouble(data[1]));
    }
}

8. Immutable @ConfigurationProperties Binding

As of Spring Boot 2.2, we can use the @ConstructorBinding annotation to bind our configuration properties.

This essentially means that @ConfigurationProperties-annotated classes may now be immutable.

@ConfigurationProperties(prefix = "mail.credentials")
@ConstructorBinding
public class ImmutableCredentials {

    private final String authMethod;
    private final String username;
    private final String password;

    public ImmutableCredentials(String authMethod, String username, String password) {
        this.authMethod = authMethod;
        this.username = username;
        this.password = password;
    }

    public String getAuthMethod() {
        return authMethod;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }
}

As we can see, when using @ConstructorBinding, we need to provide the constructor with all the parameters we'd like to bind.

Note that all the fields of ImmutableCredentials are final. Also, there are no setter methods.

Furthermore, it's important to emphasize that to use the constructor binding, we need to explicitly enable our configuration class either with @EnableConfigurationProperties or with @ConfigurationPropertiesScan.

9. Java 16 records

Java 16 introduced the record types as part of JEP 395. Records are classes that act as transparent carriers for immutable data. This makes them perfect candidates for configuration holders and DTOs. As a matter of fact, we can define Java records as configuration properties in Spring Boot. For instance, the previous example can be rewritten as:

@ConstructorBinding
@ConfigurationProperties(prefix = "mail.credentials")
public record ImmutableCredentials(String authMethod, String username, String password) {
}

Obviously, it's more concise compared to all those noisy getters and setters.

Moreover, as of Spring Boot 2.6, for single-constructor records, we can drop the @ConstructorBinding annotation. If our record has multiple constructors, however, @ConstructorBinding should still be used to identify the constructor to use for property binding.

10. Conclusion

In this article, we explored the @ConfigurationProperties annotation and highlighted some of the useful features it provides, like relaxed binding and Bean Validation.

Link: https://www.baeldung.com/configuration-properties-in-spring-boot

#spring  #springboot  #java 

SIMPLE BITCOIN TRADING STRATEGY | HOW TO FIND THE BEST TRADES

📺 The video in this post was made by Jayson Casper
The origin of the article: https://www.youtube.com/watch?v=SlFEwzrPKSk
🔺 DISCLAIMER: The article is for information sharing. The content of this video is solely the opinions of the speaker who is not a licensed financial advisor or registered investment advisor. Not investment advice or legal advice.
Cryptocurrency trading is VERY risky. Make sure you understand these risks and that you are responsible for what you do with your money
🔥 If you’re a beginner. I believe the article below will be useful to you ☞ What You Should Know Before Investing in Cryptocurrency - For Beginner
⭐ ⭐ ⭐The project is of interest to the community. Join to Get free ‘GEEK coin’ (GEEKCASH coin)!
☞ **-----CLICK HERE-----**⭐ ⭐ ⭐
(There is no limit to the amount of credit you can earn through referrals)
Thanks for visiting and watching! Please don’t forget to leave a like, comment and share!

#bitcoin #blockchain #bitcoin trading #bitcoin trading strategy #simple bitcoin trading strategy #simple bitcoin trading strategy | how to find the best trades

How to Get More Followers on Instagram

17 Ways to Get More Followers on Instagram. Learn how to get more followers on Instagram by following these 17 tested and proven strategies used by popular influencers and leading brands.

Learn how to get more followers on Instagram by following these 17 tested and proven strategies used by popular influencers and leading brands.

Instagram can be a highly targetable, visual marketing channel for your brand and an opportunity to build a loyal audience that grows with your business.

In fact, more than 500 million Instagram users browse the app every day, making it home to some of the most engaged audiences around.

In this guide, we’ll show you how to grow your Instagram follower profile and increase engagement, while growing a massive following over time—one that’s full of real fans, not bots or fake followers.

17 ways to get more Instagram followers 

  1. Incorporate Reels into your content mix
  2. Cross-promote content
  3. Curate your profile grid
  4. Work with brand ambassadors
  5. Get follows from your loyalty program
  6. Market through your personal Instagram account
  7. Get on feature accounts
  8. Use the right hashtags
  9. Post at the right times
  10. Steal your competitors' followers
  11. Pay for sponsored posts and product reviews
  12. Use geotags to boost local discovery
  13. Organize your Stories in highlights
  14. Ask for more followers
  15. Run a giveaway
  16. Share user-generated content
  17. Use Instagram Live

Let’s dive deeper into how to implement each tactic to get more Instagram followers. 


1. Incorporate Reels into your content mix

Reels are fun videos you can share with followers on your Instagram account. They have audio, effects, and creative tools. You can share them on your feed and publicly in Instagram Explore to reach new audiences. 

Reels are new territory for brands. Kristie Dash, Instagram’s beauty partnerships manager, stated in a Glossy forum that there isn’t one formula for success with Reels. However, she does suggest the following tips to gain traction:

  • Keep content unique and trend-driven. Identify trends on Instagram and TikTok and put your own spin on them. This increases the chance your Reels will go viral and get in front of new people.
  • Make content relatable and simple. Not every Reel needs to be a production. Lower quality videos can perform as well as, if not better than, highly produced Reels.
  • Educate your audience. Find the balance between education and entertainment in your Reels.

Reels should be a huge priority for you right now. It’s prime real estate for your brand to be discovered by new followers.

—Kristen Dash, Beauty Partnerships Manager, Instagram

Trilce Jirón Garro, owner of social media marketing agency TBS Marketing, agrees. “Don’t sell your products through Reels content,” she says. “Share facts. Provide tips about the industry you’re in. Entertain viewers.” 

Trilce suggests that both new and existing brands incorporate entertaining Reels into their Instagram strategy. “Reels give anyone the opportunity to reach new target audiences,” she says. “There’s no learning curve because Reels content is lo-fi. And creators can produce community-driven content that builds trust, gains followers, and makes sales over time.” 

Trilce also loves the Instagram Insights Tool introduced for Reels. “Reels have become an integrated part of any Instagram marketing strategy,” she says. “Analytics tools for Reels have made it easy to track metrics and analyze data to see if your Reels are working. Now, you can understand exactly what your audience likes and dislikes, when to post Reels, and what calls to action resonate with viewers.” 

Using Reels Insights, you can see patterns and understand different spikes in engagement that affect your visibility on the platform. That way, you can create higher-quality content that gets even more engagement and followers. 

2. Cross-promote content

Cross-promoting involves posting similar content across various social media channels. It’s a tactic used to save time and resources. It’s also effective at increasing brand awareness and growing an audience on Instagram. 

Mobile users are spending an increasing amount of time with video and entertainment apps, with video content on social media platforms accounting for the biggest increase. Whether it’s a short-form video or lengthy tutorial, you want to improve the reach of your Instagram content. 

Justin Bieber’s holiday dance challenge is a great example of successful cross-posting. During the 2020 holiday season, the Canadian singer posted the same dance challenge on both TikTok and Instagram. On TikTok, his video short received 9.8 million likes. The same content on Instagram received 4.8 million likes. While some users may overlap, others likely use just one of these services. Thus, Bieber was able to reach more people just by posting the same video on two different platforms. 

cross-promoting on instagram

Nadya Okamoto, founder of lifestyle period brand August, has found that TikTok naturally cross-pollinates to Instagram and YouTube. In an interview with Modern Retail she said, “As we’ve grown on TikTok from August, we’ve also grown to 175,000 followers on Instagram.” Actively posting on multiple platforms has “affected our overall cost of acquisitions to be super effective,” allowing the brand to steer away from paid media as a main acquisition channel. 

TikTok isn’t the only channel you can cross-post on. The Instagram Reels format translates well to YouTube Shorts and Pinterest Stories. It’s important to note that Instagram’s algorithm won’t promote Reels that have a TikTok watermark. So if you’re going to cross-post content from Instagram to other channels, ensure the content is high quality and doesn’t promote a competing platform through watermarks. 

3. Curate your profile grid

Most of your Instagram followers won’t follow you for what you posted in the past but for the promise of what you’ll post in the future. Your audience wants to know what they’re going to get if they hit that Follow button.

Having a feed with a consistent posting schedule and theme can have just as much of an impact in growing a following as many of the other growth strategies we’ve covered above. Even a simple pattern can entice new followers, as long as it’s communicated at first glance to anyone who lands on your profile.

Consider your Instagram bio and your last nine posts as your first impression on Instagram. Do they effectively communicate some degree of consistency through personality, filters, colors, or layout? Does the clickable link send people to the same homepage every week or are you linking out to fun and exciting content too?

The layout of your grid is an often underestimated way to get creative with the aesthetic of your feed while adding a rhythm to your publishing strategy and consistency that’s worth following.

In fact, many accounts that adopt this approach often are able to spend less effort on creating content by focusing on converting visitors into followers, producing text graphics or other content with a faster turnaround, and streamlining the overall production of their Instagram content.

You can use a tool like Later to easily plan out and schedule Instagram posts to create the look and layout of your feed. Letterfolk is just one example of how far some brands go with the aesthetic of their Instagram layout. 

letterfolk grid

Your feed serves as the billboard for your brand. It’s a customer’s first touchpoint with you and captures the essence of your brand.

—Trilce Jiron, TBS Marketing

4. Work with brand ambassadors 

Don’t want to pay the celebrity influencer big bucks to market your brand? Work with brand ambassadors who have anywhere from a couple hundred to a few thousand followers. Ambassadors are people who genuinely support and believe in your brand and will tell their friends about it. 

Luxury shoe retailer Sarah Flint reports seeing success with its brand ambassador program, which has more than 500 women as members. Each ambassador has their own unique discount code, which gives them a free pair of Sarah Flint shoes after five new customers use it. 

Ambassadors like Holly Hollon attest to the quality and comfort of the brand’s shoes. Her Instagram posts are authentic and relatable to regular Sarah Flint shoppers. This helps the brand grow its Instagram following and earn sales. 

Holly Hollon IG influencer

5. Get follows from your loyalty program

Retailers are increasingly launching loyalty programs, repeatedly encouraging consumers to shop with their brand over another. It’s worked for brands like Sephora and Blume. One way brands are capitalizing on loyalty programs is by rewarding those who follow them on Instagram. 

When luxury retailer Rebecca Minkoff launched its rewards program, RM Rewards, it gave shoppers the option to earn points by following the brand’s Instagram account. Brands like Blume are also finding the value in rewarding Instagram followers. Program members can earn Blume Bucks for becoming a friend on Instagram versus Facebook or Twitter. 

Blume rewards program example

6. Market through your personal Instagram account

Another popular way to increase your Instagram following is growing your personal account—basically, make yourself the influencer. Harnessing both the company account and your personal account can increase brand recognition, follower counts, and sales. Pro tip: You can also run this playbook on TikTok to improve your numbers. 

It’s a tactic that works well for fashion label ANINE BING. In addition to the brand’s Instagram profile, the company’s founder also drives engagement and awareness through her personal Instagram page, which has more than one million followers. 

Anine Bing instagram profile

Anine invites followers into her design studio, takes them through the design process, and even gets feedback from followers throughout the creative process. Anine also shares a bit about her personal life and milestones, giving followers a peak behind the curtains of their favorite designer’s life. 

7. Get on feature accounts

Instagram feature accounts are pages that curate the best content in a specific niche. They are like the “best of” photo journals for an industry. Some feature accounts have a massive following. If you get placement on the account, it can send new Instagram followers to your profile. 

There are feature accounts for every niche: travel, fashion, photography, and more. For example, @discoverearth curates adventurous travel content from around the world for more than 6.6 million followers.

Discover Earth feature page

8. Use the right hashtags

Your goal on Instagram is to engage your current audience on a regular basis while also growing your number of real followers. Posting new, interesting, and engaging photos will satisfy the first requirement, but to begin growing you’ll find hashtagging your photos extremely important. Hashtagging makes it easy for people searching for specific terms to find your photos.

So which hashtags should you use? Just like with Twitter and other social sites, users on Instagram choose certain hashtags over others. If you use popular Instagram hashtags within your photos, you’re much more likely to reach new users and be discovered.

At the time of this writing, these were the top 20 hashtags on Instagram:

  1. #love
  2. #instagood
  3. #fashion
  4. #photooftheday
  5. #beautiful
  6. #art
  7. #photography
  8. #happy
  9. #picoftheday
  10. #cute
  11. #follow
  12. #tbt
  13. #followme
  14. #nature
  15. #like4like
  16. #travel
  17. #instagram
  18. #style
  19. #repost
  20. #summer

If you looked at this list and said, “But none of those apply to my products or brand,” you’re likely correct.

Using hashtags is one thing; using the right tags is something else.

Popular tags like the ones listed above will likely net you additional engagement and likes. However, they won’t lead to increased long-term engagement from relevant users, new followers, or, most importantly, sales.

If you want to tag your photos properly, you’ll need to find and use the most relevant hashtags. This means doing the appropriate research to make sure you’re using hashtags that not only describe your brand but that are also being searched for on Instagram.

You can use a free online tool like IconoSquare or Webstagram to find relevant, related, and popular hashtags by searching for key hashtags closely related to your brand.

For instance, if you have a men’s accessory business, you can use the hashtag #MensFashion in Webstagram to pull the following list of additional keyword hashtags, along with the number of times they have been used (i.e., their popularity).

hashtag examples

You can also find more related hashtags and their popularity if you search for any of your target keywords directly in the Instagram app.

You’ll want to go through this exercise trying different keywords that describe your brand and products, building out your hashtag keyword list as you go.

Keep in mind that Instagram allows for a maximum of 30 hashtags per post. Additionally, the popular words will change over time: make sure you revisit your hashtag keywords every few months so you’re using the best possible terms.

You can also steal hashtag ideas from competitors or similar accounts that have the kind of following you aspire to, but, ultimately, you want to create your own groups of hashtags that relate to your specific account.

Pro tip #1: For every product and product category in your store, research the most popular related Instagram hashtags. Use this research to compile a list of 15 to 20 popular hashtags for each category of products, as well as a base of five to 10 popular tags that describe your brand and product offering. Finally, create a list of location-specific hashtags that relate to your brand.

For example:

Brand keyword hashtags

#mybrandname #mensfashion #mensaccessories #mensgoods #fashion #mensstyle #instafashion #menswear

Product category keyword hashtags

#bugatchisocks #happysocks #corgisocks #socks #sockswag #socksoftheday #sockgame #sockswagg #socksofinstagram #happysockday #sockwars #funsocks #happysockday

Location-specific keyword hashtags

#Toronto #TorontoFashion #TorontoFashionBloggers

Store these groups of keyword hashtags in a convenient location like Evernote or Google Drive. This makes it easy to post a new Instagram image optimized for the most relevant keywords when you’re on the go. Some Instagram scheduling tools also let you save caption templates for storing your hashtag groups.

location specific keywords

Doing the work of researching, organizing, and saving the most applicable and popular hashtags upfront will save you a ton of time down the road, increase your engagement, and help garner new followers.

Pro tip #2: If you’ve been posting to Instagram for a while and feel you’ve missed out on all these opportunities to build your audience using keyword hashtags, fret not. You can still go back and post a comment with your new hashtag keyword lists and watch the likes and followers roll in.

Using hashtags in Instagram stories

Hashtagging on Instagram posts is a given, but you should also be using hashtags in your Stories for the chance to be seen by users who follow that specific hashtag.

You can use hashtag stickers (which can be found in the Instagram Stickers menu when creating a Story) or just hashtag directly in your post captions for a chance to be featured in a hashtag story.

Now that users can follow hashtags, your Stories on Instagram have a chance to be seen by both people who are following that hashtag and anyone who’s just checking it out.

9. Post at the right times

Beyond adding the appropriate hashtags and using the best filters to get more Instagram followers, you should also consider the timing of your posts.

A targeted approach involves analyzing what has and has not worked for you in the past. By visiting IconoSquare’s optimization section, you can get a detailed analysis of your posting history versus engagement. This report will also highlight the best times of the day and days of the week to post.

The dark circles indicate when you usually post media. The light gray circles show when your community has been interacting. The biggest light gray circles represent the best times for you to post.

posting-habits

You can also get a lot of great insight for free from Instagram analytics for business accounts, found under the Followers section.

You may want to consider using a social media scheduling tool to automatically publish your posts when your audience is the most engaged.

10. Steal your competitors’ followers

One of the best ways to find and attract a new following is by seeking out your closest competitors’ Instagram accounts and engaging with their audiences. These people have already shown some level of interest in the products you carry simply by following your competitors.

So how do you effectively steal your competitors’ followers? By engaging with them. There are several ways to engage with Instagram users, and the more work you put in, the more followers and repeat engagement you’ll get out of it.

The three types of engagement on Instagram are:

  • Follow a user
  • Like a photo
  • Comment on a photo

Don’t be afraid to use an emoji or two to add some personality to your text.

11. Pay for sponsored posts and product reviews

All this optimized posting to your account is great, but if you really want to increase Instagram followers, you need to take advantage of influencer marketing and expose your brand to a wider audience.

So, how do you do that? First, unlike the tactics to grow Instagram followers mentioned above, this one usually isn’t free. However, if done correctly, it’s of good value.

To get started, you’ll need to make a list of large accounts in your niche. For example, if you sell beauty products, you’ll want to find large accounts from beauty bloggers.

You may already be following these accounts, but if not, you’ll need to find them. One of the best ways is by using Webstagram to search for some of the best hashtag keywords you’ve uncovered. When you do a search for your keywords, you’ll see any related keywords, along with the top Instagram accounts that feature those keywords.

There are a couple of things to look for in the profiles results:

  • A large following (usually 20,000 to 200,000)
  • An email address in the profile

If there is an email address in the profile, it usually means the account is open to sponsored posts or a shoutout in a sponsored Story.

You’ll want to email and ask their sponsored post pricing. While this differs from influencer to influencer, you’ll likely find  the average rate to be anywhere from $20 to $50 per post, depending on the size of the following.

If you’re selling a unique and original product, you may also want to consider sending your product for the influencer to review and post. Usually, the more natural and less advertisement-like the image, the greater the engagement and response.

You don’t necessarily need influencers with a massive following to get more followers on Instagram, but rather ones with a high engagement rate (likes and comments relative to follower count), which many influencer marketplaces can provide.

12. Use geotags to boost local discovery

Besides hashtags, you can also make your Instagram posts and Stories discoverable by tagging your location—either the city you’re in or the venue where the photo or video was taken.

Locations not only have their own Instagram feed but also their own Story, and hashtags you can contribute to when you use the location sticker in your own Stories.

Local businesses can get the most value out of location tags by posting regularly to these feeds and also engaging with posts from prospective customers who are physically in the vicinity.

13. Organize your Stories into Highlights

Whenever a potential follower lands on your business profile, you have a short span of time to convince them to follow you.

One way to do this is by using the Highlights feature on your profile to organize your Instagram Stories in a way that communicates what your account is about.

Since Stories have a 24-hour lifespan, Highlights can be used to give them a second life and entice others to follow you so they don’t miss out on more Stories in the future.

fashion nova highlights

Use Story Highlights to grow Instagram followers by:

  • Creating trailers that tease what your account is about
  • Organizing your Stories into themes (like countries you’ve visited, for travel accounts)
  • Explaining your products through pictures and videos

14. Ask for more followers

It sounds obvious, but it deserves to be said: Don’t be afraid to occasionally ask your target audience to follow you.

The same way YouTubers ask their viewers to follow them at the end of their videos, you can also ask viewers to follow you for more content.

Sometimes people might really enjoy what you put out on Instagram but need a nudge before they actually follow you. 

You can also do this in your Instagram captions: work it into your content by pitching what your audience will get if they follow you or by hinting at content that’s coming up that they won’t want to miss.

15. Run a giveaway

One of the best kinds of comments you can get on any social media post, not just Instagram, is when one user tags a friend. Not only do these comments contribute to your post’s engagement, which in turn makes it favorable to the Instagram algorithm, but each tag brings you a new audience member who arrived through a recommendation and who you could potentially win over as a follower.

One way to encourage this behavior is by posting relatable content that begs for one-to-one sharing (e.g., a gym meme that asks you to tag a friend who skips leg day). But a more reliable way is by running a giveaway that encourages your audience to tag a friend and follow your account.

Follow Instagram’s promotion guidelines and any legal requirements for running an Instagram contest that applies in your country of operation.

For inspiration, here’s an example of a successful product giveaway from Philip Kingsley that incentivizes people to follow its account and tag a friend for the chance to win a collection.

giveaway example

Free Reading List: Social Media Marketing Tactics

Want to learn more about how social media can help drive sales? Download our free, curated list of high-impact articles.

16. Share user-generated content

User-generated content (UGC) is any type of content—such as videos, photos, reviews, audio, and more—that you curate from fans or followers. It’s an essential tool in your marketing arsenal for gaining followers on Instagram. UGC helps humanize your brand by featuring real people, with real stories that show your product in real life, and builds a more trusting relationship with potential customers.

Not only does your audience love their 15 minutes of fame on your Instagram feed, featuring them also helps drive more sales in your online store. According to research from Olapic, consumers today are 56% more likely to buy something after seeing a photo of the product shared by customers. 

Take Fashion Nova, for example. The online retailer’s Instagram account relies heavily on user-generated content.

fashion nova UGC

Fashion Nova’s user-generated content gives it access to thousands of pictures from people all over the world to share with its target audience—pictures that both showcase the brand’s values and inspire followers to engage with the brand’s posts and buy the clothes real people are wearing. 

When it comes to creating user-generated content for your online store, start by asking customers to share their favorite experiences and images with your products by:

  • Creating a branded hashtag feed where customers can post images
  • Adding a call to action in your Instagram bio
  • Running a contest 
  • Reaching out to influencers
  • Adding an “ask” for user-generated content in your packaging

Remember, the goal of UGC is to show an authentic view of your products. If some customers send you lower-quality photos that still highlight your products’ best features, don’t be afraid to use them. 

17. Use Instagram Live

Live video is the key to running a successful marketing strategy on any social media platform. With Instagram, you can use Instagram Live to stream videos to your followers and engage with them in real time. 

When your brand starts a live video stream, a ring encases your profile picture in Instagram Stories to tell followers they can check it out. Followers also receive a notification when you start a live video. Once you finish your livestream, you can upload it to your Story for 24 hours. 

instagram live

Remember that Instagram Live is interactive. Your followers will probably comment while you’re live, so try to acknowledge their comments and find ways to get them to participate. 

Some ways to gain more followers when using Instagram Live include:

  • Influencer takeovers
  • Hosting an AMA (ask me anything) or Q&A
  • Teasing a product launch or update
  • Hosting a talk show
  • Going behind the scenes on your operations
  • Sharing a current event 
  • Running product tutorials

Building an Instagram growth strategy to drive followers 

Growing your Instagram following isn’t always a numbers game. As with any social network, the most successful content strategy is being authentic and social.

Original article source at https://www.shopify.com

#instagram