teleren/devto huggingface dataset:
Database Design 101: An Introduction
Published: 2023-02-22 17:30:50

If you're new to the field of _database design_, you might be wondering what it is and why it's important. In this post, we'll provide a basic overview of database design, explain why it matters, and walk you through the basic steps involved in the database design process.

## What is database design?
At its core, database design is the process of creating a logical and physical model of a database system. This involves defining the structure of the data, the relationships between different data elements, and the rules for storing and retrieving the data. A well-designed database can improve data accuracy, reduce data redundancy, and provide faster access to the data.

**Why is database design important?**
Database design is critical because it can impact the performance and usability of a database system. Poorly designed databases can lead to data inconsistencies, slower performance, and difficulties in retrieving and analyzing data. On the other hand, well-designed databases can provide numerous benefits, including improved data accuracy, increased data security, and faster access to the data.

## Steps in the database design process
The database design process typically involves several distinct steps, including requirements gathering, conceptual design, logical design, normalization, physical design, implementation, and maintenance.

1. **Requirements gathering**: This involves understanding user requirements, defining data elements, and creating use cases and scenarios.
2. **Conceptual design**: This step involves creating an Entity-Relationship (ER) model, identifying entities and attributes, and defining relationships between entities.
3. **Logical design**: Here, you create a relational schema, define tables and columns, and create primary and foreign keys.
4. **Normalization**: This step involves organizing the data into tables and eliminating redundancy in the data.
5. **Physical design**: In this step, you choose a database management system (DBMS), define storage structures, and create indexes and views.
6. **Implementation**: This involves creating the database schema, populating the database with data, and ensuring data integrity and security.
7. **Maintenance**: Finally, you'll monitor the database performance, back up and restore the database, and modify the database schema as needed.

**Conclusion**
Database design is a complex and important field that can have a significant impact on the performance and usability of a database system. By understanding the basic steps involved in the database design process, you can begin to create databases that are well-designed, secure, and efficient. In the coming chapters of this book, we'll dive deeper into each step of the database design process, providing practical advice and best practices along the way.

We hope you found this introduction to database design helpful. If you have any questions or comments, please feel free to leave them below!
Of all the places to FINALLY understand OAuth
Tags: oauth2, learning, kroger
Published: 2023-02-22 17:29:59

---
title: Of all the places to FINALLY understand OAuth
published: true
description: I learned OAuth2 in a bizarre way. Through Kroger's Developer FAQ
tags: oauth2, learning, kroger
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2w3h8cpzjwsoo7nmiwee.png
---

Kroger has developer guides, and I read their documentation on OAuth2, and it is honestly some of the best documentation I've read on the subject.

Go check it out: https://developer.kroger.com/documentation/public/security/guides-oauth

✌️
Debian 12 (Bookworm) entra em "soft freeze"
Tags: debian, bookworm, linux
Published: 2023-02-22 17:22:56

