teleren/devto huggingface dataset:
Hello from a newie to Dev!
Tags: webdev, beginners, codenewbie, firstpost
Published: 2023-03-22 20:45:39

Hello everyone!

I started learning web development last year around this time. I needed a change, and after talking with some friends and watching some videos, I became curious. My sister saw my interest growing and sent me a web page for the Laboratoria boot camp. I went through the pre-admission process, and the rest is history.

During the boot camp, I had the opportunity to meet some interesting people. Women who, like me, chose to change their careers and with whom I could form teams for some projects. People I got to know a little and learned from.

JavaScript was the programming language I learned, and I really liked some of the things I got to do with it. With CSS, I learned that it can be an infinite well where I could drown because the style can always be better and never good enough. So, if I didn't want to drown, I needed to become a better listener and trust the opinion of the group I was working with if it was okay to hand over the project as it was.

Node.js was another monster entirely at the time. I had a rhythm figured out to work on the front-end, seeing everything in colors in the browser. To make a CLI, I made a flowchart instead of a prototype. The results were in the terminal instead of the browser. The way my mind worked had to change a bit. After whining a bit, it started to grow on me. And right now, I want to learn how to build REST APIs.

Learning React was a mess! As a library, and an unopinionated one at that, I felt I had too much freedom. I remember thinking that someone should say where things needed to be to work correctly. But everything worked nonetheless, and after the project was deployed, we felt great! Even knowing that we only scratched the surface of what can be done with it.

I recently decided to start documenting some of the things I am learning. Also, I am currently looking for a job as a junior front-end developer or something within those lines. And as I believe feedback is a gift, if you have some to give me, I would appreciate it.

See you around.
Entry level developers can kill startups
Tags: career, beginners, startup, codenewbie
Published: 2023-03-22 21:15:10

Nothing will kill a startup faster than entry level software developers.

Building a tech business is hard.

You have limited cash and time to build a product and get it to market.

Counting on entry level people to build the product is usually a formula for failure.

You will end up with endless delays and there is a good chance that it may have to be rewritten later.

When you don't have a big budget or don't know much about technology, it's easy to go with the cheapest option.

When you are betting your life savings on this company working, the cheapest option and entry level developers are not a good bet.

You need a good senior level developer to lead the development and do things the right way and faster.

You need someone you can trust, not someone who you hope will give their best college try.

Hiring only entry level or junior developers is a significant mistake for so many startups.

Make sure you have at least one senior software developer on your team.

Entry level people just don't know what they don't know.
The Power of Graph Databases: Unlocking the Potential of Connected Data
Tags: apacheage, postgres, database, graphs
Published: 2023-03-22 21:11:34

## Introduction

Graph databases have emerged as a powerful tool for storing and analyzing connected data. Unlike traditional relational databases that store data in tables with rows and columns, graph databases organize data as nodes and edges, allowing for more natural representation and querying of relationships. In this article, we will explore the importance of graph databases and how [Apache Age](age.apache.org), an open-source graph database, is revolutionizing the way we store and analyze connected data.

## The Importance of Graph Databases

Graph databases are particularly useful for modeling complex relationships between entities such as people, products, and transactions. For example, a social network can be represented as a graph where people are nodes and their relationships (friendship, family, colleagues, etc.) are edges. By storing data in this way, graph databases can provide faster and more accurate insights into the relationships and patterns within the data.

![Social Network](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wzh6l7pcjizzt8lmbi0j.png)


Another advantage of graph databases is their ability to scale horizontally. As the size of the dataset grows, graph databases can easily add more nodes and edges to the existing structure without sacrificing performance. This makes graph databases ideal for applications that require real-time querying of large datasets.

## Apache Age: The Open-Source Graph Database

Apache Age is a new open-source graph database that is built on top of PostgreSQL, a popular relational database management system. It provides a familiar SQL interface for querying and managing graph data while also offering the scalability and performance benefits of a graph database.

