27 June, 2025

Content Writing VS Content Marketing: How are Both Different From Each Other?

Regardless of how long the businesses have been introduced to digital marketing, it is often seen that they confuse the terms of marketing. One being content writing and the other being content marketing, brands are always confused between the two. 


We get it that both have content in the beginning, so what difference does it make? Well, that, my friend, is a misconception that people often have. Because of such uninformed thoughts, businesses are making decisions that can drastically affect their returns.


We may want to highlight how every decision that an entrepreneur takes is directed towards the end game. That being the returns on their investment. However, when you make wrong decisions, the chances of getting profits out of it are rare.


Keeping that in mind, we have seen many businesses make the same mistakes. How, you may ask? They confuse a writer with a marketer, leading to them hiring a writer first, expecting them to bring sales without a strategy, and losing money in the end.


However, what they are supposed to do in the beginning is that they better hire a content marketer first, strategize the marketing plan, understand the audience, and then begin with a content distribution channel to bring in positive outcomes.


We might like to add that a content marketer themselves cannot bring the results that businesses are expecting. Again, why, you may ask? Well, they strategize for you, but to curate quality content, that is entirely the job of a content writer. If given the same job to handle, they might not harness the same results that a content writer surely would.


Since the distinctions of the profiles are different, so are their skillset and impending impacts. For a better understanding of both profiles, here we bring forth a bifurcation that might help you.

What is Content Writing?

Content writing is the art of crafting material for different forms with the intention of commercializing, educating, informing, or attracting the reader. One can write in different formats and types that can target a diverse audience based on reading capacity.


For instance, if the intent of a user is to understand a topic in-depth, they might not find social media content worthy of reading. The use would look for informational long-format content that segmentizes every topic and presents information in every line. However, if you want to target a user with a short memory span but want them to make an effort to visit your social media handle, you might need to be quirky and lasting while being short and crisp.


Such a focus and effort to understand the audience’s vision, researching as per them, and building user-centric content that hooks the audience is a wholesome part of content writing, and what makes a content writer worthy of investment.

Primary Focuses of a Content Writer

Since the purpose of a content writer is clear, we also think that understanding their focus is equally important. 


To keep it short and helpful, bringing you pointers on the primary focus of a content writer is a much better choice. Those purposes being:


  1. Clarity and Engagement: Ensuring the message is easy to understand and keeps readers interested.

  2. Tone and Voice Alignment: Matching the brand's identity and audience expectations.

  3. Information Delivery: Structuring content so that it informs or educates effectively.

  4. SEO Writing: Incorporating keywords naturally to improve search visibility.

Well, with that, it must be evident to you why it is imperative to have a content writer right by your side. You may not be able to describe efficiently, but a content writer with a writing grasp can, and that's what makes them distinctive.

Types of Content Writers That Fulfill Different Brand Needs

Since you are aware of the purpose, it is essential for you to know that content writers are limited and titles in this large spectrum. They also have categories that help you and other businesses focus on the exact niche you are planning on exploring. The types of content writers are categorized among those in this list:


  1. SEO Writers: Focused on keyword-rich content for better search engine rankings.

  2. Technical Writers: Skilled in explaining complex topics like software, IT, or engineering.

  3. Copywriters: Craft persuasive content for ads, landing pages, and sales emails.

  4. Creative Writers: Bring storytelling and emotion into brand content.

  5. Ghostwriters: Write on behalf of others, often used for thought leadership or executive content.

Now, once your need is clear, you can choose the type of writer from the above list.


What is Content Marketing?

Coming to the content marketing, it is expected to be the same by the businesses, but has an entirely different purpose in the field of digital marketing. When talking about content marketing, it implies that a marketer takes a systematic approach to build a business-focused strategy to engage the audience and bring in leads and outcomes.


One might confuse a writer and a marketer over here. However, the difference comes from the fact that the marketer works on intent analysis, content distribution system, business networking, and then works on content performance to ensure that businesses either get leads in return or traffic from users who might be looking for services or products.


A content marketer does provide a writer with SEO-focused keywords, intent-focused ideas, and understanding of what the audience is looking for, but would not write the content themselves. Since marketing is about strategizing, you may also label a content marketer as a strategist working on driving full value out of the content.

What are the Main Components of Content Marketing?

