teleren/devto huggingface dataset:
AWS Organizatios Service control policies (SCPs)
Published: 2023-07-04 02:09:09

¿Qué son las SCPs? Las políticas de control de servicios (SCP) son un tipo de política de organización que puede utilizar para administrar permisos en su organización. Las políticas de control de servicios (SCP) ofrecen un control central sobre los máximos permisos disponibles para todas las cuentas de su organización. Las políticas de control de servicios le ayudan a garantizar que sus cuentas se mantengan dentro de las directrices de control de acceso de su organización. Las SCP solo están disponibles en las organizaciones que tienen todas las características habilitadas. Las SCP no están disponibles si su organización ha habilitado únicamente las características de facturación unificada. Para obtener instrucciones sobre cómo habilitar SCP, consulte Habilitar y deshabilitar tipos de política.

Las SCP por sí solas no son suficientes para conceder permisos a las cuentas de la organización. Una SCP no concede permisos. Una SCP define una barandilla, o establece límites, en las acciones que el administrador de la cuenta puede delegar a los usuarios de IAM y roles en las cuentas afectadas. El administrador aún debe adjuntar Políticas basadas en identidad o políticas basadas en recursos a los usuarios o roles de IAM, o a los recursos de sus cuentas para conceder permisos realmente. Los permisos efectivos son la intersección lógica entre lo que permite la SCP y lo que permite la IAM y las políticas basadas en recursos.

Ejemplos de SCP

SCP Para denegar Classic ELB
**Archivo Deny-classic-ELB.json:**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAllClassicELB",
      "Effect": "Deny",
      "Action": [
        "elasticloadbalancing:ConfigureHealthCheck",
        "elasticloadbalancing:SetLoadBalancerPoliciesOfListener",
        "elasticloadbalancing:CreateLoadBalancerPolicy"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```
SCP para crear instancia EC2 con Keypair

**Archivo ec2-without-keypair.json:**

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CustomGuardrails",
            "Effect": "Deny",
            "Action": [
                "ec2:CreateKeyPair"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "ArnNotLike": {
                    "aws:PrincipalARN": [
                        "arn:aws:iam::*:role/AWSControlTowerExecution",
                        "arn:aws:iam::*:role/AWSAFTExecution"
                    ]
                }
            }
        },
        {
            "Sid": "GRNewInstanceWithKeyPair",
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": "*",
            "Condition": {
                "Null": {
                    "ec2:KeyPairName": "false"
                }
            }
        }
    ]
}
```
Have you heard of Grappl?
Tags: coding
Published: 2023-07-04 01:47:35

Are you looking for a coding tool that not only enhances your productivity but also provides clear visual representation of your codebase? Introducing Grappl, the ultimate coding companion that combines seamless workflow integration with powerful visual capabilities.

🔍 Visualize Your Codebase: With Grappl, you can easily visualize your codebase and system architecture, facilitating effective communication and understanding of your project's progress. Identify dependencies, potential risks, and gain a high-level overview of your system.

🔗 Automated Code Linking: Grappl automates code linking, creating a comprehensive and connected model of your code. This saves you valuable time and ensures that code snippets and related information are easily accessible, enhancing code organization and improving collaboration.

⏰ Automate and Save Time: Grappl automates manual tasks, freeing up your time to focus on coding and innovation. Say goodbye to repetitive tasks and hello to enhanced productivity.

✨ Streamlined Workflow: Grappl eliminates manual tasks and allows you to pick up and complete coding tasks directly from your Integrated Development Environment (IDE). No more switching between tools or platforms.

Download and try Grappl for FREE from the VS Marketplace now: https://lnkd.in/gsgTjdCf
Creating a Linux Virtual Machine on Azure Using Custom Templates
Published: 2023-07-04 00:27:48

Azure, Microsoft's cloud computing platform, provides a seamless experience for creating and managing virtual machines (VMs). With Azure's flexibility, you can leverage custom templates to streamline the process of provisioning Linux-based VMs. In this blog post, we will guide you through the steps to create a Linux virtual machine on Azure using custom templates.

Step 1: Prepare the Custom Template.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qhb9la5ii5gm7lfqad0n.png)
Begin by logging into your Azure account and search for Deploy a custom template then create or obtain a custom template that defines the configuration of your Linux VM. Azure Resource Manager (ARM) templates are written in JSON and allow you to define the desired state of your infrastructure. You can either create your own template or leverage existing templates from Azure Quickstart Templates or the Azure Marketplace. Today we will be working with the Quickstart Templates.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hvkvz85fxxye8yg5b0ej.png)
Step 2: Then select 'create a linux virtual machine'
You can decide to edit the template, edit the parameters or visualize depending on your desired customization.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7uxyy7bwd91o4rww45nf.png)
step 3: Add Your Admin name, select authentication type as password for a quick connection the input your chosen password.Then click the *review+create* button.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1veg8j4wxbto0csgg1h7.png)
Step 4: once validation is passed, click on the create button.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8pa7kl948ub5cxpldkq9.png)
Once you have successfully deployed, go to the resource group.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cx5xzaohzw6k2p9jpsj0.png)
Step 5: Then click on the VM named simplelinuxvm.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ejah01yqk4wajotu54n1.png)
Then click on connect which is on the upper left side of the VM screen.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7py70igz841l4i6zd3q6.png)
To connect to your linux you created on Azure, go to powershell terminal or input the following command in your linux terminal.
ssh <your username@ipaddress> and  then click enter.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1clceguwby7pg69ntb5k.png)
Once the details are entered properly, You will be connected to your VM.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ww1sslb2oxmvm3doyy92.png)
C++, Template and Template for a specific type
Tags: template, specialization
Published: 2023-07-04 00:25:06

