teleren/devto huggingface dataset:
Socket.io basic setup
Tags: programming, javascript, react, chatapp
Published: 2023-08-08 18:16:59

Socket.io is a library which is used to establish bidirectional communication between different components of a web application(e.g.- (client ,server), (two different web pages) etc. ). It gives us a simple way to establish such communication in Real-time. This library has a low-latency which makes it real time and ensures almost zero data loss. Following is the basic process of how to establish communication between a client and a server using socket.io in javaScript.

##### 1. Setting up client server address
```
const io = require('socket.io')(4500);

```

##### 2. Creating IO communication

```

io.on('connection', socket =>{
    socket.on('new-user-joined', names => {
        console.log("JOINED THE CHAT",names );
        users[socket.id] = names;
        socket.broadcast.emit('user-joined',names);

    });
``` 

```
socket.emit('new-user-joined',names);

socket.on('user-joined',names =>{
append(`${names} joined the chat`,'right')
})

```

These two code blocks , server side and client side respectively , gives us a full circuit of communication between client and server.

```
io.on('connection', socket =>{
});

```
io.on creates and maintains the circuit for communication and listens for requests. 

##### 2. socket.emit

```
socket.emit('new-user-joined',names);
```

socket.emit emits an event to the opposite party (here - new-user-joined) where the opposite party is waiting to listen to the event to take action. Here, **names** is a variable passed with the event.

##### 3. socket.on

```
 socket.on('new-user-joined', names => {

});
```

socket.on listens to the event emitted by socket.emit with the same name and takes action accordingly.

##### 4. socket.broadcast.emit

```
 socket.broadcast.emit('user-joined',names);
```

socket.broadcast.emit emits event as well as data (here - names) to all the clients connected to the server except the user itself. socket.on also listens to the request made be socket.broadcast.emit.



So, here was a simple description and demonstration of how to establish a connection and communication between client and server using **socket.io**.
Simplifying API Calls with URLSearchParams and Fetch
Tags: javascript, webdev, beginners, opensource
Published: 2023-08-08 18:16:13

Have you ever had to deal with complicated query parameters while using GET API calls? 

Introducing **URLSearchParams**, a JavaScript interface that makes it simple to manage query parameters. 

Let's explore how it might raise the bar for your Fetch method use.

``` js
// Create a new URLSearchParams object
const params = new URLSearchParams({
    'search': 'keyword',
    'filter': 'category',
    'sort': 'date'
});

// Combine with your API endpoint
const apiUrl = `https://api.example.com/data?${params}`;

// Fetch the data
fetch(apiUrl)
  .then(response => response.json())
  .then(data => {
    // Handle your data here
  })
  .catch(error => {
    // Handle errors
  });