One of the key features of Apache Age is its ability to handle both structured and unstructured data. It can store data in a variety of formats including JSON, CSV, and RDF. This makes it easy to integrate data from different sources and query it using SQL-like commands.

![AGE](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/13c1o1e9xpud7a4l16os.png)

## Conclusion

Graph databases have become an important tool for storing and analyzing connected data. They provide a more natural way of representing relationships between entities and can scale to handle large datasets. Apache Age is an open-source graph database that provides a familiar SQL interface while also offering the performance and scalability benefits of a graph database. With its ability to handle both structured and unstructured data and a variety of built-in graph algorithms, Apache Age is poised to become a popular choice for analyzing connected data.

References:
[Apache AGE](age.apache.org)
[Introduction to Graph Databases](https://www.geeksforgeeks.org/introduction-to-graph-databases/)
Say Goodbye to Authentication Headaches with my ready-to-use Authentication Server
Tags: express, typescript, node, showdev
Published: 2023-03-22 20:54:09

I'm excited to showcase my latest project - a powerful and secure [authentication server boilerplate](https://github.com/Louis3797/express-ts-auth-service
) built with TypeScript and Express.js!


Here's a list of features that my authentication server offers:

- ✒️ Written in TypeScript for type-safe code

- 💾 Utilizes a MySQL database to efficiently store user data

- 🗣️ Interacts with the database using the powerful Prisma ORM

- 🔒 Implements secure authentication measures with JWTs, ensuring secure access to sensitive data

- 🔑 Implements robust password hashing using Argon2 for maximum security

- ♻️ Incorporates refresh token rotation functionality to enhance the security

- ✅ Includes email verification functionality for new user sign-ups

- 🆕 Provides a reset password function for users who have forgotten their password

- 🐇 Enables faster data transfer by implementing GZIP compression

- 👮‍♂️ Implements essential security features using Helmet middleware

- 🍪 Parses cookies seamlessly with cookie-parser middleware

- ⚙️ Allows cross-origin resource sharing using CORS

- 🧼 Sanitizes request data against cross-site-scripting with xss middleware

- 🔠 Manages environment variables with ease using dotenv

- 🕵️‍♂️ Enforces high code quality standards with ESLint and Prettier

- 🏇 Implements rate limiting to prevent abuse and improve server performance

- ℹ️ Accurately manages HTTP response status codes using http-status library

- ⚠️ Validates user input with the powerful and flexible Joi library

- 📧 Facilitates sending of emails using nodemailer library

- 📝 Enables detailed logging of server activities using winston library

- 🐶 Implements Git hooks with Husky to optimize development processes

- 🧪 Ensure reliability and robustness of the application with thorough testing using Jest and Supertest

- 🐳 Utilizes Docker Compose to seamlessly run the server and database

I'm excited to share it with the community. You can find the project on my [GitHub repository](https://github.com/Louis3797/express-ts-auth-service
), where you're welcome to contribute and help make it even better. Let's work together to create a powerful and secure authentication solution for everyone!
MERN Stack Chat App #1
Tags: webdev, javascript, productivity, react
Published: 2023-03-22 20:33:34

Hello, everyone! I will be sharing this journey of coding a MERN Stack Chat App. I will be sharing code snippets, as well as, screenshots of the frontend (not finalized). 
*P.S. I won't be going in-depth with everything I do.*

## Technologies
The main language I will be using is JavaScript.
Frameworks: React(Vite), TailwindCSS, Node, Express, and MongoDB

Color Palette Generator: https://coolors.co/

## Start!
1. Created a repository and cloned it to my local desktop. 
2. Created a Client folder by creating a vite app and naming it client.
3. Created a Server folder separate from the Client folder for the backend.
File Structure
![File Structure](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugll2x5n9zs1wiczh6em.png)
Make sure to keep your files organized!
4. Installed the following dependencies in the client-side.
![Client Side Dependencies](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wcrdva4atsvmbc5iholj.png)
5. Installed the following dependencies to server side.
![Server Side Dependencies](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5x66f8hu7okeow6zn9lm.png)
SENTIMENT ANALYSIS
Published: 2023-03-22 18:42:53

