teleren/devto huggingface dataset:
Is Unity's New Pricing Model a Game Changer or Game Over?
Tags: discuss, gamedev, godot, unity3d
Published: 2023-09-21 17:29:09

Hey there, DEV members! We're diving deep into the heated discussion surrounding Unity's latest pricing changes. Join us as we explore the impact on developers, evaluate alternative options like Godot, and dissect the buzz in the industry.


{% embed https://dev.to/axlfc/unity-a-controversial-change-in-its-pricing-policy-sparks-the-anger-of-developers-mee %} This article from @axlfc  provides a concise update on Unity's recent pricing policy changes. What's the buzz among developers, and how do you feel about these shifts in the Unity landscape?

---

{% embed https://dev.to/godot/unity-new-pricing-in-2024-is-crazy-3hnn %} Get the nitty-gritty details from @godot on Unity's pricing alterations in 2024. This article even links to a Reddit thread—what are fellow developers saying there? Share your take and join the discussion. 

---

{% embed https://dev.to/svprdga/can-godot-screw-us-like-unity-did-49h1 %} The title speaks volumes! This article from @svprdga delves into one of the open-source alternatives, Godot, in light of Unity's changes. What's your perspective on Godot and its potential to shape the future of game development?

---

{% embed https://dev.to/gamedevdigest/game-dev-digest-issue-204-2-minutes-to-midnight-50k9 %} In this article by @gamedevdigest, a deeper exploration is conducted into the perplexity surrounding the alterations in Unity's pricing policy. It sheds light on the possible issues and difficulties that could confront Unity developers due to these changes, while also considering alternative game engines as a potential solution.

---

Jump in and let's discuss! 🔥💬
Converting Text to PDF Using Python.
Tags: python, coding, tutorial, programming
Published: 2023-09-21 17:27:36

Hi 🙂🖐

In this post, I will share with you How To Convert Text to PDF Using Python.

## step 1

install fpdf

`pip install fpdf`

## step 2

You need to create a TXT file for testing

```txt
Lorem Ipsum is simply dummy text of the printing and typesetting industry.Lorem Ipsum has been the 
industry's standard dummy text ever since the 1500s, 
when an unknown printer took a galley of type and 
scrambled it to make a type specimen book. It has 
survived not only five centuries, but also the leap 
into electronic typesetting, remaining essentially 
unchanged. It was popularised in the 1960s with the 
release of Letraset sheets containing Lorem Ipsum passages, 
and more recently with desktop publishing software 
like Aldus PageMaker including versions of Lorem Ipsum.
```

## step 3

Add PDF file setting

```python
from fpdf import FPDF

pdf = FPDF()

pdf.add_page()

pdf.set_font("Arial", size = 10) 
```

## step 4
Read all text from the TXT file 
```python
for word in open('my_txt_file.txt', 'r'):
    pdf.cell(200, 20, txt = word, ln = 1, align = 'L')

pdf.output('my_pdf_file.pdf')
```

## result



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



**Now we're done 🤗**

**Don't forget to like and follow 🙂**

**Support me on PayPal 🤗**
https://www.paypal.com/paypalme/amr396
Why I Like Writing Technical Blogs
Tags: blog, sharing, webdev
Published: 2023-09-21 17:01:00

## Requires me to delve further into the topic
It forces me to learn more deeply about the topics I write about. When I'm writing a technical blog post, I need to make sure that I have a good understanding of the topic in order to explain it clearly to my readers. This means that I often have to do additional research, which helps me to learn new things and expand my knowledge base.

## To better understand and organize my thoughts

As a reader, I understand the importance of structuring information effectively. 
It's not just about sharing knowledge; it's about presenting it in a way that is easily digestible and accessible, even to those new to the subject. 
This not only benefits my readers but also serves as a valuable resource for me when I need to revisit a topic, or it helps me remember more about this topic.

## To share my knowledge with other developers
One of the great things about technical blogging is that it allows you to share your knowledge with other developers around the world. This can be a great way to help others learn new things and to build your reputation as an expert in your field.

## Sharpening My English Writing Skills
I'm Vietnamese, and English is not our native language. However, I understand that English is crucial for learning and developing in the technical field.
Technical blogging is a great way to practice writing in English, especially if you are not a native speaker. The more you write, the better you will become at communicating your ideas clearly and concisely.


## Receiving feedback from other developers
When you publish a technical blog post, you're inviting other developers to read it and give you feedback. This feedback can be very valuable, as it can help you to identify areas where your blog post can be improved. It can also help you to learn new things and to see different perspectives on the topic.
Day 53: Deep Readonly
Tags: javascript, typescript, 100daysofcode
Published: 2023-09-21 16:30:00

## Question
Create a type that makes all properties of a deeply nested object readonly, you can use TypeScript's recursive conditional types. Here's an example of how to define such a type.

```typescript
type DeepReadonly<T> =  // Todo add your code here

// Example usage

interface Person {
  name: string;
  age: number;
  address: {
    street: string;
    city: string;
  };
}

type ReadonlyPerson = DeepReadonly<Person>;

const person: ReadonlyPerson = {
  name: 'John',
  age: 30,
  address: {
    street: '123 Main St',
    city: 'Exampleville',
  },
};

// This will result in a TypeScript error because properties are readonly:
// person.name = 'Alice';
// person.address.street = '456 Elm St';
```
JS Function Factories?
Published: 2023-09-21 16:28:59

A `function factory` is a design pattern that includes creating and returning a function from another function.

Closure is used to achieve this pattern. Function factory can encapsulate configurations within functions. It is used to create multiple functions with similar behaviors.

**Example:**

```
function createOperation(operation){
	
  return function(a,b){
  	switch (operation){
    	case 'add': return a+b;
      case 'minus': return  a-b;
      default:
      return NaN;
    }
  }

}
const addition = createOperation('add');
console.log("addition:",addition(1,2))


const expo = createOperation('exponent');
console.log("Exponent:",expo(1,2))
```
**Output:**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/svx1no93y2rjzz30wxbe.png)
OpenAI’s new GPT 3.5 Instruct
Tags: webdev
Published: 2024-06-28 15:45:27

---
title: OpenAI’s new GPT 3.5 Instruct
published: true
date: 2023-09-21 16:18:24 UTC
tags: WebDevelopment
canonical_url: 
---

OpenAI has unveiled a new and advanced model, “gpt-3.5-turbo-instruct“, designed to seamlessly interpret and execute instructions. The new model, which is now the default language models accessible on our API, is engineered to provide coherent and contextually relevant responses, making it a versatile asset for a range of applications. In this article, we’ll explore the […]

The post [OpenAI’s new GPT 3.5 Instruct](https://blog.nextideatech.com/openai-gpt-3-5-turbo-instruct/) appeared first on [Next Idea Tech Blog](https://blog.nextideatech.com).
AntDB-Oracle Compatibility Developer’s Manual P4–5
Published: 2023-09-21 16:05:41

##### Call Stored Procedures

By specifying the name of the procedure, followed by its parameters, and ending with a semicolon. You can then use an SPL application to call another stored procedure.

name \[ (parameters) ];

name is the procedure's identifier, and parameters refers to the list of actual parameters.

Note: If the procedure has no actual parameters to pass, then it should be run without parentheses.

The following is an example of calling a procedure from an anonymous block of code.

```
BEGIN
simple_procedure;
END;

That's all folks!
```

Note: Each application has its own way of calling stored procedures. For example, in Java applications, calls to stored procedures are made through the JDBC programming interface.

##### Delet Stored Procedures

We can use DROP PROCEDURE to remove a stored procedure from the database.

DROP PROCEDURE name;

name is the name of the procedure to be deleted

In the following example, we use the DROP PROCEDURE command to delete a previously created procedure.

```
DROP PROCEDURE simple_procedure;
```

See the DROP PROCEDURE command for more information.
C++/Juce Sidechain FM audio plugin
Tags: juce, cpp, vst
Published: 2023-09-21 16:03:35

In the analog audio world, frequency modulation with a sine wave is simple enough, and introduces no latency. Surprisingly, more complex waveforms can also be processed in this way, both as the carrier and the modulator. However, in the digital world, complex frequency modulation algorithms are exclusive to expensive VST plugins like Serum or Phase Plant. Even so, these programs use predefined oscillators with clear pitches to define the FM, and it isn't even true FM. That's what I know so far.
I'd like to ask the more experienced members of the VST building community if something like this is possible and if this has been attempted before: Smoothly modulating a signal with a sidechain signal through a DAW.
AntDB-Oracle Compatibility Developer’s Manual P4–4
Published: 2023-09-21 16:01:25

#### Stored Procedure Overview

A procedure is an SPL program that can be invoked as a separate SPL application. When a procedure is called, it can receive values from the caller in the form of input parameters and return the final execution result to the caller in the form of output parameters. To use the PLSQL language in AntDB, you must first open plsql\_mode.

##### Creat Stored Procedures

The CREATE PROCEDURE command defines and names the procedure that will be stored in the database.

CREATE \[ OR REPLACE ] PROCEDURE name \[ (parameters) ]

{ IS \| AS }

\[ declarations ]

BEGIN

statements

END \[ name ];

name is the procedure identifier. If \[ OR REPLACE ] is defined and a procedure with the same name already exists in the schema, then the newly created procedure will replace the existing procedure. Conversely, a newly created procedure will not replace an existing procedure in the same schema. parameters is a list of formal parameters. declarations are declarations of variables, cursors, or types. statements are the statements used by the SPL application. The BEGIN-END block contains a section to catch exceptions.

The following is a simple procedure that takes no arguments. Note that in AntDB, even without any arguments, the function or procedure name is followed by an empty parenthesis, which is incompatible with Oracle.

```
\set PLSQL_MODE ON
CREATE OR REPLACE PROCEDURE simple_procedure()
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('That''s all folks!');
END;
```

By writing the code in AntDB, we store this procedure in the database.

For more information on creating stored procedures, see the CREATE PROCEDURE command.
Top 5 Tailwind Table Components
Tags: tailwindcss, table, css, frontend
Published: 2023-09-21 15:55:14

Tailwind CSS has taken the web development world by storm, thanks to its simplicity and efficiency. When it comes to creating stunning tables for your web projects, Tailwind offers an array of table components that can save you time and effort. Here are the top 5 Tailwind Table Components that will supercharge your UI design.

Read more: [Top 5 Tailwind Table Components](https://www.tailwindtap.com/blog/discover-the-top-5-tailwind-table-components)
AntDB-Oracle Compatibility Developer’s Manual P4–1
Published: 2023-09-21 15:48:16

### **Basic Components of SPL**

This section discusses the most basic components needed to develop an SPL program.

#### character set

SPL programs use the following characters.

- Uppercase letters A through Z, lowercase letters a through b.

- The numbers 0 through 9.

- [ ]The symbols ( ) + - \* / \< > = ! ~ \^ ; : . ' @ % , " # $ \& \_ \| { } ? .

- Tab key, space character and enter key.

The SPL language contains identifiers, expressions, statements, and control flow structures using the above characters.

Note: The data that can be manipulated by SPL programs is determined by the character set supported by the database encoding.

#### Case Sensitivity

As you can see from the following example: keywords and user-defined identifiers used in SPL programs are case-insensitive.

For example: DBMS\_OUTPUT.PUT\_LINE('Hello World'); can be equal to the following statements:

```
dbms_output.put_line('Hello World');
Dbms_Output.Put_Line('Hello World');
DBMS_output.Put_line('Hello World');
```

However, character and string constants and any data obtained from AntDB database or external data sources are case sensitive. The statement DBMS\_OUTPUT.PUT\_LINE('Hello World!'); produces the following output:

```
Hello World!
```

But the statement DBMS\_OUTPUT.PUT\_LINE('HELLO WORLD!'); produces the following output:

```
HELLO WORLD!
```
93 berufliches Vorwärtskommen: Was ist alles?
Tags: deutsch, career, motivation, discuss
Published: 2023-09-21 15:30:00

Moin Moin,

[bekanntlich ist Geld allein ja nicht alles→](https://dev.to/amustafa16421/91-berufliches-vorwartskommen-geld-allein-ist-nicht-alles-52en). Es stellt sich die Frage was denn „alles“ ist. Wir Sprachen bereits über [Menschen, Tätigkeit und Geld→](https://dev.to/amustafa16421/91-berufliches-vorwartskommen-geld-allein-ist-nicht-alles-52en). Die Vervollständigung der Auflistung scheint mir in weiten Teilen eine individuelle Angelegenheit zu sein. Ich nenne im Folgenden erstmal einige Schlagworte. Was denkst du zu diesen?


- Religion
- Gesundheit
- Verwandtschaft
- Ernährung
- Ortsungebundenheit
- Zeiteinteilung

All dies sind Angelegenheiten, die einem wichtig sein können und die frei verhandelbar sind. Ob man als Angestellter beispielsweise bestimmte religionsbedingte Feiertage wahrnehmen möchte, oder bestimte Pausen im Arbeitsalltag. Ob man zusätzliche Zeiten für die Kindererziehung aushandelt oder auch ortsungebunden, also remote, arbeiten möchte.

Hast du dir über derartiges bereits Gedanken gemacht? Arbeitsverträge enthalten einen großen Gestaltungsraum, deine Vorlieben können also berücksichtigt werden.

Was für Punkte fallen dir noch ein?
Wie sehen also insgesamt deine Vertragsbedingungen, abgesehen vom Gehalt, aus?

Lass uns mittels Kommentaren austauschen.

Beste Grüße,
Mustafa

Oder auch mittels E-Mail: mustafa.kevin.dwenger@posteo.de
Betreff: Austausch
Episode 23/37: ISR in Angular, Cypress & Playwright
Tags: angular, webdev, javascript, programming
Published: 2023-09-21 15:25:32

Enea Jahollari explained ISR for better SSR. Cypress and Playwright released new minor version with additional features.

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

## ISR in Angular

The official Angular blog had Enea Jahollari as a guest writer, where he explained ISR, which stands for Incremental Static Regeneration.

In a way, it is a caching layer on top of Server-Side Rendering. So, every time a user enters our page, the content renders on the server, and the user should get the full-rendered static response quite quickly.

With ISR, the response is cached and re-used for the next user.

In terms of cache invalidation, we can define criteria like expiry data. There are also advanced features, like a complete invalidation on-demand, different caching providers or fine-grained caching depending on the route.

{% embed https://blog.angular.io/incremental-static-regeneration-for-angular-c12745ff4b48 %}


ISR is part of rx-angular. That's a suite from Push-Based containing different tools to improve Angular's performance.

{% embed https://www.rx-angular.io/ %}

## Infinite Scrolling - Case Study

Infinite scrolling is a feature which a UI library provides out of the box. Nevertheless, it is a good learning experience to look behind the curtains. Ezz Abuzaid did exactly that in his latest article. He explains his prototype, where he used a lot of RxJs and provided the virtual scrolling feature in a pipe and directive version.

{% embed https://dev.to/this-is-angular/implementing-infinity-scroll-in-angular-56pj %}

## Minor Releases

Other than that, we had new minor releases. This time, especially in the testing field. 

### Jest 29.7

Jest was released in 29.7. It is now possible to setup Jest via npm init. 

https://github.com/jestjs/jest/releases

### Cypress 13.2

Cypress doesn't provide parallelisation out of the box. However, we can split up and assign our E2E tests to multiple libraries with Nx. Nx can then run those tests in parallel.

In Cypress 13.2, the Component Test Runner got a modification so that Nx could also parallelise those tests. 

https://github.com/cypress-io/cypress/releases

### Playwright 1.38

Playwright, the other major E2E testing framework, got an update well. With version 1.38, the UI mode got further improvements. The network panel got a redesign, and it's possible to zoom in on the timeline.

https://github.com/microsoft/playwright/releases

### Ionic 7.4

Next to that, Ionic, a framework for cross-platform applications, was released in 7.4. Among handy new features and bug fixes, no groundbreaking features.

https://github.com/ionic-team/ionic-framework/releases
4 CSS tricks, You should try!
Tags: webdev, css, programming, frontend
Published: 2023-09-21 15:15:21

## 1. Balancing Text
With CSS's new text-wrap feature, centering headers is now simpler across all devices.

![text-wrap property demo image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/380k3s0mk0r8k5oh16xl.png)
```css
h1 {
  text-wrap: balance;
}
```
`text-wrap` is a new property in CSS, so I recommend checking [browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/text-wrap#browser_compatibility) before using it in production.


## 2. Text Indent
The CSS `text-indent` property indents the first line of a paragraph to improve readability.


![text indent property demo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0oqyn3lsni8stjpsiu6c.png)

```css
p {
  text-indent: 0.25rem;
}
```

## 3. Truncating Text
Sometimes, to prevent large sentences from making a UI look bad, we can simply truncate the text using CSS.


![Truncate text demo image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/re891azjquky92a20d4a.jpg)

```css
.name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
```

## 4. Fixed number of lines (Line Clamp)
Occasionally, it’s necessary to limit the number of lines displayed. Use this simple technique to achieve it.


![line clamp demo image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p7ce2nz95jpal0rof2bh.jpg)

```css
p {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3; /* Number of Lines */
}
```


**It's over!**


**Thanks for reading 👋**
Why I Created Venus
Tags: perl, oop, programming, venus
Published: 2023-09-21 15:06:38

I'm often asked why I created Venus, and I typically give an answer that amounts to "It's complicated" or "Have you looked at language X" which I concede is unsatisfying to most; so in this article, I will attempt to explain in a more precise and concise manner, for the record.

**Why I created Venus**

If you survey and analyze the features offered across programming languages used in modern software engineering you'll recognize what I call a "baseline feature set for modern software development". In my opinion, this is missing from the Perl programming language. It's achievable but missing in the sense that it's not core and it's not packaged in a way that's easily accessible.

Some examples are support for data encoding, reflection, gradual typing, object orientation, concurrency, error handling, a robust standard library, etc.

Getting to a modern software engineering baseline in Perl, in 2023, means
traversing a vast landscape filled with potential landmines. To do so successfully means having a firm grasp of the language and its idioms, as well as a familiarity with the CPAN and the best-in-class distributions.

**Venus was created to alleviate that pain!**

Maybe it's never occurred to you that getting to a modern software engineering baseline in Perl is a nearly impossible feat for someone new to programming, or new to Perl, or simply looking to "get shit done".

Venus, with its convention over configuration object-oriented architecture, is meant to feel familiar to engineers coming from other (modern) languages, looking (or needing) to work in Perl. Venus helps to answer questions like, "How do I create an array object that comes preset with methods that allow me to perform common array operations, which can be chained together?", etc.

Venus provides a robust standard library, embodies industry standards, enables object-orientation and reflection, has sophisticated and extendable exception handling, offers a library of abstract behaviors (i.e. roles/traits), and is built atop an intuitive convention over configuration architecture.

In the coming articles, I will further demonstrate the why and how of Venus, using code examples, comparisons, and real-world software challenges.

**See for yourself!**

[Venus on the CPAN](https://metacpan.org/dist/Venus)
Pick peaks"Code Wars"
Tags: javascript, programming, node, algorithms
Published: 2023-09-21 15:03:50

In this kata, you will write a function that returns the positions and the values of the "peaks" (or local maxima) of a numeric array.

For example, the array arr = [0, 1, 2, 5, 1, 0] has a peak at position 3 with a value of 5 (since arr[3] equals 5).

The output will be returned as an object with two properties: pos and peaks. Both of these properties should be arrays. If there is no peak in the given array, then the output should be {pos: [], peaks: []}.

Example: pickPeaks([3, 2, 3, 6, 4, 1, 2, 3, 2, 1, 2, 3]) should return {pos: [3, 7], peaks: [6, 3]} (or equivalent in other languages)

All input arrays will be valid arrays (although it could still be empty), so you won't need to validate the input.

The first and last elements of the array will not be considered as peaks (in the context of a mathematical function, we don't know what is after and before and therefore, we don't know if it is a peak or not).
Also, beware of plateaus !!! [1, 2, 2, 2, 1] has a peak while [1, 2, 2, 2, 3] and [1, 2, 2, 2, 2] do not. In case of a plateau-peak, please only return the position and value of the beginning of the plateau. For example: pickPeaks([1, 2, 2, 2, 1]) returns {pos: [1], peaks: [2]} (or equivalent in other languages)

Have fun!

Steps:
1. let create a response variable that will hold the structure of our response.
2. let create a loop which will start from 1 and end at the index before the last one. this is because of the condition given in the question.
3. let create a variable and initiate it to 1. this will be used to determine the value of the next index.
4. let us have a while loop which will be used to check if the value of current number is equal to the next. if so then no peak so move to the next value.
5. finally we have a loop which will enable us get the peak position once the condition are met. Once we get them we put it to the response variable.
6. we return the response.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/07688g67h72u9xux6ejo.jpeg)

Algorithm.

```js
function pickPeaks(arr) {
    const response = { pos: [], peaks: [] };

    for (let i = 1; i < arr.length - 1; i++) {

        let next = 1;
        while (arr[i] === arr[i + next]) next++;

        if (arr[i] > arr[i - 1] && arr[i] > arr[i + next]) {
            response.pos.push(i);
            response.peaks.push(arr[i]);
        };
    };

    return response;
}

console.log(pickPeaks([1, 2, 5, 4, 3, 2, 3, 6, 4, 1, 2, 3, 3, 4, 5, 3, 2, 1, 2, 3, 5, 5, 4, 3]));
```