```

**URLSearchParams**: We may create, modify, and manage query parameters within URLs using this convenient interface. It is ideal for writing exact API calls without manually adding '&' and '=' symbols.
Use URLSearchParams to generate a clean, well-organized parameter string rather than manually concatenating strings.

## Benefits of using URLSearchParams

- Clean code: No more manual parameter concatenation!
- Readable: Easily understand query parameters at a glance.
- Dynamic: Add, remove, or update parameters effortlessly.

---

If you like what you read, consider connecting with me on [LinkedIn](https://www.linkedin.com/in/sanjampreetsingh/)
gnu-on-alpine 3.18.3 and alpine-plus-plus 3.18.3 Released
Tags: docker, linux, github, showdev
Published: 2023-08-08 18:08:22

## TL;DR

I just released [gnu-on-alpine](https://github.com/cicirello/gnu-on-alpine) 3.18.3 and [alpine-plus-plus](https://github.com/cicirello/alpine-plus-plus) 3.18.3, [two lightweight containers for implementing GitHub Container Actions with shell scripting](https://dev.to/cicirello/gnu-on-alpine-and-alpine-plus-plus-two-lightweight-containers-for-implementing-github-container-actions-with-shell-scripting-360i). Both containers are built upon [alpine](https://hub.docker.com/_/alpine) to keep the image size small for fast loading within GitHub Actions, and both are preinstalled with bash, coreutils, findutils, and gawk; and alpine-plus-plus is additionally preinstalled with git.


## Changelog gnu-on-alpine 3.18.3 - 2023-08-08

### Changed
* Bumped alpine to 3.18.3.

## Changelog alpine-plus-plus 3.18.3 - 2023-08-08

### Changed
* Bumped alpine to 3.18.3.


## More Information

For more information, see my earlier post about gnu-on-alpine and alpine-plus-plus here on DEV, as well as their GitHub repositories.

{% link https://dev.to/cicirello/gnu-on-alpine-and-alpine-plus-plus-two-lightweight-containers-for-implementing-github-container-actions-with-shell-scripting-360i %}

{% github cicirello/gnu-on-alpine %}

{% github cicirello/alpine-plus-plus %}


## Where You Can Find Me

Follow me [here on DEV](https://dev.to/cicirello) and on [GitHub](https://github.com/cicirello):

{% user cicirello %}

Or visit my website:

{% embed https://www.cicirello.org/ %}
Customizing Requests With The HTTP Gem
Published: 2023-08-08 17:53:13

######Many APIs require requests to be formatted according to specific requirements. Beyond authentication tokens, it is often necessary to include custom headers that provide additional information to an API. The HTTP gem in Ruby provides several methods that allow us to tailor our requests.

 

For instance, the `authorization()` method sets the header of the same name:

```ruby
response = HTTP.authorization("Bearer #{YOUR_ACCESS_TOKEN_HERE}").get(...)
```

 

To inform the server of the expected format for the response's content, we can set the `Accept` header using the method with the same name:

```ruby
response = HTTP.accept("application/json").get("http://yoururl.com")
``` 

 

Defining custom headers is also straightforward, thanks to the `headers()` method. For example, Notion requires version information to be sent along with requests to its API. It is possible to include that header as follows:

```ruby
response = HTTP.headers("Notion-Version" => "2022-06-28").post("https://api.notion.com/v1/databases")
``` 

 

We can even chain all these methods together in our request:

```ruby
response = HTTP.authorization("Bearer #{YOUR_ACCESS_TOKEN_HERE}").accept("application/json").headers("Notion-Version" => "2022-06-28").post("https://api.notion.com/v1/databases")
``` 

 

In order to maintain code organization and readability, we could choose to stick to a single method and just pass a hash to `headers()`, as opposed to chaining multiple methods:

```ruby
my_headers = { "Authorization" => "Bearer YOUR_ACCESS_TOKEN",
               "Notion-Version" => "2022-06-28",
               "Accept" => "application/json",
               "Your-Custom-Header" => "custom-header-value"}

