teleren/devto huggingface dataset:
My first time participating in a hackathon
Tags: githubhack23, csharp, githubactions, programming
Published: 2023-04-29 20:14:11

Hello everyone, although being a really old member of this platform I guess this is my first time ever doing a post 😅, so I don't know well where to start but the gist of it is that I decided to participate in the #GitHubHack23.
My entry will take an approach to the category of **maintainer must-haves** where my goal will be to do a set of tools/template repo to help devs deploy and keep their documentation and changelogs up-to-date, it'll mostly be for C# developers as I sadly don't have much experience with other languages and for now I have it divided into the following(still at a really WIP phase):

- auto-tag: C# project that will be called whenever an issue is created/updated and will properly tag the issue depending on what is written in the title/description. Example: If I write @feature in the description, once the workflow is called it'll tag that issue with the feature tag. 
- changelog-generator: C# project that will be in charge of updating the changelog.md and also changes for the release whenever one is generated. Say for example, if I made a release with the tag v1.0.0, it'll call the workflow, get me all the commit messages since the last release that match a filter, update the release's description with those commit messages and also add the lines for it in the changelog.md
- documentation-helper: C# Project that will handle the automatic generation of documentation and is divided into 2 components:
 - Library: For now only has the DocumentationAttribute(used to mark methods/properties/classes for documentation, see image below for example) and DocumentationHelper, a static class that will go through all assemblies in the project and check for the DocumentationAttribute and return in a DocumentationStructure list that will be used to show the documentation;

![Documentarion](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fzh4gq7zi2z7x37zqejs.png)
 - DocumentationGenerator: Simple script that will be called manually from the Actions menu and that will update the documentation.md using the DocumentationHelper described above.

I'm hoping to get this a bit more organized and also implement some helpful tools for Unity that will tie in to these projects.

If you want to check out the current state of the project, it's currently public on [Github](https://github.com/omegaleo/UnityFlow).

All feedback is greatly appreciated :)
Change the default application for Ubuntu's terminal launcher
Tags: linux, ubuntu, terminal, dconf
Published: 2023-04-29 20:04:21

---
title: Change the default application for Ubuntu's terminal launcher
published: true
description: How to change the default application for Ubuntu's terminal launcher.
tags: linux, ubuntu, terminal, dconf
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2022-10-21 05:22 +0000
---

This is something I has been trying to accomplish for a long time, maybe six months now. I started looking for it, then find a dead end and leave it untouched for a few weeks. This morning I decided it was distracting me enough so I really have to find it. It ended up being simpler than I thought, sadly the answer is not obvious and there are so many misleading pages out there.

