teleren/devto huggingface dataset:
One Year of Dev YouTube
Tags: webdev, motivation, career, showdev
Published: 2023-07-30 09:25:11

Exactly one year ago I started consistently posting on YouTube, at least a video every single week, talking about Web Development and Open Source. Here is my takeaway from this experience.

I recorded a short video, you can watch it here, or keep reading for the transcript below.

{% youtube sIB31lxkDsI %}

---

The stats on YouTube are at 5.000 hours of watch time in the last 365 days. I cannot believe people watched me talking for 300.000 minutes, it’s insane!

![YouTube Stats](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5wa3smzgk6x5cdhzcsh3.png)

I really hope this is helping someone learn new skills and getting started with Open Source as that’s my primary goal, but one thing I can tell for sure is… how much I am learning throughout this journey!

Sharing content on YouTube… or actually, researching, studying and testing new concepts in order to create content, is a great way to improve your skills.

I’d definitely recommend you at least write down your findings. It can be a proper blog, on a personal website or on platforms like dev.to, or even public notes of what you’re researching and learning. Trying to explain something to someone else forces you to dig deeper and grasp even more knowledge, and the other person is learning from your added value, isn’t that a win-win?

And it’s not all! Being active online and in communities also got me in touch with other amazing developers, sharing ideas, knowledge and a lot of fun times.

I also met some of them in real life!

![Friends](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j62lh6wxhid684y7u0mr.png)


Developers are not weird creatures doing their crafts alone, doing stuff together is cool!

To wrap up, one year has passed, and I can assure you, many more will come!

Thank you all for being part of this journey and see you in the next video.

If you're not there yet, join me here: https://www.youtube.com/@DevLeonardo

---

Thanks for reading this article, I hope you found it interesting!

I recently launched my Discord server to talk about Open Source and Web Development, feel free to join: https://discord.gg/bqwyEa6We6

