teleren/devto huggingface dataset:
Tech debt explained
Tags: healthplace, techdebt
Published: 2021-06-16 22:43:09

After a colleague I'm working with questioned me on "why we need to address tech debt", I found myself responding with a technical justification that helped nobody.

After great reflection on that interaction, this article was born. I hope this helps you understand what tech debt is, how it's formed, and the implications of leaving it unaddressed.

## The analogy
Let's start with a familiar concept: the mighty combustion engine car.

The year is 2021 and you've just purchased your new petrol car. This isn't just any car though, this car is special and you plan for it to last you at least 20 years.

But wait! It's now the year 2030 and all of a sudden the combustion engine has been banned _shock and horror_.

So you now decide to upgrade the car by making it electric (this is actually a thing).

Here's the problem, you've only got 2 months before the combustion engine ban comes into effect, but the entire EV conversion is going to take at least 4 months.

So what do you do? You cut corners...

You remove the combustion engine and replace it with an electric motor and a battery. However, the important thing to note is that the rest of the mechanisms supporting the combustion engine remain; things such as the fuel tank and the exhaust pipe.

You're now driving this hybrid Frankenstein around and loving life. But disaster strikes! Global warming has caused temperatures to rise and now you're sweltering in your iron tomb of a car with no hopes of happiness.

So you take it to the garage to get a sweet new AC system installed.

The problem is, the mechanic has quoted you 3 times the usual estimate, simply because it's going to be a pain in the arse to navigate around this beast. She also notices that your fuel tank which you left from your half-completed job has started leaking onto the battery.

By this time it's too late, the cost to get this sorted is going to require you to remortgage your house...

You should have completed the job sooner.

## The summary
Hopefully you enjoyed this epic novel and it made the story of tech debt more relatable.

For the sake of clarity:
* The car is your product
* The combustion engine/mechanism is your existing functionality that needs to be decommissioned
* The electric motor/battery is your new functionality
* The mechanic is your developers
* Global warming is real

## Get in touch
If you have any questions, comment below, and I'll get back to you.

And if you think you'd like to work somewhere like [Health Place](https://healthplace.io), then message me for a chat at [matt@healthplace.io](mailto:matt@healthplace.io).

