teleren/devto huggingface dataset:
THREE TYPES OF KNOWLEDGE A TECHNICAL WRITER NEEDS TO HAVE

Tags: technicalwriting, technicalwriter, todayilearned
Published: 2020-05-18 07:58:07

Irrespective of experience and types of a document you work on, here are three types of knowledge a technical writer needs to have;

1. Product Knowledge
2. Technical Knowledge
3. User Knowledge

Let’s dive deep to understand these three aspects; 

1. <b>Product Knowledge</b>; A <i>product</i> is an outcome of a project initiated. While working on product documentation, as a technical writer, you need to know the application, functions, features, implications, supported versions, support requirements, and working. You can enrich your product-related knowledge during a meeting, referring to the documents previously available, or researching about a similar product available.

2. <b>Technical Knowledge</b>; Technical knowledge focuses on how a process works and its interaction with other processes. To enrich your technical knowledge ask questions to your product team, stay updated, research about a topic, take an online course if required, review a previously available document, and verify the instructions on your own.

3. <b>User Knowledge</b>; User also known as "audience" is the most important aspect of all three. User knowledge helps you gain a general idea of who your audience is, the primary need of your audience, how they will use your product, and how easy it is to use it. To enrich your user-related knowledge, you can have a look at web analytics of a webpage.

<b>So, here are the benefits of acquiring knowledge on the aforementioned aspects;</b>

1. Talk with some intelligence to the product team. You gain confidence and respect for putting effort into understanding a product overall. 

2. Write much faster as you will be well-versed on a product, technical and user aspects.

3. Confident that the document generated is accurate even though your subject matter experts do not review it.

At last, as a bonus tip, don’t hesitate to ask a question with your product team (even though it does not align with a topic or requirement). This will save time while you can invest in research. In addition, countless things can be learned. It is best to filter the technical knowledge you want to gain before you start working.

Keep writing :)
Difference between sums of two diagonals of a square matrix
Tags: algorithms, kotlin, datastructures, learning
Published: 2020-05-18 07:54:13

---
title: Difference between sums of two diagonals of a square matrix
published: true
description: the difference between the sums of a square matrix diagonals
tags: algorithms, Kotlin, dataStructures, learning
---
Given a square matrix, calculate the absolute difference between the sums of its diagonals.

The most efficient way is to approach this is to implement a solution running linearly achieving the `0(n)`.

We will create a method `sumOfDiagonals` which takes in a parameter `arr: Array<IntArray>`. This allows us to create a 2D array. Create variables `leftToRight`, `rightToLeft` which will be equal to `0` representing the diagonal lines. Variable `rows` equal to the size of the array `arr.size` and `columns` equal to the size of the positions `arr[0].size`.

Create the counters for the positions and assert them to 0. `var i = 0`, `var j = 0`, `var k = 0`, `var l = arr.size - 1` this a right to left column counter.

Create a while loop that checks the rows and column counters and if the value is satisfied it should increment the counters and add the `leftToRight`, `rightToLeft` values together.

To make it work return the absolute difference `return Math.abs(leftToRight - rightToLeft)`.

Easy Peasy, Lemon Squeezy 😄 😄.

Let's look at the code

```
fun sumOfDiagonals(arr: Array<IntArray>): Int {

    var leftToRight = 0
    var rightToLeft = 0
    val rows = arr.size
    val columns = arr[0].size

    var i = 0
    var j = 0
    var k = 0
    var l = arr.size - 1 //right to left column counter

    while (rows >= 0 && columns >= 0 && rows >= 0 && l >= 0) {

        leftToRight += arr[i][j] //add the values at the position
        rightToLeft += arr[k][l] //add the values at the position

        i += 1
        j += 1
        k += 1
        l -= 1

    }

    return abs(leftToRight - rightToLeft) ///return the difference

}

```

