teleren/devto huggingface dataset:
How to hire a team for development of chatgpt applications
Published: 2023-02-14 13:39:43

Define your project requirements: Before you start [looking for a team](https://www.cronj.com/chat-gpt-application), you need to know exactly what you want. Write down the features and functionalities you need in your[ chatGPT application](https://www.cronj.com/chat-gpt-application), as well as the technologies you want the team to be proficient in.

Look for a suitable team: You can find potential teams in a number of ways, such as through job boards, referrals, or by searching on LinkedIn or other professional networks. You can also approach development companies, such as CronJ, that specialize in [chatGPT development](https://www.cronj.com/chat-gpt-application).

Evaluate the team's skills and experience: Once you have a list of potential teams, it's important to assess their skills and experience to make sure they're a good fit for your project. Look at their portfolio, check their previous work and read reviews from their past clients.

Interview the team: After you've narrowed down your list, it's time to interview the team members. Ask them about their experience and their approach to development, and see if their vision for the project aligns with yours.

Make a decision: Finally, it's time to make a decision on which team to hire. Consider factors such as their technical abilities, communication skills, and their approach to problem-solving. You can also ask for references from past clients to get a better understanding of their work.

By following these steps, you can find the right team to help bring your chatGPT application to life. Just remember to take your time, be thorough, and most importantly, have fun!
The story behind Spelling Checker App | Erselan Khan
Tags: programming, android, application, software
Published: 2023-02-14 13:31:55

Hey guys! before moving forward to the article, I would like to request you all kindly download the **Spelling Checker** app and give your reviews and feedback on the **Google Play Store**.

Download now: [https://play.google.com/store/apps/details?id=com.apphut.spellingchecker]


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9d4wm4aahen25d0pswlu.gif)


## Story:

So the story is that, when I was scrolling my Facebook feeds, I saw a post on the Soul Brothers Pakistan group. One of our soul brothers had shared his story. He applied for immigration to Canada, but his process took some time and finally, one day his immigration process got approved by the Canadian embassy. When his process got approved, he also got married at this time. So he shared his marriage certificate with the Canadian embassy for her wife’s immigration process. But this time, the Canadian embassy rejected his wife’s immigration process because of a very small spelling mistake.

So the mistake on his marriage certificate was that the title of the marriage certificate should be “**Govt of Pakistan**”, but It was mistaken as “**Govt of Pkistan**”. The Canadian embassy considered that the marriage certificate is fake and that’s why they rejected the whole immigration process for his wife.


## The idea for Spelling Checker App:

So after I read the post and thought about the solution to how I can help people get rid of these kinds of mistakes. So I built an app the Spelling Checker app. The Spelling checker app helps you to find out the spelling mistakes in your document in very few seconds. There are a few steps:

1. - Take a picture from your phone camera.
2. - or Select a picture from your phone gallery.
3. - You can crop the picture if you want to.
4. - Boom! the app will highlight all the mistakes in yellow colour.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b2ve2p6mntw0skk2sz4m.png)

Hope you all take benefit from this app. I am signing off for now and waiting for the feedback and reviews from all of you!
The Power of Liskov Substitution Principle in Improving Software Design
Tags: solid, liskov, lsp, liskovsubstitutionalprincip
Published: 2023-02-14 13:26:46

The Liskov Substitution Principle (LSP) is a principle of object-oriented programming and a part of the SOLID design principles. It states that objects of a superclass should be replaceable with objects of a subclass without affecting the correctness of the program.

A real-life business scenario where the Liskov Substitution Principle can be applied is in a banking system. 

Consider a superclass "Account" with subclasses "Savings Account" and "Checking Account". 

The Account class could have methods such as "deposit()" and "withdraw()".

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tk94sw5gacj6c2n13j08.png)


All subclasses of Account, including Savings Account and Checking Account, can provide their own implementation of the deposit() and withdraw() methods, as the rules for depositing and withdrawing money may be different for each type of account.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dt6seon4ggjt62jivgjr.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cuhx56i5q51t0rbyl0di.png)

Now, let's say that we have a function that accepts an Account object and performs some operations, such as depositing or withdrawing money. 