You might be wondering what the main components of a content marketer are and what other skill sets they bring forth for businesses. To answer the questions, we have listed down some of the components and responsibilities that fall under a content marketer:


  1. Content Strategy & Calendar: Blueprint of what gets published when and where.

  2. SEO and Keyword Research: Driving organic visibility.

  3. Channel Management: Managing distribution across social media, email, blogs, etc.

  4. Lead Generation Funnels: Creating content to guide users through the sales funnel.

  5. Content Analytics: Measuring performance metrics like traffic, bounce rate, and conversions.

All these pointers direct us to one thing: a marketer knows how to monetize the content produced by a writer, and they are interdependent on each other to ensure that a business flourishes, generates immense revenue, and drives tangible results.

How is Content Writing Different From Content Marketing?

Since the interdependencies and differences are somewhat clear, we do seem to understand that a tabular version might be much more helpful to conclusively understand the difference. For that purpose, here we go and bring a table form for you to understand it in a short and crisp manner.


Aspects

Content Writer

Content Marketer

Primary Role

Create content

Use content to achieve the goal

Focus

Language, tone, clarity

Strategy, funnel, ROI

Goal

Engage and inform readers

Attract, engage, and retain customers

Tools

Google Docs, Grammarly, AI Detectors, Plagiarism Tools

Google Analytics, Search Console, SEO tools

Metrics

Engagement, readability

Traffic, leads, conversion


Since the difference is clear and the categorization is in front with a tabular visual, we hope the bifurcation as well as the brief will be assisted.

How Can a Content Writer and a Content Marketer Work Together?

Now that distinctions are apprehended, the final discussion comes to them working together. How are these two profiles interdependent and change the game for businesses? For that, we are going to be short and concise for you since the majority of them are somewhat clear above.

  1. Content Writing Fuels Content Marketing

The interdependencies of content and marketing are paramount. Written content is not enough to drive if not strategized well. And similar is the case with the strategies, if not backed by value-driven content. The content, when combined with user-focused strategies, brings value and fuels the entire lead generation process.

  1. Content Reuse and Repurposing Based on Requirement

Upon discussion, if the content is not fit for a platform based on certain factors, it can be repurposed by the marketer. Similarly, based on the demand of the distribution, content can be moulded to fit the needs of a strategy.

  1. Cross-Skills Learning for Better Results

While some may say that these two different profiles both stem from digital marketing and can bring value to each other based on SEO, audience, research, and other factors. This way, a writer and a marketer may learn from each other and bring forth results that are beneficial for the brand.

All In All

As we understood the differences, similarities, and interdependencies, it becomes clear that hiring only one can be a mistake in decision-making. Both need equal attention if you are planning on building a streamlined lead and revenue generation process. The content writing services combined with content and digital marketing services become imperative for businesses, if their end game is to augment their businesses and build a revenue-focused strategy.

04 July, 2024

Save and load from scriptable objects in Unity complete workflow

 




##########################

1. Create a scriptable object class as following and create the scriptable object in Resources folder in project directory

##########################


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


[CreateAssetMenu(fileName = "Data", menuName = "Data/SaveFile", order = 1)]

public class Saves : ScriptableObject

{

    public List<KeyValueData> savedDataList;


}



[System.Serializable]

public struct KeyValueData

{

    public string key;

    public string value;

}



##########################

2. Read and log saved data

For reading create a SaveSystem class as follows

##########################

using System.Collections;

using System.Collections.Generic;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

using UnityEngine;


public static class SaveSystem

{

    public static SavedDataSerializer LoadData()

    {

        string path = Application.persistentDataPath + "/SaveFile.asset";


        Debug.Log(path);


        if (File.Exists(path))

        {

            BinaryFormatter formatter = new BinaryFormatter();

            FileStream stream = new FileStream(path, FileMode.Open);

            SavedDataSerializer deSerializedData = (SavedDataSerializer)formatter.Deserialize(stream);

            stream.Close();

            return deSerializedData;

        }

        else

        {

            return null;

        }

    }

}



[System.Serializable]

public class SavedDataSerializer

{

    public List<KeyValueData> serializedData = new List<KeyValueData>();


    public SavedDataSerializer(Saves saveableData)

    {

        serializedData = saveableData.savedDataList;

    }

}



##########################

