teleren/devto huggingface dataset:
Made an Affordable Resume Maker to Create Professional Resumes and Cover Letters using AI
Tags: resume, webdev, ai, programming
Published: 2024-03-06 00:23:12

Hey everyone! My name is Bryam. I started programming during the pandemic and I have been launching small side projects while working on my full-time job for at least 4 years now.

## Resume Boost AI Origin Story

The very first project I launched was ResumeBoostAI which started as small resume bullet points generator to help others improve their resumes and their chances to land better jobs. I launched this project in less than a week while working on my job during the day.

TL;DR
[ResumeBoostAI](https://resumeboostai.com)

{% embed https://youtu.be/w-TKeSsWDog %}

I didn’t focus too much on the project as I wanted to launch more projects. Last year (2023), ResumeBoostAI made $40 without me moving a finger. But this year, I decided to focus more on marketing and SEO, so that I can have a constant flow of traffic coming to my site and maybe convert some of visitors to customers.

This is why I decided to work once again on the project and make it ResumeBoostAI v2.0 which aims help people applying to jobs increase their chances of getting a job by improving their resumes using AI.

I find myself rewriting my resume bullet points numerous times when applying to different jobs, so I decided to build an AI tool to make this task easier and save a ton of time. You can also create cover letters, answer common job questions and more, but the main feature of ResumeBoostAI is the resume maker which makes it super easy and intuitive to create a professional resume from scratch and download as a PDF format.

## ResumeBoostAI - Revenue

I started focusing on marketing this year and I already surpassed my total revenue for last year, so I'll keep focusing on marketing my project and providing more value to people.

### March 2023 - January 2023

Profit: $25

### January 2024

Profit: $15

### February 2024

Profit: $55

### March 2024 (as of March 5th)

Profit: $36

## Resume Boost - Analytics

This is the chart for last year analytics:

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

This is the chart for this year analytics

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

I already reached the same number of users in 3 months as opposed to 10 months, so that is a sign of hope to keep working on it and scaling my side project even further.

This is just the beginning for ResumeBoostAI, if you are applying for jobs and need a tool to help you enhance your resume, check out: [ResumeBoostAI](https://resumeboostai.com)

You can follow me on Twitter/X for daily updates on the project and other topics such as SEO, SaaS, entrepreneurship and more

[Twitter/X](https://twitter.com/balt1794)
CSS Mistakes You Will Make: Top Five Fails Unveiled
Tags: webdev, css, frontend, programming
Published: 2024-03-06 00:08:24

## 
Dive into the world of styling pitfalls and discover how to steer clear of the most popular CSS blunders. From over-nesting like a CSS Matryoshka doll to battling specificity wars, we'll navigate the maze of styling mishaps together. Buckle up for a journey through the land of float frustrations and z-index zaniness. Let's turn your style sheets from chaos to elegance!
 


---

> In the dynamic realm of web development, cascading style sheets (CSS) play a pivotal role in shaping the visual identity of a website. However, even seasoned developers can find themselves entangled in the web of common CSS mistakes. In this guide, we'll embark on a journey to unravel these pitfalls and equip you with the knowledge to create sleek, error-free stylesheets.

1. **Over-Nesting Woes:**
One prevalent CSS mistake is the temptation to nest styles excessively. Like a set of Matryoshka dolls, layers of nested styles can lead to specificity nightmares and hinder code readability. Learn to strike the right balance and simplify your styles for improved maintainability.

2. **The Specificity Wars:**
Enter the battleground of CSS specificity wars, where conflicting styles clash for dominance. By understanding specificity rules and employing best practices, you can avoid unintended style overrides and create a harmonious coexistence for your styles.

3. **Floats and Clearfix Conundrum:**
Floats were once the go-to solution for layout, but they brought their own set of challenges, especially when it came to clearing floats. Discover modern layout techniques like Flexbox and Grid to bid farewell to float frustrations and embrace a more flexible and responsive design approach.

4. **Z-Index Zaniness:**
Z-index can be a powerful tool for controlling the stacking order of elements, but its misuse often leads to confusion. Uncover the secrets of managing z-index effectively, preventing elements from disappearing into the background or stubbornly refusing to come to the forefront.

5. **Neglecting Responsive Design:**
In the age of diverse devices, neglecting responsive design is a cardinal sin. Avoid the mistake of creating static layouts that crumble on smaller screens. Embrace media queries and fluid grids to ensure your website looks stellar across a spectrum of devices.

> Mastering CSS is a continual learning process, and steering clear of common mistakes is an essential step towards becoming a proficient web developer. By addressing over-nesting, specificity wars, float issues, z-index challenges, and embracing responsive design, you'll elevate your CSS game and create visually stunning, seamless web experiences. Keep coding, stay curious, and let your styles shine!
Welcome Thread - v266
Tags: welcome
Published: 2024-03-06 00:00:00

---
published_at : 2024-03-06 00:00 +0000
---
![Animated character in a house on a phone saying hello](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/maa1ecv41lu69shw1bqh.gif)

---

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. 👋 

3. Elevate your writing skills on DEV using our [Best Practices](https://dev.to/devteam/best-practices-for-writing-on-dev-creating-a-series-2bgj) series!
Templated repos with dotnet new
Published: 2024-03-12 22:58:05

---
title: Templated repos with dotnet new
published: true
date: 2024-03-06 00:00:00 UTC
tags: 
canonical_url: https://timwise.co.uk/2024/03/06/templated-repos-with-dotnet-new/
---

I’ve been digging in to making `dotnet new` templates and it turns out to be a remarkably capable bit of tooling.

It’s particularly useful when you want to build a load of similar microservices with their own git repos.

It can:

- Rename files.
- Rename strings (variables, class names etc).
- Preserve case style of renamed strings (through “derived” replacements).
- Create named command line arguments for your template string replacements, e.g. `donet new mytemplate --myswitch MyReplacementValue`.
- Exclude entire blocks of code and files based on switches that user can provide.
- Be installed an tested from a local folder with `dotnet new install <path>`.
- Be built into a nuget package and published on private or public feeds.

Importantly, there’s nothing in the way that it works that stops you from making your template code build/test/run.

And because it’s a CLI tool, if you want to an update an existing generated repo with a new version of a template you can just run it again with `--force`, and use git to pick through what changes you want to take into the generated repo.

This really takes a lot of the toil out of the copy-paste-modify you would have to do otherwise.

Learn more:

- [https://learn.microsoft.com/en-us/dotnet/core/tools/custom-templates](https://learn.microsoft.com/en-us/dotnet/core/tools/custom-templates)
- [https://devblogs.microsoft.com/dotnet/how-to-create-your-own-templates-for-dotnet-new/](https://devblogs.microsoft.com/dotnet/how-to-create-your-own-templates-for-dotnet-new/)

See also:

- [https://copier.readthedocs.io/](https://copier.readthedocs.io/)
Portfólio - Aula 07
Published: 2024-03-05 23:46:38

A aula 7 foi sobre processamento de **Strings**. A seguir alguns exemplos de programas de manipulação de Strings:

**Indexação:**

```
frase = "UFOPA BRASIL"
f = frase[3]
print(f)

last = frase[-4]
print(last)

```
Execução do código aqui:https://onlinegdb.com/YFBtz6Jer

Programa de manipulação de Strings:

```
import java.util.Scanner;

public class Main {
    
	public static void main(String[] args) {
		String s = "UFOPA";
		String t = "Gabriel Aleixo de Oliveira";
		String a = "2021005138";
		
		if (s.equals(t)) {
		    System.out.println("As Strings são iguais.");
		} else {
		    System.out.println("As Strings são diferentes.\n");
		}
		
		System.out.println(s.equals(a));//Sempre usar equals para comparar Strings.
		System.out.println(s.concat(" ") + t +(" ") + a);
		System.out.println(s.replace('O', '#'));// Troca um caractere por outro
		System.out.println(t.replace('i', '*'));
		System.out.println(t.toUpperCase());//Tudo em maiusculo
		System.out.println(t.toLowerCase());//Tudo em minusculo
		System.out.println(t.toLowerCase().indexOf("x"));//Retorna a posição da String
        System.out.println(a.length());//Comprimento da String
		
	}
}
```
Execute o código aqui: https://onlinegdb.com/f7ReXfteH
Day 920 : Request
Tags: hiphop, code, coding, lifelongdev
Published: 2024-03-05 23:39:18

_liner notes_:
- Professional : Had a couple of meetings to start the day. Got a chance to learn more of the inner workings of the client SDK that I work on and got some clarity. I was able to get another sample app working that uses a new feature. Helped out with some community questions. Started working on a blog post.

- Personal : Last night I went through some tracks for the radio show. I also got quite a bit done with my side project. Built up more of the archiving aspect that was a request from the group. Now, I have it (haven't tested yet) so that the application will actually record a page that the group can style and get the video to look exactly how they want. With the previous, more basic way, you have some control of the layout of the video, but this way, there is a lot more options.

![The image is of a beautiful landscape with a large, red rock mountain in the background. The sky is light pink and purple, with a few clouds dotting the sky. The foreground is a field of green grass and sagebrush, with a small stream running through it. The mountain is in the distance, with a few trees on its slopes. The image is taken from a low angle, making the mountain look even more imposing. The scene is peaceful and serene, and the perfect place to relax and enjoy the beauty of nature. This is a photo of Old Paria, Utah.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aajuhkua4iyayhymjneh.jpg)

Looks like the Gemini AI prompt to come up with the alt image of this blog post is working. I think I need to pull the image from my Google Drive instead of just copying and pasting like before. Whatever. Glad it's working now so I don't have to come up with something. haha. Going to go through tracks for the radio show. Then, I'm going to test the archiving on my side project and fix any issues. The only thing I think I may have an issue with is the webhook I set up to retrieve the download link of the archive. It's supposed to create a custom event that will notify the host that the download is available with a link. If that works, I want to be able to save it to the GitHub repository so that the admin could also download it and upload it somewhere else if they want. I'm thinking I may add a broadcast feature as well. We'll see. 

Have a great night!

peace piece
Dwane / conshus
https://dwane.io / https://HIPHOPandCODE.com
{% youtube TDYooda-tAs %}
Introdução aos Testes Unitários com Pest em PHP
Tags: php, laravel, webdev, learning
Published: 2024-03-05 23:38:23

Neste tutorial, vamos explorar os fundamentos dos testes unitários em PHP usando a biblioteca Pest. Pest é um framework de teste moderno, simples e elegante, que oferece uma sintaxe limpa e amigável para escrever testes. 

Pré-requisitos

Antes de prosseguirmos, certifique-se de ter o seguinte instalado em sua máquina:

- PHP (versão mínima 7.3 ou superior)
- Composer (um gerenciador de dependências para PHP)

## Instalação do Pest

Para instalar o Pest em seu projeto PHP, execute o seguinte comando no terminal:

`composer require pestphp/pest --dev`

## Configuração do Pest

Após a instalação, crie um arquivo de configuração chamado pest.php na raiz do seu projeto. Aqui está um exemplo básico de configuração:

```
<?php

return [
    'paths' => [
        'app',
    ],
];
```
Neste exemplo, estamos configurando o diretório de testes para app, onde os testes serão armazenados.

## Escrevendo Testes

Crie um diretório chamado tests na raiz do seu projeto. Dentro deste diretório, você pode começar a escrever seus testes.

Vamos criar um teste simples para uma classe de exemplo. Crie um arquivo chamado **ExampleTest.php** dentro do diretório tests com o seguinte conteúdo:

```
<?php

use App\Example; // Suponha que esta seja a classe que estamos testando

it('can instantiate Example', function () {
    $example = new Example();
    
    expect($example)->toBeInstanceOf(Example::class);
});

it('can get the name', function () {
    $example = new Example();
    $name = $example->getName();
    
    expect($name)->toBe('Example');
});
```
Para executar: 

`vendor/bin/pest`

Isso iniciará a execução dos testes no diretório tests e mostrará o resultado no terminal.

## Conclusão

Este tutorial cobre os conceitos básicos dos testes unitários em PHP usando Pest. Recomenda-se explorar a documentação oficial do Pest para aprender mais sobre recursos avançados e boas práticas de teste.
Portfólio - Aula 06
Published: 2024-03-05 23:28:37

Nessa aula foram apresentados os conceitos de **estrutura de dados** e proposto para fazer um programa de inserção e exclusão de elementos.

```
#include <stdio.h>
#include <stdlib.h>


struct noArv {
    int cpf;
    struct noArv* esq;
    struct noArv* dir;
};

typedef struct noArv Arv;

void imprimeEmOrdem (Arv* a);

Arv* insere (Arv* a, int cpf);
Arv* retira (Arv* r, int cpf);


void imprimeEmOrdem(Arv* a) {
    if (a != NULL) {
        imprimeEmOrdem(a->esq);
        printf("%d ", a->cpf);
        imprimeEmOrdem(a->dir);
    }
}

Arv* insere( Arv* a, int cpf) {
    if (a == NULL) {
        a = (Arv*)malloc(sizeof(Arv));
        a->cpf = cpf;
        a->esq = NULL;
        a->dir = NULL;
    } else if (cpf < a->cpf) {
        a->esq = insere (a->esq, cpf);
    } else if (cpf > a->cpf) {
        a->dir = insere(a->dir, cpf);
    }
    return a;
}

Arv* retira (Arv* r, int cpf){
    if (r==NULL) {
        return NULL;
    } else if (r->cpf > cpf) {
        r->esq = retira(r->esq, cpf);
    } else if (r-> cpf < cpf) {
        r->dir = retira(r->dir, cpf);
    } else {
        if (r->esq == NULL && r->dir == NULL) {
            free (r);
            r = NULL;
        } else if (r->esq == NULL) {
            Arv* aux = r;
            r = r->dir;
            free (aux);
        } else if (r->dir == NULL) {
            Arv* aux = r;
            r = r->esq;
            free (aux);
        }
    }
    return r;
}

void main() {

Arv* a = NULL;

    a = insere(a, 1254);
    a = insere(a, 2352);
    a = insere(a, 3412);
    a = insere(a, 4201);
    a = insere(a, 5698);
    
    printf("Saída:\n");
    imprimeEmOrdem(a);
    
    a = retira(a, 4201);
    
    
    printf("\n\nDepois de retirar o elemento 4201:\n");
    imprimeEmOrdem(a);
}
```
Execução do código aqui: https://onlinegdb.com/TmOsoDITJ
Developer diary #5. Technology is dying
Tags: android, programming, google, ui
Published: 2024-03-05 22:53:49

The IT sphere and programming develop very quickly. Every year brings something new—a new approach, a new library, a new architecture solution, or just a new programming language. Popularity of something grows very quickly and can just change to hype. But today is not about this. I want to notice how technology dies in the example of the XML approach for building UI for Android.

No, no, XML is not die yet, but it has a tendency to. Just several years ago, when I started, it was a base of the Android system, that started from version 1. And, I thought of it as something unchangeable. Compose went to the scene, and the World changed and time of XML is gone.

Day by day, I get new notices about it. For example, new developers start learning Android development with a focus on Compose. One speaker at the conference mentioned XML as legacy code. Or just today, Google started to hide tutorials where present XML.

I think, it is a normal process. XML is quite familiar to me, and I sense a loss of something significant.. Maybe, I just getting older.
Working with XlsxWriter in Python
Tags: python, beginners, programming
Published: 2024-03-05 22:53:15

# Introduction

XlsxWriter is a Python module that allows you to create Excel files with formatting, charts, and more. In this chapter, we will explore various aspects of using XlsxWriter, focusing on creating, formatting, and manipulating Excel documents.

# Index

- Creating a Document
- Creating a Sheet
- Adding Data from a Dictionary
- Adding Data to a Cell
- Changing Cell Format
- Adding Formulas
- Reading Data

# Examples

# Creating a Document

To start working with XlsxWriter, you first need to create a workbook object. This workbook will act as your Excel file.

```python
import xlsxwriter

workbook = xlsxwriter.Workbook(filename="electronics_data.xlsx")
```

## Creating a Sheet

Once you have a workbook, you can add sheets to it. Each sheet will represent a separate tab in the Excel file.

```python
worksheet = workbook.add_worksheet(name="Circuits")
```

## Adding Data from a Dictionary

You can populate your sheet with data from a dictionary. This is useful for representing tabular data.

```python
data = {"Component": ["Resistor", "Capacitor", "Inductor"],
        "Value": [100, 10, 0.5]}

row = 0
for col, header in enumerate(data.keys()):
    worksheet.write(row, col, header)

for row, (component, value) in enumerate(zip(data["Component"], data["Value"]), start=1):
    worksheet.write(row, 0, component)
    worksheet.write(row, 1, value)
```

## Adding Data to a Cell

You can also add data directly to a specific cell in the worksheet.

```python
worksheet.write("A5", "Voltage")
worksheet.write("B5", 5)
```

## Changing Cell Format

Formatting cells allows you to control how the data appears in the Excel file.

```python
format_bold = workbook.add_format(properties={"bold": True})
worksheet.write("A1", "Component", format_bold)

format_percentage = workbook.add_format(properties={"num_format": "0.0%"})
worksheet.write("B6", 0.1, format_percentage)
```

## Adding Formulas

XlsxWriter supports adding formulas to cells, which can be useful for calculations.

```python
worksheet.write_formula("C2", formula="=B2*2")
```

## Closing the Workbook

Don't forget to close the workbook once you have finished writing to it. This step is essential for saving the changes and finalising the Excel file.

```python
workbook.close()
```

# Conclusion

With XlsxWriter, you can create, format, and manipulate Excel files in Python with ease. By mastering its capabilities, you can generate professional-looking spreadsheets tailored to your specific needs. Experiment with the provided examples and explore further to unlock the full potential of XlsxWriter.

For more detailed information and advanced usage of XlsxWriter, refer to the official documentation at [XlsxWriter Documentation](https://xlsxwriter.readthedocs.io/).
Announcing TechSchool: A free and open-source platform to learn programming
Tags: elixir, javascript, ruby, python
Published: 2024-03-05 22:52:54

Since 2019 I have published free courses on my [YouTube channel](https://youtube.com/@DanielBergholz?si=WsZ062ZtA5MV3kX_). Many times, people have commented on my videos something like "Wow, this course is amazing! It's a lot better than the expensive course I purchased!". I started reflecting after that. Why on earth is someone getting paid thousands of dollars selling a course that is worse than the one I made for **free**? Also, why does my course only have 100 views on YouTube? This isn't fair.

## Identifying the problem

There are lots of people who want to learn programming and also lots of free courses available. However, most of the time, these two groups don't meet each other.

Why? Two reasons. One is that multiple VC-backed predatory coding bootcamps spend millions of dollars targeting newcomers and telling them that the only way to get into the industry is by spending all their money on expensive online courses. Two, the YouTube algorithm is super hard to master. If you recently created a channel, it can take **years** to reach a bigger audience.

## The solution

What if we could easily find all the free courses out there without the YouTube algorithm standing in our way? That's where TechSchool steps in. It is a platform that contains all the free content that might be flying under the radar. It is also open-source, which means anyone who knows a cool course can easily open a PR to add it.

Website: https://techschool.dev
Discord: https://discord.gg/C4abRX5skH
GitHub: https://github.com/danielbergholz/techschool.dev

Let's fight back against the expensive barrier to entry! Tech education should be free and accessible to everyone! We are all gonna make it :fire:

![Let's fight back!](https://media.giphy.com/media/3oEjI1erPMTMBFmNHi/giphy.gif)

## Disclaimer

TechSchool is forever a work in progress. We are all collectively adding more content over time, so if you don't like the options available right now, wait a couple of weeks and then re-visit the website! I'm sure you'll find something new.

## The tech stack

I have it all explained on the [README](https://github.com/danielbergholz/techschool.dev/blob/main/docs/tech-stack.md), but in summary, I decided to use Elixir and Phoenix, because it's a freaking AWESOME combo. I'm also using Live View on all pages, so hopefully the transition between them is super smooth!