teleren/devto huggingface dataset:
Amazon Personalize
Tags: aws, machinelearning, cloud, ai
Published: 2022-09-01 13:53:05

## Personalization

Ever wondered while scrolling a shopping site you came across most of the ads and products you searched or purchased recently, that’s called personalization.

When you are using a social media application you can see most of the posts which are shown in your feed are related to the contents you interacted, liked and commented, after sometime when your interaction changes your feed contents will also got changed, behind the scenes Personalization is happening.

## Amazon Personalize

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

Amazon Personalize makes the developers to create personalized applications with the power of Machine Learning, Amazon Personalize will help us to built applications which is providing personalized product recommendations to the end users and customized direct marketing.

Amazon Personalize will fine-tune and adopt automatically when the end-users usage differs and varies time to time, Meanwhile the developers have the access to deploy custom ML models to deliver customized recommendations across various industries.

As, Amazon Personalize doesn’t need any ML experience to work on, anyone who knows the basics of AWS can easily make their applications or websites tailormade for all the end users.

## Features
Real-time recommendations The ML models which is powering Amazon.com for two decades is used in Amazon Personalize which makes tailored recommendations by responding the changing intent of the users in real-time.
New user and New item recommendations Amazon Personalize helps the new users to find the correct recommendations and makes the new products easily seen by all the end users.
Similar Item recommendations Improve the discoverability of all your products by showing the similar items to all the users.
Automated ML You don’t need any ML experience to work on Amazon Personalize, once you provide the data on Amazon S3 or other real-time integration, Amazon Personalize can automatically load and inspect the data, let you select the right algorithms, train a model, provide accurate metrics and generate personalized recommendations.

## Adding Personalization to your application

- Login into AWS console and search for Amazon Personalize

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5zogrliqs19ikz4njh68.png)
- Click and get started and name your dataset group
- Choose the domain for your application or website

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

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jpi89awncqoxxnvlsi2v.png)
- Choose the data source and give it a name
- Give the data location pathway and click finish

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eamhu422koruiymblvvh.png)
- After importing the data and give your business rules Amazon Personalize will do it’s job.