If we pass a Savings Account object to this function, it should work just as well as if we had passed a Checking Account object. 

This is because all of these objects are substitutable for each other, and the function should not care about the specific type of Account it is working with as long as it implements the deposit() and withdraw() methods.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k1943gjoc1xay7oxaxpj.png)

Now, we can conclude that objects of subclasses can be used interchangeably with objects of the superclass without causing any problems or affecting the correctness of the program, even in a real business scenario.
Core Java - Abstraction
Tags: java
Published: 2023-02-14 13:26:45

**Abstraction**
Abstract means theoretical not practical or not implemented.
If we need to watch TV we need not to know how TV works we just switch channels using remote.

Abstract class can be fully and partially implemented Abstract class.

Abstraction means hiding the internal details of implementation.

We cannot create a instance of abstract class 

```
public abstract class BMV {
	void commonFunctionality() {
		System.out.println("Inside common fun");
	}
	abstract void acclerate();
}
```

```
public class ThreeSeries extends BMV {
	@Override
	void acclerate() {
		System.out.println("Inside 3 series can go upto 120");
	}
}
```

```
public abstract class FiveSeries extends BMV{
	abstract void acclerate();
}
```

```
public class Test {
	public static void main(String[] args) {
		ThreeSeries three = new ThreeSeries();
		three.acclerate();
		three.commonFunctionality();
	}
}
```



**Output -**  Inside 3 series can go upto 120
Inside common fun



Access modifiers --

we can't mark abstract class as final.
we can't mark abstract method as static.
Using Tailwind's @apply in Vue3 + Nuxt3
Tags: webdev, vue, tailwindcss
Published: 2023-02-14 13:26:07