Sentiment analysis, also known as opinion mining, is the process of using natural language processing (NLP) and machine learning techniques to identify and extract subjective information from text. The goal of sentiment analysis is to determine the attitude or emotional tone of a piece of text, such as a tweet, a review, or a news article.

Sentiment analysis is commonly used in applications such as social media monitoring, brand reputation management, customer feedback analysis, and market research. It can be used to automatically classify text as positive, negative, or neutral, or to assign a numerical score to indicate the strength of the sentiment.

There are several approaches to sentiment analysis, including rule-based systems, machine learning algorithms, and deep learning models. Rule-based systems use a set of pre-defined rules to classify text, while machine learning algorithms and deep learning models learn from examples and patterns in data to make predictions.

If you're interested in getting started with sentiment analysis, here are some steps you can follow:

Choose a programming language and NLP library: There are several programming languages and NLP libraries to choose from, such as Python with NLTK or spaCy, R with the tidytext package, or Java with Apache OpenNLP. Choose the one that you are most comfortable with.

Collect data: You will need a dataset of text that you want to analyze for sentiment. This can include social media posts, customer reviews, or news articles. There are several publicly available datasets that you can use, such as the Sentiment140 dataset, or you can create your own dataset by scraping data from the web.

Preprocess the data: Preprocessing involves cleaning and transforming the raw text data into a format that can be analyzed. This can include removing stopwords, stemming or lemmatizing words, and converting the text to lowercase.

Choose a sentiment analysis technique: There are several techniques for sentiment analysis, including rule-based systems, machine learning algorithms, and deep learning models. Choose the one that best fits your data and goals.

Train and test the model: If you are using a machine learning or deep learning approach, you will need to split your dataset into training and testing sets, and then train your model on the training set and evaluate its performance on the testing set.

Analyze the results: Once you have trained your model and made predictions on new data, analyze the results to gain insights into the sentiment of the text. This can include visualizing the results or identifying patterns in the data.
FREE AWS Cloud Project Bootcamp Week 5 Part 2
Tags: aws, cloud, awscommunity, 100daysofcloud
Published: 2023-03-22 19:58:30

[81/100] #100DaysOfCloud Today, I did a part of the Week 5 of the FREE AWS Cloud Project Bootcamp by Andrew Brown.

Here's what I completed:
- I figured what the error was for my Week 4 when implementing create activity. Apparently, the user in my cognito and in my database where different. Once I deleted the the previous user and created a new one, then it started working properly and I could post cruds/posts.
- Watched Week 5 - Live Streamed Video - NoSQL and Caching where more about messaging was discussed.
 - A user wants to see a list of messages that belong to a message group The messages must be ordered by the created_at timestamp from newest to oldest (DESC).
 - A user wants to see a list of previous conversations. These conversations are listed from newest to oldest (DESC) We want to see the other person we are talking to. We want to see the last message (from whomever) in summary.
 - Create a message.
 - When a user creates a message we need to update the conversation to display the last message information for the conversation.

