teleren/devto huggingface dataset:
How to set up Commitzen with Husky
Tags: npm, git, commit, tip
Published: 2023-10-11 20:24:00

---
title: How to set up Commitzen with Husky
published: true
description: Set up Commitzen with Husky to assist you in following Conventional Commits specifications.
tags: npm,git,commit,tip
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-10-11 20:19 +0000
canonical_url: https://ricardoborges.dev/how-to-set-up-commitzen-with-husky
---

[Conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) specification contains a set of rules for creating an explicit commit history, which makes it easier to write automated tools on top of, for example, [semantic release](https://github.com/semantic-release/semantic-release). You can manually follow this convention in your project or use a tool to assist you, such as [Commitizen](https://github.com/commitizen/cz-cli). 

There are some ways to use Commitizen in your project, in this post, I will show you how to set it up with [Husky](https://typicode.github.io/husky/), so whenever you run `git commit`, you'll be prompted to fill out any required commit fields at commit time.

To start, install Commitzen and Husky packages:

```bash
npm i commitizen husky --save-dev
```

Next, initialize your project to use the cz-conventional-changelog adapter

```bash
commitizen init cz-conventional-changelog --save-dev --save-exact
```

That command will do the following:

1. Install the cz-conventional-changelog adapter npm module;

2. Save it to `package.json`'s `dependencies` or `devDependencies`;

3. Add the `config.commitizen` key to the root of your `package.json`.

Finally, in the `package.json` file, set a Husky´s hook to trigger Commitzen on commit command

```jsx
"husky": {
  "hooks": {
    "prepare-commit-msg": "exec < /dev/tty && npx cz --hook || true"
  }
}
```

And that´s it, you are all set. Make some changes to your code, run `git commit`, and follow the Commitzen instructions.
ToolJet: 10 Minute Docs Audits
Tags: documentation, docsaudits, lowcode, webdev
Published: 2023-10-11 20:09:33

[ToolJet](https://docs.tooljet.com/docs) is an open-source low code framework to build and deploy custom internal tools. 

{% embed https://youtu.be/pl0XQhR8WWU %}


## What's The Criteria?

3- Excellent
2 - OK
1 - Poor

Purposeful: Does the QuickStart explain what problem it's trying to solve? Who is the intended audience?

UX Experience: How seamless is the experience? Must the user create an account to get through the Quickstart? Does the Quickstart elicit a sense of joy and achievement?

Accurate: Are the instructions correct? Are they complete?

## The Results

ToolJet had a strong start. ToolJet made it clear what problem it was solving and who the intended audience was. In the first couple of paragraphs, ToolJet is a low-code tool, BUT I'm free to use any database I want. And Python and JavaScript. Sweet. 

Then, the experience went downhill from there. There were multiple paths to get started, and they all seemed equally troublesome. If I wanted to get started locally, I had to use Docker. **I know** that Docker is an industry standard, but I still don't like it. It's bloated and one of the very few tools in my stack that I have to create an account for. 

The second option I tried was to deploy ToolJet via [DigitalOcean](https://www.digitalocean.com/). I'm sure that I would have figured it out if I had 5 more minutes, but I didn't have 5 more minutes. 

In conclusion, I'm not a fan of ToolJet's user experience. I wish they would swap Docker out w/ a tool like [Gitpod](https://www.gitpod.io/). Also, I wish they had **one** happy path instead of presenting me with so many options so early in my ToolJet journey. 

|               | Score |
|---------------|-------|
| Purposeful    | 2.5     |
| UX Experience | 1.5     |
| Accurate      | 2.5     |

Are you interested in a FREE Quickstart audit for your company? [Start here](https://forms.gle/5jDeuQraBwahkjT16).
JavaScript: Procedural, Functional, or Object-Oriented?
Tags: javascript, programming, webdev, architecture
Published: 2023-10-11 20:08:16

If you've ever come across JavaScript, you might have wondered about its true programming paradigm. Is it a procedural language? Functional? Object-oriented? The simple answer is: it's all of the above. Let's dive into these different aspects to demystify JavaScript's nature.

### 1. **JavaScript as a Procedural Language**

In the early days of JavaScript, its primary purpose was to add simple interactivity to web pages. In this context, it was often used procedurally. Here's what that looks like:

```javascript
// Variable definition
let a = 5;
let b = 3;
let sum;

// Function to compute the sum
function add(x, y) {
    return x + y;
}

// Calling the function
sum = add(a, b);
console.log(`The sum of ${a} and ${b} is: ${sum}`);
```

In the procedural style, operations are performed through sequences of instructions. Data can be passed from one function to another, but they are typically not encapsulated within the functions themselves.

### 2. **JavaScript and Functional Programming**

As JavaScript evolved, frameworks and libraries like React, Redux, and Lodash encouraged a functional approach. This emphasizes "pure" functions, avoiding mutable states and side effects.

```javascript
const numbers = [1, 2, 3, 4, 5, 6];

// Filter even numbers
const evenNumbers = numbers.filter(num => num % 2 === 0);

// Double the even numbers
const doubleEvenNumbers = evenNumbers.map(num => num * 2);

console.log(doubleEvenNumbers); // [4, 8, 12]
```

### 3. **Object-Oriented Nature of JavaScript**

JavaScript hasn't forgotten fans of object-oriented programming. It uses prototyping for inheritance, allowing each object to inherit properties and methods from another object.

```javascript
// Define a "Dog" class
class Dog {
    constructor(name, breed) {
        this.name = name;
        this.breed = breed;
    }

    bark() {
        return `${this.name} says: Woof!`;
    }
}

// Create an instance of the "Dog" class
const rex = new Dog('Rex', 'German Shepherd');
console.log(rex.bark()); // "Rex says: Woof!"
```


So, what is the true face of JavaScript? It's its ability to support these three paradigms that make it so powerful. As a developer, understanding these three facets of JavaScript will enable you to produce efficient, clean, and maintainable code, tailored to your project's specific requirements.
Decentralized Identity Hackathon
Tags: hackathon, web5, decentralization, ssi
Published: 2023-10-11 20:01:28

---
title: Decentralized Identity Hackathon
published: true
description: Build a decentralized web app using Web5.js
tags: hackathon, web5, decentralization, ssi
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ri58f28zlxkgr9ui8zgl.gif
canonical_url: https://developer.tbd.website/blog/dif-hackathon
---

Join the [decentralized identity hackathon](https://difhackathon.devpost.com/) to learn about the technology and build apps that shape the future of identity.


The Decentralized Identity Foundation is hosting a hackthon for people both new and experienced with decentralized identity.

We're thrilled to sponsor a Web5 challenge worth $5,000 in prizes.

Your mission, should you choose to accept: 
**Build a decentralized web app using Web5.js and wow us with your innovative use of Decentralized Web Nodes.**

👩‍💻 Sharpen your skills with an [educational session on Web5 SDK](https://www.eventbrite.com/e/an-intro-to-tbds-web-5-sdk-and-decentralized-web-nodes-tickets-729176565737?aff=tbd) and Decentralized Web Nodes led by TBD's Developer Advocate, Adewale Abati. Mark your calendars for Nov 8th at 9am PT! 

[![The Web5 SDK and Decentralized Web Nodes](https://developer.tbd.website/assets/images/dif-hackathon-ace-9dd37b9497618f8b9eb36cd3722b2f3e.jpg)](https://www.eventbrite.com/e/an-intro-to-tbds-web-5-sdk-and-decentralized-web-nodes-tickets-729176565737?aff=tbd)


🎁 Swag Alert! Everyone who successfully completes our challenge will receive exclusive TBD swag, in addition to competing for the $5,000 in cash prizes.

![TBD Swag Giveaway](https://developer.tbd.website/assets/images/swag-giveaway-b2bcdde95dd6f1438629f8867262809a.png)

📌 Submission Checklist:

✅ Public URL to code repository 🌐

✅ Public URL to deployed app 🌐

✅ 3-min video showcasing your masterpiece 📹


Good luck and [happy hacking](https://difhackathon.devpost.com/)!
Testing Flux V2 (or migrating from Flux V1) : TLDR
Tags: kubernetes, gitops
Published: 2023-10-11 19:51:17

Whether you are migrating from deprecated [FluxV1](https://github.com/fluxcd/flux) or decided to go GitOps by testing [FluxV2](https://fluxcd.io/flux/), the existing documentation can be intimidating. You may want to quickly test FluxV2 without using the CLI and its default behaviour of bootstrapping a new repo containing your Flux setup.

That was my case so I created [this repo](https://github.com/lboix/flux2-lite) to help you quickly get hands on by providing the simplest manifests template.

I hope it will help you discover the GitOps philosophy and start great things following it!
Uma Jornada na Engenharia de Software: Minha História e Experiência
Tags: javascript, programming, news, career
Published: 2023-10-11 19:50:17

Olá, pessoal! Sejam bem-vindos ao meu espaço dedicado à engenharia de software, onde estaremos explorando juntos os princípios fundamentais, as tendências atuais e os desafios emocionantes deste campo. Meu nome é Renato, e gostaria de compartilhar um pouco da minha história e experiência na engenharia de software com vocês.


## **Quem Sou Eu?**

Eu sou o Renato um apaixonado por tecnologia. Minha paixão pela programação me levou a escolher a engenharia de software como minha carreira. Ao longo dos anos, tive o privilégio de trabalhar em uma variedade de projetos desafiadores, aprender com grandes mentores e ajudar a criar soluções de software que impactaram positivamente empresas e usuários finais.

## **Minha Carreira até Agora**

Comecei minha jornada um pouco mais tarde do que alguns, aos 25 anos. Isso se deveu ao fato de que, aos 18 anos, fui convocado para o serviço militar. Após completar esse compromisso, não iniciei minha carreira diretamente na área. Na verdade, comecei trabalhando com atendimento ao público, o que me permitiu pagar minha faculdade de **Ciências da Computação**, na qual me formei em 2008.

Ao longo dos anos, avancei por diversas posições, desde desenvolvedor júnior até líder de equipe. Durante essa trajetória, aprimorei minhas habilidades técnicas, aprendi a liderar equipes de desenvolvimento e a enfrentar os desafios complexos dos projetos de software.

Além do meu trabalho profissional, sempre mantive um interesse constante em aprendizado e crescimento. Participei de cursos, conferências e workshops para me manter atualizado com as últimas tendências da área. Também comecei a compartilhar meu conhecimento com a comunidade por meio de artigos e tutoriais online.

## **O Que Esperar Neste Espaço?**

Neste espaço, pretendo compartilhar minha experiência e conhecimento. Vamos explorar tópicos que vão desde o desenvolvimento de software em si até os princípios de design, práticas ágeis e muito mais. Meu objetivo é tornar a arte de engenharia de software mais acessível para iniciantes e fornecer insights valiosos para profissionais experientes.

Estou empolgado para embarcar nessa jornada com vocês e estou aberto a sugestões de tópicos e perguntas que possam ter. Juntos, vamos desvendar os segredos e aprofundar nosso entendimento deste mundo incrível.

Fiquem à vontade para deixar comentários, perguntas ou sugestões.
Project 1
Published: 2023-10-11 19:28:47

Overall project 1 was very successful. Both parts 1 and 2 went very well. I was also very lucky with my time as we all have been very communicative within teams and all of us have also been on top of our tasks.

For part 1 of the project, we got our groups and we were just assigned set up for the first project. At first I was a little nervous because in the past I have has really bad experiences with group assignments and projects. However, my group for this class has been amazing so far. Right after we we were placed into our teams chat my team was very communicative and productive. We had two meetings to go over overall set up for the first project as well as tasks for each person. We also were able to ask any questions we had in our chat and other team members would respond within minutes which is very nice. 

For part 2 of the project, this was more of the individual work. After picking out test cases in part 1, we now had to write our test cases. This was not bad for me at all because I have had to do this before for a few classes in the past. I am very familiar with writing test cases and I actually enjoy it a lot. I find it pretty fun and not too challenging. Overall the coding portion of this project was not bad.

Finally, we merged all of our changes to main and our team lead generated the test report. Last night we merged the report into main and now we are all good to go for class. This assignment went flawlessly for me as well as my group members as everyone got their work done and we had no issues with others not getting their work done on time. We also learned somethings from this project that we want to implement into next project, for example having less branches. I am gratefully for my team as well as how flawless this project went.
Cybersecurity Resources for beginners
Tags: cybersecurity, beginners, information, beginnerfriendly
Published: 2023-10-11 19:26:51

##Looking for cybersecurity resources to get started ?

####Below are some of the sources providing quality information on security. 
Please add your fav...

1. **Cybersecurity Blogs and News Websites**:
   - Websites like [Dark Reading](https://www.darkreading.com/), [Krebs on Security](https://krebsonsecurity.com/), and [The Hacker News](https://thehackernews.com/) regularly publish articles and news on cybersecurity trends, including automation.

2. **Cybersecurity Organizations**:
   - Check out resources from reputable organizations like [The National Institute of Standards and Technology (NIST)](https://www.nist.gov/), [The Center for Internet Security (CIS)](https://www.cisecurity.org/), and [The Cybersecurity and Infrastructure Security Agency (CISA)](https://www.cisa.gov/) for cybersecurity guidelines and best practices, some of which may relate to automation.

3. **Cybersecurity Forums and Communities**:
   - Platforms like [Reddit's /r/cybersecurity](https://www.reddit.com/r/cybersecurity/) and [Cyber Security Forum](https://www.cybersecurityforum.org/) often feature discussions and resources related to automation in cybersecurity.

4. **Cybersecurity Research Papers and Journals**:
   - Look into academic journals and research papers through platforms like [Google Scholar](https://scholar.google.com/) to find in-depth studies on various aspects of cybersecurity automation.

5. **Online Courses and Tutorials**:
   - Websites like [Coursera](https://www.coursera.org/), [edX](https://www.edx.org/), and [Cybrary](https://www.cybrary.it/) offer courses on cybersecurity, including automation topics.

6. **YouTube Channels**:
   - There are many YouTube channels dedicated to cybersecurity, such as [Hak5](https://www.youtube.com/user/Hak5Darren) and [The Cyber Mentor](https://www.youtube.com/c/TheCyberMentor), which offer video tutorials and discussions on automation in cybersecurity.

7. **Conferences and Webinars**:
   - Many cybersecurity conferences and webinars cover automation topics. Keep an eye on events like [Black Hat](https://www.blackhat.com/), [DEFCON](https://www.defcon.org/), and [RSA Conference](https://www.rsaconference.com/) for relevant sessions and presentations.

Remember to verify the credibility of the sources you explore and keep up-to-date with the latest trends and developments in cybersecurity automation to ensure the security of your systems and data.
Happy Sharing :)
The Underappreciated Power of TypeScript Interfaces: Going Beyond "Interface vs Type"
Tags: typescript, oop, programming, javascript
Published: 2023-10-11 19:20:46

## Introduction

In the TypeScript community, there's often a focus on comparing "interfaces" and "types," dissecting their differences, and weighing which is better for different scenarios. While that discussion is invaluable, it tends to overshadow another powerful aspect of TypeScript interfaces—its role in Object-Oriented Programming (OOP).

In TypeScript, an interface can do more than just define the shape of an object; it can serve as a robust contract that classes must adhere to. This article aims to shed some light on this underappreciated feature, demonstrating its practical applications and benefits.

## What's Usually Discussed: Interface vs Type

Before diving into the OOP aspect, let's briefly discuss what usually garners attention. Developers often compare "interface" and "type" to decide which is best for their needs:

- **Interface** can be extended and implemented by classes.
- **Type** is more flexible and can represent primitive types, union types, etc.

The decision usually boils down to specific use-cases. But by focusing solely on this dichotomy, we miss out on the OOP benefits of using interfaces in TypeScript.

## The OOP Benefit: Implementing Interfaces in Classes

When working with classes in TypeScript, you can use interfaces to ensure that a class adheres to a particular contract. This approach offers several benefits:

- **Compile-Time Checking**: TypeScript checks your classes at compile-time to ensure they adhere to the contract, catching issues early on.
- **Code Modularity**: Interfaces encourage clean, modular code that's easier to reason about.
- **Readability**: Using a well-named interface makes your code more self-explanatory, enhancing readability.

## Code Example

```typescript
interface Runnable {
  run(distance: number): string;
}

class Human implements Runnable {
  run(distance: number): string {
    return `Ran ${distance} meters`;
  }
}

class Car implements Runnable {
  run(distance: number): string {
    return `Drove ${distance} meters`;
  }
}

const executeRun = (runnable: Runnable, distance: number) => {
  console.log(runnable.run(distance));
};

executeRun(new Human(), 1000);
executeRun(new Car(), 2000);
```

## Advanced Use Cases: Design Patterns

The practical applications of interfaces don't stop here. If you're familiar with design patterns like Strategy, Adapter, or Composite, you'll find that TypeScript interfaces are extremely useful for implementing these patterns effectively.

## Conclusion

Interfaces in TypeScript offer more than just a way to define the shape of data. They serve as robust contracts that your classes can adhere to, bringing the benefits of strong typing to your OOP endeavors in TypeScript. By looking beyond the "interface vs type" debate, you can leverage the full potential of TypeScript interfaces to write clean, modular, and robust code.
Exploratory Data Analysis
Tags: datascience, learning, data
Published: 2023-10-11 19:16:56

Exploratory Data Analysis is a critical step in every data science project's life cycle. It is important in that, it allows you to find patterns that exist in the data, inconsistencies or data quality concerns ranging from outliers, missing values, incorrect data types, and most importantly, it aids in the preliminary selection of the suitable models.'It's like a detective conducting an investigation'

Exploratory data analysis is categorized into  4:
**1 Univariate non-graphical**
Univariate non-graphical analysis is typically used to examine a single variable or feature. Assume you have a dataset containing the income of people in a specific country; a summary statistic such as mean can be used to calculate the average income of people residing in that country.

**2 Graphical univariate**
Apart from summary statistics, we can also visualize the data for better understanding; this is the most common method to use, particularly when presenting your findings to non-technical teams, due to the ease with which the information is conveyed, graphical univariate method involves visualizing only one variable/feature. You can use many graphical representations such as bar graphs, line graphs, and so on.


**3 Multivariate non-graphical**
Multivariate non-graphical, as the name suggests is a method that involves applying summary statistics to more than one variable. An example can be, the management wants to understand various factors contributing to customer churn. In this case, the data scientist will be tasked with looking at various features to see how they contribute to customer churn in an organization and come up with tabular data containing the results.



**4 Graphical Multivariate** 
This method involves visualization of more than one variable to show the distribution and relationship between them. In the example mentioned above, the data scientist, instead of presenting the results in a tabular format, the most effective way will be to visualize the results for easy understanding. Here you also can use various graphical methods available e.g line graphs, bar graphs e.t .c
Visual Design: Part 1
Published: 2023-10-11 19:02:38

Starting Figma design, using a mobile-first approach since this is the new industry standard. I will make sure it looks great on a mobile before worrying about possible creating a different layout for full desktop browsers. 

I'm calling this fake clinic "HealthFirst", and now I'm looking at how to create a logo for it. I have good aesthetic sense I think, but I'm no visual artist by any means. 

I created a logo using Canva's Free Logo Maker Tool (see cover image for this post). Cropping may be off I'm new to dev.to
Group school project, Webpack
Published: 2023-10-11 18:54:43


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

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fyrupp7esj2ejor5trkd.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1cd6djx2tnama59yk8it.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f1mn6sgkp0vb1vlbf4wf.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/78ehk7u4bh8kuv95n0jm.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j40hbleqnxtyepsoepn5.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g1mjqofiu3nq50ejec8q.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/srp7hnxd0uc89l65ytn8.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kf34yj8y3t5r1krpga2n.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/grfvlblsv9ea5xb1yzaq.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5bft5yvk4s9h5kyvyifv.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v4w889duu5ve130ajm09.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zua0j2jx6wbrzsg54wn6.jpg)

By AC and Lea