We have many reasons to use templates, but it is important to remember that templates should be **defined in header files**. Because the code for specific types is generated when we instantiate them

```cpp
// for Int, double, float
template <class T>
class AddElements {
    T val;
public:
    AddElements(T obj) {
        this->val = obj;
    }
    T add(T obj) {
        return (val + obj);
    }
};

```
Sometimes, we might need to define a template specialization for a specific type

```cpp
//template for string and additional function concatenate
template <>
class AddElements<string> {
    string val;
public:
    AddElements(string str) {
        this->val = str;
    }
    string concatenate(string str) {
        this->val.append(str);
        return this->val;
    }
};
```
more than one template argument, default value for template argument

```cpp
template<typename T, typename U = double>
class mPair {
public:
	T first;
	U second;
	mPair(T f, U s) : first(f), second(s) {}
	bool operator > (const mPair& obj) {
		return this->second > obj.second;
	}
};
```
use case :

```cpp
int main()
{
	AddElements<int> ae(4);	
	int sum = ae.add(16); // 20

	AddElements<string> s_ae("hello ");
	string str = s_ae.concatenate("world...!"); // hello world...!	
	
	mPair <string> df_mp("default", 8.4);// second argument type name is as default -> double
	cout << " default first " << df_mp.first << " second: " << df_mp.second << endl;
	mPair<string, int> mp("str1", 40); // 
	cout << " first " << mp.first << " second " << mp.second << endl;
	mPair<string, int> mp1("str2", 8);

	mPair<string,int> mpmx = getMax<mPair<string,int>>(mp, mp1);
	mPair<string, int> mpmx1 = getMax(mp, mp1);// the compiler can deduce the template parameters from the type of mp
	return 0;   
}
```
Guess-Driven Development
Tags: guessdrivendevelopme, antipatterns, pullrequests
Published: 2023-07-10 08:32:20

---
title: Guess-Driven Development
published: true
date: 2023-07-04 00:00:00 UTC
tags: guessdrivendevelopme,antipatterns,pullrequests
canonical_url: https://jhall.io/archive/2023/07/04/guess-driven-development/
---

Have you ever seen a pull request with half a dozen, seemingly unrelated changes, all in the name of fixing a specific bug?

