teleren/devto huggingface dataset:
Streamlined Development: Asynchronous Reviews for Incremental Changes
Tags: codereview, development, cicd, devops
Published: 2023-10-12 10:04:17

> :robot: **Disclaimer**: This content is the product of a harmonious collaboration between human creativity and AI's analytical prowess.

Ever felt bogged down by traditional code reviews that seem to drag on forever? Imagine a development process where asynchronous feedback and incremental changes come together, paving the way for agility and efficiency. Dive into this guide to discover a fresh approach that redefines the boundaries of code collaboration and deployment.

### 1. **Branch Off the Main**
- **Purpose**: Ensure the main branch remains stable.
- **Action**: Developers create a branch from the main for each new task.

### 2. **Focus on Small, Incremental Changes**
- **Purpose**: Simplify code integration and review.
- **Action**: Implement a basic test and corresponding code to pass it.

### 3. **Push the Branch**
- **Purpose**: Start the CI/CD process.
- **Action**: Push the branch to the remote repository.

### 4. **Initiate Automated Checks**
- **Purpose**: Maintain code quality.
- **Action**: On push, the CI/CD system, e.g., GitHub Actions, triggers checks on altered lines/files.

### 5. **Conditional Automatic Merging**
- **Purpose**: Speed up code integration.
- **Action**: If tests pass, the system auto-merges the branch into the main.

### 6. **Deployment Block with Implicit Dual Review**
- **Purpose**: Use comments as a gate to ensure human-reviewed quality.
- **Action**: Anyone can comment or address comments. However, for deployment to proceed, every comment must be marked as resolved. A non-author must leave a comment and a different non-author must mark it as resolved.

### 7. **Release to Production**
- **Purpose**: Deliver quality code to end-users.
- **Action**: After comments are resolved, the CI/CD system deploys changes to production.

**Conclusion**

In a tech landscape that often prioritizes speed, the methodology presented here champions a balance. It underscores the essential interplay between automated processes and the irreplaceable touch of human oversight through a dual-reviewer system. This strategy is more than just efficient development; it's about upholding quality, fostering collaboration, and ensuring that every piece of code is a testament to excellence. While there might be challenges in fully realizing this approach, its transformative potential for software development practices is profound. As you reflect on these insights, consider: how might they reshape your own development workflows?
Book Club: Eloquent JavaScript. 1 Welcome
Tags: discuss, books, algorithms, bookclub
Published: 2023-10-12 09:55:50

---
title: Book Club: Eloquent JavaScript. 1 Welcome
published: true
description: Book Club discussion for Eloquent JavaScript by Marijn Haverbeke
tags: [discuss, books, algorithms, bookclub]
series: book club Eloquent JavaScript
---