Seguindo o calendário de [Releases](https://www.debian.org/releases/), o Projeto [Debian 12 (Bookworm)](https://www.debian.org/releases/bookworm/) entrou em [fase de congelamento "leve"](https://lists.debian.org/debian-devel-announce/2023/02/msg00003.html).

De forma objetiva, **estão apenas recebendo correções de possíveis bugs existentes**, principalmente os pequenos, para consolidarem tal versão.

Uma boa novidade para a versão é que esta **trará firmwares não-livres no instalador padrão**.

A decisão foi tomada em conjunto com comunidade, [via votação](https://www.debian.org/vote/2022/vote_003). Tal decisão será para incorporar os firmwares não-livres ao instalador padrão, facilitando para os novatos e permitindo assim que componentes que não tenham firmwares livres disponíveis, como chips Wi-Fi e GPUs, funcionem de primeira no Debian, não sendo necessário baixar a parte e anexar via dispositivo secundário.

Durante a instalação, o usuário será informado que o hardware irá necessitar desses drivers de códigos proprietários e terá a opção de desabilitá-los.

A decisão de incluir firmwares não-livres é tão grande que precisou ser respaldada por ampla maioria a fim de alterar o contrato social do projeto.

Para 12 de março de 2023, está prevista a segunda fase de congelamento, antes do lançamento final, chamada de "[Hard Freeze (texto em inglês)](https://release.debian.org/testing/freeze_policy.html#hard)".
🙉 ignore the noise
Published: 2023-02-22 16:57:32

# Honestly: ignore the noise.

Your time is precious.

Do not evaluate yourself by others' opinions. 

> We are all different.

I am focused and I am detailed. And I do a fucking good job that I am proud of.

AND AT THE SAME TIME, yes, I do have bad days where I can not get any significant amount of work done. And that is ok because I am showing up, handling all that life throws at us, and being committed as any other day.

## The lesson here?

I can certainly get better, and that is something that I welcome daily. But beware of the trap of becoming someone else.

> DO NOT DO IT.

## My recipe for success

I communicate with all my stakeholders with honesty.

### Overcommunicate

I OVER COMMUNICATE using long-form documents and medium-length content. I am certain that being detailed is a good practice, not a bad one.

There are certain situations that require the elevator pitch: once you are inside an elevator. Other than that, 30s reports are total trash IMHO.

Again, we sync with interested parties over video calls any time they need to get details (usually once a week for 30 min).

But because I write long-form, if there is a fresh new question, I jump to learn from it and document what is the intention and outcome. 

- If the question already was answered and documented, I can easily just point it out and avoid having an unproductive 30-min session.

### Escalate

Something that I do as needed: I escalate e-v-e-r-y time I feel like something is not feeling right and need guidance. 

A lot of insecure folks get offended by that.   🤷 Don't get discouraged by it.

I work in a remote environment. That has been normal for me for the last several years. 

### Use recordings

I have a clear sense that the image I pass over voice and video and text is what makes me REAL to my other human colleagues.
I record 5 min videos every other day with examples and quick demos of the progress I am making.

I know people learn with repetition.

> And no one else knows more about the project 

I DEFINITELY have the most context on it.

And I enjoy sharing it with others, so we can land in a better place together. That way I guarantee I am not the single source of truth and single point of failure.

# Final notes

Despite having a reasonable past experience as a project manager, I am not working as such. 

Senior software engineers wear many hats. We do. 

## Do your job

But we cannot wear it all.

Managers must do their jobs.

PM should do their jobs.

Cleaners do their jobs.

I am doing mine.
Authentication with Supabase
Tags: webdev, javascript, beginners, programming
Published: 2023-02-22 16:50:16

{% embed https://www.youtube.com/watch?v=LjRZUz_aUVc&ab_channel=CodewithGuillaume %}

Authenticating users is an important part of building web applications. Supabase offers a range of authentication options to help developers build secure applications quickly and easily.

Supabase offers authentication through OAuth providers such as Google, Facebook, and Twitter, as well as through email and password authentication. With email and password authentication, Supabase uses bcrypt to hash passwords, making them difficult to crack.

Supabase also offers custom authentication options, which allows developers to use their own authentication systems. This can be useful for companies with existing authentication systems that they want to integrate with their Supabase applications.

One of the benefits of using Supabase for authentication is that it comes with built-in support for role-based access control (RBAC). This means that developers can easily control what resources users have access to based on their roles within the application.

In addition to RBAC, Supabase also offers session management and two-factor authentication (2FA) for added security.

Overall, Supabase provides developers with a powerful and flexible set of tools for authenticating users and managing user access within their applications. By leveraging the authentication features offered by Supabase, developers can focus on building great user experiences while keeping their applications secure.

Guillaume Duhan
Welcome Thread - v213
Tags: welcome
Published: 2023-02-22 16:31:59

---
title: Welcome Thread - v213
published: true
description: Welcome to DEV! A thread of hellos and intros.
tags: welcome
canonical_url: 
---

![Infinitely zooming into windows that say welcome to windows 95... a window within a window within a window, forever. It's Windows 95 all the way down!](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/22u2d4dpc7411biayqmr.gif)

### Welcome to DEV!

1. Leave a comment below to introduce yourself! You can talk about what brought you here, what you're learning, or just a fun fact about yourself.

2. Reply to someone's comment, either with a question or just a hello. 👋 

**Great to have you in the community!**
How Do Beginner Developers Make Money Online?
Tags: devops, beginners, devjournal, discuss
Published: 2023-02-22 16:28:49

Everyone wants to make money online, but it's not easy as it sounds it to be.

But once you get the clue, you have an endless journey to explore unique ways to your ultimate goal - I mean money.

Here is how to get started.

Yes, beginner developers can also make money in a variety of ways, depending on their skills, experience, and interests.

Here are some common ways that beginner developers earn money:

**Freelancing:** Many beginner developers start their careers by working as freelance developers.

Freelance work can provide an opportunity to gain experience, build a portfolio, and earn money while developing a network of clients.

Freelancers may find work through networking, referrals, or online freelance marketplaces like [Upwork](https://www.upwork.com/), [Fiverr](fiverr.com), or [Freelancer](https://www.freelancer.com/).

**Full-time employment:** Some beginner developers may find employment as salaried employees for companies, organizations, or government agencies remotely.

In this digital era, many companies want to hire remote employees, it saves them money and resources.

So if you spend time searching the internet, you will find many opportunities out there.

Even usually use [LinkedIn](https://www.linkedin.com/) to find remote employees.

For instance, my agency ([Sturdy Business](https://sturdybusiness.com/
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qmxhmew4mgpaozzbfy0z.png)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i5zhrlyxv9s8dx5v9p4x.jpg))) recently hired a remote assisstant link builder to offer [affordable SEO services](https://sturdybusiness.com/affordable-seo-service-for-small-businesses/).

But to track activity they will use employee activity tracking tool Hubstaff, so it can happen in your case.

I think there is nothing wrong using such tools. It keeps both (company and employee) active.

**Developing mobile apps:** With the increasing popularity of smartphones and tablets, there is a growing demand for mobile apps. Beginner developers can create mobile apps and earn money by selling them on app stores like the Apple App Store and Google Play Store, or through in-app advertising.

**Creating and selling digital products:** Beginner developers can also make money by creating and selling digital products like online courses, e-books, and software tools.

They can sell these products on their own websites or through online marketplaces like Gumroad or Teachable.

**Developing web applications:** Beginner developers can also create and sell web applications, which are software programs that run on the internet.

They can sell these applications to businesses, organizations, or individuals who need customized software solutions.

Overall, the key to making money as a beginner developer is to focus on developing skills, building a strong portfolio, and marketing oneself effectively to potential clients or employers. As one's skills and experience grow, so too do the opportunities for earning income as a developer.
What is Graph in Apache AGE Part 2
Tags: apacheage, postgresq, postgres
Published: 2023-02-22 16:26:09


For part 1 [here](https://dev.to/farakhshahid/graph-in-apache-age-part-1-j5m)


In previous Post I write about what is graph database in depth.I would recommend to study it.

How we create Graph in Apache AGE. AGE is extension in postgreSQL for graph database functionality.

**Create a Graph**

To create a graph, use the create_graph function, located in the **ag_catalog** namespace.

**Syntax:** `create_graph(graph_name);`

**Returns:**

```
void
```

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdj3kqqff1eyyz790w09.png)


Considerations

This function will not return any results. The graph is created if there is no error message.

Tables needed to set up the graph are automatically created.


**Example:**

```
SELECT * FROM ag_catalog.create_graph('graph_name');
```
**To Create vertex and edge labels:**

```
CREATE LABEL person;
CREATE LABEL knows (weight double);

```

**How we insert data into Graph:**

```
INSERT INTO person VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');
INSERT INTO knows VALUES (1, 2, 0.8), (1, 3, 0.5), (2, 3, 0.6);

```

**Final Step How we Query on Graph**

```
MATCH (a:person)-[e:knows]->(b:person) WHERE e.weight > 0.6 RETURN a,b;

```

**Delete a Graph**

To delete a graph, use the drop_graph function, located in the ag_catalog namespace.

**Syntax:** `drop_graph(graph_name, cascade);`

**References:**

1. https://age.apache.org/age-manual/master/intro/graphs.html
2. https://www.fabiomarini.net/postgresql-with-apache-age-playing-more-seriously-with-graph-databases/
3. https://bitnine.net/blog-about-bitnine/blog-press/age-postgresql-extension-graph-database-functionality/?ckattempt=1
View Functions in Solidity
Tags: solidity, ethereum, web3, blockchain
Published: 2023-02-22 16:17:04

>View functions are read-only functions that ensure state variables cannot be modified after calling them

The view functions are read-only functions, which ensures that state variables cannot be updated after they have been invoked by the user. The compiler will issue a warning if any of the following statements are found in view functions: modifying state variables, emitting events, creating other contracts, using the selfdestruct method, transferring ethers via calls, calling a function that is not 'view or pure', using low-level calls, and so on. The view function is used as the default get method.

View functions assure that they will not cause any changes to the current state. It is possible to declare a function as a view.

 If any of the following statements are included in the function, they are deemed to be changing the state, and the compiler will issue a warning in such circumstances:

- Changing the values of state variables.

- Emitting events.

- Other contracts are being created.

- Selfdestruct is being used.

- Sending Ether over function calls.

- Calling any function that is not designated as view or pure.

- Making use of low-level calls.

- Using inline assembly with specific opcodes to accomplish this.

##Example 1:
```
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
  
// Defining a contract
contract Test {
      
    // Declaring state 
    // variables
    uint num1 = 2; 
    uint num2 = 4;
  
   // Defining view function to  
   // calculate product and sum 
   // of 2 numbers
   function getResult(
   ) public view returns(
     uint product, uint sum){
       uint num1 = 10;
       uint num2 = 16;
      product = num1 * num2;
      sum = num1 + num2; 
   }
}
```
 

##Example 2:
```
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract ViewAndPure {
    uint public x = 1;

    // Promise not to modify the state.
    function addToX(uint y) public view returns (uint) {
        return x + y;
    }
```
For more content, follow me at - https://linktr.ee/shlokkumar2303
Os Eventos no React
Tags: react, begg
Published: 2023-02-22 16:14:38

Quando estamos em algum site ou aplicativo, é normal a existência de botões, submissão de formulários ou até caixas de texto. Os exemplos citados, são todos chamados de Events(ou Eventos), no React. Quando um evento é acionado, o React invoca uma função de callback que é responsável por lidar com esse evento.

Além dos tipos citados anteriormente como eventos de mouse e teclado, é possível criar eventos personalizados usando a API de eventos do React. Vejamos um exemplo simples de um Evento de Clique:


```
import React from 'react';

function handleClick() {
  alert('Botão clicado!');
}

function Button() {
  return (
    <button onClick={handleClick}>
      Clique aqui
    </button>
  );
}

export default Button;
```

No código acima, nós criamos uma função que guarda uma caixa de alerta indicando que o botão foi clicado. Em seguida criamos outra função chamada Button, onde retorna um botão com callback de click linkada a função handleclick. Após isso, exportamos o Button.

Nós também podemos criar um evento personalizado, como no exemplo a seguir:


```
import React from 'react';

function MyComponent() {
  function handleClick() {
    const event = new CustomEvent('myEvent', { detail: { foo: 'bar' } });
    window.dispatchEvent(event);
  }

  return (
    <button onClick={handleClick}>
      Disparar evento personalizado
    </button>
  );
}

export default MyComponent;
```
Nesse exemplo, quando o usuário clicar no botão, a função handleClick criará um evento personalizado chamado myEvent, com uma propriedade detail contendo o objeto { foo: 'bar' }. Em seguida, a função window.dispatchEvent é usada para disparar esse evento.


Com base nisso, vimos como os eventos são uma parte essencial do desenvolvimento de aplicativos React. Eles permitem que os desenvolvedores capturem ações do usuário e lidem com elas em tempo real. Além disso, o React oferece suporte a uma ampla variedade de eventos e permite a criação de eventos personalizados. Com esses recursos, os desenvolvedores podem criar aplicativos interativos e responsivos que oferecem uma experiência de usuário mais agradável.
Graph in Apache AGE Part 1
Tags: apacheage, postgres
Published: 2023-02-22 16:10:21



In this post I'm going to explore about Graph in Apache AGE.
First of All What is Graph Database.


**Grapgh**
According to Apache AGE documentation A graph consists of a set of vertices and edges, where each individual node and edge possesses a map of properties. A vertex is the basic object of a graph, that can exist independently of everything else in the graph. An edge creates a directed connection between two vertices.

**As we all know the graph** is a pictorial representation of data in the form of nodes and relationships which are represented by edges. A graph database is a type of database used to represent the data in the form of a graph. It has three components: nodes, relationships, and properties. These components are used to model the data. 

**The concept of a Graph Database **is based on the theory of graphs. It was introduced in the year 2000. They are commonly referred to NoSql databases as data is stored using nodes, relationships and properties instead of traditional databases. A graph database is very useful for heavily interconnected data. Here relationships between data are given priority and therefore the relationships can be easily visualized.

**Sample Image to Demonstrate:**
Here we have 4 nodes Users, Teams stadium ,cities

![grapgh](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nhmv3csnbofv825jy4l0.png)


**Characteristics of a Graph Database**


A graph data consists of nodes and edges. Nodes are also sometimes called vertices. The nodes represent an entity such as a Person, City, Employee, and Customer etc. Edges are used to map the relationship between entities. Graph databases are well suited to things like supply chain management systems. Graph databases have also proven efficient to develop recommender systems where the relationships like “Person who bought item X, also bought item Y,” have to be mapped.


**The description of components are as follows:**

**Nodes:** represent the objects or instances. They are equivalent to a row in database. The node basically acts as a vertex in a graph. The nodes are grouped by applying a label to each member.
**Relationships:** They are basically the edges in the graph. They have a specific direction, type and form patterns of the data. They basically establish relationship between nodes.
**Properties:** They are the information associated with the nodes.

For part 2 [click here ](https://dev.to/farakhshahid/what-is-graph-in-apache-age-part-2-f25)

**References:**

1. https://www.geeksforgeeks.org/introduction-to-graph-database-on-nosql/
2. https://www.sqlshack.com/understanding-graph-databases-in-sql-server/
3. https://neo4j.com/developer/graph-database/