[GitHub](https://github.com/aaditunni/100DaysOfCloud/blob/main/Journey/081/Readme.md)

You can watch the Bootcamp through this YouTube playlist : [FREE AWS Cloud Project Bootcamp playlist](https://youtube.com/playlist?list=PLBfufR7vyJJ7k25byhRXJldB5AiwgNnWv)
Namespaces Abstracted
Tags: javascript, computerscience, beginners, programming
Published: 2023-03-22 19:44:22

## Prerequisites

* Objects in Javascript
    

_Take a look at this piece of code_

```javascript
const lion = {
  sound: function () {
    console.log("roar");
  },
};

const parrot = {
  sound: function () {
    console.log("hello!");
  },
};

lion.sound();   // roar
parrot.sound(); // hello!

// Here, we are creating two objects each having a function with the same name but different actions.
```

> The object is the **namespace** or the space in which the name of variables (inc. functions) exist and can be used.

If you want to create a function with the same name as another function, it has to be in a different namespace, and one way to create a namespace (a container or space) for certain names/variables is to create an object and define variables as keys in that object.

## Real Life Example

If your name is Mohamed, your family calls you Mohamed, no problem, right? But then you go to work and there are 2 other colleagues named Mohamed, in that case, usually what happens is that they call each of you by a different name than Mohamed, maybe call you by your last name or another name of your choice. So, having multiple Mohameds was no problem while they were in isolated environments (i.e their families) or as we should call it here "namespaces".

*I hope the concept of namespaces is now clear to you, if you have any other questions, feel free to ask them in the comments below. Thanks for reading and see you in the next one.*
Apply critical path on microservices architectures.
Tags: microservices, aws, architecture
Published: 2023-03-22 19:33:09

The Critical path method is a common step in project management. It is handy for a large or complex project because it keeps our focus and reduces the risk of project delays. Is it possible to use these project practices in software architecture?

One of the goals of every software engineering team is to provide high availability. In other words, be up how much you can. So here is the opportunity to talk about the "Critical path." So let's transform this concept into good practice.

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

"Critical" means “most important or sensitive step” with it in mind. In a microservice architecture, we can identify the essential services for our customers. A simple example is a search service on a classified website or payment modules in e-commerce. Those services usually are the most transactional and require our users to go online. On the other hand, services that use queues and batch processes typically aren't critical. A good example is an invoice microservice; anybody loses their mind for receiving a receipt late.

To put this into practice, you can follow these three guidelines:

Keep it absurdly simple. We must scale these good practices and brake a couple of rules it is necessary. So, use only a few services, technologies, and program languages because everything increases the risk of failure.

Last out, first priority. However, every new technology or update should start on other services, and more importantly, you must continually update your critical path services.

Fewer microservices. Microservices mesh can produce a high level of Reusability. However, this increases the number of critical services. So a microservice bigger than the average could mean reduced communications and fewer essential services for us.

In summary, identifying our critical path is a great way to reduce failure and increase availability. As a result, we can keep the focus on our most important service and create a safe way to innovate. Remember:

If everything is important, then nothing is."

― Patrick Lencioni.
What Makes a Good Engineering Manager?
Tags: career, management
Published: 2023-03-22 19:26:02

I've had many jobs in tech and have been working in the industry for over 10 years. I've been thinking about the jobs I enjoyed and those I didn't, and it all comes down to the manager. This begs the question, "What makes a good engineering manager?". As I'm deep in the job hunt, I'm questioning what kind of role I want, and what to look for when it comes from the hiring manager, and ethos of the company.

## Do they seem happy? Stressed? Burnt Out?

I think you can learn a lot about an engineering manager from their personality and their stress level. Don't get me wrong, a little stress is always fine, but how do they handle the stress? What's their outlook on the work? Do they take responsibility for mistakes they make? All of these things can make or break a good manager.

## Do they understand the code?

I've had managers that didn't fully understand the intricacies of the code. They didn't empathize with the engineers as to what the pain points were. A good manager understands how the code works at a high level, and makes time to listen and understand the cost of workarounds, and technical debt. Coding is mostly a series of tradeoffs, a good manager understands this illustration:


![Quality, Speed, Cost tradeoffs](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dj2yrn4qk0biz5qsrxwl.png)

## Being the "Shit Umbrella"

There's a lot of stuff that is dealt with at the company level that has nothing to do with building the product. High-level business planning should be hidden from the engineers. A good manager should shield the developers from this type of stress and decision making.

![Dall-e generated image for this section](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cs65iwoldy392avonm61.png)

## Knowing the Strengths of Engineers

Engineers are widely different. Some engineers are good at deep chunky features, others may be good at smaller bugs. Some have strengths when it comes to a particular code base, language, frontend, backend, etc. Engineers may also have preferences in what they want to do, and what they like coding. A good manager plays into the strengths, and caters to what their preferences are.

Aside from just talent, and preferences, engineers also have different personalities, and energy levels, some are more social and some are less social. Obviously recognizing the personalities of your engineers is also super important. 

I think about a team or pod as the fellowship of the ring, a squad or group of people where every person is bringing something unique to the table. Each person weakness is strengthened by the other members of the team. 

![Dall-e generated image for this section](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kqk4panqt5ig91cyipql.png)
> "Fellowship of Engineer-Ring"

## Wrap up

Being a manager is hard, and there are a lot of pitfalls. While this isn't an exhaustive list of qualities that make a good manager, the true key is having empathy for all parties.
An Introduction To HTML: Understanding The Basics With Examples
Published: 2023-03-22 19:16:08

HTML stands for Hypertext Markup Language. It is a markup language used for creating web pages and other documents that can be displayed in a web browser. HTML consists of a series of elements, which are enclosed in angle brackets (< >), and provide structure and meaning to the content they contain.


[An Introduction To HTML: Understanding The Basics With Examples](https://realmediums.online/web_development/the-ultimate-guide-to-html-for-beginners-how-to-write-learn-use-it/)
Dynamic Render Inertia from different file path in using Laravel
Tags: laravel, javascript, vue, inertiajs
Published: 2023-03-22 19:15:34


  I haven't written a blog post in a long time due to some personal issues. But today, I'm writing about how to dynamically render your Vue files inertia from different folder paths in inertia.

  Before going to actual topic let's me example what is inertia. Inertia is a framework that makes it easy to build modern single-page applications with Laravel. Inertia works by sending data from your server-side controller to your client-side JavaScript application as props. These props can then be used in your client-side view components to display data or update the UI. By default inertia render **_app.blade.php_** as root file but you can modified it. Okay!!Let's go to actual topic.

  This blog post is for someone who is facing this for the first time when they start working on Inertia. Here are the steps you need to follow.

##Step 1
In your app.js inside resources/js

```js
import { createApp, h } from 'vue'
import { createInertiaApp } from '@inertiajs/vue3'

createInertiaApp({
  resolve: name => {
    //here below two lines you need to make some changes
    const pages = import.meta.glob('./Pages/**/*.vue', { eager: true })
    return pages[`./Pages/${name}.vue`]
  },
  setup({ el, App, props, plugin }) {
    createApp({ render: () => h(App, props) })
      .use(plugin)
      .mount(el)
  },
})
``` 

##Step 2 
<p>You have to modified like this.</p>

```js

import { createApp, h } from 'vue'
import { createInertiaApp } from '@inertiajs/vue3'

createInertiaApp({
  resolve: name => {
    //here below two lines you need to make some changes
    // name means full file path of your vue's file location
    const page = await import(`../../${name}.vue`,{
                eager: true,
            })
return page.default;
  },
  setup({ el, App, props, plugin }) {
    createApp({ render: () => h(App, props) })
      .use(plugin)
      .mount(el)
  },
})
 
```


## Step 3
<p>You have have to pass your **vue** path from controller as below</p>
```php


namespace Src\ModuleName\User\Presentation\HTTP;

use Inertia\Inertia;
use App\Http\Controllers\Controller;


class UserController extends Controller
{

    public function index()
    { 
     //full path of your vue file path you need to configure
     return Inertia::render('src/ModuleName/User/Presentation/Resources/Index'); 
   }

}

```

<p>I am give my screenshot of my folder structure .As below</p>

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


<b>If you have any questions about this topic, please feel free to leave a comment below or on my twitter handle @hareom284. I'm always happy to help!. Happy to share your though. Thanks for reading!<b>