3. Read data from any class by logging SaveSystem.LoadData();

> currently gives null as the file does not exists in local memory, we can paste the scriptable object asset at the path that is logged from line number 13(46 in this file) in above script

> Upon trying to log the data received error: SerializationException: The input stream is not a valid binary format.

> This suggests that I need to save it in binary format first then only I'll be able to read it.

> In order to directly read the Scriptable Object, I can set the reference to it in a script and read the data from it, as follows:

##########################


public class StatsManager : MonoBehaviour

{


    public Saves savedDataSO;

    // Start is called before the first frame update

    void Start()

    {

        //Debug.Log(SaveSystem.LoadData());



        foreach(KeyValueData keyValueData in savedDataSO.savedDataList)

        {

            Debug.Log("Key: " + keyValueData.key);

            Debug.Log("Value: " + keyValueData.value);


        }




    }


}




##########################

4. Now that we can load a Scriptable Object, let's save it to the location where it is supposed to be in memory

> Add following function to SaveSystem.cs

##########################


public static void SaveData(Saves saveData)

{

    BinaryFormatter formatter = new BinaryFormatter();


    string path = Application.persistentDataPath + "/SaveFile.asset";


    FileStream stream = new FileStream(path, FileMode.Create);


    SavedDataSerializer serializedLevelsData = new SavedDataSerializer(saveData);


    formatter.Serialize(stream, serializedLevelsData);


    stream.Close();



}



##########################

5. Call SaveData after loading the placeholder data from scriptable object in order to save it in binary format

> running the following function should create the file SaveFile.asset in the location(Application.persistentDataPath) that was logged earlier

##########################


public class StatsManager : MonoBehaviour

{

    public Saves savedDataSO;

    // Start is called before the first frame update

    void Start()

    {

        //Debug.Log(SaveSystem.LoadData());


        foreach(KeyValueData keyValueData in savedDataSO.savedDataList)

        {

            Debug.Log("Key: " + keyValueData.key);

            Debug.Log("Value: " + keyValueData.value);


        }



        SaveSystem.SaveData(savedDataSO);

    }


}



##########################

6. Now we should be able to read the saved data

> now if we run the code below it should log the data from the saved location

##########################


public class StatsManager : MonoBehaviour

{


    void Start()

    {


        SavedDataSerializer savedData = SaveSystem.LoadData();


        foreach(KeyValueData keyValueData in savedData.serializedData)

        {

            Debug.Log("Key: " + keyValueData.key);

            Debug.Log("Value: " + keyValueData.value);

        

        }


    }


}



##########################

7. This finishes Scriptable Object based save and load system. Now in order to utilize if properly, we need to setup following few things:

> Check if saved data exists,

if exists

> load saved data

if not

> save referenced scriptable object data to location

> Save data to location when data is updated

Which all files and folders to backup to zip a Unity Project

 




In order to be able to recreate the Unity Project from a backup zip, just remove Library and Temp folder when backing up the project to a zip file.


This will significantly reduce the zip size.

05 June, 2024

FFmpeg stack two videos and merge audios




FFmpeg -i rtmp://192.168.137.1:1935/live/xyz -i rtmp://192.168.137.1:1935/live/abc -filter_complex "[0:v][1:v]vstack=inputs=2[v];[0:a][1:a]amerge=inputs=2[a]" -map "[v]" -map "[a]" -an -f flv rtmp://192.168.137.1:1935/live/qwe


The above command stacks video from two streams and merges audios into one.


I tried following commands before I came up with above. 


ffmpeg -i rtmp://192.168.137.1:1935/live/xyz -i rtmp://192.168.137.1:1935/live/abc -filter_complex "[0:a][1:a]amix[a]" -map 0:v -map "[a]" -c:v copy -f flv rtmp://192.168.137.1:1935/live/qwe


ffmpeg -i rtmp://192.168.137.1:1935/live/xyz -i rtmp://192.168.137.1:1935/live/abc -filter_complex "[0v][1v]xstack=inputs=2:layout=0_0|1920_0[stacked]" -map "[stacked]" -preset ultrafast -vcodec libx264 -tune zerolatency -an -f flv rtmp://192.168.137.1:1935/live/qwe