Welcome to this tech book club! I'd love for you to join me reading this title. I've chosen this book after it was suggested by [Chris](https://dev.to/quii), who thought it would be a good topic for me as I move into more front-end development.

## **Eloquent JavaScript** A Modern Introduction to Programming, by Marijn Haverbeke

![Tentacles and chess pieces](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lt0oyvvs19zvhhk7ahi7.png)
<figcaption>Illustration by <a href="https://www.madalinatantareanu.com">Madalina Tantareanu</a></figcaption>

### About the book

> _Eloquent JavaScript_ dives deep into the JavaScript language to show you how to write beautiful, effective code. 
> ...

> You start by learning the basic structure of the JavaScript language as well as control structures, functions, and data structures to help you write basic programs. Then you’ll learn about error handling and bug fixing, modularity, and asynchronous programming before moving on to web browsers and how JavaScript is used to program them.

- Published by [no starch press](https://nostarch.com/ejs3) where you can buy the book in paperback.
- Or read for **free** online at [eloquentjavascript.net](https://eloquentjavascript.net/).

### About the Author

> **Marijn Haverbeke** is a programming language enthusiast and polyglot. He's worked on a wide range of software systems, from databases to compilers to editors. He runs a small business around his open source projects.

## Reading Information

The book has 21 chapters and approx 481 pages.
My copy is the online 3rd edition.
The book is divided into 3 parts (language, browser, node) and an introduction

> All source code is available online in an interactive sandbox, where you can edit the code, run it, and see its output instantly.

The code examples and sandbox are at [eloquentjavascript.net/code/](https://eloquentjavascript.net/code/).

Some translations are available at [eloquentjavascript.net](https://eloquentjavascript.net/)
cetak kemasan
Tags: cetakkemas, cekamsan, box, percetakan
Published: 2023-10-12 09:50:42


kami [salamprin](https://salamprin.com/) dapat menolong Anda dengan info mengenai pengerjaan paket makanan di percetakan. Paket makanan merupakan sisi penting dari branding produk serta mengontrol keamanan makanan. Rata-rata, sejumlah langkah buat bikin paket makanan mencakup:

**Design:**
Pertama, Anda butuh merencanakan design paket yang memikat serta sama dengan merk Anda. Ini terhitung pemilihan warna, simbol, info produk, serta unsur design yang lain.

**Bahan Paket:**
Tentukan bahan yang cocok untuk paket makanan Anda. Ini dapat berwujud karton, plastik, kertas, atau bahan yang lain bergantung di model makanan serta kepentingan Anda.

**Percetakan:**
Sesudah design serta bahan paket diputuskan, Anda bisa mengabari percetakan untuk membuat paket Anda. Pastini untuk memperjelas detail secara jelas pada percetakan, terhitung ukuran, model kertas, serta jumlah yang dibutuhkan.

**Finishhing:**
Beberapa paket barangkali membutuhkan finishhing seperti laminasi atau cetakan privat untuk berikan dampak tersendiri.

**Percetakan Umum**: 
Sesudah contoh paket dibuat serta disepakati, Anda bisa lakukan cetakan umum untuk stok paket makanan Anda.

Kualitas serta Keselamatan: Pastini paket Anda penuhi standard keamanan makanan serta tak meneror kualitas produk Anda.

Disamping itu, juga perlu untuk menimbang unsur lingkungan dengan pilih bahan paket yang ramah dengan lingkungan kalau mungkin. Mudah-mudahan info ini berguna untuk Anda pada proses pengerjaan paket makanan.
Preserve Your Wedding Memories: The Royal Touch at Your Local Dry Cleaner Shop
Published: 2023-10-12 09:49:40

**Introduction:**
Every wedding is a special occasion, filled with love, joy, and unforgettable memories. One of the most significant elements of any wedding is, of course, the wedding dress. Just like the iconic royal wedding of Kate Middleton and Prince William, your wedding dress should be preserved and cared for with the utmost attention to detail. In this blog, we'll explore how a local dry cleaner shop can provide the royal treatment for your wedding dress, all while keeping costs in check.

**The Royal Inspiration**:
The wedding of Kate Middleton and Prince William in 2011 captured the world's attention. Kate's stunning wedding dress, designed by Sarah Burton for Alexander McQueen, was a work of art. It was made from satin and lace, featuring intricate floral motifs, and featured a long train. The dress was a true masterpiece, and it has since become an iconic piece of fashion history.

Just like Kate's dress, your wedding gown holds immense sentimental value. It's a symbol of love and commitment, and you want to ensure it remains in pristine condition for years to come. Here's how your local dry cleaner can help you achieve that royal touch without breaking the bank.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ea7wheei2ss3vfvoze2.jpg)
1.** Professional Cleaning**:
After your wedding, your dress will likely have some stains, dirt, or makeup marks. Trusting a[ professional dry cleaner](https://www.ducanedrycleaners.uk/wedding-dress-dry-cleaning/) is crucial to ensure these blemishes are expertly removed. Local dry cleaner shops often offer specialized wedding dress cleaning services to cater to delicate fabrics and intricate details, just like Kate's dress.

2. **Preservation:**
To maintain the integrity of your gown, ask your dry cleaner about preservation services. They will carefully fold and package your dress in acid-free tissue paper and an archival-quality box, protecting it from dust, light, and humidity. This will ensure that your dress stays as beautiful as the day you wore it.

3. **Repairs and Alterations:**
If you need any minor repairs or alterations to your dress, a skilled dry cleaner can make the necessary adjustments. Whether it's fixing a torn hem or adjusting the fit, they will help you achieve the perfect look.

4. **Cost-Effective Options**:
Contrary to what you might think, preserving your wedding dress doesn't have to break the bank. Many local dry cleaners offer affordable wedding dress cleaning and preservation packages, making it accessible to brides with various budgets.

**Conclusion:**
Your wedding dress is more than just a piece of clothing; it's a cherished memory that should be preserved and treasured. By entrusting your gown to a local dry cleaner shop, you can give it the royal treatment it deserves, just like Kate Middleton's iconic wedding dress. Plus, you can do so without worrying about excessive expenses. So, if you're looking to keep your wedding memories alive, visit your local dry cleaner shop and give your dress the care it deserves.
Azure App Proxy Header Based SSO not passing headers to WebAPP
Tags: nginx, azure, authentication
Published: 2023-10-12 09:36:06

One of my customer wanted to implement SSO with Azure App Proxy, they had a requirement to display the username, and persist the username and user email back to the cosmos db to retrieve in future for further use cases.

**Issue faced.**
Headers sent from App Proxy was not reaching the webapp.

We had an architecture similar to below one.

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

**Checks done**
First point of check was to intercept App proxy traffic and we indeed confirmed headers are being send from there.

Second check was in nginx, from which the React UI is served. It looked like nginx was not forwarding the headers.

We did the following changed in ngnix.conf and it started flowing.

```
        location / {
            root /app/www/;
            add_header UserUPN $http_userupn;
            add_header UserDisplayName $http_userdisplayname;
        }
```


**Second Issue**
Another issue we faced was , the react UI was not able to fetch the response header, since it was loaded by nginx and no back end api calls are made as well during the load. We got were able to retrieve the headers after doing another get from the app proxy , but it was a round trip again. We finally overcame it by injecting the headers to response html meta headers using nginx using `sub_filter  `, and made react to read the dom and query the meta headers.

```
        location / {
            root /app/www/;
            add_header userupn $http_userupn;
            add_header userdiplayname $http_userdisplayname;
            sub_filter '</head>' '<meta name="userupn" content="$http_userupn" />\n<meta name="userdisplayname" content="$http_userdisplayname" /></head>';
            sub_filter_once off;
        }
```


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

```
  React.useEffect(() => {
    // Select all meta elements in the document's head
    const metaElements = document.head.querySelectorAll('meta');

    // Loop through the meta elements and extract values
    metaElements.forEach((meta) => {
      const name = meta.getAttribute('name');
      const content = meta.getAttribute('content');

      // Check for the "userupn" and "userdisplayname" meta tags
      if (name === 'userupn') {
        setUserUpn(content || 'User Upn Not Found'); // Set the userUpn state
      } else if (name === 'userdisplayname') {
        setUserDisplayName(content || 'User'); // Set the userDisplayName state
      }
    });
  }, []);
```
Supercharge Your Python Projects with Virtual Environments
Tags: webdev, beginners, programming, tutorial
Published: 2023-10-12 09:35:53

# Supercharge Your Python Projects with Virtual Environments

When working on Python projects, managing dependencies and isolating project environments is crucial. Virtual environments provide a powerful solution to avoid conflicts and maintain a clean development environment. In this guide, we'll explore the importance of virtual environments and how to use them effectively.

## What are Virtual Environments?

A virtual environment is an isolated Python environment where you can install packages and dependencies specific to a project. This ensures that each project has its own set of dependencies without interfering with the global Python environment.

## Setting Up a Virtual Environment

### Using `venv`

Python 3 comes with a built-in module called `venv` for creating virtual environments. Open your project directory in the terminal and run:

```bash
python -m venv venv
```

This command creates a virtual environment named `venv` in your project directory.

### Activating the Virtual Environment

On Windows, activate the virtual environment using:

```bash
venv\Scripts\activate
```

On Unix or MacOS:

```bash
source venv/bin/activate
```

You'll see the virtual environment name in your terminal prompt, indicating that it's active.

## Managing Dependencies

Once your virtual environment is active, use `pip` to install dependencies:

```bash
pip install package-name
```

This installs the package within your project's virtual environment, keeping dependencies separate from the global Python installation.

## Freezing Dependencies

To freeze the list of dependencies and their versions, use:

```bash
pip freeze > requirements.txt
```

This creates a `requirements.txt` file containing a snapshot of your project's dependencies. Others can recreate your environment using:

```bash
pip install -r requirements.txt
```

## Deactivating the Virtual Environment

When you're done working on your project, deactivate the virtual environment with:

```bash
deactivate
```

## Conclusion

Virtual environments are essential for Python development, providing a clean and isolated space for each project. By incorporating them into your workflow, you'll ensure smooth collaboration and avoid compatibility issues. Supercharge your Python projects with virtual environments today!
🌟 Discover the world of stunning web themes! 🌟
Tags: javascript, css, frontend, html
Published: 2023-10-12 09:33:41

**Join us on Themeforest!** **[Follow our profile](https://codecanyon.net/user/bitrixinfotechpvtltd)** for endless design inspiration and stay updated with the latest web theme releases. Let's transform your digital world together! 🚀💻
Configure a privately hosted Git repository for EMR Studio
Tags: emr, eks, aws
Published: 2023-10-12 09:13:02

By default, you can access GitHub and GitLab from the studio workspace. If you are using a private Git repository, follow these steps:

1. [Create a Studio](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-create-studio.html): You should use a VPC with private subnets that have a NAT gateway to enable communication with the internet. 
2. Ensure that the security group for the default workspace has an outbound rule allowing HTTPS traffic on port 443 to the destination 0.0.0.0/0
3. [Create VPC Endpoint](https://docs.aws.amazon.com/emr/latest/ManagementGuide/interface-vpc-endpoint.html):

- Make sure the endpoint uses private subnets.

- Confirm that the security group attached to the endpoint allows inbound rules for HTTPS traffic on port 443 with the source set to either "Your VPC Address" or "0.0.0.0/0".
4. Upload the following configuration file into your Amazon S3 storage location that is used for your Studio in a folder called life-cycle-configuration:
s3://BUCKET-NAME/life-cycle-configuration/configuration.json


GitServerDnsName - The DNS name of your Git server. For example "git.example.com".

GitServerIpV4List - A list of IPv4 addresses that belong to your Git servers, the example VPC CIDR is 10.0.0.0/16, [DNS](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) is 10.0.0.2

```
[
    {
        "Type": "PrivatelyHostedGitConfig",
        "Value": [
            {
                "DnsServerIpV4": "10.0.0.2",
                "GitServerDnsName": "git.example.com",
                "GitServerIpV4List": [
                    "1.2.3.4"
                ]
            }
        ]
    }
]
```

"If you are facing issues, you may need to stop the workspace and start it again."
Functions in JavaScript quiz
Published: 2023-10-12 09:06:40

🚀 Exciting News! We're thrilled to announce the launch of our brand-new quiz on jshive.com! 🎉 
A journey through JavaScript Functions quiz, from defining to invoking functions, understanding function properties and methods, and even touching on anonymous functions, String Methods, and Math functions.
Test your knowledge, challenge your friends, and have fun. Join the quiz adventure today! ✨ 
https://jshive.com/quiz/functions-in-javascript
I created a PaaS Around Hetzner
Tags: hetzner, devops, cicd, docker
Published: 2023-10-12 09:00:00

When it comes to European hosting providers, I think Hetzner is one the best and cheapest options out there. I've been hosting a bunch of Nodejs projects inside docker containers on their servers for several years now and rarely ran into issues.

Big problem tough: you need to setup everything yourself... 

They only provide you a blank VPS.

Setting it up and managing your applications can eat up loooooots of time. 

That's why I created a PaaS around Hetzner and made it public.

Check it out on [sliplane.io](sliplane.io?utm_source=paas-around-hetzner)

Looking forward for your feedback :-)
The Birth of Rico - A Journey from Job Seeker to Solution Creator
Tags: career, discuss, productivity, learning
Published: 2023-10-12 09:00:00

> Sometimes, the brightest solutions emerge from sheer necessity. My journey with Rico began during a pivotal phase in my career, and it's a story I'm excited to share.

**In Pursuit of Opportunities:**
It all started during my time at BeCode, a period every aspiring developer is intimately familiar with - the job hunt. The last two months of my training were dedicated to a relentless search for internships or job offers, but success remained elusive. I revamped my CV and decided to create a basic version of [Rico](https://ricosaas.eu/). The goal? To scrape job listings and filter them based on companies offering internships. Little did I know that this small experiment would later become my key to unlocking countless opportunities.

**The Genesis of Rico:**
As I fine-tuned my makeshift tool, something unexpected happened. I began discovering numerous job listings that piqued my interest. There was a catch, though - the volume was overwhelming. Sorting through them was a daunting task. To address this problem, I introduced an email automation feature that streamlined my application process. Before I knew it, I found myself going through interviews, more interviews than I'd ever imagined.

![4 Interviews for 1 week were a lot for me as a junior.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2tadjum2mx4tcxqi6kyj.png)

> 4 Interviews for 1 week were a lot for me as a junior.


**The Turning Point:**
With my internship secured, I temporarily put [Rico](https://ricosaas.eu/) aside, having achieved my immediate goal. But at the end of my internship, I was faced with the next challenge: finding a job. Job hunting for junior developers can be a formidable task, and this is where the idea for [Rico](https://ricosaas.eu/) as we know it today was conceived.

**Rico's Mission:**
[Rico's](https://ricosaas.eu/) vision is to empower job seekers by providing a streamlined, efficient, and automated solution. It aims to eliminate the hassles of job searching, save time, and open the doors to opportunities that would otherwise remain hidden.

My journey reflects the resilience and creativity every job seeker must muster in a competitive job market. [Rico](https://ricosaas.eu/) was my response to a problem that many of you have likely encountered. If you're looking for opportunities in the tech industry, [Rico](https://ricosaas.eu/) is here to simplify your journey and help you reach your goals. Join the waitlist and unlock the power of [Rico](https://ricosaas.eu/)!
I hate Ramda.
Tags: rant
Published: 2023-10-12 08:56:33

Why would anyone code like this?

```ts
R.compose(
      R.ifElse(R.includes(R.isNil), R.always(null), R.identity),
      R.map(R.path(['order'])),
    )(ordersCreateData)
```

It's also slower than normal JS, and is so hard to understand.

Here's the JS equivalent

```ts
const orders = ordersCreateData.map(item => item.order);
if (orders.includes(null) || orders.includes(undefined)) {
    orders = null;
}
```
Less is better - the pitfalls of Tech Bloat
Tags: softwaredevelopment, webdev, tooling, programming
Published: 2023-10-12 08:54:51

> ⚡️Tech bloat is a term used to describe the excessive use of technologies in a software project.

_It's tempting to believe that piling on more technologies is the path to success. However, the reality paints a different picture. Your tech stack, resembling an Eiffel tower, might seem impressive, but beneath the surface, it's a breeding ground for complications and inefficiencies._

---

## Problem - Tech Bloat trend
The prevailing trend in the programming world is to stack layers of packages for even the most basic tasks. Simple components like alert modals and forms, once straightforward, are now bundled into massive packages. However, the hidden cost surfaces in the form of bloated code, longer debugging cycles, and an increasingly steep learning curve for newcomers.

### Consequences of Tech Bloat
- **Longer Development Time**: bloated packages mean longer development cycles, with debugging becoming a labyrinthine challenge.
- **Increased Complexity**: each added layer brings complexity, making it difficult to understand the dependencies and slowing down your team.
- **Barriers to Collaboration**: Overly complex tech stacks create barriers, hindering collaboration and making it hard for new team members to contribute meaningfully.
- **Simple Problems, Complex Solutions**: Not every problem needs a complicated solution. Often, simplicity leads to elegant and efficient outcomes.

## Solution - a call for simplicity
So, here's my very subjective advice: deflate your tech stack. Resist the allure of excess languages, frameworks, or libraries. Embrace simplicity and efficiency. Remember, the goal isn't to showcase your mastery of complex technologies but to create seamless, innovative solutions. By keeping your stack lean, you not only ease your burden but also foster a collaborative environment where ideas flow freely, unburdened by needless complexities.

### Tips for Deflating Your Tech Stack
- **Choose the right tools.** Select tools that fit the task at hand. Avoid complex frameworks for simple tasks.
- **Use focused libraries.** Instead of using a general-purpose library, use a library that is specifically designed for the task you need to do.
- **Keep dependencies updated.** Outdated dependencies can lead to security vulnerabilities and compatibility issues.
- **Remove unused dependencies.** If you're not using a dependency, remove it. This will reduce the size and complexity of your project.

---

## Conclusion

> ⚡️ Remember, **the goal is to create a solution, not a complicated mess**.

By deflating your tech stack, you can write simpler, more efficient code that is easier to maintain and extend.