The last time this happened to me, I requested clarification on the purpose of a number of the changes, suggested a couple small refactors, pointed out that a couple of the changes were unnecessary or even counter-productive…

After a few back-and-forths, the PR went from about 40 lines changed to 2 lines changed. All the unrelated, unnecessary bits had been removed.

This is the result of what I have come to call Guess-Driven Development.

It happens when someone doesn’t really know what’s causing a bug, so they just start changing things, until the bug goes away. Then they commit their entire change set, without much thought.

* * *
_If you enjoyed this message, [subscribe](https://jhall.io/daily) to <u>The Daily Commit</u> to get future messages to your inbox._
结构化查询语言（SQL）| 完整解释（定义、用法、结构和 MySQL 示例）
Tags: development, database, chinese, sql
Published: 2023-07-03 23:28:05

结构化查询语言（SQL）| 完整解释（定义、用法、结构和 MySQL 示例）

#介绍

您好，我的名字是 Daniela Barazarte，欢迎您阅读 SQL 的完整解释。 这个解释以及#DetectaLaLogica 中的所有解释一样直观且简单。

如果您喜欢视频，这里是我在 YouTube 上制作的完整教程，它是西班牙语，但也有字幕：https://youtu.be/Hjs-zGEQtg8

# <u>理论</u>
## 每个单词的定义
**结构化查询语言 (SQL) 或结构化查询语言**
- 语言（Language）：指用于编写计算机可以理解的程序的一组规则和语法。
- 结构化（Structured）：意味着将程序的代码组织成更小、更逻辑的片段，以便更容易理解和维护。
- 查询：指在数据库中对信息进行特定的搜索。

## 完整定义
SQL 是一种编程语言，用于使用查询来管理和操作结构化数据库和关系数据库。


![SQL 数据库](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c4hlfjkg6gio7bbrut5t.png)

## #检测逻辑
SQL被称为结构化查询语言（Structured Query Language），因为它字面意思是一种允许我们查询结构化数据库并获取结果的语言

# <u>使用</u>
## 以便
它用于管理和操作关系数据库，用于创建、修改、删除或查看数据库中的表、对象和记录。

## 何时何地
- 电子商务网站
- 内容管理应用程序
- 社交媒体应用程序
- 数据分析应用
- 项目管理应用程序
- 预订和预约应用程序

## 作为
你需要一个支持SQL的关系数据库管理系统（MySQL、Oracle、Microsoft SQL Server等），那么你必须使用以下命令

# <u>练习</u>
## 锻炼
您有一个销售电子产品的在线商店的 Web 应用程序。 您必须存储和管理订单信息。

### **方法：SQL**

```
-- Create the order table
CREATE TABLE orders (
   id INT AUTO_INCREMENT PRIMARY KEY,
   client VARCHAR(50) NOT NULL,
   date DATE NOT NULL,
   product VARCHAR(50) NOT NULL,
   amount INT NOT NULL,
   price DECIMAL(10,2) NOT NULL
);

-- Create orders
INSERT INTO orders (customer, date, product, quantity, price)
VALUES
   ('Juan Perez', '2023-06-16', 'Red shirt', 2, 20.50),
   ('Ana Garcia', '2023-06-15', 'Blue pants', 1, 35.00),
   ('Luis Gomez', '2023-06-15', 'Green dress', 2, 40.00),
   ('Maria Hernandez', '2023-06-14', 'Bob Grapefruit Socks', 12, 5.80),
   ('Carlos Rodriguez', '2023-06-14', 'Jacket for the cold', 1, 75.50),
   ('Laura Martinez', '2023-06-13', 'Blue Blouse', 3, 30.20),
   ('Pedro Sanchez', '2023-06-13', 'Cowboy Jeans', 6, 50.00),
   ('Sofia Ramirez', '2023-06-12', 'Sweatshirt for exercise', 2, 25.80),
   ('Diego Torres', '2023-06-12', 'Crocodile Cap', 1, 12.80),
   ('Fernanda Castro', '2023-06-11', 'Coat', 2, 90.00);

-- Read all orders
SELECT * FROM orders;

-- Read order by ID
SELECT * FROM orders WHERE id = 3;

-- Edit/Update Order
UPDATE orders SET quantity = 4, price = 80.00 WHERE id = 5;

-- Delete order
DELETE FROM orders WHERE id IN (2, 6, 8);
```

# 重要性
**SQL 有几个好处：**

- 易于学习和使用。
- 操作和访问数据非常有效。
- 它很灵活，可以处理简单和复杂的查询。
- 它具有可扩展性，适用于小型或大型数据库。
- 它是事实上的标准，在不同数据库系统之间广泛兼容。
- 一旦掌握了它，您就可以将您的技能应用到多个数据库平台。

# 告别
（记住）#DetectaLaLógica：SQL被称为结构化查询语言（Structured Query Language），因为它字面上是一种允许我们查询结构化数据库并获取结果的语言

您可以在我的 GitHub 存储库（C# 语言代码）中练习此主题：https://github.com/danielabarazarte/DetectaLaLogica

非常感谢您的阅读，如果有什么问题可以评论，也可以关注我看更多这种风格的帖子，谢谢<3.
AWS Backup utilizando Tags
Tags: aws, tutorial
Published: 2023-07-03 23:04:01

1- Na console pesquise por **AWS Backup** e navegue ate a aba  **Bakcup Plans**.

2- Clieque em **Create backup plan** e selecione **Build a new plan**.

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

3- Defina um nome para um plano e um nome para rule.

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

4-

- Em **Backup valut** foi definido como Default neste exemplo (pode ser criado um novo Valut).
- Frequência dos Backups será diária.
- Em **Backup Window** utilize uma janela customizada, o horário que aparece no console é de UTC. Por exemplo, se desejar que os backups se iniciem as 01:00 AM o Start Time fica como 04:00 UTC time, pois o horário de Brasília é UTC -3.
- Em **Start within** nessa configuração foi colocado para iniciar dentro de 1h conforme o horário programado, com um tempo de 8 h para completar o backup. Esse tempo de **Complete within** é muito importante, visto que se existirem muitas instâncias e que possam ser grandes em questão de armazenamento e modificações diárias, pode ser que o tempo determinado para completar seja insuficiente, com isso esse tempo é necessário ser ajustado conforme a demanda.
- Em **Retention period** foi definido como 7 dias, pois esse era o tempo que cada backup será retido na conta ate ser excluído.(Isso pode ser ajustado conforme a necessidade).
- Esse backup será mantido apenas nessa região de criação do plano, então na aba **Copy to destination** não será selecionado nenhuma opção, mas caso queira uma cópia desse backup em outras regiões basta selecionar a região desejada.
- Em seguida clique em Create plan.

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

5- O plano de backup está criado, agora será definido para quais recursos esse plano ira ser utilizado, nesse exemplo será apenas para Ec2, porem o mesmo pode ser utilizado para outros recursos.

- Primeiro será definido o nome e a IAM role, pode ser criado uma role personalizada, mas nesse exemplo será utilizada a Default.

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

- Em Define **resource selection** serão especificados os recursos, selecionando “**Include specific resource types**”.
- Em “Select specific resource types” nesse exemplo foi selecionado apenas EC2 e deixar como **All Instances**.
- A etapa 3 não será preenchida.
- A etapa “**4. Refine selection using tags**” será definido a Tag das instâncias que farão parte desse plano de backup. Utilizaremos nesse exemplo a tag Backup = True.
- Em seguida clique em “Assign resources”. 

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

6- Nas instâncias Ec2  que necessitem da realização do backup basta adicionar a tag criada, que nesse exemplo foi utilizada a Backup = True.
Working on Apollo Client
Tags: apolloclient, bash, trpc, apollographql
Published: 2023-07-03 23:10:35

What's up! I am currently involved working with Apollo. I discovered some surprising developments/changes ever since I used it a while ago. I know a little bit about Neo4j, that's the Graph DB. I've been working w/MongoDB and this all seems intriguing to me. Loving the ride so far ;) I'll definitely update regarding this and (may) post any queries lest I need any help. Thanks - Abby!
接口 | 完整说明（定义、用法、结构和 C# 示例）
Tags: 中文, csharp, dotnet, programming
Published: 2023-07-03 22:58:12

接口 | 完整说明（定义、用法、结构和 C# 示例）

＃ 介绍

您好，我的名字是 Daniela Barazarte，欢迎您阅读该界面的完整说明。 这个解释以及#DetectaLaLogica 中的所有解释一样直观且简单。

如果您喜欢视频，这里是我在 YouTube 上制作的完整教程，它是西班牙语，但也有字幕：https://www.youtube.com/watch?v=UbZORJzMQec

# <u>理论</u>
## 每个单词的定义
**“设计模式”**
- **模式**：是一种重复事件或对象
![设计模式](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a8hizh9zs3bzgaimxs1n.png)
- **设计**：创意活动，其目的是设计有用且美观的物体

**“界面”**
- **接口**：一个系统对另一个系统的通信或操作区域
![代表界面的铅笔和纸](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pvjfyhfzef7eu2ncla6t.png)

## 完整定义
接口设计模式是类必须提供的方法和属性的规范，任何实现该接口的类都致力于提供这些方法和属性。

## #检测逻辑
“接口”一词被定义为“一个系统对另一个系统的通信或操作区域”。 接口设计模式之所以如此命名，是因为接口正在与类通信，告诉它该类应该具有哪些参数。 它就像一个契约，其中接口声明它具有哪些组件，并且类也必须具有这些组件。

# <u>使用</u>
＃＃ 以便
接口用于定义可以由多个不同类实现的公共接口。 这种模式允许这些类在遵守相同接口的同时具有不同的行为，从而为应用程序提供灵活性和模块化。

## 何时以及如何
- 通过拥有多个必须遵守一组特定行为的类
- 通过具有必须符合一组特定行为的插件或外部模块的通用结构
- 创建必须兼容分布式系统不同架构的应用程序时
- 创建应易于扩展和模块化的应用程序时

# <u>练习</u>
＃＃ 锻炼
您必须创建一个控制台项目，其中有几种动物，并且可以在控制台中编写每只动物发出的声音

### **方法：接口**

![界面](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/okqqp2esu4095a4742la.png)

**橙色部分（上图）：**是Animal接口
**蓝色部分（底部）：**是该接口的实现，在本例中是 3 种动物（猫、狗、鸟）

```
public interface Animal
{
     void MakeSound();
     void CallFriend();
}

public class Dog : IAnimal
{
     public void MakeSound()
     {
         Console.WriteLine("Wow! Woof!");
     }
     public void CallFriend()
     {
         Console.WriteLine("Come on friend dog!");
     }
}

public class Cat : IAnimal
{
     public void MakeSound()
     {
         Console.WriteLine("Meow! Meow!");
     }
     public void CallFriend()
     {
         Console.WriteLine("Come on friend cat!");
     }
}
public class Bird : IAnimal
{
     public void MakeSound()
     {
         Console.WriteLine("Tweet Tweet! Wow!");
     }

     public void CallFriend()
     {
         Console.WriteLine("Come on friend bird!");
     }
}
public class program
{
     public static void Main()
     {
         IAnimal myCat = new Cat();
         IAnimal myDog = new Dog();
         IAnimal myBird = new Bird();

         myCat.MakeSound();
         myCat.CallFriend();

         myDog.MakeSound();
         myDog.CallFriend();

         myBird.MakeSound();
         myBird.CallFriend();
     }
}
```
拥有实现“鸟”、“狗”和“猫”的“动物”接口是有益的，因为它提供了有用的抽象，允许软件设计中的高度灵活性和可扩展性。 通过定义“动物”界面，您可以建立所有动物都必须具备的某些行为和特征，例如移动和呼吸的能力。

在“Bird”、“Dog”和“Cat”上实现此接口可确保它们都具有这些共同特征，并且可以在需要“Animal”对象的代码中互换使用。 这使得代码更加模块化和可扩展，因为可以轻松添加符合“动物”接口的新动物类型，而无需更改现有代码。

# 重要性
**界面设计模式有几个好处：**
- **抽象**：接口允许定义一组方法和属性，这些方法和属性必须由实现它们的类来实现。 这允许您抽象接口后面的类的实现，使您的代码更易于理解和维护。
- **关注点分离**：通过定义接口，您可以清楚地将用户界面与业务逻辑分开。 这允许应用程序的不同部分通过明确定义的接口相互通信。
- **多态性**：接口允许多态性，这意味着实现接口的类可以被视为属于该类型的接口。 这使得实现相同接口的类可以在代码的不同部分中互换使用，从而更容易重用和维护代码。

＃ 告别
（记住）#DetectaLaLógica：“接口”一词被定义为“一个系统对另一个系统的通信或操作区域”。 接口设计模式之所以如此命名，是因为接口正在与类通信，告诉它该类应该具有哪些参数。 它就像一个契约，其中接口声明它具有哪些组件，并且类也必须具有这些组件。


您可以在我的 GitHub 存储库（C# 语言代码）中练习此主题：https://github.com/danielabarazarte/DetectaLaLogica

非常感谢您的阅读，如果有什么问题可以评论，也可以关注我看更多这种风格的帖子，谢谢<3.
Day 775 : Giant Steps
Tags: hiphop, code, coding, lifelongdev
Published: 2023-07-03 22:24:17

_liner notes_:
- Saturday : Don't really remember what I did before going to the radio show, but I had a great time doing the show. The recording of this week's show is at https://kNOwBETTERHIPHOP.com

![Radio show episode image of a Tweet from Elon Musk announcing reading limits on Twitter with the words July 1st 2023 Put A Case On It](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gdnkfnjkhl2mqhbtk9km.jpg)

- Sunday : Did my study sessions at https://untilit.works. Got a bunch of stuff done. I set up my new phone. Worked on my side project. At some point during the weekend, I watched the latest episode of "Secret Invasion". Pretty good weekend.

- Professional : Today was pretty good. One step closer to finishing updating this API Reference. Just had like one more question that I put into a channel. Hopefully will hear back soon. Had some meetings. It's the start of a new quarter.

- Personal : Finally got uploading an image to GitHub working, kinda. On the server, I'm able to fetch an image from another site and then upload it to GitHub. The thing is that it's creating a new branch, I want it to merge into the main. Before I work on that, I want to get the ability to send an image from the application to the backend and then have that saved. Got to take things in steps. Not giant steps, but small one. First step was to get it working, now it's time to get it working how I want. haha

![View looking down into a waterfall in Sewu Waterfall, Indonesia with trees and vegetation everywhere ](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1rzo2snevv5wp9w3zzvz.jpg)

My main focus for tonight is to work on getting the image from my application to the backend in a form that can then be uploaded to GitHub. It has to do with Buffers, Base64, Form stuff and other random things I need to look into. A lot of different combinations for me to try. haha. I'll also go through tracks for the radio show. Going to get started.

Have a great night!

peace piece
Dwane / conshus
https://dwane.io / https://HIPHOPandCODE.com
{% youtube inCKbaSzKxE %}
My first Swift Package: SwiftTranslate
Published: 2023-07-03 22:32:41

Hey everyone! I noticed there weren’t any easy to use and open source translation packages available for swift so I decided to make my own. This led to me releasing my first Swift package SwiftTranslate! It’s very simple to use and best of all free and open source. Check it out on GitHub!

https://github.com/SkiingIsFun123/SwiftTranslate
GOG, EA, Ubisoft, Prime Gaming and Epic Games on Linux!
Published: 2023-07-03 22:12:12

Launch GOG, EA, Ubisoft, Prime Gaming and Epic Games in Proton without using Steam App – now with simple GTK interface:

https://github.com/ordigital/neutron/tree/main

Best to use with GE-Proton: https://github.com/GloriousEggroll/proton-ge-custom/releases