ffmpeg -i rtmp://192.168.137.1:1935/live/xyz -i rtmp://192.168.137.1:1935/live/abc -filter_complex "[0v][1v]xstack=inputs=2:layout=0_0|1920_0[stacked];[0:a][1:a]amix[a]" -map "[stacked]" -map 0:v -map "[a]" -preset ultrafast -vcodec libx264 -tune zerolatency -an -f flv rtmp://192.168.137.1:1935/live/qwe


How to test?


Use Node Media ServerNode Media Server to start a local server that takes in rtmp streams and publishes.

Create two rtmp streams using OBS StudioOBS Studio stream them to Node Media Server and use the rtmp streams url in the FFmpeg command above to create a third rtmp stream which you can use anywhere you want.



03 May, 2024

Large Numbers to Words Table | Large Number Literals | Scientific Notations of Large Numbers


Big numbers represent incredibly large quantities. They are used to count things that are too numerous to keep track of with smaller units like thousands or millions. Here's a breakdown of each:

  • Million: This is a relatively common term and signifies one thousand multiplied by itself two times (1,000,000). You might use millions to describe the population of a large city.
  • Billion: This represents one thousand multiplied by itself three times (1,000,000,000). It's used for even larger quantities, like national budgets or global internet users.
  • Trillion: This is one thousand multiplied by itself four times (1,000,000,000,000). Amounts in the trillions are very rare in everyday life.

Following trillion, the naming system becomes less common and more standardized. Here, the naming convention relies on a base of one thousand and a suffix based on the Greek numerals for each power of one thousand.

Number

Literal Notation

101

Ten

102

Hundred

103

Thousand

104

Ten Thousand

105

Hundred Thousand

106

Million

109

Billion

1012

Trillion

1015

Quadrillion

1018

Quintillion

1021

Sextillion

1024

Septillion

1027

Octillion

1030

Nonillion

1033

Decillion

1036

Undecillion

1039

Duodecillion

1042

Tredecillion

1045

Quattuordecillion

1048

Quindecillion

1051

Sexdecillion

1054

Septendecillion

1057

Octodecillion

1060

Novemdecillion

1063

Vigintillion

10100

Googol

10303

Centillion

1010100

Googolplex


22 February, 2024

Unity Mobile Game Optimization Checklist



- On Image and Text components that aren’t interacted with you can uncheck “Raycast Target” on it, as it will remove them from any Raycast calculus.

- Click on your textures in your “Project” window. Click on the “Advanced” arrow, and now check “Generate Mip Maps”, Unity especially recommends it for faster texture loading time and a lower rendering time.




- Set the “Shadow Cascades” to “No Cascades” (Quality settings)




- If you have dynamic UI elements like a Scroll Rect with a lot of elements to visualize, a good practice is to turn off the pixel perfect check box on the canvas that contains the list and disable the items that aren’t visible on the screen.

- Set all non moving objects to "Static"




- Above Unity3d 2017.2 you should turn off "autoSyncTransforms" on the Physics tab




- Always use Crunch Compression Low on textures




- Try to keep the “Collision Detection Mode” on “Discrete” if possible, as “Dynamic” demands more performance.

- You can go to the TimeManager window (Edit > Project Settings > Time), and tweak the “Fixed Timestep” value. This value represents the duration between two calls of the FixedUpdate() method.

- You can use Coroutines to call a method only every second for example, using the instruction: “yield return new WaitForSeconds (1);” It could be used to refresh some UI display:

- Set particles culling to "Pause and Catch Up"

- Use ShaderVariantCollection.WarmUp to fully load shaders before gameplay

- Baked your shadows or turn them off

- Out of Built-in Shaders, they come roughly in this order of increasing complexity:
  • Unlit. This is just a texture, not affected by any lighting.
  • VertexLit.
  • Diffuse.
  • Normal mapped. This is a bit more expensive than Diffuse: it adds one more texture (normal map), and a couple of shader instructions.
  • Specular. This adds specular highlight calculation.



Those are the quick fixes you can try but without any knowledge of your game we can't help much. Even a screenshot would help. Particles, Lights, Shadows and Textures are the main culprits of lag (from my experience and if done incorrectly).


Featured Post

Content Writing VS Content Marketing: How are Both Different From Each Other?

Regardless of how long the businesses have been introduced to digital marketing, it is often seen that they confuse the terms of marketing. ...