_Photo by [Eddie Jones](https://unsplash.com/@eddiecreates?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/car-garage?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)_
tsParticles Fireworks Effect 2.0
Tags: codepen, showdev, javascript, html
Published: 2021-06-16 22:39:00

Here's a CodePen sample for [tsParticles](https://particles.js.org) for creating a fireworks effect, soon available in a NPM preset package.

This configuration will work in any component and not only in Vanilla JavaScript, you can use this config also in React, Vue (2.x and 3.x), Angular, Svelte, Riot, Solid, jQuery, Web Components, Inferno and Preact.

{% codepen https://codepen.io/matteobruni/pen/abJQrbK %}

{% github matteobruni/tsparticles %}
Day 389 : Shut It Down
Tags: hiphop, code, coding, lifelongdev
Published: 2021-06-16 22:26:22

_liner notes_:
- Professional : Soooo many meetings today. haha It was good to catch up with everyone. I did get to update the documentation with a code example that will hopefully help others that may run into an issue when listening for a certain event. Felt good to cross that one off the list.

- Personal : Last night I got the tutorials section of the site pretty much complete. Moved onto the HACO section and got a lot of it set up with some placeholder elements. Ran into a snag where I thought I could test things quickly by making a call to an endpoint of a server I put together when I test it before. Nope! CORS shut it down with a quickness. haha I went to sleep.

![Scene of a cove opening into the ocean with grassy land on the sides in China Cove, CA, USA at sunset under cloudy skies.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sneyygzh693jzo1oyoem.jpg)

Going to try and finish up the HACO section of the site. First, I want to tackle people being able to create one. Hopefully it will go smoothly since I already created hack project when I was experimenting when making it before. Just got to translate the code over to Firebase. I also need to work on the listing of the HACOs and how people can join one already made. There will be a invitation system and also the ability to kick people from the room. Hope to get everything pretty much good to go. Back to work.

Have a great night!

peace piece
Dwane / conshus
https://dwane.io / https://HIPHOPandCODE.com
{% youtube AmLVo4L_YWU %}
Empleos en Data y Analytics LATAM — Junio 2021 (18/06)
Published: 2021-06-16 22:24:41

Te compartimos las ofertas laborales del mes para áreas de Data, Analytics y Cloud 👨‍💻👩‍💻

✅ [Data Engineer - Wizeline (Perú)](https://www.linkedin.com/jobs/view/2584395964/?alternateChannel=search&refId=uOrPY3qYLsW5TDwMDSJuCA%3D%3D&trackingId=xwzz1JMkhs%2BbPvQIvszXeA%3D%3D&trk=d_flagship3_search_srp_jobs)
✅ [Data Engineer - Tata Consultancy Services (Colombia)](https://www.linkedin.com/jobs/view/2545842199/?alternateChannel=search&refId=l6KWSJFXOGe%2BJ%2Bzci%2B93mg%3D%3D&trackingId=y6ac87Hcvgx2FZX5NdzVdA%3D%3D&trk=d_flagship3_search_srp_jobs)
✅ [Data Engineer - Itaú Chile (Chile)](https://www.linkedin.com/jobs/view/2588019353/?alternateChannel=search&refId=l6KWSJFXOGe%2BJ%2Bzci%2B93mg%3D%3D&trackingId=Am%2B6odCDlrl1b%2BRcvcAKBA%3D%3D&trk=d_flagship3_search_srp_jobs)
✅ [Data Engineer - Lenovo (Argentina)](https://www.linkedin.com/jobs/view/2529025175/?alternateChannel=search&refId=l6KWSJFXOGe%2BJ%2Bzci%2B93mg%3D%3D&trackingId=t9PudXwbsqqTH93ppBZxCA%3D%3D&trk=d_flagship3_search_srp_jobs)

Aprende, aplica y crece en proyectos de Data y Analytics en Cloud.

Únete al #DataHackChallenge:
👉🌐 https://go.datahacks.ai/challenge
Weird rants of a new Devops + Backend engineer 😤 [17 June 21] 
Tags: opentelemetry, devops, headers, notes
Published: 2021-06-16 22:10:32


Welcome to the weird notes of a new DevOps and Backend engineer. This is my (quite open) notebook on what was all the stuff I read and learnt. Not necessarily tech, you can just read on and understand what I am rambling on about.

### [17 June 2021]
## Stuff I learnt 📝
- Opentelemetry's sentry exporter is pretty cool, even thought it's specifically for traces right now, it does its job well.
- The sidecar architecture for opentelemetry-collector will work the best for a scenario. The engineers thought out the agent, collector interface pretty good. 
- The Traces specification and the TraceID stuff is good too, I just hope there was more sync between the published package and the github repository.

## Stuff I need to check out tomorrow? 📅
- Need to show the instrumentation demo to the lead.
- Probably will need to checkout Elastic APM exporters for these traces.
- See if sentry can support any logging :)

## Stuff I want to work some day in future. 🔭
- Checking how opentelemetry trace back the traces by the ID.
- WTF is going on with those spans? Why do they provide us with new contexts?


Thanks for listening to the rant.

Uddeshya Singh,
Signing off.
Welcome Thread - v129
Tags: welcome
Published: 2021-06-16 21:35:40

---
title: Welcome Thread - v129
published: true
description: Welcome to DEV! A thread of hellos and intros.
tags: welcome
canonical_url: 
---

![dog waving](https://media.giphy.com/media/pcwaLYOQb3xN6/giphy.gif)

### Welcome to DEV!

1. Leave a comment below to introduce yourself! You can talk about what brought you here, what you're learning, or just a fun fact about yourself.

2. Reply to someone's comment, either with a question or just a hello. 👋 

**Great to have you in the community!**
Monster Hunter Weapon Recommendation (CC Portfolio Project)
Tags: python, beginners, github, bash
Published: 2021-06-16 20:37:01

Hello again!

I am currently finishing up the Computer Science pathway on CodeCademy. For the portfolio project I was tasked with making a recommendation program. I have been playing a lot of Monster Hunter Rise lately, so I decided to create a program that will recommend a weapon based on a series of questions. 

As with anything with hard to define criteria, I am sure that other fans of the series might categorize the weapons differently, but I ask that you see this more of a programing project and less off a true definition of each weapon :P

Please take a look at the project on Github and let me know what you think!

https://github.com/TheHamhams/CC-CS-Portfolio-Project/tree/master
How to add Sass support to a Vite React app
Tags: react, webdev, css, javascript
Published: 2021-06-16 20:25:49

After styling React components through CSS-in-JS (JSS) for a while, I came across ["Style React Components: 7 Ways Compared"](https://sitepoint.com/react-components-styling-options/) and decided to switch to my favorite preprocessor, Sass. So, I followed ["Adding Sass to Create React App Applications"](https://scotch.io/starters/react/adding-sass-to-create-react-app-applications#toc-install-node-sass) and ran this:

    yarn add node-sass

That was supposed to work. However, on importing `Login.scss` file into `Login.jsx` with `import './Login.scss'`, I encountered this error:

```
[vite] Internal server error: Preprocessor dependency "sass" not found. Did you install it?
```

Turns out this project was using something called [Vite](https://vitejs.dev) and so I have to find a way to make Sass work with Vite. I googled and found Vite mentioning [CSS Pre-processors support on their docs](https://vitejs.dev/guide/features.html#css-pre-processors) and this article titled ["What is Vitejs? An Overview of the New Front-end Build Tool"](https://sitepoint.com/vitejs-front-end-build-tool-introduction/) suggesting `npm install sass --save-dev`. I referred [yarn-install docs](https://classic.yarnpkg.com/en/docs/cli/install/) and converted it for yarn:

    yarn add sass --dev

Now my Sass styles started working! So, I guess Vite needed a different approach than the usual React method. To make sure `node-sass` isn't used at all, I removed it:

    yarn remove node-sass

and everything seems to work so far. In case I find anything breaking later, will update here. Happy sass'ing! 😁


##Credits & Sources
Cover image made from logos of [Sass](https://commons.wikimedia.org/wiki/File:Sass_Logo_Color.svg), [Vite](https://vitejs.dev) and [React](https://commons.wikimedia.org/wiki/File:React-icon.svg)
Implement Chain of Responsibility/Commands in C# Using ChainRunner
Tags: csharp, dotnet, programming, designpatterns
Published: 2021-06-16 20:24:33

I have been working on an ASP.NET Core Web API application which is responsible for users' comments. The application receives new comments and based on multiple business criteria decides to whether reject or censor them. In nutshell, each new comment must go through the following steps:

* Censor curse words
* Modify incorrect words
* Reject if it has improper tone

The steps are not that complex and must be executed sequentially. To implement these steps, I decided to go for [chain of responsibility pattern](https://refactoring.guru/design-patterns/chain-of-responsibility). However, I could not find a simple and proper library to implement this pattern so I created a library called [ChainRunner](https://github.com/litenova/ChainRunner) to make all this work.

![ChainRunner Flow Diagram](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uqeb1odvyiizaiz6vqb2.jpg)

The picture depicts how ChainRunner works

## Implementation
Below you can seee how I used ChainRunner to implement the steps. For each step I created a responsibility handler:

```c#
public class CensorCurseWordsHandler : IResponsibilityHandler<Comment>
{
    public Task HandleAsync(Comment request, CancellationToken cancellationToken = default)
    {
        // process comment ...
    }
}

public class ModifyIncorrectWordsHandler : IResponsibilityHandler<Comment>
{
    public Task HandleAsync(Comment request, CancellationToken cancellationToken = default)
    {
        // process comment ...
    }
}

public class ImproperToneHandler : IResponsibilityHandler<Comment>
{
    public Task HandleAsync(Comment request, CancellationToken cancellationToken = default)
    {
        // process comment ...
    }
}

```



Then, I configured the chain in Startup.cs (ASP.NET Core):



```c#
services.AddChain<Comment>()
    	.WithHandler<CensorCurseWordsHandler>()
    	.WithHandler<ModifyIncorrectWordsHandler>()
    	.WithHandler<ImproperToneHandler>();
```


Finally, I injected the chain into my class and ran the chain like so:

```c#

[ApiController]
[Route("[controller]")]
public class CommentController
{
    private readonly IChain<Comment> _chain;

    public CommentController(IChain<Comment> chain)
    {
        _chain = chain;
    }

    [HttpPost]
    public async Task<IActionResult> Post(Comment comment)
    {
        await _chain.RunAsync(comment);

        return Ok();
    }
}
```

## Links

* [GitHub](https://github.com/litenova/ChainRunner)
* [NuGet](https://www.nuget.org/packages/ChainRunner)
A YouTube interview with Dennis Ivy who sold his site for $40k
Tags: beginners, webdev, youtube
Published: 2021-07-06 16:19:00

---
title: A YouTube interview with Dennis Ivy who sold his site for $40k
published: True
date: 2021-06-16 20:17:17 UTC
tags: Beginner, Webdev, YouTube
canonical_url: https://www.nocsdegree.com/youtube-interview-dennis-ivy/
---

 ![A YouTube interview with Dennis Ivy who sold his site for $40k](https://www.nocsdegree.com/content/images/2021/06/Dennis-Ivy-YouTube-interview.png)

I recently had a catch-up with Dennis Ivy, a self-taught web developer friend of mine who works mostly with Django, a Python framework. His YouTube channel has blown up in the last year or so from 3,000 to 118,000 subscribers! He has a lot of great Django tutorials in particular and he is well worth a watch: https://www.youtube.com/watch?v=jK-jES9MYWI

Dennis has also successfully sold a website for $40k back to the company he was contracting for and has lots of tips for freelance web developers. He also gives advice on imposter syndrome, the benefits of starting a YouTube channel for developers and the common mistakes he says beginner programmers make. I hope you enjoy the video!

<iframe width="200" height="113" src="https://www.youtube.com/embed/jK-jES9MYWI?start=687&amp;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
CGI::Tiny - Perl CGI, but modern
Tags: perl, cgi
Published: 2021-05-30 21:44:36

In a [previous blog post](http://blogs.perl.org/users/grinnz/2018/11/modern-perl-cgi.html), I explored the modern way to write CGI scripts using frameworks like [Mojolicious](https://mojolicious.org). But as pointed out in comments, despite the many benefits, there is one critical problem: when you actually need to deploy to a regular CGI server, where the scripts will be loaded each time and not persisted, frameworks designed for persistent applications add lots of overhead to each request.

CGI scripts have historically been written using the [CGI](https://metacpan.org/pod/CGI) module (or even more ancient libraries). But this module is bulky, crufty, and has serious design issues that led to it being [removed from Perl core](https://metacpan.org/pod/CGI#CGI.pm-HAS-BEEN-REMOVED-FROM-THE-PERL-CORE).

Enter [CGI::Tiny](https://metacpan.org/pod/CGI::Tiny). It is built for one thing only: serving the CGI protocol. In most cases, frameworks are still the right answer, but in the case of scripts that are forced to run under the actual CGI protocol (such as shared web hosting), or when you want to just drop in CGI scripts with no need to scale, CGI::Tiny provides a modern alternative to CGI.pm. You can explore the [interface differences from CGI.pm](https://metacpan.org/pod/CGI::Tiny#COMPARISON-TO-CGI.PM) or [suggested ways to extend CGI::Tiny scripts](https://metacpan.org/pod/CGI::Tiny::Cookbook).

So without further ado, here is the equivalent CGI::Tiny script to my previous blog post's examples:

```perl
#!/usr/bin/env perl
use strict;
use warnings;
use CGI::Tiny;

cgi {
  my $cgi = $_;
  my $input = $cgi->param('input');
  $cgi->render(json => {output => uc $input});
};
```
The Beginner's Guide to Declaring Variables in JavaScript
Tags: javascript, beginners
Published: 2021-06-16 20:10:30



If you're new to programming and new to javascript, it can be confusing when to use the three declaration key words. We're going to talk about when to use `const`, `let`, and why you should never use `var` to declare variables. Hopefully by the end of this post, you'll be an expert.

##Brief History
Before ECMAScript 2015 - ES6 there was only `var`, but people found problems with var because you could easily overwrite variables without knowning it.  So `const` and `let` were introduced.  But first let's look at the particular problems of `var`.

##Problems with `Var`
Let's say you are writing some code about books, and so you assign a variable called `book` to "Harry Potter", but later in you code you forget you already used `book` as a variable so you assign `book` to "Lord of the Rings". And then a third time you assign `book` to "The Hobbit". So now you've just overwritten the variable 2 times. 
```
var book = "Harry Potter"

//Now book = "Lord of the Rings"
var book = "Lord of the Rings"

//And now book = "The Hobbit"
book = "The Hobbit"

book
--> "The Hobbit"
```

Since `var` is unreliable, we should never use it. If you need to declare a variable use `const`.

##When in Doubt, Use `const`
`const` is the most strict with declaratation, a variable can only be assigned once, and it can't ever be changed.

```
const x = 0

const x = 5
---> SyntaxError: Identifier 'x' has already been declared

x = 5
---> TypeError: Assignment to constant variable.
```
`const` is your friend, it'll save you countless hours searching for a bug because that can be prevented by just using const.

##When to just `let` it be
When we use `let` we are declaring a variable that we plan on changing later.  The best example is if we need to use a variable as a counter.

```
let x = 5
----> 5

x + 1
---> 6

x = 2
----> 2

let x = 2
----> SyntaxError: Identifier 'x' has already been declared
```

##In Conclusion
-When in doubt of which one to use, use `const`.
-Use let when you know the variable's contents are going to be added to or changed in some form.
-Never use var.
Find the Root Cause Faster with Trace View and Quick Trace
Published: 2021-06-16 19:56:48

Like a bratty teenager, traditional monitoring answers your questions, but does so in a terse, unhelpful manner:

Why is my page slow? </br>
*Guess it’s the API call. It’s a 504 thing — you wouldn’t understand.*

Ok, so why is the API call slow? </br>
*Ask your DB query. Gosh!*

You need a better conversation with your code — one which gives you contextual clues about your application’s performance. And that’s what we’ve delivered with our new [Trace View and Quick View](https://docs.sentry.io/product/sentry-basics/tracing/trace-view/) features.

## Connect your slow-loading dots with Trace View
Trace View gives you a throughline between transactions across all your projects. Now you can follow poor performance to its root cause by drilling down into the details of a single trace as well as crisscrossing between front- and back-end transactions in that trace. 

For example: say you have a React single-page app, and it makes a call to a backend API in Python, which then queries the database. By using Trace View, you can see how your code progresses from the initial call to the final query — and see how related errors react to each other in context. 


## Tl;dr your errors with Quick Trace
You don’t read logs — you scan them. So why should your application monitoring be any different? Quick Trace gives you the context you need to see details at a glance as well as get visibility into the bigger picture. Our Quick Trace minimap helps you navigate related errors and children transactions. With it, you can flit between related errors and performance issues while also being able to order metadata like device, OS, and browser. 



Developers know that there’s no such thing as an isolated issue. Many of your frontend errors will have roots in your backend infrastructure — and vice versa. With our new [Trace View and Quick View](https://docs.sentry.io/product/sentry-basics/tracing/trace-view/), you’re able to see the problem clearly — so that you can solve it quicker.  

Try Sentry for [free](https://sentry.io/orgredirect/try-business/) today or contact us at [sales@sentry.io](mailto:sales@sentry.io) to get started.
Appcircle Release Notes, 2.2.0 - 2021-06-16
Published: 2021-06-16 19:49:40

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wukuxcsazwa06b18v8kx.png)

2.2.0 - 2021-06-16 - Xcode Version and CLI Improvements

This release includes the new Xcode 13.0, a new CLI look&feel and marketplace to peek workflows as a bulk.

> ###Important Update for iOS Developers
>Since April 26, Apple removed the support of Store Submission for pre Xcode 12.0 and iOS SDK 14.0 compiled apps. Make sure that your Xcode version is greater or equal to Xcode 12.0 under your repository config.
More info is located under: [https://developer.apple.com/news/?id=ib31uj1j](https://developer.apple.com/news/?id=ib31uj1j)

###🆕 [New Features](https://docs.appcircle.io/updates/release-notes#new-feature) 
* You can specify which Xcode version to use on your builds. This can also be specified on the repository and will be seamlessly fetched from the relevant repository during the Fetch Details Process. Available versions: 13.0, 12.5, 12.4, 12.3, 12.2, 12.1, 12.0, 11.7, 11.6, 11.5, 11.4, 11.3, 11.2, 11.1 and 11.0
  
    * Latest Xcode 13 beta is used on 13.0.x
* [Appcircle CLI](https://www.npmjs.com/package/appcircle-cli) has a fresh look&feel and lots of new features along with it.
* [Export Build Artifacts](https://docs.appcircle.io/workflows/common-workflow-steps#export-build-artifacts) has been added for a separate step. You can remove this step and upload your files elsewhere if your artifacts have a need to be on-premise.
* [Setting build status updates](https://docs.appcircle.io/build/building-ios-applications#sending-the-build-status-to-the-repository-providers) to the repository providers - You can now send updates about a commit to the repository providers for a complete CI/CD experience.
* A new workflow setting, Always run this step even if the previous steps fail has been added. The steps which has this enabled will always run.
* [Appcircle Marketplace](https://appcircle.io/workflow-marketplace/) has been released. Checking which features are supported built-in has never been easier!

###:muscle: Improvements
* iOS Build Servers are optimized to reduce the queue time & better performance.
* Added better icons for Git providers when connecting to the repository.
* Whitelist IPs are under update process, you can follow the process under [Accessing Repositories in Internal Networks](https://docs.appcircle.io/infrastructure/accessing-repositories-in-internal-networks-firewalls) document.

###🐞 Fixed

* Fixed a bug that the same commit not appearing on multiple branches.
* Fixed a bug that new SSH connections being unable to fetch config.