response = HTTP.headers(my_headers).post("https://api.notion.com/v1/databases")
```

 

In summary, the HTTP gem offers great flexibility to customize our requests, accommodating the needs of various APIs and facilitating more effective communication with different web services.
Apache Age: AgeSQL cli Post-installation
Published: 2023-08-08 17:48:48

To use AgeSQL, first, update the PATH variable to a PostgreSQL version compatible with Age:-

```
export PATH=/path/to/postgresql/12/bin:$PATH
```
Then, create the database and set up the extension:


`initdb agesqldb`
Start the server
`pg_ctl -D agesqldb -l logfile start`
Create database
`createdb agesqldb`
Run it
`./agesql agesqldb`
Create extension of age in it and set the path

```
CREATE EXTENSION age;
LOAD 'age';
SET search_path = ag_catalog, "$user", public;
```


To create a graph, run the CREATE GRAPH command:

```
CREATE GRAPH network;
SET GRAPH = network;
SHOW GRAPH_PATH;
```
You can directly run sql queries in it 

```
SELECT * FROM users;
CREATE (:person {name: 'John'});
CREATE (:person {name: 'David'});
MATCH (p:person {name: 'John'}),(k:person{name: 'David'}) 
CREATE (p)-[e:KNOWS]->(k)
RETURN e;
MATCH (a)
OPTIONAL MATCH (a)-[e]->(b)
RETURN a, e, b;
```
[Apache-Age:-https://age.apache.org/](https://age.apache.org/)
[GitHub:-https://github.com/apache/age](https://github.com/apache/age)
My Win
Tags: win, softwarepatent, patent
Published: 2023-08-08 17:38:06

A couple of years ago when I worked at Red Hat, I had filed for a patent as an inventor. You know, they say that the wheels of justice grind slowly. The wheels of patent applications also grind slowly.

But I do have a patent for Red Hat as an inventor!

![Header of my Patent](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sh1ddyhl4jsunkplf7sz.png)

So, I'm proud of that.
🔍 Debugging High GitHub Action Usage 📈
Tags: github, githubactions, performance
Published: 2023-08-08 17:36:03

🔍 Debugging High GitHub Action Usage 📈

During the development of #neeto, we encountered an unexpected spike in GitHub Action usage that caught our attention. Curiosity drove us to uncover the root cause, and we've documented the journey for you! 🕵️‍♂️

Check out the latest blog post where we share the raw, unedited video of the investigation process! 🎥

🔗 https://www.bigbinary.com/blog/high-github-action-usage
Paradigm Shift in Software Engineering
Published: 2023-10-18 08:15:29

---
title: Paradigm Shift in Software Engineering
published: true
date: 2023-08-08 17:30:00 UTC
tags: 
canonical_url: 
---

ဘာလို့ Developer တွေက Language တစ်ခုထဲမှာ Stuck နေတာလဲဆိုရင် Willing To Learn မဖြစ်ကြလို့ချည်းပဲပြောရင်လည်းမှားတယ်လို့ပြောလို့ရသလို Paradigm Shift လို့ခေါ်တဲ့‌ တွေးခေါ်နည်းပုံစံ အသစ်ကိုလိုက်မပြောင်းနိုင်ကြလို့လည်းပါတယ်လို့ပြောလို့ရတယ်။

တစ်ခုထဲမှာပဲနေရတာကိုသဘောကျတဲ့အခါ ဒီလိုမျိုးလုပ်တာက အန္တာရယ်များတဲ့ Mindset လို့ပြောလို့ရတယ်။ Software Engineer တွေလည်းတခြား Field ကလူတွေလိုမျိုး Secure ဖြစ်တဲ့ Job ကိုလိုအပ်ပါတယ်။ Secure ဖြစ်ဖို့အတွက်က ကိုယ့်ဖက်က လိုတဲ့ Skills တွေပြည့်နေဖို့လည်းလိုအပ်ပါတယ်။ Skill တွေဘယ်လိုဖြည့်မလဲပေါ့။ Programming Language ဟာ Natural Language လိုမျိုးမဟုတ်တာကြောင့် တစ်ခုခုနဲ့ တစ်ခု Jump လို့ရတယ်ဆိုတာကိုသိထားဖို့လိုအပ်ပါတယ်။

ဘယ်လို Jump မလဲ။ ပထမဆုံး Language အသစ်ကို စပြီးကြည့်ဖို့လေ့လာတယ်ဆိုပါစို့။ သူက Paradigm အတူတူပဲလား။ Paradigm တူတယ်ဆိုတာရေးနည်းတူတယ်၊ တွေးခေါ်ပုံတူတယ်လို့ပြောလို့ရတယ်။ တူတယ်ဆိုရင်ပြောင်းကြည့်တဲ့အခါ Syntax ကလွဲရင် Theory, Concept ကတူတူပါပဲ။ ဆိုပါစို့ ကိုယ်က Java ရတယ်ဆိုရင် Object Oriented Programming မှာ Strong ဖြစ်တယ်လို့ပြောလို့ရတယ်။ ဒီအခါ C# လို၊ Typescript လိုကောင်ကိုလေ့လာပြီဆိုရင်လည်းအခက်အခဲရှိမှာမဟုတ်ပါဘူး။ ဘာလို့ဆိုရင် ရေးနည်းပုံစံနဲ့အတွေးအခေါ်အတူတူပဲဖြစ်တဲ့ Programming Language ဖြစ်နေတာကြောင့်ပါ။

ဒီတော့ကိုယ်က JavaScript Developer ဆိုရင်တော့ Java လိုကောင်ကိုကြည့်ရတာလက်ပေါက်ကပ်မှာပါ။ Functional Spaghetti Code တွေပဲရေးလာရတော့ကိုယ်က OOP လို Concept တွေတစ်ခုလုံးကိုခေါင်းထဲထည့်ဖို့ကအရှေ့က Paradigm ကိုပါမေ့ပစ်မှရမှာပါ။ မဟုတ်ရင်ရောသွားမှာဖြစ်သလို Verbose လည်းဖြစ်စရာလို့ပြောလို့ရတယ်။ OOP သမားက FP ကိုပြောင်းတဲ့အခါမှာလည်းပုံစံတူပဲဖြစ်မှာပါ။ OOP က Mutable Nature ကိုဖျောက်ပြီးတော့ Immutable Nature ကိုပြောင်းရမှာဖြစ်တာကြောင့် Metal တစ်ခုလုံးကိုပြောင်းလဲပစ်ဖို့လိုအပ်ပါတယ်။

အခုနောက်ပိုင်းမှာ OOP + FP ကို ရောသုံးတဲ့ Hybrid ရေးနည်းပုံစံတွေရှိလာပြီဖြစ်တာကြောင့်မို့လို့ မိမိ အနေနဲ့ နှစ်ခုလုံးကိုနားလည်ထားဖို့လိုအပ်ပါတယ်။ OOP နဲ့ FP အပြင် Reactive Programming ကိုလည်းသိထားသင့်တယ်။ Reactive Nature ရှိမှုကို Application တိုင်းမှာတွေ့နေရတာဖြစ်သလို Event Driven Architecture (EDA) မှာလည်း Reactive Programming ကိုထဲထဲဝင်ဝင်သုံးတာကြောင့် ဒါကိုပါလေ့လာထားဖို့လိုအပ်ပါတယ်။

ဒီလိုမျိုး Paradigm Shift ဖြစ်တဲ့အရွေ့တွေမှာ SWE တွေအနေနဲ့ ပြောင်းလွယ်ပြင်လွယ် လိုက်လျောညီထွေလုပ်နိုင်ဖို့လိုတယ်။ မနေနိုင်ဘူးဆိုရင် ကိုယ့်ရဲ့အလုပ်က ကိုယ့်ရဲ့တစ်ခုထဲမှာတွယ်ကပ်တတ်တဲ့စိတ်ကြောင့် Secure ဖြစ်မှာမဟုတ်ပါဘူး။
How to read Software Engineering Books?
Published: 2023-10-18 08:06:56

---
title: How to read Software Engineering Books?
published: true
date: 2023-08-08 17:30:00 UTC
tags: 
canonical_url: 
---

စာအုပ်ဘယ်လိုဖတ်မလဲပေါ့။ Technical စာအုပ်ဖတ်တဲ့အခါမှာဘယ်ကနေစဖတ်ရမလဲဆိုတာကိုသိဖို့လိုပါတယ်။ ကိုယ်ကအခုဘာသိချင်တာလဲပေါ့။ ဘာလို့ဒီစာအုပ်ကိုဖတ်မှာလဲ။ ဒီစာအုပ်ရဲ့ Domain ဖြစ်တဲ့ Result ကကိုယ့်ရဲ့ Needs ကိုဖြေရှင်းပေးနိုင်လားပေါ့။

## Before Reading

စာအုပ်မဖတ်ခင်ဘယ်သူရေးတာလဲသိဖို့လိုပါတယ်။ တလွဲတချော်တွေရေးထားရင်တော့စမုံတုံးပြီပေါ့။ Software Engineering စာအုပ်တွေကစဖတ်ရတာခက်ပါတယ်။ နောက်ပိုင်းကြရင်သာမန်စာအုပ်တွေထက်စာရင်ဖတ်ရတာပိုပြီး Smooth ဖြစ်တဲ့အထဲလည်းပါတယ်လို့ပြောလို့ရတယ်။ စစချင်းဖတ်ရင်တော့ Term Overwhelming ဖြစ်နိုင်ပါတယ်။

## Define Your Problem's Context Boundary

ကိုယ့်ရဲ့ပြဿနာကဘာလဲပေါ့။ သာမာန်ကိစ္စတွေလောက်ကိုဘယ်သူကမှစာအုပ်ထဖတ်ဖို့စိတ်ကူးမှာမဟုတ်ပါဘူး။ သာမန်ထက်ပြဿနာကြီးလာမှစာအုပ်ဖတ်ဖို့စိတ်ကူးကြတာပါ။ သာမန်ကိစ္စတွေက Chat GPT od Google လိုက်တာနဲ့ပြီးနေတာမို့လို့ပါ။

## Abstract

ပြဿနာကိုရှင်းဖို့စာအုပ်စဖတ်တဲ့အခါ ပိုခက်တာမျိုးရှိတတ်ပါတယ်။ Context မမိတာကြောင့်ဖြစ်တတ်ပါတယ်။ ဒီတော့ Visual ပုံတွေပါတဲ့စာအုပ်တွေကိုစဖတ်သင့်ပါတယ်။ Quantum for Baby လိုစာအုပ်မျိုးပေါ့။ စာအုပ်ရဲ့ ၉၀ ရာခိုင်နှုန်းလောက်ကပုံတွေနဲ့ပြည့်နေတာဖြစ်တာကြောင့်ဖတ်ရတာပိုပြီးတော့ Smooth ဖြစ်မယ်၊ နားလည်လွယ်မယ်ပေါ့။ ဒီလောက်ကိုပေါ့ပေါ့ပါးပါးဖတ်နိုင်ရင်နောက်တစ်ဆင့်ကိုတက်လို့ရပါပြီ။ များသောအားဖြင့်ဒီအပိုင်းကနားလည်လွယ်ပါတယ်။ Cartoon Books, Webtoon တွေဖတ်နေတာမို့လို့နားလည်ရခက်မယ်ဆိုတယမဖြစ်နိုင်ပါဘူး။

## Dig

ဒုတိယအဆင့်ကတော့ Technical Book+ Video Course တွဲကြည့်တဲ့နည်းပါ။ Udemy က Instructor တွေဆိုများသောအားဖြင့် Reading Materials တွေပေးလေ့ရှိပါတယ်။ ဒါတွေကိုဖတ်ပြီးတော့ Course Video နဲ့တွဲကြည့်ပြီး Concept ကို Grab ဖို့လိုပါတယ်။ ဒါဆိုရင် Visual Video တစ်ဝက်၊ Text တစ်ဝက်နဲ့အကျွမ်းဝင်လာပြီဖြစ်တာကြောင့်နောက်တစ်ဆင့်ကိုတက်လို့ရပါပြီ။

## Dive

Final Step ကတော့စာအုပ်ချည်းသက်သပ်ဖတ်ဖို့ပါ။ ဒီနေရာမှာ Reference အနေနဲ့ တခြား Blog တွေ၊ Documentation တွေ၊ Course Video တွေကို Reference အနေနဲ့ကြည့်လို့ရပါတယ်။ မကြည့်ရဘူးလို့လည်း Restrictions လုပ်မထားပါဘူး။

## Apply

ဒီနေရာမှာတစ်ခုသိထားရမှာက Time Management ပါ။ စာအုပ်ဖတ်တဲ့အခါမှာချက်ချင်းအလွတ်ရမသွားပါဘူး။ Practice လူပ်ဖို့အချိန်လိုအပ်ပါတယ်။ Source Code တွေပါလာတဲ့အခါမျိုးပေါ့။ ဒီအခါရင် ကိုယ်နားလည်သလောက်ဖတ်၊ လက်တွေ့ပြန်လုပ်။ Project တစ်ခုနဲ့ Apply ပြန်လုပ်ဖို့လိုပါတယ်။ နောက်ပြီးတော့ခက်တဲ့အပိုင်းမှာပဲ Struggle မနေသင့်ပါဘူး။ သက်ဆိုင်ရာ Reference တွေကနေအဆင့်ဒီအဆင့်ကိုရအောင်ကျော်နိုင်ဖို့လိုပါတယ်။ ဒါမှ Technical Book တစ်ခုပြီးအောင်ဖတ်နိုင်မှာပါ။

#### Recommended Books for Beginners

- Impatient JavaScript
- Deep Dive Typescript
- Dive Into Design Patterns
- Refactoring Patterns
5 Ways to Center A Div
Tags: css, webdev, animation, tutorial
Published: 2023-08-08 17:03:00

### Watch Tutorial
Don't miss the amazing video we've embedded in this post! Click the play button to be inspired

{% youtube GPOBqiI2wtY %}

---

### 1. Using flexbox

```css
 .parent {
    display: flex;
    justify-content: center;
    align-items: center;
 } 