Do you like my content? You might consider subscribing to my YouTube channel! It means a lot to me ❤️
You can find it here:
[![YouTube](https://img.shields.io/badge/YouTube:%20Dev%20Leonardo-FF0000?style=for-the-badge&logo=youtube&logoColor=white)](https://www.youtube.com/channel/UC-KqnO3ez7vF-kyIQ_22rdA?sub_confirmation=1)

Feel free to follow me to get notified when new articles are out ;)
{% embed https://dev.to/balastrong %}
A Journey Through Time: The Fascinating History of PostgreSQL
Tags: postgressql, database, apacheage
Published: 2023-07-30 09:18:51

PostgreSQL, now hailed as the most advanced open-source database available, has an intriguing history that traces back to the late 1980s. Its evolution from the Berkeley POSTGRES Project to the robust PostgreSQL we know today is a testament to the dedication of its creators and the thriving open-source community.

The Berkeley POSTGRES Project, spearheaded by Professor Michael Stonebraker and sponsored by DARPA, ARO, NSF, and ESL, Inc., commenced in 1986. The initial concepts and data model were presented in the late '80s, and by 1987, the first operational "demoware" system wowed audiences at the ACM-SIGMOD Conference. Version 1 was released to external users in June 1989, and subsequent versions addressed issues and added new features.

Postgres95 marked a significant milestone in the project's history. In 1994, Andrew Yu and Jolly Chen introduced an SQL language interpreter to the system, giving birth to Postgres95. This open-source descendant of the original POSTGRES code retained the Berkeley heritage but boasted improved performance and maintainability. The introduction of SQL as the query language replaced PostQUEL, making it more familiar to developers. A new front-end library, libpgtcl, enabled interaction with Tcl-based clients, expanding its usability.

In 1996, recognizing the need for a name that could withstand the test of time, the project adopted a new identity: PostgreSQL. The version numbering was reset to 6.0, aligning with the sequence established by the Berkeley POSTGRES project. This transition marked a turning point, shifting the focus from problem identification and understanding to feature augmentation and expansion. Throughout its history, PostgreSQL has continued to grow and flourish under the collaborative efforts of its dedicated community.

As PostgreSQL continues to evolve, the story of its origin serves as a reminder of the innovative spirit and collaboration that drives the open-source community. With an ever-expanding set of features and capabilities, PostgreSQL remains a formidable force in the world of databases, cementing its place as a testament to the power of open-source development.

## Reference
[https://www.postgresql.org/docs/current/history.html](https://www.postgresql.org/docs/current/history.html)
Mastering Data Manipulation in PostgreSQL
Tags: postgressql, database, apacheage, agedb
Published: 2023-07-30 09:17:13

## Introduction
PostgreSQL, the top open-source database management system, offers a wide selection of commands to manage data manipulation tasks effectively. This blog will go over essential data manipulation methods and provide examples using PostgreSQL.

**1. Inserting Data:**
PostgreSQL provides the capability of putting data into a database using the INSERT command. If we take the 'products' table as an example, which contains columns like 'product_no,' 'name,' and 'price,' then it must be populated with data before becoming useful.

Example 1: Insert a single row with values explicitly listed.
```
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);
```
Example 2: Insert multiple rows in a single command.
```
INSERT INTO products (product_no, name, price) VALUES
    (3, 'Milk', 2.99),
    (4, 'Eggs', 3.49),
    (5, 'Butter', 4.29);
```

**2. Updating Data:**
PostgreSQL offers the UPDATE command to alter any existing data in a table. This command requires you to specify the particular table, column, and new value that you want to update as well as provide a condition that states which rows should be updated.

Example 3: Update multiple columns simultaneously.
```
UPDATE products SET name = 'Cheddar', price = 11.99 WHERE product_no = 1;
```

**3. Deleting Data:**
PostgreSQL provides the DELETE command as an option for deleting unwanted data. It requires a condition to be specified, so that it can accurately determine which rows to delete from a table.

Example 4: Delete all products with a price of 0.
```
DELETE FROM products WHERE price = 0;
```

**4. Returning Data from Modified Rows:**
The RETURNING clause in INSERT, UPDATE, and DELETE commands enables the retrieval of data from records that have been altered. This is advantageous when it is necessary to access the results of a modification without having to conduct extra queries.

Example 5: Use RETURNING with UPDATE to retrieve updated data.
```
UPDATE products SET price = price * 1.10 WHERE price <= 99.99 RETURNING name, price AS new_price;
```

## Conclusion
PostgreSQL offers robust data management capabilities, allowing users to easily add, modify, and remove information. Having a firm understanding of these commands is critical for using PostgreSQL productively. With an adept knowledge of data manipulation in PostgreSQL, you can be sure to address any database task confidently and unlock the full capability of this flexible open-source system.

## Reference
[https://www.postgresql.org/docs/current/dml.html](https://www.postgresql.org/docs/current/dml.html)
🔪 Blades: the static site generator
Tags: webdev, opensource
Published: 2023-07-30 09:11:07

If you're looking for a new static site generator (done with Hugo/Jekyll/etc?), check out [Blades](https://getblades.org/) is an ultra-simple static site generator that creates HTML files from provided content utilizing specified templates. 


It uses [mustache](https://mustache.github.io/) templates, which are super simple/minimal (even if a little old).

And of course, there's the *speed* -- Blades prides itself on its faster rendering speeds compared Hugo/Jekyll,  thanks to its use of zero-copy deserialization and the [`ramhorns`](https://github.com/maciejhirsz/ramhorns) template engine (pure Rust 🦀).

Blades provides a robust plugin system, supporting input, output, transform, and content plugin types. It's super easy to find other plugins since blades maintains [a list](https://getblades.org/plugins/) you can just look through. Also, Blades has a repository of [curated Blades themes](https://getblades.org/themes/).

Blades supports some pretty advanced features like image gallery generation and CommonMark markdown with tables and footnotes for content. When a page contains pictures, Blades automatically generates a gallery for them, assigning certain variables to each photo's page. With pagination functionality, it allows users to navigate through the content with ease, and users can use the available variables in the pagination section.

Blades also has the capacity to generate breadcrumbs based on the page path, which helps in creating navigational aids for the users. Alongside, it has the capability to automatically generate sitemap, Atom, and RSS feeds, contributing to a more organized and accessible user interface. Despite its focus on simplicity, Blades manages to deliver a streamlined and efficient solution for static site generation, balancing speed and usability.

This was originally posted on [AWSM FOSS](https://awsmfoss.com)
MIT APP INVENTOR
Tags: mobile, testing, tutorial, development
Published: 2023-07-30 09:02:35

**MIT APP INVENTOR**
MIT App Inventor 📱😀

MIT App Inventor is an innovative and user-friendly platform for creating Android applications, empowering both beginners and experienced developers to bring their app ideas to life. 🚀

1. **Visual Programming**: With MIT App Inventor, you can build apps by simply dragging and dropping visual components onto a canvas, eliminating the need for complex coding. 🎨🧩

2. **Simplicity for All**: It's designed for everyone, from tech novices to seasoned programmers. The intuitive interface allows even non-coders to create functional apps effortlessly. 👶👩‍💻👨‍💻

3. **Abundance of Components**: The platform offers a vast array of pre-built components like buttons, text boxes, sensors, and more, making app development quicker and more accessible. ⚙️🔌

4. **Real-Time Testing**: MIT App Inventor facilitates instant testing on connected Android devices, enabling developers to see changes immediately. 📲💡

5. **Code Blocks**: While it promotes visual programming, it also supports block-based coding for users interested in delving deeper into the logic behind their apps. 🔡🧠

6. **Open Source**: The platform follows an open-source model, encouraging collaboration and sharing of ideas among its vibrant community. 👥🤝💡

7. **Educational Tool**: It serves as an excellent educational tool for introducing programming concepts to students, promoting creativity and problem-solving skills. 🏫🎓🧠

8. **App Publishing**: After development, users can publish their apps to the Google Play Store or share them directly with friends and family. 🚀📤

9. **Community Support**: The MIT App Inventor community is active and supportive, offering help, tutorials, and resources for newcomers and enthusiasts alike. 🤝📚💬

10. **Cross-Platform Potential**: Although primarily for Android, it has the potential for cross-platform app development with additional tools. 🔄📱💻

In summary, MIT App Inventor is an inclusive, intuitive, and empowering platform that democratizes app development. From beginners dipping their toes into programming to experienced developers seeking rapid prototyping, it's a valuable resource for anyone looking to create their own Android applications. 🌟👩‍💻👨‍💻🚀
OPENAI Function Calling API - A better way to use the power of Generative AI
Published: 2023-07-30 08:17:09

A few days back, I stumbled across the new Feature launched by OPENAI and it opens new doors for a developer like me and it can help business to minimize the customer need to look for each feature in the app and use it.
For example,
I am Fabric.js(it is a canvas library) Developer and I wanted to build a customize prompt for users where they can enter their query and based on that query I can perform functions on Canvas and this way users can have the option to customize their design templates very easily.

Practical Use Case:
I have an object which has many key value pairs and I want to get the key and value from users by providing an interactive prompt so if user types "Change the text to Hello World" then I can make a request like that and get results accordingly in a JSON formatted way. 

```
curl https://api.openai.com/v1/chat/completions -u :$OPENAI_KEY -H 'Content-Type: application/json' -d '{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {"role": "user", "content": "Change the text to Hello World"}
  ],
  "functions": [
    {
      "name": "change_value",
      "description": "Update value of object key",
      "parameters": {
        "type": "object",
        "properties": {

"key": {
            "type": "string",
            "description": "Key that needs to be changed"
          },
"value": {
            "type": "string",
            "description": "value that needs to be updated"
          }
        },
        "required": ["key","value"]
      }
    }
  ]
}'
```

This is a curl command making a POST request to OpenAI's GPT-3.5-turbo model. It will return this JSON response

```
{
  "key": "text",
  "value": "Hello World"
}
```

You can play around with it here.
http://langtale.ai/playground/p/fD10_ciAcM

If you enjoyed the article and have questions, make sure to:
🔔 Connect with me on mudassirali.com
Jenkins Updates: A Practical Guide to Safely Upgrade to the Latest LTS Version
Tags: jenkins, cicd, devops, itlife
Published: 2023-07-30 08:11:11

Over the past few weeks, I've been working on updating our Jenkins version and its associated plugins, a journey that has been both challenging and rewarding. I'd like to share some insights from my experience, hoping that it could be of help to you someday.

First and foremost, setting up a test environment that mirrors your Production Cluster is invaluable. This gives you the confidence to experiment and troubleshoot, providing an indispensable safety net.

When updating, I suggest tackling one LTS version at a time. Run a reference job after each update to ensure everything works smoothly. Once you're satisfied, take a backup of your config.xml file and plugins folder. This precautionary measure enables a quick rollback to the previous version, if necessary.

Update the Jenkins version first, then the plugins. Be sure to run the reference job after each stage and check your management, plugin, and config pages. Keep an eye out for 504 errors and address them promptly. If anything goes awry, revert to the last working state and attempt the update later. To revert, simply replace your current config.xml and plugins folder with the backup and change the Jenkins version.

Encountering issues during updates is a part of the process. For instance, initial launching may fail due to timezone issues. In such cases, you might need to update the jenkins.service page and adjust the initialTimeout to 180 or more. Sometimes, it's a matter of tweaking permissions. Navigating these obstacles requires courage and resilience, especially when dealing with a system that could falter at any moment for any reason. Always keep a backup of your last stable version as a lifeline.

By adhering to these steps and practicing patience, you can successfully update to the latest LTS version for your organization. Remember, it's about continual growth and improvement, so keep going and keep evolving. Best of luck on your Jenkins journey!

#DevOps #Jenkins #ContinuousIntegration #SoftwareDevelopment #TechTips #BestPractices #LTS #ITLife #JenkinsUpdate #TechJourney #SystemAdmin #softwareupgrade
All About Use Hook In React
Tags: react, webdev, frontend, beginners
Published: 2023-07-30 08:08:26

React is a popular and widely-used JavaScript library for building user interfaces, enabling developers to create dynamic and interactive web applications efficiently.

React Hooks, introduced in React 16.8, revolutionized how developers manage stateful logic in functional components. Hooks allow developers to use state and other React features without writing a class, making it easier to organize and reuse logic across components.

In this article, we will learn about a new react hook named `use`, yup that's the name of the hook. This hook is still in experimental stage, If you would like to test it out, make sure your `react` and `react-dom` package version is set to "experimental".

## About `use` Hook

The use Hook was revealed back in 2022 by the React team in an RFC (Request For Comments). It was a solution designed to simplify the process of data fetching by reducing the amount of boilerplate code needed to define Promises.

It can be used like `await`. Unlike other Hooks, use Hook has a special trait where it can be called inside conditions, blocks, and loops. This makes it a flexible Hook when you want to add logic and conditional flow without adding more components.

Ultimately, this hook reduces boiler plate code making code more readable and easy to understand.

## Example

This example will show how to use `use` hook to reduce the boiler plate code and handle data fetching easily

### How we fetch data without use hook

```js
import { useEffect, useState } from "react";

const App = () => {
    const [product, setProduct] = useState({});

    useEffect(() => {
        fetch("https://xyz.com/products")
            .then((res) => res.json())
            .then((json) => setProduct(json));
    }, []);

    if (!product) return <div>Loading...</div>;

    return <div>{product.name}</div>;
};

export default App;
```

### Using use hook

```js
import { use } from "react";

const getProduct = fetch("https://xyz.com/products").then((res) => res.json());

const App = () => {
    // use hook expects promise as argument
    const product = use(getProduct);

    if (!product) return <div>Loading...</div>;

    return <div>{product.name}</div>;
};

export default App;

```
The `use` hook eliminated the use of `useEffect` and `useState`, making the code simpler.

## Conclusion

In the end, React team and community are pushing hard to come up with better solutions for fetching and server components, which means that soon we will have a way simpler solution to control fetch data natively with server components support. Happy coding 👨‍💻
Sync Your Obsidian Notes Across All Platform for Free
Published: 2023-07-30 08:03:02



## Introduction


Obsidian is a powerful note-taking and knowledge management tool that allows you to create a seamless workflow across multiple devices. In this tutorial, we will explore how to sync Obsidian notes across various platforms using popular cloud services. Whether you use Windows, Mac, iPhone, or Android, you can easily keep your Obsidian notes in sync without any additional costs.

## Syncing Windows and Mac

### 1. Use OneDrive or Dropbox


- Make sure you have OneDrive or Dropbox installed on your computer.
- If you have local Obsidian files, copy and paste them into the synced folder.
- Open Obsidian Notes and click on the "Open Another Vault" button.
- If it's your first time using Obsidian, the vault menu should open automatically.
- Click the "Create New Vault" button and give your project a name.
- Browse and select the Obsidian folder from the cloud storage folder.
- Add notes to your project, and you're done!
- Repeat the same steps on your other computer to access the synced files.

## Syncing iPhone and PC

### 2. Use iCloud


- iPhone to PC syncing requires iCloud.
- If you already have iCloud on your MacBook and iPhone, you're all set.
- On Windows, search for iCloud in the Windows Store and install it.
- Log in with your Apple ID and click "Apply" to save changes.
- Open Obsidian on your iPhone, click "Create New Vault," and choose the "Store in iCloud" option.
- This will create an Obsidian folder in iCloud where you can store your notes.
- Add and edit notes on your iPhone, and they will be synced to your PC automatically.

## Syncing Android and PC

### 3. Use OneDrive and FolderSync


- While there's no official way to sync Obsidian between Android and PC, third-party apps can help.
- Download Obsidian, FolderSync, and OneDrive on your Android device.
- Ensure you are using the same OneDrive account on both devices.
- Create an "Obsidian" folder in OneDrive if you don't have one already.
- On your Android device, create a folder titled "Obsidian" to save all projects.
- Open the FolderSync app and give it the necessary permissions.
- Add your OneDrive account and sign in.
- Create a folder pair by selecting the "Obsidian" folder on your Android device and the corresponding folder on OneDrive.
- Tap "Sync" to start syncing your Obsidian files.

## Conclusion
![eg. Check it Out!](https://media.giphy.com/media/xT5LMHxhOfscxPfIfm/giphy.gif)

By following these simple steps, you can easily sync your Obsidian notes across all your devices, regardless of the platform. With cloud services like OneDrive and iCloud, keeping your notes up-to-date has never been easier. Now you can seamlessly transition from your Windows PC to your iPhone or Android device, knowing that all your essential notes are just a click away. Happy note-taking!
Ищу наставника, который поможет мне повысить мою карьеру? 🚀
Published: 2023-07-30 07:40:56


30 июль
#
реагировать
#
работа
#
интервью
#
карьера
#
Python

Я разработчик и хочу расширить свои навыки и получить работу своей мечты . Заинтересован в изучении Python или создании веб-приложений с помощью DJANGO . Кто может помочь, будучи моим наставником ?