teleren/devto huggingface dataset:
Fix Let’s Encrypt Root Certificate DST Root CA X3 expired (OpenSSL 1.0.2)
Tags: openssl, ssl, linux, letsencrypt
Published: 2021-10-04 12:31:09

![letsencrypt](https://garutilorenzo.github.io/images/letsencrypt.png)

If you are experiencing problems reaching https sites with let's encrypt certificate try to check your CA cert trusted bundles.
On most linux distributions there is a package named ca-certificates, this package provide the CA cert trusted bundles.

The cert bundles are under /etc/ssl/certs directory.

To solve the problem with DST Root CA X3 certificate you can:

* try to check if there is a new version of the ca-certificates package
* remove/blacklist the DST Root CA X3

To remove/blacklist the DST Root CA X3:

* ubuntu:
  * sudo rm /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
  * sudo update-ca-certificates
* centos/redhat:
  * vim /etc/pki/ca-trust/source/blacklist/X3.crt
  * paste the content of DST Root CA X3 (**DST Root CA X3 )
  * update-ca-trust

****DST Root CA X3**

```
# DST Root CA X3 (expired)
-----BEGIN TRUSTED CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQMBwwCgYIKwYBBQUHAwEMDkRT
VCBSb290IENBIFgz
-----END TRUSTED CERTIFICATE-----
```

For more information:

* [OpenSSL blog post](https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/)
* [Let’s Encrypt docs](https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/)
* [Let’s Encrypt certificate compatibility](https://letsencrypt.org/docs/certificate-compatibility/)
* [Let’s Encrypt Chain of trust](https://letsencrypt.org/certificates/)
How to Use the VoiceOver Screen Reader
Tags: webdev, a11y, beginners, tutorial
Published: 2021-10-04 12:26:15

If you are a frontend software engineer building web applications, accessibility is an essential component to keep in mind. While there are many automated tools out there that can help you in your accessibility efforts, none of these are adequate replacements for simple manual testing with a keyboard and with a screen reader.

Therefore, frontend engineers need to learn how to use a screen reader.

Screen readers are assistive technology that help blind or low-vision users to navigate their computers. VoiceOver is a screen reader that ships with the operating system on every Mac.

If you’re not familiar with screen readers, learning how to use one can feel like a daunting task. But, it’s actually not that hard to get started! By learning just a few simple commands, you can be navigating your web app in no time.

In this article we’ll go over some of the most common VoiceOver commands to help you get started.

---

## VoiceOver Keyboard Shortcuts

The following are the keyboard shortcuts you would normally use when navigating a web page using VoiceOver.

* `Command + F5` - Start or stop VoiceOver

* `Control + Option + Right/Left Arrows` - Navigate to the next/previous item on the page

* `Control + Option + Shift + Up/Down Arrows` - Drill up/down on an element

* `Control + Option + Space` - Click or interact with an element

* `Control + Option + Command + H` - Navigate to the next heading

* `Control + Option + Command + L` - Navigate to the next link

* `Control + Option + Command + X` - Navigate to the next list

* `Control + Option + Command + G` - Navigate to the next image

* `Control + Option + Command + J` - Navigate to the next form field (buttons, checkboxes, comboboxes, radio buttons, text inputs, etc.)

* `Tab` - Navigate to the next focusable element

* `Control` - Stop VoiceOver from reading

* `Control + Option + U` - Open the web rotor for quick access to various page content

To go backwards with many of these commands, you can hold `Shift` while pressing the keys.

---

## Conclusion

That’s it! During 90% of my navigation with a screen reader, I find myself using just a few of the commands listed above. I’ll turn on VoiceOver with `Command + F5`, navigate through the page using `Control + Option + Right/Left Arrows`, and interact with clickable content using `Control + Option + Space`. Just about every other command on that list is just bonus content to help you skip around the page even more efficiently.

For a complete list of VoiceOver keyboard shortcuts, feel free to check out either of these two wonderful guides created by [WebAIM](https://webaim.org/articles/voiceover/) and by [Deque](https://dequeuniversity.com/screenreaders/voiceover-keyboard-shortcuts).

Thanks for reading, and thanks for being an accessibility advocate!
Durable functions Fan Out Fan In
Tags: help
Published: 2021-10-04 12:19:21

•	Takes a root Directory value as an input parameter.
•	Calls a function to get a recursive list of files under root Directory.
•	Makes multiple parallel function calls to upload each file into Azure Blob Storage.
•	Waits for all uploads to complete.
•	Create a table File Info(id, root Directory, File Name, Extension, Created Date, Created BY) in DB
•	Save the each file details in the table.
•	Retrieve all the files saved Today and save it on another blob.
•	Returns the sum total bytes that were uploaded to Azure Blob Storage.
Is your project finished?
Tags: softwaredevelopment, teamwork, agile
Published: 2021-10-04 12:06:57

---
title: Is your project finished?
published: true
date: 2021-10-04 12:03:47 UTC
tags: softwaredevelopment,teamwork,agile
canonical_url: https://medium.com/chingu/is-your-project-finished-ff977e68f21
---

#### Sprint 6 — Monday

![](https://cdn-images-1.medium.com/max/1024/1*6zQ3xZr79vm4s6g4D_T7Bg.jpeg)<figcaption>Photo by <a href="https://unsplash.com/@brett_jordan?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Brett Jordan</a> on <a href="https://unsplash.com/s/photos/done?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption>

So, you are entering the last Sprint of your project and you are almost done! _But are you really finished?_

For a project to be truly **_done_** you need to ensure that the following have been completed:

- All of the features you added to your definition of the _minimum viable product (MVP)_ must be completed
- All features should function as expected and shouldn’t have bugs or unintended side effects
- Your readme should be up-to-date and accurately [describe and provide guidance](https://medium.com/chingu/keys-to-a-well-written-readme-55c53d34fe6d) to those who will be maintaining or contributing to the project.
- The app must be deployed to a production server and tested **_before_** releasing it to users. (If you’ve been following the [Agile Methodology](https://medium.com/chingu/a-short-introduction-to-the-scrum-methodology-7a23431b9f17) this is something you should have been doing at the end of each sprint)

Although the final Sprint in a project is one of the most stressful and brings a lot of pressure to release the final product it’s also important to resist the temptation to release before it’s ready.

> It’s one thing to trim scope to meet a deadline and quite another to release a defective product.

Remember that one of the most valuable assets to any development team is the relationship you’ve built with your users. The last thing you want to do is to release a buggy product that surprises your users and damages the relationship you’ve worked hard to build with them.

Being “done” is different than being “perfect”. But, what each should have in common is they must deliver tangible value and meet user needs.

Once you have finished you should also take the time to reflect on the experience individually **_and_** with your team, and _take the time to Celebrate your Success!_

![](https://cdn-images-1.medium.com/max/355/0*oFLhlHfmOQSo5tpq.png)

### Before you Go!

Chingu helps you to get out of “_Tutorial Purgatory_” by transforming what you’ve learned into experience. The experience to boost your Developer career and help you get jobs. **_And it’s Free!_**

You can learn more about **Chingu** & how to join us at [https://chingu.io](https://chingu.io/)

* * *
A Quick 10-Second Programming Joke For Today
Tags: jokes, dailydeveloperjokes
Published: 2021-10-04 12:00:05

---
title: "A Quick 10-Second Programming Joke For Today"
description: "Check out today's daily developer joke! (a project by Fred Adams at xtrp.io)"
series: "Daily Developer Jokes"
published: true
tags: #jokes, #dailydeveloperjokes
---

Hi there! Here's today's Daily Developer Joke. We hope you enjoy it; it's a good one.

![Joke Image](https://private.xtrp.io/projects/DailyDeveloperJokes/public_image_server/images/5e12596ec99e0.png)

---

For more jokes, and to submit your own joke to get featured, check out the [Daily Developer Jokes Website](https://dailydeveloperjokes.github.io/). We're also open sourced, so feel free to view [our GitHub Profile](https://github.com/dailydeveloperjokes).

### Leave this post a ❤️ if you liked today's joke, and stay tuned for tomorrow's joke too!

_This joke comes from [Dad-Jokes GitHub Repo by Wes Bos](https://github.com/wesbos/dad-jokes) (thank you!), whose owner has given me permission to use this joke with credit._

<!--
Joke text:
___Q:___ What sits on a pirate's shoulder and calls, "Pieces of seven, Pieces of seven"?

___A:___ Parroty error.
 -->
Multiple Classes in Material UI or MUI
Tags: design, react, beginners
Published: 2021-10-04 11:55:55

You can either use a proper String concatenation or if your needs are wide and highly used then I recommend adding a package for this purpose. In this post, we talk about Multiple classes in Material UI.

So let’s add Multiple classes in Material UI with or without usestyles, withstyles, makestyle.

## Method #1: Concat classes properly in className property

You can concat your classes with backticks
```
const classes = usestyles()
className={`${classes.container} ${classes.spacious}`}
```

For more info and credit [read this blog post from 360TechExplorer.com](https://360techexplorer.com/material-ui-multiple-classes/)
What is a data product?
Tags: datamesh, dataproduct
Published: 2021-10-04 11:51:46

I recently wrote my first piece of content around data mesh, focusing on treating data as a product. As **data mesh** is a relatively new paradigm I wanted to write an article about *what a data product is* as the term itself can be quite ambiguous.

Anyway, here it is, I hope you enjoy: [What is a data product?](https://terminusdb.com/blog/what-is-a-data-product/)

Any feedback is greatly appreciated, not technical enough, wrong tone etc (positive feedback welcome too).
Added authentication and Single user blog publication - @dsabyte
Published: 2021-10-04 11:36:21

Previously i posted about the starting of the project. Now, i have added few more components  to the project which i would like to share with you here. 

## Authentication
[login](https://www.dsabyte.com/auth/login)

[sign-up](https://www.dsabyte.com/auth/signup)

[reset-password](https://www.dsabyte.com/auth/reset-password)

[change-password](https://www.dsabyte.com/auth/change-password)

It's a token based authentication. To sign-up, you need to have a valid email address, then just enter the required details on the sign-up page and submit it.

If everything works fine, then you'll get a verification link on the mail. 

## Profile
- [user-profile](https://www.dsabyte.com/user/615363ee22f5813e114d4c33), this is a just basic user profile component and i am not focusing much on this. 

- [edit-profile](https://www.dsabyte.com/user/edit-profile), here you can edit name, bio, status and avatar. 


## Blogs
### [publish](https://www.dsabyte.com/blogs/write/sa)
Here you can write any blog and publish it. 
Refer this blog for more information about [**how to wite a post on @dsabyte**](https://www.dsabyte.com/blogs/blog/How-to-write-blogs-on-dsabyte-com/615ae5800092e1acfb513590)
 
### See published blogs
-> https://www.dsabyte.com/blogs

### See example blog 
https://www.dsabyte.com/blogs/blog/How-to-write-blogs-on-dsabyte-com/615ae5800092e1acfb513590

## Upcoming feature
- dark mode
- edit blog feature
- save as draft blog feature
- hide blog feature
- suggestions
etc

## Thank you for reading this post and tell me if i can improve something in this website.
Hacktoberfest 2021👕👩‍💻 -Resources
Tags: beginners, hacktoberfest, github, opensource
Published: 2021-10-04 11:31:15

# Hacktoberfest-2021
A platform for developers 👩‍💻  who wants to participate in Hacktoberfest 2021 👕

You can contribute to my "hacktoberfest" labeled repository:
☞ https://github.com/mayankchaudhary26/Hacktoberfest-2021
<br>
#### Rules for contributing to this repository :
<li>  Please do not edit README.md, this will not be accepted as a valid PR.
<li>  You can submit a basic working project or a program.
<li>  Use capital letters for the starting alphabet and appropriate language extensions like: (Snake game.py), (Calculator.cpp), (Bubble sort.java)
<li>  Provide your details (Name, College/School/Work) while making a PR.
    
      id (required): The name of the author, (College/School/Work) 
      bio (optional): A short, meaningful intro about you.
      social profiles (optional)
  </ul>
<br>
<br>


![image](https://user-images.githubusercontent.com/56837137/135565301-0cc6eac1-a113-4f29-80c7-fab85cbefeff.png)
<br>
<br>

###### You can sign up anytime between October 1 and October 31. Just be sure to sign up on the official Hacktoberfest website for your pull requests to count.
🡺🡺🡺🡺   https://hacktoberfest.digitalocean.com   🡸🡸🡸🡸

<br>
There are many companies giving out free swag for Hacktoberfest and this list seeks to find them all!

🡺🡺🡺🡺 https://hacktoberfestswaglist.com 🡸🡸🡸🡸
<br>

#### Hacktoberfest encourages participation in the open source community, which grows bigger every year. Complete the 2021 challenge and earn a limited edition T-shirt.

Every year in October we celebrate Hacktoberfest which is an open-source celebration for our global community. This fest is open to everyone worldwide whether you're a student starting to learn code, developers, event host, or even a company of any size. Hacktoberfest is gaining popularity every year and in 2020 around the first 70,000 participants were eligible to get the limited-edition T-shirt and cool stickers. This fest is playing a vital role in generating awareness and helping to drive the growth of open-source contributions for an ever-growing community. People from all backgrounds and skill levels are encouraged to complete the challenge.

<li> Hacktober is a global event and anyone can participate irrespective of their background and skill levels
<li> Participants who successfully complete the challenge will be eligible to receive a limited-edition T-shirt👕and lots of cool stickers👨‍💻from Hacktoberfest sponsors like Dev, Github, Digitalocean, and intel.
<li> Four pull requests must be submitted to public Github repositories with ‘hacktoberfest’ tag OR the maintainer can accept your PullRequest by merging it, adding the “hacktoberfest-accepted” label to it, or approving it.

<br>
  
#### **From last year -

![image](https://user-images.githubusercontent.com/56837137/135638681-5149d8c3-6f58-4526-9472-eea387ed8aea.png)
https://medium.com/dsc-msit/hacktoberfest-open-source-celebration-with-a-reward-78610043375a
Design Patterns : Creational Patterns
Published: 2021-10-04 11:15:07

##Creational Patterns


**"Provide object creation mechanism"**

Creational Design Patterns are concerned with the way in which objects are created.

###Why do we need Creational Patterns?
**Creational Design Patterns** address this issue by *decoupling* the client entirely from the actual initialization process. 
*Difficult to understand right?*

In simpler terms, sometimes its important to be *flexible* with the nature of your object. When its required that the nature of the object must be changed according to the nature of the program. In such cases, creational design patterns come in handy to provide more general and flexible approach to object creation.
In other words, the general way of object creation could result in design problems or added complexity to the design and to prevent this we use Creational Design Patterns.

##When to use Creational design Patterns?
Well if your aim resonates with any of the below scenario,
* You want at most only one instance of an object available throughout the application. eg. Service classes should be stateless, and hence they don't need more than one instance.
* If you want to create objects of several related different classes and you do not want to specify which object is created and also you do not want to coupled your code to use one class so that if later you introduce another class, this would require to make change in the entire codebase.

More such scenarios exist however the intake should be that if you want your code less coupled in terms on initialization and reduce complexities and instability by creating objects in a controlled manner, maybe creational pattern can come to the rescue.

##What are the different Creational design Patterns?
We will be discussing about 5 of the commonly used Creational design Patterns namely,
1. **Singleton Pattern**
2. **Factory Pattern**
3. **Abstract Factory Pattern**
4. **Builder Pattern**
5. **Prototype Pattern**

We will be discussing about above mentioned patterns in the upcoming posts starting with Singleton Pattern. 

Stay tuned! 

Note - Be part of the discussion and also leave a heart if you found it helpful.
Effective Java - Why do we need a builder?
Tags: java, books
Published: 2021-10-04 11:05:50

## Why do we need a builder?

Using a constructor or a static factory method has a limit - they don't scale well. If there are many fields in the class, the argument list of a constructor or a static factory method is quite long and we might get the order wrong when calling the method. It is even worse if many fields are optional. A builder class comes in handy. 

## What is a builder

A builder class is normally a static member class of the class it builds. Instead of making the desired object directly, a client calls the constructor with the required fields and get a builder object. Then the client calls the setter-like methods to set fields. Finally the client calls a parameterless `build` method to generate the object of interest. 

Consider this scenario, we want to cook a recipe and many ingredients are optional.

```java
public class ChickenCongeeRecipe {
	private final int riceWeight;
	private final int waterWeight;
	private final int chickenWeight;
	private final int saltWeight;
	private final int gingerWeight;
	private final int springOnionWeight;

	public static class Builder {
		// required fields
		private final int riceWeight;
		private final int waterWeight;
		private final int chickenWeight;

		// optional fields - default to 0
		private int saltWeight = 0;
		private int gingerWeight = 0;
		private int springOnionWeight = 0;

		public Builder(int riceWeight, int waterWeight, int chickenWeight) {
			this.riceWeight = riceWeight;
			this.waterWeight = waterWeight;
			this.chickenWeight = chickenWeight;
		}

		public Builder saltWeight(int val) {
			saltWeight = val;
			return this;
		}

		public Builder gingerWeight(int val) {
			gingerWeight = val;
			return this;
		}

		public Builder springOnionWeight(int val) {
			springOnionWeight = val;
			return this;
		}

		public ChickenCongeeRecipe build() {
			return new ChickenCongeeRecipe(this);
		}
	}

	private ChickenCongeeRecipe(Builder builder) {
		riceWeight = builder.riceWeight;
		waterWeight = builder.waterWeight;
		chickenWeight = builder.chickenWeight;
		saltWeight = builder.saltWeight;
		gingerWeight = builder.gingerWeight;
		springOnionWeight = builder.springOnionWeight;
	}
}
```

And a client can create an object using

```java
ChickenCongeeRecipe chickenCongee = new ChickenCongeeRecipe.Builder(100, 800, 50).saltWeight(6).gingerWeight(20).springOnionWeight(20).build();
```

The object created is typically immutable.

## Conclusion

A builder has its downside too. It's more expensive comparing to constructors or static factory methods. It could be a problem in performance-critical applications. To make it worthwhile, the parameter list should probably be bigger than four. Having said that, if we start with constructors and additional fields need to be added in the future, the constructor is going to stick around.
Cloud Dataproc Best Practices

Tags: database, datascience, gcp, googlecloud
Published: 2021-10-04 11:00:09

Cloud Dataproc is a managed Spark and Hadoop service. Cloud Dataproc is used for batch processing, querying, streaming, and machine learning and takes advantage of open-source data tools. Cloud Dataproc automation helps to create clusters quickly and manage them easily, and when it is not required save money by turning off the clusters. Since this service takes less time and less money is spent on administration, a developer can focus on jobs and data.

Here are some of the best practices for Cloud Dataproc:

**Specifying versions of cluster image:** Cloud Dataproc image versions are important and used to package operating systems and massive data elements (including core and elective components) and GCP connectors into one package that’s deployed on a cluster. Cloud Dataproc defaults to the latest stable image version if the image version is not specified during its creation. For production environments, it is suggested that just continuously associate cluster creation step with a specific minor Cloud Dataproc version. This will ensure you know the precise OSS software versions that your production jobs require while Cloud Dataproc allows you to define a subminor version (that is, 1.4.xx instead of 1.4). In most environments, it’s preferred to reference Cloud Dataproc minor versions solely (as shown within the Google cloud command). Subminor versions are updated periodically for patches or fixes, hence new clusters automatically get security updates without breaking compatibility.

New minor versions of Cloud Dataproc are made available during a preview, non-default mode before they become the default. With this approach, production jobs get tested and validated against new versions of Cloud Dataproc before creating the version substitution.

**Understand when to use custom images:** Custom images from the most recent images in your target minor track need to be created if there are some dependencies that have to be shipped with the cluster like native Python libraries that have to be put on all nodes, or specific security hardening software or virus protection software needs for the image. This makes sure to enable those dependencies to be met every time. Users must update the subminor within their track every time they reconstruct the image.

**Use the jobs API for submissions:** With the Cloud Dataproc Jobs API, it makes it easy and doable to submit a job to an already present Cloud Dataproc cluster with a job. Using the Google cloud command-line tool or the GCP Console itself, the HTTPS call is submitted. It additionally makes it simple to divide and segregate the permissions of who has access to submit jobs on a cluster and permissions to achieve the cluster itself, without putting in place entry nodes or having to use something like Apache Livy.

Hope this was helpful.