[Tailwind](https://tailwindcss.com/) is great because it offers utility first styling. 
Providing low-level styling, it can sometimes feel like writing inline styling. 
I can already see the benefits of Tailwind including rapid development and it's performance advantages. 
I noticed how long these stylings go to achieve the look I am going for. 
Repeated lines of code that can be a quite annoying and it's not very readable. 

That is until I discovered the `@apply` directive.

Consider this section
![Consider this line here:](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mmkk8x2ynccwxhnmszkr.jpeg)

simplified to this..
![simplified to:](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sgrf9pwg9405f85lp940.jpeg)

In Vue, you can add styles to a Single File Component (SFC) in the `<styles>` tag. Here we can encapsulate the styling of this file. It's also a good practice to `scope` the style to this component.
![section styling](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/406dt3pyahua32amvcbm.jpeg)

This helps keeping code clean and readable.
useStateDebounced: debounced state in React
Tags: react
Published: 2023-02-14 13:10:42

Simple yet powerful solution for debounced state in react. This hook is based on the standard react hook *useState*. **useStateDebounced** provides a similar functionality. It returns the same array of [value, setValue] plus debounced value. 

### useStateDebounced hook
```javascript
function useStateDebounced(delay, initialState)) {
  const [value, setValue] = useState(initialState);
  const [debouncedValue, setDebouncedValue] = useState(value);

  useEffect(() => {
    const timer = setTimeout(
      () => setDebouncedValue(value),
      delay
    );

    return () => {
      clearTimeout(timer);
    };
  }, [value, delay]);

  return [value, debouncedValue, setValue];
}
```

--------
## Usage
Usually we need debounced state to delay some costly operation execution until user interaction finished. In this example we wait for the user to finish typing in the search dialog before fetching a new list of recipes. So 700 ms after the last user's keystroke `debouncedTerm` is updated and the server query is executed. 

```javascript
import React, { useEffect, useState } from 'react';
import { useStateDebounced } from 'use-state-debounced';


export const RecipesList = () => {
  const [recipes, setRecipes] = useState([]);
  const [term, debouncedTerm, setTerm] = useStateDebounced(700, 'pizza');

  useEffect(() => {
    const filteredList = await fetchRecepiesFromServer(debouncedTerm);
    setRecipes(filteredList);
  }, [debouncedTerm]);

  return (
    <>
      <input value={term} onChange={e => setTerm(e.target.value)} />

      <ul>
        {recipes.map((r) =>
          (<li key={r.id}>{r.name}</li>)
        )}
      </ul>
    </>
  );
};
```

--------

In the above example we use `<input>` as a [controlled](https://reactjs.org/docs/forms.html#controlled-components) component. For [uncontrolled](https://reactjs.org/docs/uncontrolled-components.html) components the first `term` parameter can be omitted.

```javascript
const [, debouncedTerm, setTerm] = useStateDebounced(700);

<input onChange={e => setTerm(e.target.value)} />
```

--------

TypeScript version of **useStateDebounced** can be found [here](https://github.com/mgustus/use-state-debounced).
Value Comparison Operators JavaScript Edition
Published: 2023-02-14 13:09:49

In JavaScript, we have three different value-comparison operators:
- "="
- "=="
- "==="

**What is ( = ) in programming languages?**

- A single equals symbol (=) is also called an assignment operator.
- In simple terms, when I say " a = 5 ", this means that I am putting the value '5' inside the variable ' a '.
- Now, when I try to print the value of ' a ', I will get the value ' 5 '.

```
const a = 5;
console.log(a); // 5

```

**What is ( == ) in programming languages?**

- The pair of equal signs ( == ) when put together acts as a comparison operator.
- This means that it will check for equality in the two values that are placed on both the left and right sides of this operator.

```
const a = 5;
const b = "5";
console.log(a == b); // true

```
- We can see in the above example that the value of ' a ' is of Integer data type and the value of ' b ' is of String data type and when checking the equality for these values, it results in ' true '.

- This means that this equality ( == ) operator does not consider the data type while checking for equality of the values. It only compares the values and if the values are the same, it results in ' true ' or else ' false '.
- But before comparison actually takes place, coercion comes into the picture for this operator.
- Coercion refers to the automatic conversion of one data type to another.
- First, one of the values is converted from one data type into the data type that fits the other value. For eg: The string data type is converted to a Number data type.
- After coercion, a comparison between the two values takes place.
- For this reason, this operator is also called the loose equality operator.

**What is ( === ) in JavaScript?**

- If we want to compare the data types also while checking for equality in values, then we have the triple equals operator ( === ) aka strict equality operator.
- When used, this operator checks for equality in data types of the values along with equality in values.
- If the values are of different data types then it will result in ' false '.

```
const a = 5;
const b = "5";
console.log(a === b) // false
```
- We can see in the above example, even though the values are the same but they have different data types and for this reason, the expression results in ' false '.
- Coercion does not take place here.
- This operator checks for equality for data type along with the value, this operator is also known as the strict type operator.

This is all about the ( = ) operator in javascript. 

JavaScript can be really tricky but I will make sure to explain these complex concepts and topics in as simple way as I possibly can.
How to install additional libraries on N8N
Tags: opensource, elestio, n8n
Published: 2023-10-11 13:04:56

---
title: How to install additional libraries on N8N
published: true
date: 2023-02-14 13:07:25 UTC
tags: opensource, elestio, n8n
canonical_url: https://elestio.hashnode.dev/how-to-install-additional-libraries-on-n8n
---

[n8n](https://elest.io/open-source/n8n?ref=blog.elest.io) is a popular open-source workflow automation tool that allows you to automate repetitive tasks and create custom workflows. However, sometimes you may need to install additional libraries to enhance its functionality. In this article, well walk you through the steps of how to install additional libraries for n8n using the command line interface (CLI).

### Step 1: Add an Environment Variable

The first step is to add an environment variable. You can do this in the .env file in Visual Studio Code (VSCode) or from the Elestio Dashboard > Update config button. The environment variable you need to add is `NODE_FUNCTION_ALLOW_EXTERNAL=*`. This allows you to install additional libraries to n8n.

### Step 2: Create a Dockerfile

Next, in VSCode, create a file named `Dockerfile` (capital "D" is important) in the `/opt/app/` directory, near the `docker-compose.yml` file. The contents of the file should be as follows:

FROM n8nio/n8n:latest RUN npm install -g bcrypt body-parser fcm-push

These two lines specify the base image and the additional libraries you want to install. In this case, were installing the `bcrypt`, `body-parser`, and `fcm-push` libraries.

### Step 3: Modify the Docker Compose File

Next, modify the `docker-compose.yml` file by disabling the default image and instead using the build process. Your `docker-compose.yml` file should look like this:

# image: n8nio/n8n:${SOFTWARE\_VERSION\_TAG} build: context: .

### Step 4: Run the Command

Finally, run the following command in the terminal to build and run the custom image:

cd /opt/app; docker-compose down; docker-compose build; docker-compose up -d;

If you need to install more packages in the future, simply repeat Steps 2 and 4 to rebuild your custom image.

In conclusion, installing additional libraries for n8n is a straightforward process that involves adding an environment variable, creating a Dockerfile, modifying the Docker Compose file, and running a few commands. With these steps, youll be able to enhance the functionality of n8n and automate even more tasks with ease.

If you dont want to worry about maintenance . of your N8N server [deploy N8N on elest.io](https://elest.io/open-source/n8n?ref=blog.elest.io) and get automated backups, reverse proxy with SSL termination, DOS protection, firewall, automated OS & Software updates (So your instance of N8N stays always up to date), and a team of Linux experts and open source enthusiasts to ensure your services are always safe, UP and running.

Click on the button below to get a fully managed instance of N8N ready to use in less than 3 minutes.

_Originally published at_ [_https://blog.elest.io_](https://blog.elest.io/how-to-install-additional-libraries-for-n8n/) _on February 14, 2023._
Media Sosial Polpular
Published: 2023-02-14 13:01:29

[Opinia ](https://opinia.id/)adalah platform media sosial Indonesia, dengan tageline: more than fun, it’s inspiring. [Opinia ](https://opinia.id/)bercita-cita menghadirkan media sosial dengan algoritma berbasis nilai-nilai luhur Indonesia dan Pancasila. Melalui algoritma tersebut, [Opinia ](https://opinia.id/)berharap dapat menghadirkan pengalaman-pengalaman baru serta nilai manfaat lebih bagi penggunanya, sekaligus menjadi media sosial pertama karya anak bangsa dengan rasa dan nilai Indonesia yang utuh. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vmkp3rms3vp9a4cemtqa.jpg)

## Fitur Apa Saja yang Ada di Opinia?
[Opinia ](https://opinia.id/)memiliki lima fitur utama sebagai dasar layanan, yakni Idea, Artikel, Cerita, Poling, dan Petisi. 
Dalam fitur Idea, berisi status-status ringan dengan karakter terbatas layaknya twitter, ada meme, juga pantun. Sedangkan fitur Artikel, menampung jenis tulisan esai, opini, dan resensi; berisi gagasan dan pemikiran tentang berbagai hal dan topik. Fitur Cerita, menyediakan ruang tuturan perihal berbagai peristiwa, kejadian, dan sebagainya, dalam bentuk tulisan cerpen, cerbung, puisi, dan humor. Terakhir, ada Poling dan Petisi. Poling digunakan untuk mengumpulkan ragam pandangan publik (jajak pendapat). Sementara Petisi untuk menyatakan pendapat dan sikap, terkait berbagai kebijakan atau fenomena yang terjadi di sekitar kita. Dengan dua fitur ini, Poling dan Petisi, diharapkan bisa memengaruhi kebijakan publik ke depannya.
Melalui fitur-fitur tersebut, Opinian (pengguna Opinia) dapat mengekspresikan perasaan, menuangkan ide, cerita, menulis gagasan, menyatakan sikap, dan memotret ragam pendapat publik. Dengan fitur-fitur yang disediakan, Opinia menjadi tempat yang ideal bagi pengguna untuk menemukan inspirasi dan mendapatkan dukungan dari komunitas yang solid.

Keseluruhan interaktivitas di Opinia, selain mendapatkan POP Reward berupa PopCash (uang tunai) dan PopMerchant (merchandise), juga sistem level yang akan memfasilitasi penggunanya mengelola akun secara profesional, dengan kontrol penuh atas konten dan iklan. 
 
Tak hanya itu, [Opinia ](https://opinia.id/)juga menyediakan fitur keamanan yang memastikan privasi pengguna tetap terlindungi. Namun demikian, Pengguna dapat mengatur pengaturan privasi untuk menentukan siapa yang dapat mengakses konten yang dibagikan. Selain itu, platform ini juga dilengkapi dengan sistem moderasi yang memastikan bahwa konten yang dibagikan di platform ini sesuai dengan standar yang ditetapkan.

## Kesimpulan
Dalam keseluruhan, [Opinia ](https://opinia.id/)adalah platform media sosial yang memberikan pengalaman yang menyenangkan bagi pengguna. Dengan beragam fitur yang disediakan, Opinia memungkinkan pengguna untuk berinteraksi, berbagi literasi, dan saling menginspirasi. Platform ini juga menyediakan konten literasi yang berkualitas dan dikembangkan oleh tim yang ahli dalam bidangnya. Opinia adalah pilihan yang tepat bagi siapa saja yang ingin menemukan inspirasi dan mendapatkan dukungan dari komunitas yang solid.
Benefits of Data Science in Today's World
Tags: datascience, data
Published: 2023-02-14 12:55:10

Data Science has emerged as a powerful tool that has revolutionized the way we analyze and interpret data. It combines the disciplines of computer science, mathematics, and statistics to extract valuable insights from complex data sets. With the explosion of data in recent years, Data Science has become an essential part of businesses across industries, helping them make informed decisions and gain a competitive edge. In this article, we will discuss the benefits of Data Science and how it can help organizations achieve their goals.

Improved Decision-Making

One of the most significant benefits of Data Science is its ability to help businesses make informed decisions. By analyzing data, organizations can identify patterns and trends that may not be apparent to the naked eye. This information can be used to make strategic decisions about everything from product development to marketing campaigns. For example, a retailer can use Data Science to analyze customer purchase patterns and identify the products that are most popular. They can then use this information to make decisions about which products to stock and where to display them to increase sales.

Predictive Analytics

Another benefit of Data Science is its ability to make accurate predictions about future events. By analyzing historical data, organizations can build models that can forecast future trends with a high degree of accuracy. This is particularly useful for businesses that operate in volatile or unpredictable markets. For example, a financial institution can use Data Science to predict changes in the stock market, enabling them to make informed investment decisions.
Object.assign in TypeScript: An Introduction to Converting Classes
Tags: javascript, typescript, webdev, tutorial
Published: 2023-02-14 12:51:07

## Situation
Imagine that you are working on calling an API to receive a list of Person. Each Person has their first name, last name and title. Knowing the model received from the backend, you create a model in the frontend side to catch the value received like:
```
type Person {
	title: string;
	first: string;
	last: string;
}
```

Now you have received the data from the backend, it’s time for rendering it into view. The requirement is to _have title, first name and last name ordered in the same row_. Your HTML now looks something like this:

```
<div>{person.title}, {person.first} {person.last}</div>
```

Until now, the code looks fine and everything runs as you expected. But a new UI comes and you have to adapt that kind of HTML layout in other components. Things look a little duplicate here so you decide to reuse the template by setting a method in `Person` type. You change Person type to a class and add a method `getInfo` so that the template can be reused in your components. The code now looks like this:

```
class Person {
	title: string;
	first: string;
	last: string;

	getInfo(): string {
		return `${this.title}, ${this.first} ${this.last}`;
	}
}
```

By using a class, now your components can reuse the template by calling `getInfo()` method:

```
<div>{person.getInfo()}</div>
```

The problem with this approach is that unlike Java, data serialized from JSON to JavaScript code only mapped to fields not to methods and so when you try to run the above code, you are likely to receive an error `getInfo` is not a function.

## Solution
In order to solve this problem, `Object.assign` provides a way to map data to the class constructor. By using `Object.assign`, you can convert a plain object to a class instance and all the fields in the object will be assigned to the class fields. Therefore, you can call an instance method, in this case `getInfo`, after mapping the data. You can use `Object.assign` like this:

```
let person = Object.assign(new Person(), data);
```

Now you can use the person instance to call getInfo method:

```
<div>{person.getInfo()}</div>
```

This approach helps you to reuse the template and avoid duplicate code.

---
In this article, you learned how to cast plain object data to a class in TypeScript. If you found it useful, please consider liking and sharing it to help spread the knowledge.