teleren/devto huggingface dataset:
Cloud Resume Challenge
Tags: aws
Published: 2022-05-17 23:40:59

I have been working in Operational Technology (industrial control systems in power plants and oil refineries) for about 15 years, doing everything from initial construction and commissioning, to maintenance and modernization design reviews. I recently decided to transition to information security, and through studying and implementing projects, I fell in love with cloud services. This discovery pushed me to begin studying AWS services, which led me to find [Cloud Resume Challenge](https://cloudresumechallenge.dev/docs/the-challenge/aws/).


## Background

The project is a challenge that was created by Forrest Brazeal, who works in DevOps and cloud engineering. The challenge is to build a build a simple, static website of their resume using a multitude of cloud services. As the challenge allows you to choose your preferred cloud provider, I decided to used AWS because I already had some experience using it already, and had recently completed the AWS Certified Cloud Practitioner exam.

As I had chosen to use AWS, I began to lay out the infrastructure that would be needed to complete the project. S3 would host the static website, Route 53 and CloudFront would manage DNS requirements and secure website distribution. Creating a visitor counter would involve JavaScript calling API Gateway, triggering a Python Lambda function, which would read and append a DynamoDB table, and the necessary Roles would be managed with IAM. Eventually, the infrastructure would need to be written as "Infrastructure as Code" or IaC.


## Implementation

In my experience doing AWS labs, I had used some individual parts of AWS, but not to the level that this project would demand. Because of this, I decided to start by manually setting up a S3 static website, Route 53, and CloudFront distribution. While everything went fine, I learned that any change of code necessitated an invalidation of the CloudFront cache to propagate the new code.

I am currently working on an error displaying the visitor counter updating correctly. I also have progress to make in the IaC front, I have been working in Terraform and have many bugs to work out. More to come soon.
Cómo escribir excelentes commits
Tags: git, terminal, console, commits
Published: 2022-05-17 23:22:31

Te ha pasado que cuando entras a un repositorio y buscas la lista de commits los comentarios son poco entendibles, no tienen una estructura definida o colocan mensajes como «se arregló error», pero estos comentarios no te aportan nada para entender el porqué del commit.

Elaboré este pequeño tutorial para mostrarte un formato que puedes aplicar en los comentarios de tus commits, que te ayuden en la navegación y da una idea de primer vistazo de los cambios realizados dentro de los mismos.

La estructura del mensaje es la siguiente:

**\<type\>(\<scope\>): \<subject\>**

Ejemplo:

`feat(assets): se integran los assets para redes sociales.
fix(Signin): se corrige inicio de sesión con facebook
Type`

En el tipo de commit tenemos las siguientes opciones para elegir:

- **feat**: Una nueva funcionalidad.
- **fix**: Cuando se va a subir alguna corrección.
- **docs**: Solo para los cambios en los documentos.
- **style**: Cuando el cambio no afecta el código o la funcionalidad (Espacios en blanco, formato, punto y coma, etc), solo la estructura.
- **refactor**: Cuando el cambio en el código no corrige un error o agrega una nueva funcionalidad. Mejora en el código.

**Scope**
Es el ámbito donde se realizó el cambio, config, web-server, index, modulo, etc. Si estas trabajando en Gitlab con incidencias, puedes asociar fácilmente el comentario con la incidencia agregando # y el número de esta, te dejo un repo como referencia https://gitlab.com/kairos6/api-kairos.

**Subject**
Contiene la descripción del cambio, se debe de utilizar en tiempo presente, máximo 100 caracteres.

Ultimos consejos:
- Escribe los comentarios en inglés, esto le dará un plus a tu -repositorio.
- Si trabajas con más personas, agrega esta información en el archivo de contribución para que tu equipo conozca como se tiene que crear los mensajes de los commits.
- Tus commits deben de ser pequeños, es decir que contengan la menor cantidad de cambios, esto te ayudará a tener un mayor seguimiento de tus cambios.

Ya tienes todo para que tus proyectos sean muy profesionales, empieza ya a aplicar este formato a todos tus proyectos. Compárteme en mis redes sociales como lo aplicaste en tus commits o si tienes alguna otra forma de hacerlo.
Graph Features for Graph Machine Learning
Tags: machinelearning, datascience, beginners
Published: 2022-05-17 22:58:31

In my [previous post](https://dev.to/_aadidev/node-features-for-graph-machine-learning-30el), we went through what a Graph is in the context of math, as well as node-based features used for machine-learning on graphs.
**TLDR:** a graph is a set of nodes connected by edges, both of with can contain features. Graph ML is concerned with using graph-based representations to infer these features on new graphs, or in some cases to learn structures existing within a graph. 

The previous post covered features which assumed that we wanted to perform inference on the nodes or edges of a graph. Some applications however, tend to warrant entire-graph operations; For example, predicting whether a new molecule is toxic or whether a new protein is compatible with particular enzymes. 

To this end, there are three common approaches:
- Bag of nodes
- Weisfeiler-Lehman Kernel
- Graphlets

## Bag of Nodes
This is the simplest method. Summary statistics, such as histograms, node degree, centrality measures from node-level operations can be aggregated and used as a graph-level representation. However, this is entirely based on node-level data, which means that larger, structural features of the graph may be missed.

## Weisfeiler-Lehman Kernel
The idea behind this method is to iteratively aggregate node-level information, which contain data extending past their local _ego_ graph (their immediate neighbourhood). This method can get mathsy quite quickly;

A label is assigned to each node, such as the node-degree. A hash-function then iteratively assigns each node a new label using the multi-set of current labels within the current node's neighbourhood (multi-set, since some neighbours may have the same degree). This is run a fixed number of time (depending on graph-size and how much data we wish to capture). Each node now encodes the structure of its neighbourhood, which can then be summarized for further processing.

## Graphlets
This is a typically combinatoric-ally difficult problem, since it analyses different possible subgraph structures existing in a graph (called graphlets). A graphlet kernel would encode the number of times graphlets of a certain type occur in a graph, typically in a column vector. A similar approach looks at paths that occur in a graph, and encodes the number of times particular degree-sequences occur. A slight variation to this approach uses only the shortest-path between nodes which is used to encode this data.
Introduction to Six Sigma
Published: 2022-05-17 21:57:02

6 sigma is described as task supervision management methodology or even set of procedures to remove the particular waste or the particular unwanted/defects through the current or developing procedure. Six-Sigma is actually a data-driven approach for getting rid of the defects coming from the process in fact it is calculated as the particular standard deviation coming from the data gathered. Six sigma suggestions are implemented generally to enhance the top quality of the procedure and minimize the particular defects in the particular process. It is just a established of data-driven methods to improving the general approach of the particular current and establishing process. The 6 Sigma methodology seeks at process enhancement by reducing the particular variation with the aid of procedures called DMAIC(Define, Calculate, Analyze, Improve in addition to Control) and DMADV( Define, Measure, Review, design and Verify). There are diverse degrees of six sigma namely yellow seatbelt, green belt, dark belt, and grasp black belt. These types of different belts inside six sigma indicate different expertise ranges in six sigma. The yellow seatbelt will be the basic 6 sigma qualification regarding the quality procedure practitioners and grasp black belt regarding leadership and prosperous process improvement strategies.

**What does 6 Sigma Signify?**
The particular six sigma is actually a data-driven approach regarding project management technique that eliminates or even removes any specs which is not necessarily mentioned or questioned by the customer or the merchandise owner which allows to minimize the particular variation and change from the procedure leading to uniformity in addition to improved quality regarding the process or even the project. The supreme goal of any kind of project or corporation is to attain the highest customer fulfillment. Thus by reducing the particular waste through the procedure, [lean six sigma certification](https://www.igmguru.com/quality-management/lean-six-sigma-green-belt-certification-training/) is likely to enhance the top quality of the services leading to higher consumer satisfaction. By minimizing the undesired requirements from the procedure or project, 6 sigma also allows to manage the price range also to avoid unwanted wastage pounds inside an undesired necessity. It identifies the challenges in progress which can otherwise cause huge loss regarding the organization ensuing in increased success and reduced price.
Getting help with Linux commands
Tags: linux, bash, devops
Published: 2022-05-17 21:50:54

It is kind of easy to get lost in the realm of Linux commands. It is not easy to memorize hundreds of commands and thousands of options and arguments. 
Here in this post I am going to list some of the possible ways that can help with getting documentation and usage examples for whichever command you are looking for.

## man

`man` is the system manual pager that you can give an argument that represents a command, utility or a function and it should represent its documentation for you.

### Usage example

```
man wget
```
Running the command above will print out to the console a full description of the `wget` command (which is by the way, a program that can download files from the internet and it supports multiple protocols) along with all the available options and arguments.

If `man` doesn't exist in your system, you can use `sudo apt install man-db` to be able to use it in your distro if it supports apt package manager.

---
## info

`info` is a software utility that presents infotext documentation as an easy to travers tree that you can go through.

### Usage example

```
info wget
```

This will print out the the console textinfo documentation about `wget` command.

You can also navigate to a specific section in the documentation by specifing it as an argument 

```
info wget examples
```
Will take you directly to the examples section of wget documentation.

---
## usr/share/doc

Most application will have a readme file that you can open in the directory `usr/share/doc`

---

## --help

Will show you usage guide for almost any command. They maybe simplified but you can pipe them through `less` to read at your own speed.
TexCreate v2.3 Plans
Tags: tex, programming, opensource, news
Published: 2022-05-17 21:41:47

I would be lying if I said I haven't looked at TexCreate in a while as starting up `Mufi-Lang` has been eating much of my development time. But I also have been getting some more ideas of what else to add and the future of the project. 

First off, TexCreate has hit over 2K downloads!!! I'm honestly quite happy to see people downloading my project, and it motivates me to make it better. So let's go through some of the new changes I want to implement: 

## Release Model 

My plans for releases is to release a new minor version or patch every 2 months to provide enough time between working on `TexCreate` and `Mufi-Lang`. 

## Changes for 2.3 

These are some of the new changes I plan on implementing: 

- Fixes to `texc-web`
  - Currently has issues related to temporary directories 
- Using `tectonic` as the compiler to provide everything being Rust.

This doesn't seem too much, but it's impact is quite a lot. First off fixing `texc-web` will allow me to finally add it to the TexCreate website and adding `tectonic` will remove the need for `texcreate.toml` and make the whole compile situation more seamless. 

## Expected Arrival

I hope to implement and release these changes within 2 months, and it gives me enough time to not rush any code, and bring any other changes that may come up.
Redis and cache
Tags: cache, redis, javascript, programming
Published: 2022-05-17 21:33:50

## What is cache? 

The cache is an in-memory data store that allows us to store repetitive data for the client. 

The cache acts as a near key-value data store to the client applications. 


## Why is it needed? What about DBMS?

In-memory cache systems like Redis allow us to store data in the physical RAM. Unlike external databases, the data is stored on hard disks or SSDs. With that being said, accessing and retrieving data from cache will be much faster than retrieving it from external data stores. 

Hitting the main datastore every time a client makes a request to the API might cause a lot of latency. Specially queries that make a lot of aggregations, lookups, and response time.  

In addition to that, it will increase the load and connections on the main database, which will be a reason to increase the resources and allocations of the server running that database.


## How does Redis cache work? 


Redis becomes very handy because it provides different data types to store such as strings, lists, and hashes. 

The whole idea behind how it works is to store the data we get from the main database inside Redis as key-value pair. 

The next time we try to get this data, we will check if the data is available in the Redis cache. If yes, the data will be retrieved from Redis without doing further calculations and external Database connections. If the data is not inside the cache, the data will be retrieved from the main DB and later cached inside Redis.  

This layer of check can be obtained in multiple ways. One of them is making a global middleware that checks for cache availability as shown below using Express.js: 


When an entry in Redis gets expired, the key and value will no longer exist. We can check for the availability of the cache based on the key we store. 

```js
const cacheAvailability = (req, res, next) => {
  const { id } = req.params; // or from body or any input we can modify the middleware based on 
  redis.get(id, (error, result) => {
    if (error) throw error;
    if (result !== null) {
      return res.json(JSON.parse(result)); // Parsed because there is a stringified object as a value 
    } else {
      return next();
    }
  });
};
```



## When it should be considered? 

There are two terms that should be considered when it comes to caching: 
`Hit rate`: the number of times we actually get the data from the cache and not the external data source. 

`Miss Rate`: The number of times we access the expired cache and get data from the main database. 

Caching is meant to store frequently repetitive requested data. Data that is repetitive and not frequently changing.  With that being said, the more the hit rate is, the more performance and efficiency we will get in our applications. 

Constantly checking for cache, finding it empty, and then getting the data from the main Db and then store in cache is useless. 

There should be a persistent relationship between the date we need to cache, how long it will be stored in the cache, and how expensive the operation is if we directly get it from the main database.
Volunteering at CodeYourFuture: what it's been like
Published: 2022-05-17 21:26:36


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7nzr1grezl7bj9bf33b6.jpg)
It's been 3 months since I started volunteering as a Personal Development Trainer at [CodeYourFuture](https://codeyourfuture.io/), a UK based non-profit that trains some of the most disadvantaged members of society to be coders.

✍️Check out my article to learn what it's been like:

https://codeyourfuture.io/blog/volunteer-stories/volunteer-stories-nadia/
How risky is it to expose Docker REST APIs?
Tags: api, security
Published: 2022-05-17 20:58:41

How risky is it to expose Docker REST APIs?
Many of us might be surprised to know that we can also access docker engine through REST APIs.
In this post I will show you how easily you can expose these APIs and start interacting through your favourite POSTMAN or cURL tools.  At the same time, you would also realise how risky it would be to leave them unsecured while giving public access to it.
Any hacker can easily grab the access and can perform search, add and delete operations on your images which can damage the reputation of the organisation as well as business loss. 
I have used free pen test tool(https://apisec-inc.github.io/pentest/)to scan and find 18 vulnerabilities for the docker API.

 
How to expose Docker REST APIs?
Pre-Requisite:
∙       An Ubuntu installed on one of VM instances
∙       Docker installed
Once you have installed pre-requisite softwares, create a directory (docker.service.d) and a file(options.conf) as given below and add the content to options.conf file.
Create the directory to store the configuration file.
sudo mkdir -p /etc/systemd/system/docker.service.d
Create a new file to store the daemon options.
sudo nano /etc/systemd/system/docker.service.d/options.conf
I have used a nano editor but you are free to use any editor of your choice.
Now update options.conf file with the content given below.
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H unix:// -H tcp://0.0.0.0:2375
Now, reload the systemd daemon and restart the docker service:
# Reload the systemd daemon.
sudo systemctl daemon-reload
# Restart Docker.
sudo systemctl restart docker
Access the REST API Endpoint to confirm the configurations we have done are correct.
Eg:
GET https://localhost:2375/images/json
The above command would list out all the docker images. We can also try to delete images and can perform many more operations.
To get full list of endpoints, please refer to https://docs.docker.com/engine/api/
Please like and comment to share your thoughts.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r8e4r0lq52c4mwyw9w9o.PNG)
How to Transition Into an Engineering Leadership Role
Tags: productivity, career, startup, help
Published: 2022-05-17 20:55:59

There is no hard and fast rule that says engineers cannot become good leaders — Engineers have many skills that make them ideal managers.

The most common management tasks involve:
* *Resolving matters of conflict among team members (25%)*
* *Motivation of team members (22%)*
* *Exploring resource to bring improvements into the team (15%)*
* *Handling corrective actions and performance reviews (15%)*
* *Recruitment of new leaders and mentoring internal team members (12%)*

No one is a perfect leader, and no one gets leadership right all the time — Learning is a cooperative process when you link up with link-minded Engineering leaders — peers. Check out [Lohika <ReThink> Community](https://community.lohika.com/home/learn): Home to Engineering leadership.
Best Coding Interview Resources
Tags: programming, beginners, help, tutorial
Published: 2022-05-17 20:14:13

There are a ton of resources out there to help you study for programming interviews.

In order to narrow them down, we ranked them by category -

✍🏼 Best Book

✍🏽 Best for Quick Coding Problems

✍🏾. Best for Beginners

✍🏿 Best for Community

✍🏼 Best for Mock Interviews

✍🏽 Best for Visual Learners

✍🏾. Best for Abstract Problems

Keep in mind there is no one resource that is going to help you pass your technical interview. Having a comprehensive understanding here is key, and narrowing down the tools you use to learn these essential topics is what is going to get you to pass!

Check out the [full article](https://www.hackpack.io/blog/resources/best-coding-interview-resources)

## Join the Community
Hackpack is the most active community of engineers studying for programming interviews [Apply Here](https://www.hackpack.io/)

[Interview Tips Newsletter](https://fangprep.substack.com/)
A couple of useful git aliases
Tags: git
Published: 2022-05-17 20:08:06

We are using YouTrack for project tracking and we are naming our feature branches by their corresponding YouTrack issue ID. The reason behind this is that we have built a lot of automation upon it.

When we are creating a new feature branch we always start with an empty, let's call sentinel commit with the YouTrack ID which allows us to easily identify the branch starting point and also helps a lot with scripting. 

In order not to forgot this initial empty commit, we created a small alias which takes care of this for us (please note that these scripts were created in Windows terminal, for Linux you may need to turn off history expansion):

```bash
git config --global --replace-all alias.br "!f() { export YTID=$1 && shift && git switch -c $YTID && git commit -m \"$YTID: Starting point \" --allow-empty;};f"
```

We are always prefixing the commits with the branch name, as this let's us later identify the original branch that contained the commit. For merge and cherry-pick scenarios it could be super-helpful:

```bash
git config --global --replace-all alias.cm "!f() { IFS=$'\n' && for L in $(git log --format=oneline --no-decorate); do YTID=`sed -n -E 's/^[0-9abcdef]+.([A-Z]+\-[0-9]+): Starting point.*/\1/p' <<< $L`; [[ -n ${YTID} ]] && break; done; git commit -m \"$YTID: $@\"; }; f"
```

In practice when you start working on a feature, simply put

```bash
git br ISSUE-11
```

When commiting:

```bash
git cm "some meaningful commit message"
```

After checking with git log:

```bash
e819c10 ISSUE-11: Third commit
87c7b4c ISSUE-11: Second commit
78fd4fc ISSUE-11: First real commit
7717e9c ISSUE-11: Starting point
8f6737d (origin/main, main) ISSUE-10 Lastly merged feature with squash commit
```
Problem with flutter and Firestore – a newbie question.
Published: 2022-05-17 20:03:31

I created a program which reads Firestore in a Stateless widget – and it worked. I decided to convert the program to a statefull widget – and it is not working.
After displaying some  info I come to conclusion the program tried execute some calculation before the Firestore data was available.
:
I have a function: 

Future<void> getDocs() async {
  await FirebaseFirestore.instance
  .collection('Spanish').get().then((snapshot) {
    print("********getDocs() 1");
......
So my question is: how to postpone the execution of a program until the data will be available?
I tried to remove asyc/await – but it didn’t help.
Any ideas?

Thanks!
Laravel Prontoforms
Tags: programming, laravel
Published: 2022-05-17 19:48:51

# The package 
In my day-to-day job, we rely heavily on an external app called Pronto Forms, it is actually a very good app. However, I ended up creating a package for Laravel in order to send forms to this app. 

The package can be located here. Any feedback is more than welcome. 

[Package](https://packagist.org/packages/omaromp2/laraprontoforms)
What Do You Know About W-BEN Form?
Tags: discuss, explainlikeimfive
Published: 2022-05-17 19:44:24

Hello Dev Community,

I recently was asked to fill W-BEN Form. This is the first time for me to hear about it, but I asked around and found out that it's common in freelancing world.

What do you know about this form? Are all fields mandatory? How to fill tax related fields?