[Github Repo](https://github.com/meshnesh/codilityAlgorithims/blob/master/dailyAlgorithims/day_one/src/SumOfDiagonols.kt)

Thank you for reading, please share if you found it helpful 💯.

__Asante Sana__
# REPL in node.js
Tags: node, javascript, npm, typescript
Published: 2020-05-18 07:28:47

REPL is nothing but a virtual environment. The job of REPL is to test a simple node and javascript code. Like another programming language, for example, java spring boot for the simple test application you have to create a whole project but with node.js with the help of REPL you can perform the quick operation without creating any project. You can start the REPL environment by just typing the node on the shell, REPL stands for Read_Eval_Print_Loop, which means.
```javascript
R -> READ = Read a user input
E -> Evaluate = Evaluate user input
P -> Print = Print Output(Result)
L -> Loop = Wait for new input
```
####open command prompt or terminal (in Window or Mac or UNIX/Linux) and type node. 
![Please Reload](https://miro.medium.com/max/1400/1*YYsq_1HoNfmLbmwMOLR0lQ.jpeg)

####you can do many operations using variables and different types of expressions.

**Simple Expression**:- A simple addition, subtraction, multiplication, division you can do in the console. for example - enter 4 + 3 it will give you a result 7. All normal expression you can don in REPL

![Please Reload](https://miro.medium.com/max/1400/1*WMIlmeqXU-1RkFNPhq1jIQ.jpeg)

**Multiline Expression**:- You can mention conditions and statements or function inside the terminal and perform different operations. Node REPL also supports loops and multiline expressions. as shown below

![Please Reload]
(https://miro.medium.com/max/1400/1*oo1dpCpiPII3Pyn0zuMfzg.jpeg)

**Use of Variable**:- You can also declare a variable in the console. The variable allows you to store the value into variable to print the value of the variable you can simply console it with the help of console.log()

![Please Reload](https://miro.medium.com/max/1400/1*7nZGDIgwMmfn7j9FyaAurQ.jpeg)

You can read more about REPL from official docs. [click here](https://nodejs.org/api/repl.html)

Medium article [click here](https://medium.com/@shubhamggupta/repl-in-node-js-c8c66925bad5)

[Medium Profile] (https://medium.com/@shubhamggupta)
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Adding `published` to Hakyll Posts
Tags: functional, haskell, hakyll
Published: 2020-05-18 07:19:43

You can keep reading here or [jump to my blog](https://odone.io/posts/2020-05-18-published-posts-hakyll.html) to get the full experience, including the wonderful pink, blue and white palette.

---

Last week I deployed the blog and published by mistake a post that I was keeping for the future:

{% twitter 1258722267338596354 %}

I guess that was just a matter of time cause I always keep some unpublished posts around. Up until now, I was doing some hacky manual git stuff to schedule them. Not anymore!

I added support for an additional `published` field in the metadata of each post. The [scaffolding script](https://github.com/3v0k4/contact-page/blob/c4f8aca0cbe93d2acadb06bbff2eeb4c5dd91521/blog/scaffold.hs#L20) now adds `published: false` by default.

The core of the change resides in `site.hs`:

```diff
-  match "posts/*" $ do
+  matchMetadata "posts/*" isPublished $ do
```

In particular, instead of compiling all posts, it only takes the "published" ones. A post is considered published if

1. it does not have a `published` metadata field or
2. `published` is `true`.

I could have enforced all posts to have a `published` field and skip 1. but I was too lazy to retrofit that 😅

Here's the implementation:

```hs
isPublished :: Metadata -> Bool
isPublished = maybe True (== "true") . lookupString "published"
```

I actually [did one step more](https://github.com/3v0k4/contact-page/commit/c4f8aca0cbe93d2acadb06bbff2eeb4c5dd91521#diff-38bbc949e4276a9e92e6a46010c9b397) and decided to consider all posts published when a `HAKYLL_ENV` env variable is set to `development`:

```hs
env <- getEnvironment
hakyll $ do
  matchMetadata "posts/*" (isDevelopmentOrPublished env) $ do
-- ...

isDevelopmentOrPublished :: [(String, String)] -> Metadata -> Bool
isDevelopmentOrPublished env metadata = isDevelopmentEnv || isPublished
  where
    isDevelopmentEnv = lookup "HAKYLL_ENV" env == Just "development"
    isPublished = maybe True (== "true") . lookupString "published" $ metadata
```

That way, as long as I preview the blog with `HAKYLL_ENV=development stack exec site watch`, I can keep `published: false` while working on a new post.

Please feel free to copy the [code](https://github.com/3v0k4/contact-page/commit/c4f8aca0cbe93d2acadb06bbff2eeb4c5dd91521#diff-38bbc949e4276a9e92e6a46010c9b397) described above and use it for your Hakyll blog!

---

Get the latest content via email from me personally. Reply with your thoughts. Let's learn from each other. Subscribe to my [PinkLetter](https://odone.io#newsletter)!
Vanilla JavaScript Removing an Element
Tags: javascript
Published: 2020-05-18 07:15:37

Yesterday we started building a [`Vanilla JavaScript` Drag 'n Drop editor](http://daily-dev-tips.com/posts/vanilla-javascript-removing-an-element/). We just weren't able to remove elements we added too much, so let's look into adding a remove button and the function to remove an element.

We don't need to make HTML changes, so let's get started on the `CSS` first.

## CSS Changes

```css
.comp-remove {
  position: absolute;
  color: red;
  top: calc(50% - 12px);
  right: 15px;
  font-weight: bold;
  cursor: pointer;
  pointer-events: all;
}
```

We are going to add a div with the class `comp-remove` so this is the styling, it's going to sit on the right side of the component and centered vertical.

## Vanilla JavaScript Remove Element

Inside our `onDrop` function we are going to add the following after we define our `const clone`:

```js
const clone = draggableElement.cloneNode(true);

// New
const remove = document.createElement('div');
remove.classList.add('comp-remove');
remove.innerHTML = 'X';
clone.appendChild(remove);
```

Then at the bottom we will add the function that will go off once we click this new element.

```js
document.addEventListener(
  'click',
  function(event) {
    // If the clicked element doesn't have the right selector, bail
    if (!event.target.matches('.comp-remove')) return;
    // Don't follow the link
    event.preventDefault();
    // Get the parent element
    const parent = event.target.parentNode;
    // Delete the actual table parent;
    parent.parentNode.removeChild(parent);
  },
  false
);
```

We seen this way of adding a [eventListener](https://daily-dev-tips.com/posts/vanilla-javascript-event-listener-on-multiple-elements/), and we listen to the specific `comp-remove` element.
Then we get the parent element and the parent of that again (this is the dropzone element).
We then say it should `removeChild` off the component.

You can try this out on this Codepen.

<p class="codepen" data-height="265" data-theme-id="dark" data-default-tab="result" data-user="rebelchris" data-slug-hash="OJyBpEQ" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Vanilla JavaScript Drag 'n Drop - Delete">
  <span>See the Pen <a href="https://codepen.io/rebelchris/pen/OJyBpEQ">
  Vanilla JavaScript Drag 'n Drop - Delete</a> by Chris Bongers (<a href="https://codepen.io/rebelchris">@rebelchris</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>

Or see if on [GitHub](https://github.com/rebelchris/drag-n-drop/tree/feature/remove).

### Thank you for reading, and let's connect!

Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on [Facebook](https://www.facebook.com/DailyDevTipsBlog) or [Twitter](https://twitter.com/DailyDevTips1)
Educational Robot Market Expected to Witness a Sustainable Growth by 2027 
Tags: robotmarket, sanjeevnanda
Published: 2020-05-18 06:59:03

This study also analyzes the market status, market share, growth rate, future trends, market drivers, opportunities and challenges, risks and entry barriers, sales channels, distributors and Porter’s Five Forces Analysis. Educational Robot market report all-inclusively estimates general market conditions, the growth prospects in the market, possible restrictions, significant industry trends, market size, market share, sales volume and future trends. The report starts by an introduction about the company profiling and a comprehensive review about the future events, sales strategies, Investments, business marketing strategy, future products, new geographical markets, customer actions or behaviors with the help of 100+ market data Tables, Pie Charts, Graphs & Figures spread through Pages for easy understanding. Educational Robot market report has been designed by keeping in mind the customer requirements which assist them in increasing their return on investment (ROI and this research also provides a deep insight into the activities of key players such as  , Ozobot & Evollve, Inc., Makeblock Co., Ltd., fischertechnik GmbH, Advanced Robotics Artificial Intelligence, The LEGO Group., Pitsco, Inc. among others.

Source: https://3wnews.org/news/860445/educational-robot-market-expected-to-witness-a-sustainable-growth-by-2027-ozobot-evollve-inc-makeblock-co-ltd-hanson-robotics-ltd-wonder-workshop-inc-blue-frog-robotics-bud/
26 Ideas For Your First Product
Tags: productivity, beginners
Published: 2020-05-18 06:58:22

So you have decided to build your own product and upskill but what are you actually gonna build? Well, that's really not a problem. You are not supposed to come up with some revolutionary idea. You just need to develop something that adds value. It could be anything. A video course, an audiobook, an ebook, an instagram page, web app, website, blog, anything.

Some things to keep in mind before picking something to work on.
1. Try to build something with context to the current time or situation. As of this articles, corona virus is spreading all around. If your product is anyway can help spread awareness about it or give some solution, it would be the amazing.
2. Don't reject some idea if the problem it solves is a small or very very small one. You need not build the next social platform. You have to do something which add value, that's it.
3. Make something usable. If it's an ebook, publish it. Website, deploy it. Sketch, post it. Video, upload it.

If you are a designer, developer, sales person, marketer, finance beginner, below are 26 ideas you can build and launch as your first real product.

For Designer :-
1. Clone UI of popular websites and post them on a website.
2. An instagram page to showcase your art.
3. A website where you different UI components.
4. An ebook which shows the latest design trends.
5. A youtube channel where you upload timelapse of your design process.
6. A blog, where you bring guests to give some design inspiration.
7. Collab with a developer and build a social platform for designers.
8. Make an animation of washing hands.

For Marketer :-
1. Get big name in marketing industry to share some writings weekly. Make a blog and collect emails. 
2. A telegram group to let people collaborate and learn marketing.
3. There are very less marketing podcasts. Make one.
4. Share "marketing stories" on a blog.
5. Ebook about consumer mindset.
6. Share the insights about the current marketing strategy of these big companies. Make a blog.

For Developer :-
1. Build a forum for dev Q/A.
2. Build a website to spread awareness about corona virus, get some bacteria falling on the home page and animations.
3. Use Google Ads API and other such APIs for making an ads marketplace.
4. Make a coded blog for your technical writings.
5. Make an environmental factors monitor using APIs.
6. Find what's happening in space using NASA's API.
7. Use GOVT API to make a food price app.

For Finance :-
1. First and foremost, start writing a blog about your finance journey.
2. Make series of articles explaining your story and guiding others with it.
3. Publish a financial planning sheet.
4. Make a poster to sick on desk for financial goals. Make it downloadable on your website.
5. Write an ebook to share ways beginners can start investing, according to you.

Need some help? Tell me about your next project on Instagram @digvijaysrathore
https://instagram.com/digvijaysrathore
A shallow plunge into DeepEquals
Published: 2020-05-18 06:56:16

With nights taken up learning and writing React, Angular JS, and Backbone, my morning toy problems have been a welcome distraction this past week.  And from once, not so long ago, being fearful of recursion - I've gotten to really enjoy these challenges.  Here's the most interesting recursion toy problem I was presented with this week - Deep Equality.

Here are the rules:

---Write a function deepEquals that takes in two objects and returns whether 
---or not the two are deeply equivalent. This means the structure of the two
---objects is the same, and so is the structure of each of their corresponding
---descendants.

Easy enough right?  Let's get some IOCE out there to help us out:

Input: two objects
Output: boolean
Constraints: there's a test that says not to use JSON.stringify
Edge Cases: 

What to do now?  We are going to have to go into an object and check for equality - then we're going to have to go into any nested objects and check for equality, and if that object has another nested object...  and so on.  Smells like our old friend recursion.  So let's get this set up:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/hb3wlryni70di99wgm4k.PNG)

The boolean is going to be returned as true unless we have any reason to change it to false.  We've also got the bones of our recursion and the call to it on line 12.  Now it's time to build out our recursion.  The first thing we should check is to see if the first layer of the objects have the same number of keys.  If the second object had more keys than the first, it could trigger a false positive (and there is definitely a test for that!).  Change the boolean to false if they aren't the same length.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/d3xkab7eo4exvzc4wkxa.PNG)

So now that we know the lengths are the same, let's compare actual key/value pairs.  We can run a forEach loop on one of our objects.  If that key does not exist in the other object or the value is not the same, we need to change the boolean to false.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/vdxrcs3gf6ly8moanaqf.PNG)

Else - if we've made it this far... let's check the typeof on the value of the key to see if we're still dealing with an object.  If we are, we need to keep going... let's call the recursion on this object.

So once our recursion is finished, our boolean is either changed to false or it has not been - let's return the boolean to complete this exercise.

What a difference a few weeks makes.  Recursion has gone from being my sworn enemy to an arrow in my JavaScript quiver.  If you're not there already, with a little patience and diligent work you soon can be.
Global Computer Assisted Coding (CAC) Software Market 2020 by Company, Regions, Type and Application, Forecast to 2026
Tags: softwaremarket, sanjeevnanda, computerassistedcoding
Published: 2020-05-18 06:55:08

Global Computer Assisted Coding (CAC) Software Market 2020 by Company, Regions, Type and Application, Forecast to 2026

Global Computer Assisted Coding (CAC) Software Market 2020 by Company, Regions, Type and Application, Forecast to 2026
May 14, 2020 santosh	Computer Assisted Coding (CAC) Software, Global Computer Assisted Coding (CAC) Software Market, Global Computer Assisted Coding (CAC) Software Market 2020, Global Computer Assisted Coding (CAC) Software Market Analysis, Global Computer Assisted Coding (CAC) Software Market Forecast, Global Computer Assisted Coding (CAC) Software Market Revenue, Global Computer Assisted Coding (CAC) Software Market Scope, Global Computer Assisted Coding (CAC) Software Market Study	

Global Computer Assisted Coding Market Industry Analysis and ...

Global Computer Assisted Coding (CAC) Software Market 2020 by Company, Regions, Type and Application, Forecast to 2026 aims to cover market size, share, trends, and growth analysis on the basis of different parameters. The latest market research study analyzes the current status of the market along with the historical state and provides a future outlook. The report mainly elaborates on market definitions, classifications, product specifications, manufacturing processes, cost structures, market segmentation, end-use applications, and industry chain analysis. The report highlights global Computer Assisted Coding (CAC) Software market trends, competitive landscape analysis, and key regions development status, and major players of the market.

The report is segmented according to usage wherever applicable and it offers all this information for all major countries and associations. The report analyzes the global Computer Assisted Coding (CAC) Software market potential and advantage, opportunity, and challenge, restraints, and risks. It further demonstrates the market structure, scope, history, development perspective, reliable estimates for the forecast period from 2020 to 2026 as well as the market segments on the basis of type, application, and region. You will find tables and several other graphical data elements, making the industry data mote understandable.

NOTE: Our analysts monitoring the situation across the globe explains that 
the market will generate remunerative prospects for producers post COVID-19 crisis. 
The report aims to provide an additional illustration of the latest scenario, 
the economic slowdown, and COVID-19 impact on the overall industry. 

Source: https://jewishlifenews.com/uncategorized/global-computer-assisted-coding-cac-software-market-2020-by-company-regions-type-and-application-forecast-to-2026/
Rootless systemd and podman
Tags: linux, systemd
Published: 2020-05-18 06:34:11

Systemd is a useful tool programmatically managing routine tasks. I encountered a specific situation with some constraints:

1. start task on boot as a non-root user
2. auto restart on failure

The solution to this issue is to create a systemd task as the non-root user.

# Steps

## Create the service
```bash
systemctl edit --user --full --force <service_name>
```
## add the content
```
[Unit]
Description=<Service>

[Service]
Restart=always
ExecStart=<Servece_Start>
ExecStop=<Service_Stop>

[Install]
WantedBy=default.target
```
the last line registers the service to the dependency list for auto-start
## enable the service
```bash
systemctl enable --user <service_name>
```
## (optional) enable linger
```bash
 sudo loginctl enable-linger "$USER"
```
This is to allow the service continuing to run after the user is logged out.

# Podman Service

When running podman container as a systemd service, the `ExecStart` command should be `podman start -a <container_name>` and the `ExecStop` command should be `podman stop -t <seconds_to_wait> <container_name>`. Details can be found at <https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html/managing_containers/running_containers_as_systemd_services_with_podman>

# Credits

Thanks to [this issue](https://github.com/systemd/systemd/issues/2690)
JS Edabit solution notebook
Tags: javascript
Published: 2020-05-18 06:08:06

Return month long name based on number input
```
function monthName(num) {
	return new Date(2000, num - 1).toLocaleString("en-us", {month: "long"});
}
```
---
Return first & last item in an array
```
function firstLast(arr) {
	return [arr.shift(), arr.pop()]
}
```
---
When comparing strings and characters, includes() is case-sensitive.
---
---
Count matching char in a string (case-sensitive)
```
function charCount(myChar, str) {
	return [...str].filter(x => x===myChar).length;
}
```