```

---

### 2. Using grid

```css
.parent {
    display: grid;
    place-content: center;
}
```

---

### 3. Using Position 

```css
.parent {
    position: relative;
}

.child {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
```

---

### 4.  Using Flex & Margin

```css
.parent {
    display: flex;

}

.child {
    margin: auto;
}
```

---

### 5. Using Grid & Margin 

```css
.parent {
    display: grid;
}

.child {
    margin: auto;
}
```

--- 
---

### Latest Post

{% link https://dev.to/jon_snow789/awesome-list-of-free-css-generator-293k %}

---
---


Thanks for Reading ❤️! Check my website [Demo coding](https://democoding.in/) for updates about my latest CSS Animation, CSS Tools, and some cool web dev tips. Let's be friends!

Don't forget to subscribe to our channel : [Demo code](https://www.youtube.com/@democode)
Ruby Design Patterns | PROTOTYPE 🐑
Tags: ruby, rails, webdev, architecture
Published: 2023-08-08 16:58:58

## Overview
Prototype is a creational design pattern that allows you to create a copy of the object.

## Real World Example
Sometimes the name **Clone** can be found instead of the name **Prototype**, and this is what I will use for the example below because, in my opinion, it is more appropriate. So we probably all know the story of the first cloned sheep named Dolly(https://en.wikipedia.org/wiki/Dolly_(sheep)). But what does it mean she was a clone? Which means she was biologically the same as the sheep from which the cells were taken (let’s call her **Molly**).


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

So, to create our clone(Dolly), we need two things:

- The object we can clone(Molly)
- A method that will allow us to clone this object(clone)

## Coding Problem
First, let’s define a **Sheep** class that will allow us to create a new sheep.

```ruby
class Sheep
  attr_reader :genome, :name
  
  def initialize(name:)
    @name = name
    @genome = Random.new_seed
  end
end

molly = Sheep.new(name: 'Molly')
molly.genome # => 58277341567052563563790228364424051023

dolly = Sheep.new(name: 'Dolly')
molly.genome == dolly.genome # => false
```

As you can see in the example above, I used a special method that assigns a unique genome encrypted in the form of a sequence of 39 digits. At this point, we are unable to create objects with two identical genomes.

## Solution
Using the **Prototype** pattern, we will add a **clone** method to our class that will allow us to clone our object. This method will be responsible for assigning the same genome to the newly cloned sheep. To create a new clone, we will also have to enter a new name for our new sheep.

```ruby
class Sheep
  attr_reader :genome
  attr_writer :name
  
  def initialize(name:)
    @name = name
    @genome = Random.new_seed
  end

  def clone(name:)
    new_sheep = dup
    new_sheep.name = name
    
    new_sheep
  end
end

dolly = molly.clone(name: 'Dolly')
molly.genome == dolly.genome # => true
```

This method allows you to easily clone our sheep and give it a new name.

## Caution
However, it should be remembered that in Ruby the **Prototype** pattern is implemented in the standard library, so when creating the clone method, we overwrite the existing one. In some cases, overriding this method can be useful because the default method only makes a shallow copy of the object.

## More reading
- https://www.rubyguides.com/2018/11/dup-vs-clone/
- https://apidock.com/ruby/v2_6_3/Object/clone
Montero Language Services brinda a investigadores de América Latina los artículos de LPBI Group en español
Published: 2023-08-08 16:44:21

"Es un gran orgullo para todo el equipo de Montero Language Services no solo conseguir la satisfacción de LPBI con nuestra labor, sino ayudarles a alcanzar sus éxitos y expansión en nuevos países a través de la traducción y localización de sus libros electrónicos", declara Fernando de Castro, CEO de Montero Language Services.

Este material se puede [utilizar ](https://castillalamancha24h.com/)como un contenido capaz de enriquecer la educación [médica ](https://cordoba24h.com/)y aportar un recurso para la actualización y formación continua de los profesionales [sanitarios](https://diarioalbacete.com/). Se trata de colecciones de artículos seleccionados cuyos índices de contenidos electrónicos han sido elaborados por un editor [especializado](https://eldiariodejerez.com/).
El eCommerce Day Chile recibió más de 2.500 profesionales en busca de capacitación sobre negocios digitales
Published: 2023-08-08 16:43:40

El eCommerce Day Chile Blended [Professional] Experience concluyó con éxito luego de volver a la presencialidad. El evento es una iniciativa [regional ](https://cordoba24h.com/)del eCommerce Institute coorganizado localmente por la Cámara de Comercio de Santiago (CCS).  Fue una jornada de capacitación y networking donde a través de charlas, conferencias y talleres, los profesionales pudieron capacitarse y aprender sobre las tendencias [actuales ](https://castillalamancha24h.com/)de los negocios digitales.

Más de 2.500 profesionales participaron y debatieron en el encuentro presencial las temáticas relacionadas al ecosistema digital y al eCommerce. Más de 3.000 personas ingresaron a la plataforma del evento para acceder a las conferencias y plenarias, workshops on [demand](https://diarioalbacete.com/), actividades especiales en vivo, visitar el área de servicios y soluciones, entre otras [propuestas](https://eldiariodejerez.com/).
SQL Types of Joining
Published: 2023-08-08 16:43:04

**Create Two Table**

1) Department Table
```
CREATE TABLE
    department (
        department_id INT PRIMARY KEY,
        department_name VARCHAR(100)
    );
```
`SELECT * from department;`

2) Employee Table
```
CREATE TABLE
    employee(
        employee_id INT PRIMARY KEY,
        full_name VARCHAR(100),
        department_id INT,
        job_role VARCHAR(100),
        manager_id INT,
        FOREIGN KEY (department_id) REFERENCES department(department_id)
    );
```
`SELECT * FROM employee;`


**We can join tables on six types.**
- Inner Join
- Left Join
- Right Join
- Full Join
- Natural Join
- Cross Join


1 > Inner Join
```
SELECT *
FROM employee
    INNER JOIN department ON department.department_id = employee.department_id;
```

2 > Left Join
```
SELECT *
FROM employee
    LEFT JOIN department ON department.department_id = employee.department_id;
```

3 > Left Join
```
SELECT *
FROM employee
    RIGHT JOIN department ON department.department_id = employee.department_id;
```

4 > Full Join
```
SELECT *
FROM employee
    FULL JOIN department ON department.department_id = employee.department_id;
```

5 > Natural Join
```
SELECT * FROM employee NATURAL JOIN department;
```

6 > Natural Join
```
SELECT * FROM employee CROSS JOIN department;
```
My first small project
Tags: webdev, beginners, css, html
Published: 2023-08-08 16:29:43

Started playing around in figma and trying to implement the website design I had in mind. I know the site doesn't look all that great, but the thing that stopped me from starting was exactly that... worrying about the site not being pretty enough. I just need to get going and get my hands dirty in web dev again implementing everything I've been taught so far. 

Planning on making this responsive, so I've got a bit of work to do and I'm far from done. Another thing that stopped me from just starting a project was the fear of getting stuck and not able to continue.

While I'm working on this, I'm doing my CMS course assignment, so that delays me a bit.
React using CDN
Published: 2023-08-08 16:21:44


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uils9z023ocq9pvxaomu.png)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zmo2jqr4uxpp4udwx993.png)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uttpkdghcdzwtguo708q.png)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sa4mjgmn9njfv04kpgb2.png)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ceszidfa6fk6x1xkmjtg.png)
Black is Tech 2023 Conference!
Tags: webdev, blackistech, programming, motivation
Published: 2023-08-08 16:14:04

I've been continuing to study React, focusing on useState currently but I've also picked up SQL via a little coding app called Mimo. It is nice and a good intro to SQL but supplemental at best.

I've also started attending the Black is Tech conference that started yesterday! The speakers are all amazing, sharing valuable knowledge, insights and experiences that are truly inspiring!

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