About a year ago I bought an amazing laptop, a tuxedo computer with their recommended OS installed, I must say I am quite happy with the laptop, and definitely think it is worth it. It came with Tilix preinstalled as the terminal, which is really nice I must admit, and I would love to explore at some point in the future (no commitment here), but the moment I learned about [Alacritty](https://alacritty.org/) I fell in love with it.

So I am used to Ubuntu's `<Primary><Alt>t` to open the terminal, and from time to time I use the *Open in Terminal* from the file explorer and I wanted to properly configure my system, with no overrides or symbolic links to use Alacritty instead of Tilix.

After reading a few StackOverflow answers I learned about *dconf*, I was able to find where to change the shortcut to trigger the action but not how to change the command that was executed by the action, and I was stuck with that problem for a few weeks. Then at some point I read about:

`gsettings list-recursively`

If you pass no argument it lists all the keys and values. I didn't think about it initially but my answer ended up coming from here. I saved the output of the command in a text file, opened it in vim and search for tilix.

It was that way that I found this four keys:

```
org.gnome.desktop.default-applications.terminal exec-arg '-e'
org.gnome.desktop.default-applications.terminal exec 'tilix'
org.cinnamon.desktop.default-applications.terminal exec-arg '-x'
org.cinnamon.desktop.default-applications.terminal exec 'tilix'
```

What I did was totally empirical, so if someone can shed some light about the related concepts I would really appreciate it. No need to install `update-alternatives` or to alter my system in any other form, just used `gsettings` to set these four keys and it worked. Since I've no idea if I needed any argument I just set that empty.

```
gsettings set org.gnome.desktop.default-applications.terminal exec-arg ""
gsettings set org.gnome.desktop.default-applications.terminal exec "alacritty"
gsettings set org.cinnamon.desktop.default-applications.terminal exec-arg ""
gsettings set org.cinnamon.desktop.default-applications.terminal exec "alacritty"
```

That's it! It worked like charm! Hope it save you some frustration :)!
One-minute CICD explanation
Published: 2023-04-29 19:40:45

(I assume you're a developer)

The goal is for the Business to have a strong, reliable feedback loop. They dream up a feature, and after it's deployed they get feedback from the users.

CI = Continuous Integration = merge your and your team's changes, then run tests to get feedback. Example: your code works, but it breaks the assumptions in older code. By investing in test automation you get a fast, reliable feedback loop, and users don't see nasty bugs in production.

CD = Continuous Deployment = publish changes so users can see

For example, if your pipeline simply "regenerates HTML and deploys to Vercel", it's a CD process.

CICD has a lot of benefits:

- consistent deploys
- deploys "in line" with normal Dev workflow, nothing special needed
- reliable testing, vs "works for me" testing

You can do fancier things like "deploy this change, but if it breaks then automatically roll back the change and alert the team".

CICD has costs of course:

- need to spend (limited, expensive) Developer time to manage it
- often the business doesn't want to invest, but they whine if deploys are too slow or flaky
- if you install CICD plugins (e.g. GitHub Actions) it's a *great* attack vector for malware. I don't think this is common, but it's a potential risk.
Apache age using docker. Starter Guide.
Tags: apacheage, docker, postgres
Published: 2023-04-29 18:44:37

**Introduction:**
A distributed PostgreSQL plugin called Apache Age is used to manage and examine massive amounts of graph data. It offers robust graph analysis capabilities and lets users store, analyze, and manage large-scale graphs using SQL. In this article, we will examine the Docker setup process for Apache Age.

A well-liked platform for creating, transporting, and operating applications in containers is called Docker. It enables users to put an application and every one of its dependencies into a single container that can be easily transferred across different environments. We can quickly and easily install Apache Age using Docker on a local computer or in the cloud.

**Prerequisites:**
Make sure Docker is set up on your computer before you begin. On the official page for your operating system, you can find Docker for download and installation.

**Getting started with Apache Age using Docker:**
Following the steps below, we can launch Apache Age after installing Docker:

**1- Pull Apache Age Docker image:**
The Apache Age Docker image must first be downloaded from the Docker Hub source. Open a terminal and enter the following command to accomplish this:

```
docker pull ageproject/age
```
The most recent Apache Age image will be downloaded using this command from the Docker Hub repository.

**2- Create a Docker container:**
The following command can be used to build a Docker container after the image has been downloaded:

```
docker run -it -p 15432:15432 ageproject/age
```
With this command, a new container will be started, and port 15432 of the container will be mapped to port 15432 of our local machine. The "ageproject/age" input gives the image to use for the container, and the "-it" flag enables us to communicate with the container's command line.

**3- Access Apache Age:**
When the container is ready to use, we can open a web browser and go to http://localhost:15432 to access the Apache Age web interface. With the Apache Age web interface now available, we can start running SQL queries.

**4- Run SQL queries:**
To run SQL queries on the Apache Age database, we can use the Apache Age web interface. For instance, the SQL command below can be used to create a table:

```
CREATE TABLE students (uid INTEGER, name VARCHAR(50));
```
The INSERT INTO statement can be used to add data to the table after it has been created. The MATCH statement also allows us to do graph queries.

**Conclusion:**
In this article, we looked at utilizing Docker to get Apache Age up and running. These methods allow us to easily install Apache Age on a local computer or in the cloud and begin utilizing its robust graph analysis features. Apache Age and its dependencies may be packaged and deployed quickly using Docker, making it simple to share with others and use in real-world settings.
Use xclip to copy a file to clipboard
Tags: linux, xclip, clipboard
Published: 2023-04-29 19:24:19

---
title: Use xclip to copy a file to clipboard
published: true
description: How to copy the text from a file into the clipboard from the command line.
tags: linux, xclip, clipboard
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2022-10-21 05:22 +0000
---

This is a very brief post that I want to write here and maybe I'll try to expand later.

I have tried in the past to copy text from a file into the clipboard to paste it in a gist at Github. The easiest way for someone not familiar with the command line is to simply open the file in a regular graphical editor, then select all the text and finally copy it from there.

The thing is, that is not very straightforward, right?

I must admit I've not read the man page for `xclip` but also, man pages are usually exhaustive but not very concise when you are trying to solve a problem. After taking a look at a few StackOverflow answers and the man page I realize this can be done in a very simple way:

`xclip -selection clipboard -i script.js`

There are two nice things to notice here that once you know make `xclip` very flexible:

1. `-selection` it can be "primary" (default), "secondary", or "clipboard". Apparently it is not 100% standardized but it is fairly safe to assume that "clipboard" will work in most cases for browser based apps.

2. `-i` you don't even have to select the text but you can immediately upload the whole file. For me this is perfect. But I admit there are cases in which selecting some parts would work better.

There seem to be some other very interesting options in the man page, but that will have to wait for later.
Importance of Python Coding
Tags: about
Published: 2023-04-29 17:35:35

Python is a popular programming language that has become increasingly important in recent years. Its popularity can be attributed to its simplicity, flexibility, and versatility, which make it an ideal language for a wide range of applications.

One of the main benefits of Python is its ease of use. Python has a simple and easy-to-learn syntax that makes it accessible to beginners, as well as experienced programmers. This simplicity allows developers to write code quickly and efficiently, making it an ideal language for prototyping and testing.

Python is also a highly versatile language, with applications in a variety of fields. It is commonly used in scientific computing, machine learning, data analysis, and web development. The language's flexibility allows developers to create complex applications with ease, making it a valuable tool for solving real-world problems.

Another benefit of Python is its large and active community. There are numerous online resources available for learning Python, from documentation to tutorials and online courses. This community also provides support for developers, making it easy to find answers to any questions that may arise while working on a project.

Python's popularity has also led to the creation of numerous libraries and frameworks, which can be used to extend its functionality. These libraries include NumPy, Pandas, TensorFlow, and PyTorch, among others. They provide developers with powerful tools for scientific computing, machine learning, and data analysis, making Python an ideal language for these fields.

Finally, Python is a cross-platform language, meaning that it can run on multiple operating systems, including Windows, Mac OS, and Linux. This makes it easy to develop and deploy applications across different platforms, which is particularly important in today's interconnected world.

In summary, Python coding is important for a variety of reasons. Its ease of use, versatility, and large community make it an ideal language for a wide range of applications, from scientific computing to web development. Its popularity has also led to the creation of numerous libraries and frameworks, providing developers with powerful tools for solving real-world problems.
New updates to Nodejs V20 🔥
Tags: node, express, javascript, typescript
Published: 2023-04-29 19:07:49

Node.js is a popular server-side JavaScript runtime that has been widely adopted by developers for building scalable and high-performance web applications. With the release of Node.js v20, there are several new features and improvements that developers should be aware of. In this blog, we will discuss the new changes in Node.js v20 compared to the old LTS version.


- V8 engine update Node.js v20 features an update to the V8 engine, which powers JavaScript execution in Node.js. This update brings significant performance improvements, including faster startup times, reduced memory usage, and better garbage collection. This means that Node.js v20 applications can handle more traffic and scale better than the old LTS version.
- Support for ECMAScript modules Node.js v20 has added support for ECMAScript modules, which are a new standard for organizing and sharing JavaScript code. This allows developers to write more modular and maintainable code, making it easier to collaborate and reuse code across different projects.
- Experimental Async Local Storage Node.js v20 introduces an experimental feature called Async Local Storage, which allows developers to store and access data across asynchronous contexts in a more efficient way. This can be particularly useful for tracing and debugging asynchronous code and can lead to better performance and fewer errors.
- Improved diagnostic reports Node.js v20 includes several improvements to the diagnostic reporting capabilities, making it easier to debug and troubleshoot Node.js applications. The new reports include more detailed information about errors and warnings, as well as recommendations for resolving issues.
- Updated platform support Node.js v20 includes updates to the supported platforms, including support for the latest versions of macOS, Windows, and Linux. This ensures that developers can build and deploy Node.js applications on the latest operating systems and take advantage of the latest features and improvements.
- In conclusion, Node.js v20 brings several new features and improvements that make it a compelling choice for building modern web applications. The new updates, including the V8 engine update, support for ECMAScript modules, experimental Async Local Storage, improved diagnostic reports, and updated platform support, provide developers with powerful tools to create scalable, high-performance applications. If you are currently using the old LTS version of Node.js, it’s worth considering upgrading to Node.js v20 to take advantage of these new features and improvements.
A Simple Guide to Graph Databases for Beginners.
Tags: apacheage, postgres, sql
Published: 2023-04-29 18:30:53

In this blog post, I will be defining some key terms used in graph databases and what they actually mean. I will be using the picture below to explain all the terminologies, this picture was obtained from the **Apache AGE viewer**. 

![This is an image showing Nodes and Relationships in a graph database](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0b0srhjktoia8j6aeaza.jpg)

The Apache AGE viewer is used to visualize the created graph database. To install the Apache Age viewer, [this](https://dev.to/talhahahae/installing-apache-age-viewer-5np) blog provides a very clear guide.

- 
**Vertices**. A vertex in a graph database represents a single entity. A vertex is the basic entity of the graph, with the unique attribute of being able to exist in and of itself. A vertex may be assigned a label and a property. A vertex may have zero or more outgoing edges. A vertex may have zero or more incoming edges. In the picture above, I created three nodes with labels called **Student** and **School**, two of these nodes have the same label, that is the **School** node, but they all have different properties such as Chidera, Esther and Madonna as seen inside the circles. When I say node here, I mean a vertex. The nodes can be seen at the left-hand side of the picture with labels **School and Student.**


- 
**Edge**. An edge is an entity that encodes a directed connection between exactly two nodes, the source node and the target node. Edges creates a connection between one vertex and another. An Edge is otherwise known as relationships and can have a property as well as a label. The Edges in the pictures above are **AreClassmates** and **Attends**, they are actually the line that connects two different nodes together. This line can be empty or given a name just like I did, these names given to it are the **labels**.

- 
**Properties**. Properties are key-value pairs that are used for storing data on Vertex and Edges. The properties are actually not clearly being shown in the picture above, but the names inside the circles are the different properties each of the nodes have. 
- 
 **Label**. A Label is a name or identifier to a Node or a Relationship. A Node or relationship may or may not have a label. Labels in the above picture are **School,Student,AreClassmates and Attends.**


- 
**References**
https://age.apache.org
https://neo4j.com
Node.js Tutorial: How to Easily Convert Axios Requests to cURL Commands with axios-curlirize in Node.js and the Browser
Published: 2023-12-19 12:57:54

---
title: Node.js Tutorial: How to Easily Convert Axios Requests to cURL Commands with axios-curlirize in Node.js and the Browser
published: true
date: 2023-04-29 18:17:04 UTC
tags: 
canonical_url: 
---

Axios is a popular JavaScript library used for making HTTP requests from a web page or Node.js application. When developing APIs, it can be helpful to convert an Axios request to a cURL command for debugging or testing purposes. Fortunately, the `axios-curlirize` npm package makes it easy to do just that. In this tutorial, we'll show you how to use `axios-curlirize` to convert Axios requests to cURL commands.

## Prerequisites

Before we get started, make sure you have the following installed:

- Node.js (version 12 or higher)

- NPM (Node Package Manager)

## Installing axios-curlirize

To use `axios-curlirize`, you need to install it using NPM. Open your terminal and run the following command:

```
npm install axios-curlirize
```

## Using axios-curlirize

Once you have `axios-curlirize` installed, you can start using it to convert Axios requests to cURL commands. Here's an example:

```
const axios = require('axios');const axiosCurlirize = require('axios-curlirize');axiosCurlirize(axios);axios.get('https://jsonplaceholder.typicode.com/posts/1') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); });
```

In this example, we import `axios` and `axios-curlirize`. We then call `axiosCurlirize` with the `axios` instance as an argument to enable cURL logging for Axios requests. After that, we make a GET request to [`https://jsonplaceholder.typicode.com/posts/1`](https://jsonplaceholder.typicode.com/posts/1) using Axios.

When you run this code, you'll see the cURL command for the Axios request logged to the console, along with the response data:

```
$ node app.js

$ curl 'https://jsonplaceholder.typicode.com/posts/1' -H 'User-Agent: axios/0.21.1' -H 'Accept: application/json, text/plain, */*' -H 'Host: jsonplaceholder.typicode.com' -H 'Connection: keep-alive'{ userId: 1, id: 1, title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit', body: 'quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto'}
```

And that's it! You can now use `axios-curlirize` to convert your Axios requests to cURL commands for debugging or testing purposes. It's a simple and effective tool to have in your developer toolkit.
Looking for a react dev.
Published: 2023-04-29 18:11:32

Hey to all,
I'm working together with another dev in a project. Our aim is to work 3 days a week, even if it grows a lot.
We are looking for a react dev. which may want to join.
We are creating a travel booking site and among other cool benefits we are offering flights as low as 2,99USD, we are also going to launch our own token.
If interested, please send me a message.
Thanks!