teleren/devto huggingface dataset:
A Software development setup on Apple Mac
Tags: productivity, devtools, mac
Published: 2020-08-12 18:07:05

This is my current setup- sharing for my future self and anyone else that stumbles on here.

<a name="toc"></a>

## Table of Contents

- [The bare necessities](#essentials) 
- [JavaScript](#javascript)
- [Rust](#rust)
- [Java](#java)

<a name="essentials"></a>

## The bare necessities

The *Command Line Developer Tools*:

```shell
xcode-select --install
```

The default installation location is `/Library/Developer/CommandLineTools`, you can double check with `xcode-select -p`. Check the contents of the  `usr/bin` sub-directory for all the tools that this gives you.

The [Homebrew](https://brew.sh/) package manager.

[iTerm 2](https://www.iterm2.com/) -  a great replacement for the built-in terminal app. 

[Oh My Zsh](https://ohmyz.sh/) - spices up the shell.

[Visual Studio Code](https://code.visualstudio.com/) - code editor 

The  development editions of Chrome and Firefox web browsers:

- [Google Chrome for Developers](https://www.google.com/chrome/dev/)
- [Firefox Developer Edition](https://www.mozilla.org/en-US/firefox/developer/)

Note taking:

- [Evernote](https://evernote.com/) - great for taking a quick note on the phone and picking up from the computer
- [Typora](https://typora.io/) - surprisingly good markdown editor

Communication and media:

- [VLC Media Player](https://www.videolan.org/vlc/) - plays 'most anything thrown at it
- [Skype](https://www.skype.com)

And some miscellaneous utilities:

- [Folx Free Edition](https://mac.eltima.com/download-manager.html) - for file downloads
- [NTFS for Mac](https://www.paragon-software.com/home/ntfs-mac/) - for working with disks formatted for Windows with NTFS

Back to [TOC](#toc).

<a name="javascript"></a>

## JavaScript

[Volta](https://volta.sh/) is great for managing JS command line tools.

Install with:

```shell
curl https://get.volta.sh | bash
```

Later when Volta needs to be updated, repeat the same command.

Install Node.js

```shell
volta install node
```

Install any JS tools from NPM with `volta install package-name` - e.g.

```shell
volta install serve          # Serve a local directory over HTTP
volta install prettier       # Code formatter
```

Later, a tool can be updated by repeating the install command.

Back to [TOC](#toc).

<a name="rust"></a>

## Rust 

Use the [Rustup](https://www.rust-lang.org/learn/get-started) script:

```shell
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```

Update with `rustup update`

Self uninstallation is supported with `rustup self uninstall` 

Back to [TOC](#toc).

<a name="java"></a>

## Java

Download the `.dmg` installer for the latest stable Java SDK from [Oracle](https://www.oracle.com/java/technologies/javase-downloads.html) and run.

Back to [TOC](#toc).
Mozilla's layoffs are bad news for developers
Tags: discuss, watercooler, news, productivity
Published: 2020-08-12 18:03:30

You may have seen the awkward corporate speak announcement that Mozilla is exploring new revenue models and making 250 layoffs (around 25% of their workforce, on top of the 70 or so in January).

[Changing World, Changing Mozilla](https://blog.mozilla.org/blog/2020/08/11/changing-world-changing-mozilla/)

In their 250 layoffs was the entire MDN writers team, the Firefox dev tools team and what was left of their developer relations team. Apparently we're just not that important to Mozilla's mission! Frustrating as developers have often been their biggest advocates. I fear that Mozilla is far from the engineering-led organisation it once was.

{% twitter 1293466899150495745 %}

{% twitter 1293264395603148802 %}

Given this news, will you still continue to support the organisation? Has your opinion of Mozilla changed?
Indie Vacation
Tags: sideprojects, webdev
Published: 2020-08-12 17:55:56

Finally vacations. I really needed this. I was very energy less the last couple of weeks. I even think I was almost burned out. Naturally indie hacking and my sideprojects were the first things that I stopped doing. But now the time has come that I'm on vacation. My batteries are slowly recharging and I'm thinking about my side hustles again. I even have my macbook with me, but I'm not sure if it's a good idea to power it on during my holidays. But let's see.


I had some nice days on the beach and a lot of time to think. Here are some of the things that I came up with:


###Ruby
I want to get fucking good at ruby and rails. I looked at some job offers lately and all the jobs that really interested me had been ruby positions. And I was interested in ruby for a long time but never really took it seriously because I was more productive with different stacks (of course, because I never really took the time to dig deep into ruby/rails). But that is going to change now.

###My wip shopify app
I'm going to port it to ruby on rails. Its current tech stack is nexjs-koa-knex-postgresql. Nextjs and koa are the recommended tools by shopify to build apps but I was never really satisfied with the dev experience. Let's see how it's going with rails.
I'm also probably going to shift the product a little bit. I originally planned an affiliate app. But I'm currently thinking to make it kind of a recimmendation app. But I have to think about this and do some research first.

###Zero to sold
I'm currently reading zero to sold by arvid kahl. It's fantastic. I'm just at the beginning if the book but it already made me think so much. I'm currently thinking hard about niches I could build a product for. At the moment teachers and hobby tournament plannersare my favourites.

###Rails learning projects
As I already said I'm going to get really really good at rails. So I need some learning projects. As Indon't have a proper internet connection here at the beach on a campsite, I can't really work on my shopify app. In case that I will open up my macbook, I will start a fresh rails project just for fun and learning purposes. Perhaps I will start a prototype of the tournament planning software I have in mind. But this will be a very big project so I'm not sure if it's suited as a learning project. I have to think a little more about it..

That's it for part one of my indie hacking vacation.
I'm pretty active on twitter and my DMs are always open. So feel free to connect with me on twitter https://twitter.com/RalliPi.
Load chrome extensions in puppeteer
Tags: javascript, node, puppeteer, automation
Published: 2020-08-12 17:40:44

## **What is puppeteer**?
Puppeteer is a Node library which provides a high-level API to control headless Chrome or Chromium over the DevTools Protocol. You can do all things automatically which you are doing on the browser manually.

* Generate screenshots and PDFs of pages
* Crawl a website
* Create an up-to-date, automated testing environment. Run your tests directly in the latest version of Chrome using the latest JavaScript and browser features
* Test Chrome Extensions

## **Load chrome extensions**

```javascript
const puppeteer = require('puppeteer');

(async () => {
  const customArgs = [
    `--start-maximized`,
    `--load-extension=${process.env.extdarkreader}`
  ];
  const browser = await puppeteer.launch({
    defaultViewport: null,
    executablePath:process.env.chrome,
    headless: false,
    ignoreDefaultArgs: ["--disable-extensions","--enable-automation"],
    args: customArgs,
  });
  const page = await browser.newPage();
  await page.goto(`https://dev.to/`);
  await page.waitForNavigation();
  await page.close();
  await browser.close();
})();
```

By default, some functionalities are disabled in puppeteer so you can enable by assigning few arguments in ignoreDefaultArgs.

```
 ignoreDefaultArgs: ["--disable-extensions"]
```
ignoreDefaultArgs : <boolean|Array<string>> If true, then do not use puppeteer.defaultArgs(). If an array is given, then filter out the given default arguments. Dangerous option; use with care. Defaults to false.

After running above code got a dark theme of website https://dev.to

![https://dev.to](https://dev-to-uploads.s3.amazonaws.com/i/fcgrxgi86aycm52yh551.png)

*Followings are default arguments are used in puppeteer.*

```javascript
const DEFAULT_ARGS = [
  '--disable-background-networking',
  '--enable-features=NetworkService,NetworkServiceInProcess',
  '--disable-background-timer-throttling',
  '--disable-backgrounding-occluded-windows',
  '--disable-breakpad',
  '--disable-client-side-phishing-detection',
  '--disable-component-extensions-with-background-pages',
  '--disable-default-apps',
  '--disable-dev-shm-usage',
  '--disable-extensions',
  // BlinkGenPropertyTrees disabled due to crbug.com/937609
  '--disable-features=TranslateUI,BlinkGenPropertyTrees',
  '--disable-hang-monitor',
  '--disable-ipc-flooding-protection',
  '--disable-popup-blocking',
  '--disable-prompt-on-repost',
  '--disable-renderer-backgrounding',
  '--disable-sync',
  '--force-color-profile=srgb',
  '--metrics-recording-only',
  '--no-first-run',
  '--enable-automation',
  '--password-store=basic',
  '--use-mock-keychain',
];
```


*If you have any questions or if you want more posts on puppeteer please comment out on comment box.*
Watch Great Expectations 101: Getting Started Webinar
Tags: datascience, opensource, python, testing
Published: 2020-08-12 17:34:52

{% youtube uM9DB2ca8T8 %}

<br><br>This is the first completed webinar of our "Great Expectations 101" series. The goal of this webinar is to show you what it takes to deploy and run Great Expectations successfully.

By the end of the video you’ll be able to:
Create and edit Expectation Suites
Configure new Datasources
Understand what Great Expectations does under the hood
Validate your data with Great Expectations
Navigate validation output in Data Docs

We will continue to host more sessions on how to implement and utilize Great Expectations. To be informed of future events like this please sign up to be informed here: [Sign up form.](https://www.surveymonkey.com/r/great-expectations-events)

We also announce events in our [Slack channel](https://greatexpectations.io/slack).
How do you deal with your teammate's founder syndrome?
Tags: discuss
Published: 2020-08-12 17:24:05

If you join a project and you have to work closely with its founder how do you deal with his founder syndrome?

This [article](https://www.forbes.com/sites/kevinready/2012/07/10/founders-syndrome-the-third-rail-of-the-startup-world/#2f40d40a40c2) describes founder syndrome pretty well.

From the article: 
* Often fail to share information about the inner details of their projects.

* A founder intent on keeping total control of decision making.
Build A Flutter 💙 Tinder Clone with Firebase & BLoC #14/41 Login Page
Tags: flutter, tutorial, dart, career
Published: 2020-08-12 17:20:19

---
title: Build A Flutter 💙 Tinder Clone with Firebase & BLoC #14/41 Login Page
published: true
description: Tutorial on building a Tinder clone with Flutter, Firebase and Bloc
tags: #Flutter #Tutorial #dart #career
//cover_image: https://direct_url_to_image.jpg
---

In this series of videos we are going to build a Tinder clone using Flutter, Firebase as a backend and Bloc as our state management solution.

Here we set up the Login Page.

Protip: Watch video at 1.25 speed.

{% youtube leSn471Yts4 %}
#CodepenChallenge The Rain: Banana and leaf Icon
Tags: codepen, html, javascript, showdev
Published: 2020-08-12 16:28:07

I tried to make an icon of a banana, and banana leaves, with Zdog, using the colors that was in the challenge description.

I'm trying to learn Zdog, because I'm sure that this library will be helpful to me for my future projects. Especially, I am always using a pseudo 3D object to create an icon (or etc).

## About Zdog

According to the description on the official website:

> Zdog is a 3D JavaScript engine for ` <canvas> ` and SVG. With Zdog, you can design and render simple 3D models on the Web. Zdog is a pseudo-3D engine. Its geometries exist in 3D space, but are rendered as flat shapes. This makes Zdog special.

Yes, it is easy to make an image using this library. It is as easy as writing a CSS code (in my opinion). I just had to remember the way how to set the images.

## Example usage

```javascript
let banana = new Zdog.Shape({
    addTo: scene, // The anchor
    color: "#f5e82f",
    path: [
    { x: 47.5, y: -22 },
    { arc: [
        { x: 35, y: 70 },
        { x: -47.5, y: 30 }
    ]}
    ],
    closed: false,
    stroke: 40
});
```

The source code above helped me to write the banana image without using any assets, or images.

Note that the anchor is like container images. Let's say, it is to group the multiple images (in how I understand it).

Grouping these images is important, so that when we rotate the rendered image, all of these images will rotate at one on the same dimension.

We can use many shapes to render our image. One of them is the ` Shape ` method of ` Zdog ` class; above, at the example source code.

## Insight

While trying to learn this library, I learned that we do not have to render 3D element on the canvas to represent 3D image. We can rely on math draw or render an image in 3D (Z dimension).

## Links

- Zdog official website and documentation: [Zdog](https://zzz.dog)
- Tutorial where the Zdog referred to: [Rotating 3D Shapes](https://www.khanacademy.org/computing/computer-programming/programming-games-visualizations/programming-3d-shapes/a/rotating-3d-shapes)

{% codepen https://codepen.io/takaneichinose/pen/xxVwaEN %}
Quiz Time! What's Wrong With This "customMax" function?
Tags: vue, javascript
Published: 2020-08-12 16:57:27

Quiz time! What's wrong with our `customMax` function?  How do we fix it?

Hint: check out the second image, where we show "customMax" in use

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/gi10m02cp1yb3w2xox8g.jpg)
Mountain Array with Java Script 
Tags: javascript
Published: 2020-08-12 16:53:13

**What is Mountain Array?**
Given an array A of integers, return true if and only if it is a valid mountain array.

Recall that A is a mountain array if and only if:

A.length >= 3
There exists some i with 0 < i < A.length - 1 such that:
A[0] < A[1] < ... A[i-1] < A[i]
A[i] > A[i+1] > ... > A[A.length - 1]

**Examples Of Mountain Arrays.**
Example 1:

Input: [2,1]
Output: false
Example 2:

Input: [3,5,5]
Output: false
Example 3:

Input: [0,3,2,1]
Output: true

**Solution Approach**

It's very easy to keep track of a monotonically increasing or decreasing ordering of elements. You just need to be able to determine the start of the valley in the mountain and from that point onwards, it should be a valley i.e. no mini-hills after that. Use this information in regards to the values in the array and you will be able to come up with a straightforward solution.

so as per above explanation,
 * if(A.length > 3){
        let n = A.length;
        let i = 0;

        while(i+1 < n && A[i] < A[i+1]){
            i++;
        }

        if(i==0 || i == n-1){
            return false
        }

        while(i+1 < n && A[i] > A[i+1] ){
            i++;
        }
        return i == n-1;
        
    }
    else{
        return false
    }
   *
-> here A is Array.
Managing infra code ⚙️🛠🧰
Tags: discuss, sre, devops, poll
Published: 2020-08-12 16:52:58

Do you care about the quality of your infra code?

A. As much as product code
B. Somewhat but mostly no
C. We create infra via UI

Let's discuss how do you manage Infra code! Feel free to share your thoughts in the comments section.
JavaScript .splice() method
Tags: javascript, womenintech, codenewbie, 100daysofcode
Published: 2020-08-12 16:51:07


There are many array methods in Javascript but the one with which I struggle the most is, .splice() method.

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

So the other day, I came across a [leet code](https://leetcode.com/problems/move-zeroes/) problem, which asked me to manipulate an array without making a copy of it! I searched for methods and I remembered, that .splice() can be useful for this problem. So without wasting any time lets dive into the basics of .splice() method.

```
              Deleting A Number from an Array 
let array = [2,3,4,5,6]                                                  //At index 0, let's delete the first number which is 2 in this case!
array.splice(0, 1) 
==> return value:[2] // returns the removed element
==> console.log(array)// [3,4,5,6]
//At index 0, Let's delete, first two numbers which is 2 and 3 
array.splice(0, 2)
==>  return value:[2,3]
==>  console.log(array) // [4,5,6]

```
In the above example .splice() is taking two parameters:
The index number(the point at which we want to start deleting elements)
The second parameter is the number of elements we want to remove from an array.

```
                Delete elements and add things
let array = [2,3,4,5,6]
//starting from index one, I want to remove two elements and add chicken
array.splice(1,2, "chicken")
==> return value: [ 3, 4 ]
==> console.log(array) // [ 2, 'chicken', 5, 6 ]
```
Here we are giving .splice(), three parameters, the third parameter is optional. Recap:
1. **First parameter:** Starting index, the point at which you want to delete things
2. **Second parameter:** Number of elements, you want to remove from an array
3. **Third parameter:** Optional, elements you want to add at a specified position

```
Delete none, Add things 
let array = [2,3,4,5,6]
//At index one, delete nothing (hence 0 as the second parameter), and add few more elements
array.splice(1,0,"grandma", "loves", "chicken")
==> return value: []
==> console.log(array) // [ 2, 'grandma', 'loves', 'chicken', 3, 4, 5, 6 ]
```
When you don’t want to delete anything, just add “0”, to the second parameter.

```
Replace elements with other things
let array = [2,3,4,5,6]
//At index 4, replace number 6 with other elements
array.splice(4, 1,"grandma", "loves", "eric")
==> return value: [ 6 ]
==> console.log(array)// [ 2, 3, 4, 5, 'grandma', 'loves', 'eric' ]
```
I hope this blog was helpful! Now go ahead and play around with .splice() until it is clear and also challenge yourself with a leet code problem: [Move Zeros](https://leetcode.com/problems/move-zeroes/).


Reference: 
[Javascript Splice](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
Internet as a graph
Tags: react, node, sideprojects
Published: 2020-08-12 16:39:30

I created this website to show all the links any given URL has and display it as a graph. You can see how websites are connected with each other.

https://github.com/albertocastro/graph-sites/graphs/traffic


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/xvignuicift9hjw0e5k6.png)
Six Simple Steps to Stop Rambling in Interviews
Tags: career, hiring, interview
Published: 2020-08-12 16:32:51

Every interviewer, regardless of what they are supposed to be evaluating, will evaluate how you communicate. I've been to countless hiring decision debriefs where interviewers mentioned a candidate's rambling as a negative.

In this video I give you six ways to stop rambling, which you can immediately use to leave a stronger impression in interviews.

{% youtube ufqRTywtdEU %}

CANDIDATE PLANET:
Empowering candidates to ace interviews, negotiate offers and advocate for themselves at work. Leave a comment or email Lusen@CandidatePlanet.com with questions you want me to answer.

PLEASE SUBSCRIBE \o/:
☆ Youtube ☆ https://youtube.com/CandidatePlanet
☆ Spotify ☆ https://open.spotify.com/show/39mwa4oOlKC7dMaNbLNFYE
☆ Newsletter ☆ http://newsletter.candidateplanet.com/
☆ LinkedIn ☆ https://linkedin.com/in/lus

SALARY NEGOTIATION PLAYLIST:
☆ https://www.youtube.com/playlist?list=PLY0uEDNh-Haqes9eEvyGtzrUWOHv-c1op

ACE YOUR INTERVIEWS PLAYLIST:
☆ https://www.youtube.com/playlist?list=PLY0uEDNh-HarP6UtKFYRJZnkXzz4ICi73

Section art inspired by Seahawk and She-Ra: Princesses of Power.
The Usefulness of GPT-3 Deserves The Virality
Tags: machinelearning, gpt3, naturallanguageprocessing
Published: 2020-08-12 16:24:39

This is a comment on Agustin Lebron's [The case against the import of GPT-3](https://marginalrevolution.com/marginalrevolution/2020/07/the-case-against-the-import-of-gpt-3.html), as quoted by Tyler Cowen. I know nothing about the two, apart from stumbling upon it when I was looking for Max Woolf's [Tempering Expectations for GPT-3 and OpenAI’s API](https://minimaxir.com/2020/07/gpt3-expectations/).

Max Woolf's evaluation is very precise and valid, and with which I have to agree. The hype of GPT-3 on Twitter is obviously subject to selection bias. I'd even add survivorship bias on top, which virality always brings. And there are many details, from ethical to legal to economic, to iron out before a commercially successful product using GPT-3 can appear on the market. After all, technology is only one part of any business.

What I take issue with is Lebron taking Woolf's evaluation one step further, and writes that "we're not replacing front-end devs with attention-layer-stacks anytime soon." I take issue with the thinking that the effect of GPT-3 starts and ends with "replacing front-end devs".

I take issue with such thinking because of also survivorship bias, but in a different context: the most visible "replacing" happens to the existing surviving workers, while the loss of future workers are much less so. 

To wit, the US has lost 15% of librarian jobs nationwide from 2009-10 to 2015-16, due to a demand for "digital learning specialists" instead. At the center of digital learning is the largest machine learning service deployed: Google. 

There are ample research showing that Google cannot replace librarians entirely. That librarians perform many duties Google cannot. But nonetheless, Google is still replacing librarians in many senses of that word. We no longer need to ask a librarian which is the highest mountain peak of the world. We no longer need to ask a librarian for some nice recipes. 

Librarians use Google, too. Librarians helped develop Google Scholar. However with Google Scholar, we need, or at least the school administrators think that we need, fewer librarians.

Seeing that GPT-3 is an even smarter model than the one behind Google, and that even Google has displaced librarians, it is inevitable that products based on GPT-3 will similarly displace workers somewhere, to some extent. "Replacing" a whole profession to extinction is indeed rare, as many traditional crafts are still preserved as cultural heritage without economic benefits. Replacing workers, though, is much easier. 

---

1. [Changing Times: School Librarian Staffing Status | Teacher Librarian](http://teacherlibrarian.com/2018/04/11/changing-times-school-librarian-staffing-status/)
2. [“Defining What We Do—All Over Again”: Occupational Identity, Technological Change, and the Librarian/Internet-Search Relationship | Academy of Management Journal](https://journals.aom.org/doi/abs/10.5465/amj.2012.0201)
Have many tabs open?
Tags: javascript, react, typescript
Published: 2020-08-12 16:08:46

Hello everyone! 😁

Really excited to share — Hare - Tab manager for browsers.

Have too many tabs open?

Increase productivity by quickly navigating through your open tabs. Comes with a MacOs spotlight like experience for browser.

Homepage: https://tabhare.com/

Chrome: https://chrome.google.com/webstore/detail/hare-%E2%80%93%C2%A0beautiful-tab-mana/elklpfhmdbclpenlnljkfknnijnjnmon

Firefox: https://addons.mozilla.org/en-US/firefox/addon/hare-beautiful-tab-manager/

Got great support from product hunt with 272 upvotes and would like to share it with you guys as well. Link to it, if you'd like to check it out - https://www.producthunt.com/posts/hare