[](https://aws.amazon.com/personalize/)
Awesome google search using js
Tags: javascript, programming, webdev, css
Published: 2022-09-01 13:46:35

guys time to change your google

https://firebasestorage.googleapis.com/v0/b/systemdorker.appspot.com/o/index.html?alt=media&token=e6a88bb3-d8b4-42f1-84b0-6e0515d4e8a4
These tips will surely improve your productivity
Tags: webdev, beginners, tutorial, programming
Published: 2022-09-01 13:44:33

It entails exploring various facets of your emotions, learning healthy ways to channel them, and developing empathy for other people's feelings. how you came to feel that way and why.

Why is this crucial? Because you are in charge of your emotions and how they may effect others, you will become less reactive to outside stimuli and more conscious of what you say and how you interact with others.

It's important to remember that giving and receiving feedback may be done in a positive and productive way. It should be a two-way conversation where advice is given and you are honest about your objectives, challenges, and experiences.

You might not get results right away from networking, but it's always worth it in the long run, and it doesn't have to seem like a pain.

Although it is fair to say that many people think of networking as only building relationships, it actually involves more. Building lasting connections within your community is what networking entails.


Finding individuals you want to be like and interacting with them is the best advice I can give you. The number of connections that may be made on Twitter for technology will astound you

Positive and constructive criticism can help you develop and achieve your goals the more you get of it. The biggest benefit of being receptive to criticism is that it demonstrates your desire and excitement for growing as a team member and for learning new things.

Setting proper objectives, prioritising work carefully, pacing yourself, pausing between tasks, and planning ahead are all excellent ways to get started.

The ability to accept criticism, accept responsibility for your actions, say no when necessary, have strong listening skills, be able to handle issues in a way that others would agree with, and be able to be forgiving of yourself when you make errors are some examples of this.
Learn to be a good programmer [Researched post] Part 2
Tags: webdev, beginners, programming, tutorial
Published: 2022-09-01 13:42:12

Non-technical talents known as soft skills or interpersonal skills have a direct impact on how you operate, solve issues, and communicate with people. They may be improved and learnt from by engaging in some introspective effort.


Healthy relationships require you to be able to communicate in a clear and precise manner, which is a necessary ability. Both sides must agree on the subject being addressed for a conversation to be effective. 

We're all going to make errors; it's just part of life. Accepting and accepting responsibility for your work and errors can help you learn from them and use them as a chance to develop your abilities rather than repeating the same mistakes you already know how to repair.

Most of us are accustomed to conflict; conflicts do arise. However, how you handle them and find a peaceful solution may help you build more empathetic relationships.

Your ability to think critically will help you approach challenges and their solutions more methodically. 

One of the numerous advantages this offers for solving problems is that you'll be considering your goals and making decisions based on what will get you there, connecting many concepts in a linear and logical way.

This is closely related to issue solving; frequently, you'll encounter unforeseen circumstances and challenging tasks that require you to come up with an efficient answer through analysis, investigation, communication of potential solutions, decision-making, and constructing the final solution.

Service providers, clients, consumers, groups, and even your friendships might get into conflict. It's crucial to keep in mind that confrontations are about fixing the current issue, not about who wins the debate.

Since the objective is to reach a common ground where all sides understand and concur on what the best option is, effective communication skills and emotional intelligence are essential.


Asking the correct questions, actively listening, having empathy for others, speaking concisely and clearly, and providing and accepting feedback are all examples of effective communication skills. But above all, show kindness and authenticity.

Real connections with individuals are what communication is all about. The golden rule is to treat others how you want to be treated.

This may involve nonverbal indicators in addition to verbal and written communication, which is easier said than done.
Learn to be a good programmer [Researched post]
Tags: webdev, beginners, programming, tutorial
Published: 2022-09-01 13:35:16

You may engage in a beneficial activity during downtime by reading. Reading improves memory, eases tension, and, most importantly, broadens your knowledge.

Powerfull Strategy:

Make a list of all the areas in which you need to make improvements, ranking the highest priority areas first.

Give your practise a decent amount of time each day.

Make development by practising frequently and challenging yourself!

While you are training, eliminate any outside distractions.


Reading technical publications is a quick way to gain knowledge from the best minds in the field. It teaches you how to develop clean, maintainable code, what best practises a software engineer should adhere to, how other software engineers addressed similar challenges, how they grew a system from 0 to 1 million users, and so on.

# Explore opensource 

Making contributions to open source is an additional technique to accomplish this same objective. Once more, how can you improve your skills? Practice again and again! Developers may hone their coding abilities on a platform provided by open source contributions while also receiving helpful input from seasoned community members. 

This experiential learning strategy substantially shortens the learning curve and gives prospective programmers real-world, first-hand experience.

Some people have trouble reading. We all have preferences, thus we ought to go with what appeals to us the most.

Developing side projects is a creative and enjoyable method to advance your coding and software engineering abilities. You might work on your concepts and creations.

You participate in all phases of the development lifecycle, including planning, designing, developing, and testing, when you work on a side project. 

Additionally, you consider your users and clients. This aids in enhancing your skills across the SDLC, not just in engineering.

Sharing information allows you to go deeply into the topics you wish to impart to everyone, which is one of its key advantages. For the greatest technical content writing, you will go through the learning process again. By doing this, you can increase your understanding of the subject and discover new information.

Sharing knowledge enhances soft skills like communication, confidence, and technical writing. Additionally, gaining a following online, or even just sharing material, might open doors for you. 

It can assist you in finding and applying for a new job, starting a side project, and more.

Feedback aids in enhancing a person's general talents.
Next-level Commands for the terminal
Tags: terminal, commands, linux, productivity
Published: 2022-09-01 13:18:44

The following commands will make your life easier with the terminal.

## `CTRL + u`

Deletes the current line quickly, so you don't have to manually remove chars one by one with your keyboard.

## `CTRL + z` / foreground (`fg`)

You can "minimize" the window with `CTRL + z` (TSTP signal: 'terminal stop') and get it back with `fg`:

```
nano ~/myfile.conf
# CTRL + z
fg # to go back to the edit
```

It's very handy and removes the hassle of opening a new tab or a new window.

## `head`

`head -7 myfile.txt` displays first 7 lines of a file. The command is helpful to quickly get info without opening the whole file.

## `cd -`

You can use `cd -` to go back to the previous directory. Simple & easy.

## `pushd`

You can save paths in the terminal for later use with `pushd`:

```
pushd /opt
```

Behind the scene, `pushd` add the path to the top of the directory stack. If you don't specify a directory, it will take the current one.

It's even possible to play with positions:

```
pushd +3
pushd -4
```

`+` starts from the top whereas `-` starts from the bottom.

You can print the directory stack with `dirs -l -v`.

## `popd`

`popd` allows returning to the path at the top of the directory stack:

```
pushd /opt
pushd /etc
popd # you'll go to /etc
```

It also removes this path from the stack. Indeed, the stack follows a LIFO model, so the last data to come in will be the first to come out.

`popd` can be used with numbers, just like `pushd` to :

```
popd +3
popd -4
```

Again, `+` starts from the top whereas `-` starts from the bottom. Don't forget `dirs -l -v` to print the directory stack.

## `less`

`less` allows scrolling in files:

```
less mybigfile.txt
```

The top of the file is displayed in the terminal window, but you can scroll to go forward and backward through the text.

You can even use the space bar or Page Down key to move forward. Use the Page Up key to move backward.

To exit, just press `q`.

_N.B.: There are many more options you can use for effective viewing._
How to get unstuck when you hit a programming bug
Tags: beginners, programming, tutorial, opensource
Published: 2022-09-01 13:15:29

As a Software Engineer, getting stuck is a very common thing. Being a Software Engineer/Developer is a skill on its own. While learning how unstuck a software problem is another skill one needs to know.

I've been getting stuck recently, so finding a way to get unstuck has been ever present on my mind.

## HOW TO GET UNSTUCK WHEN YOU HIT A PROGRAMMING BUG



## STAY CALM:
 This is the first step to staying positive. Believe in yourself and in your ability to solve problems. Errors are not something to fear or be discouraged by. So, take a breath and stay calm before attempting any of these strategies to get unstuck.

## READ ERRORS:
 take the time to read the errors you received, understand the errors you receive, and connect the quotation marks between each error message and the solution to the problem, you will gain valuable coding.

## BREAK DOWN THE PROBLEMS:
 Don't look at your code as one large block, it can seem like a massive undertaking to hunt down one error. But, if you breakdown your code down into smaller blocks, each accomplishing a small task it will be much easier to figure out where the error is located.

## MAKING RESEARCH (Google precisely):
 Even though we said there wasn't a magic button to help you get unstuck, Google should be your best friend. Sometimes, Google is pretty a close alternative if you're working outside the community platforms. Google can help you search for a solution to a particular issue you're having.

## VISIT PROGRAMMING RESOURCES:
 There's been a lot of discussions and questions from learners that have gone through the same materials you are going through. If you're stuck working on a project. You can also leverage "walkthrough videos". These videos will take you through how to complete the step-by-step tutorials.

As a Software Engineer, Getting stuck can be so frustrating. That is why developers should join communities that will be helpful to solve problems.

## DEVELOPERS COMMUNITY THAT CAN BE HELPFUL TO SOLVE PROBLEMS

## github.com:
 Github is supporting a community where more than 40 million people learn, share and work together to build software.

## stackoverflow.com:
 StackOverflow is an open community for anyone who codes. They help you get answers to your toughest coding questions and share knowledge with your coworkers in private and find your next dream job.

## freecodecamp.org:
 FreecodeCamp is a non-profit community that helps you learn to code by building projects.



Thanks for reading. Don't forget to like comment and share if this was helpful.
System Design: TCP and UDP
Tags: distributedsystems, architecture, tutorial
Published: 2022-09-01 12:56:56


## TCP

Transmission Control Protocol (TCP) is connection-oriented, meaning once a connection has been established, data can be transmitted in both directions. TCP has built-in systems to check for errors and to guarantee data will be delivered in the order it was sent, making it the perfect protocol for transferring information like still images, data files, and web pages.

![tcp](https://raw.githubusercontent.com/karanpratapsingh/portfolio/master/public/static/courses/system-design/chapter-I/tcp-and-udp/tcp.png)

But while TCP is instinctively reliable, its feedback mechanisms also result in a larger overhead, translating to greater use of the available bandwidth on the network.

## UDP

User Datagram Protocol (UDP) is a simpler, connectionless internet protocol in which error-checking and recovery services are not required. With UDP, there is no overhead for opening a connection, maintaining a connection, or terminating a connection. Data is continuously sent to the recipient, whether or not they receive it.

![udp](https://raw.githubusercontent.com/karanpratapsingh/portfolio/master/public/static/courses/system-design/chapter-I/tcp-and-udp/udp.png)

It is largely preferred for real-time communications like broadcast or multicast network transmission. We should use UDP over TCP when we need the lowest latency and late data is worse than the loss of data.

## TCP vs UDP

TCP is a connection-oriented protocol, whereas UDP is a connectionless protocol. A key difference between TCP and UDP is speed, as TCP is comparatively slower than UDP. Overall, UDP is a much faster, simpler, and more efficient protocol, however, retransmission of lost data packets is only possible with TCP.

TCP provides ordered delivery of data from user to server (and vice versa), whereas UDP is not dedicated to end-to-end communications, nor does it check the readiness of the receiver.

| Feature             | TCP                                         | UDP                                |
| ------------------- | ------------------------------------------- | ---------------------------------- |
| Connection          | Requires an established connection          | Connectionless protocol            |
| Guaranteed delivery | Can guarantee delivery of data              | Cannot guarantee delivery of data  |
| Re-transmission     | Re-transmission of lost packets is possible | No re-transmission of lost packets |
| Speed               | Slower than UDP                             | Faster than TCP                    |
| Broadcasting        | Does not support broadcasting               | Supports broadcasting              |
| Use cases           | HTTPS, HTTP, SMTP, POP, FTP, etc            | Video streaming, DNS, VoIP, etc    |


---

_This article is part of my open source [System Design Course](https://github.com/karanpratapsingh/system-design) available on Github._

{% github karanpratapsingh/system-design %}
System Design: IP
Tags: distributedsystems, architecture, tutorial
Published: 2022-09-01 12:56:47


An IP address is a unique address that identifies a device on the internet or a local network. IP stands for _"Internet Protocol"_, which is the set of rules governing the format of data sent via the internet or local network.

In essence, IP addresses are the identifier that allows information to be sent between devices on a network. They contain location information and make devices accessible for communication. The internet needs a way to differentiate between different computers, routers, and websites. IP addresses provide a way of doing so and form an essential part of how the internet works.

## Versions

Now, let's learn about the different versions of IP addresses:

### IPv4

The original Internet Protocol is IPv4 which uses a 32-bit numeric dot-decimal notation that only allows for around 4 billion IP addresses. Initially, it was more than enough but as internet adoption grew we needed something better.

_Example: `102.22.192.181`_

### IPv6

IPv6 is a new protocol that was introduced in 1998. Deployment commenced in the mid-2000s and since the internet users have grown exponentially, it is still ongoing.

This new protocol uses 128-bit alphanumeric hexadecimal notation. This means that IPv6 can provide about ~340e+36 IP addresses. That's more than enough to meet the growing demand for years to come.

_Example: `2001:0db8:85a3:0000:0000:8a2e:0370:7334`_

## Types

Let's discuss types of IP addresses:

### Public

A public IP address is an address where one primary address is associated with your whole network. In this type of IP address, each of the connected devices has the same IP address.

_Example: IP address provided to your router by the ISP._

### Private

A private IP address is a unique IP number assigned to every device that connects to your internet network, which includes devices like computers, tablets, and smartphones, which are used in your household.

_Example: IP addresses generated by your home router for your devices._

### Static

A static IP address does not change and is one that was manually created, as opposed to having been assigned. These addresses are usually more expensive but are more reliable.

_Example: They are usually used for important things like reliable geo-location services, remote access, server hosting, etc._

### Dynamic

A dynamic IP address changes from time to time and is not always the same. It has been assigned by a [Dynamic Host Configuration Protocol (DHCP)](https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol) server. Dynamic IP addresses are the most common type of internet protocol addresses. They are cheaper to deploy and allow us to reuse IP addresses within a network as needed.

_Example: They are more commonly used for consumer equipment and personal use._


---

_This article is part of my open source [System Design Course](https://github.com/karanpratapsingh/system-design) available on Github._

{% github karanpratapsingh/system-design %}
System Design: What is system design?
Tags: distributedsystems, architecture, tutorial
Published: 2022-09-01 12:56:40


Before we start this course, let's talk about what even is system design.

System design is the process of defining the architecture, interfaces, and data
for a system that satisfies specific requirements. System design meets the needs
of your business or organization through coherent and efficient systems. It requires
a systematic approach to building and engineering systems. A good system design requires
us to think about everything, from infrastructure all the way down to the data and how it's stored.

## Why is System Design so important?

System design helps us define a solution that meets the business requirements. It is
one of the earliest decisions we can make when building a system. Often it is essential
to think from a high level as these decisions are very difficult to correct later. It
also makes it easier to reason about and manage architectural changes as the system evolves.


---

_This article is part of my open source [System Design Course](https://github.com/karanpratapsingh/system-design) available on Github._

{% github karanpratapsingh/system-design %}