teleren/devto huggingface dataset:
🎊🎊Celebrating 10k Followers with: Undefined Gooselet!🎊🎊
Tags: goose
Published: 2019-10-12 16:55:43

---
title: 🎊🎊Celebrating 10k Followers with: Undefined Gooselet!🎊🎊
published: true
description: After almost 3 years on dev.to I finally reached 10,000 followers!
tags: goose
cover_image: https://thepracticaldev.s3.amazonaws.com/i/7d0wi22za42e8hlrjvid.jpg
---

After almost 3 years on dev.to **I finally reached *10,000* followers!** :D

When I started blogging in 2017, I thought nobody will even read my stuff, so:

# 🎊 THANK YOU VERY VERY MUCH!!! 🎊

It was a new years resolution, I wanted to blog once a week for one year to see if something comes from it. I almost did it! I did 52 articles in 2017 but missed a week because of sickness, but I didn't let it slip and wrote more articles later!

I wrote about JavaScript, WebPack, React, AWS, severless, APIs, Reason, Rust, Node.js and what not. I even had many guest posts about topics like machine learning and DevOps!

Blogging led me to update one of my tutorials on GitHub regularly, which made it so enjoyable that I got offered [a book deal by \newline](https://www.fullstackreact.com/react-from-zero/) in 2018, so I wrote my first book, and it sold hundreds of times!

In 2019, I got approached by a few companies to write articles for them, and two weeks ago, I did my first online tech talk:

{% post kayis/tech-talk-debugging-aws-lambda-functions-with-vscode-4mbm %}

So, what would be better to celebrate 10,000 followers on a blog about software development than software?!

Inspired by [Honkify](https://github.com/jlengstorf/honkify), which was, in turn, inspired by [Untitled Goose Game](https://goose.game/), I created a bookmarklet that lets you cause shenanigans on your favorite websites!

# [`undefined` gooselet](https://kay-is.github.io/undefined-gooselet/)

**The goose is loose on dev.to:**

{% youtube psjQu43d_dI %}

Reviewed by my loved ones:

- *"This may be the best software you ever created. You did honkin well!"*
- *"I'm proud like a mother! This is why we exist"*


And in the spirit of hacktoberfest: **Pull requests are very welcome!** (because it's really buggy at the moment XD) 

{% github kay-is/undefined-gooselet %}

I hope you have fun using this bookmarklet and if you got a boring weekend ahead of you: [I'm waiting for your PRs!](https://github.com/kay-is/undefined-gooselet) :D

---

If you like my content on dev.to so far: **Follow me on [Twitter](https://twitter.com/K4y1s) and [GitHub](https://github.com/kay-is)**.
Handling IndexOutOfBounds Exception in Clojure with Young Frankenstein GIFs
Tags: clojure, beginners, todayilearned
Published: 2019-10-12 16:47:26

# What is IndexOutOfBounds?

**IndexOutOfBoundsException** is a **subclass** of **RuntimeException** mean it is an unchecked exception which is thrown to indicate that an index of some sort (such as to an array, to a string, or to a vector) is out of range.

![](https://media.giphy.com/media/l3vRlInF7QViJNOow/giphy.gif)

# How handle this?

Let's suppose we have an array with prices and we need to get a value in a specified position, like that
```clojure
(def prices [100 200 300])

(println (prices 0)) ;returns 100

(println (prices 100)) ;IndexOutOfBoundsException
```
We can get this using the array as a "function" but what if we don't have a position we want to pursue? This will crack our flow...

![](https://media2.giphy.com/media/CTIvoEJYYhP9e/giphy.gif)


Your program will pop an *Exception* and not proceed, we need to persist the flow so...

## Clojure is amazing and give to us a core method ~~symbol~~ **get** 

According the docs its *returns the value mapped to key, not-found or nil if key not present*, besides that we can define a default value.

Handling this like a charm
```clojure
(def prices [100 200 300])

(println (get prices 0)) ;returns 100 normally

(println (get prices 100)) 
;returns nil, because our array only have 3 positions, and 100 is a value of that

;We can define a default value when a position doesn't exist
(println (get prices 100 0)) 

```
That's it for now 🍻
Therefore, now you can handle your array and without worrying about an exception popping and stopping your normally working program 

![](https://media.tenor.com/images/bf1e1df26d3ddcf4c3cfe7d87108961b/tenor.gif)
See more about Clojure if you want [here](https://clojuredocs.org).
Cancellable Promises
Tags: ask, javascript, promise, thenable
Published: 2019-10-12 16:41:34

---
title: Cancellable Promises
published: true
description: 
cover_image: https://i.stack.imgur.com/Ewn3b.png
tags: ask, javascript, promise, thenable
---
I want to be able to cancel my promises, and am using something inspired by:
{% stackoverflow 56474891 %}

The solution above works, but i would like to improve it and am not willing to use [bluebirdjs](http://bluebirdjs.com/docs/api/cancellation.html) or [Observables](https://rxjs.dev/) _(well, at least not currently...)_

I would want to have that as a prototype of the `Promise` object, so i could call `cancel` on any native promise. 

Anyone willing to offer the simplest implementation direction?
TalkPriority: Podcasting Meets Group Calls
Tags: podcast, hacktoberfest, webdev
Published: 2019-10-12 16:35:34

We are living in a podcast boom. It is a great time to start a podcast, and to listen to podcasts.

Podcasts are a wonderful medium. Podcasts allow us to listen to conversations between two people, and feel like we are present in the room with them. Podcasts have gained in popularity recently because of bluetooth headphones and 4G.

Bluetooth headphones and 4G also improve the experience of phone calls.
![a](https://lh4.googleusercontent.com/c6_1iKksfdhP7b472v9yo4Havy-jYgDWNp_mIw2EiZVQnBKxtJ6ZR6kX1kX3myQrNAGXTljKmykyMFS6PB8IXl9I7htlmhAzmcuCS3sIix-mPx9YeIxNnejktoxffCQJ1UOkSU53)

People mostly communicate through text these days. But phone calls are better than ever. Every week, I have a group call with my siblings. I am also spending more time on the phone with old friends, as well as my parents.

These phone calls are more enjoyable than listening to a podcast. They fill time similarly to podcasts.

While I am on a group call, I wash dishes or jog through the park. It is like listening to a podcast and interacting with it.

I like to call people who understand good conversational norms. This means that they listen to me and ask questions. They don’t monopolize the conversation. If I could have more phone calls like this, then I would be listening to fewer podcasts.

<h2>The Social Network For Phone Calls</h2>

What would a social network based around phone calls look like?


Here is my idea.
![](https://lh5.googleusercontent.com/7MuvGhRV3-UqTxPHEHEoVBhhurkbkrclNwNNJ6_gLc5O74YqurETz2dRpWV_Ejt4IfWXtnAqCRS8Qn8PNHv9vnhpLathZ2gTLTs-uZPigdzwzED5nLEY9jsWdOp115g0p3jjnmX7)

This is TalkPriority. The user flow works as follows:

1. User signs up
2. User is put into the “talk room”
3. Only one person can talk at a time. You push the green “Push to talk” button in order to talk
4. Everyone has a “priority”. You can interrupt anyone who is ranked lower than you. Your ranking is based on how little you talk.
5. When you are talking, your “seconds not talked” goes down. When you are not talking “seconds not talked” goes up.
6. In the “transcription room” your call is transcribed so that people can look through the history. This lets anyone who joins the call have context for what is going on.

I want to try this, so I am building it. [It will be open source and built on FindCollabs here.](https://www.google.com/url?q=https://findcollabs.com/project/talkpriority-qg0sMyjUHznsvgCXer5e&sa=D&ust=1570901313201000https://www.google.com/url?q=https://findcollabs.com/project/talkpriority-qg0sMyjUHznsvgCXer5e&sa=D&ust=1570901313201000)


If you are interested in trying it out or helping to build it, join the FindCollabs or leave a comment here on DEV.
Path to become a junior+ data engineer?
Tags: help, distributedsystems, spark, hadoop
Published: 2019-10-12 15:35:51

Henlo!

I'm an I.T. student and I'd like to work as a data engineer but I'm like a fish lost in an ocean of big data tools.

First of, I've got a strong Web background, mainly doing back-end stuff such as building and deploying kind of micro-services around the internet. But what I like most is to work with data, Big Data.

But I don't know where to start. Today I'm quite confident with Apache Beam, SQL/NoSQL, Messaging Queues, Cloud solutions... but I feel like it's nothing compared to the great diversity of Big Data tools.

Should I go for Open-Source stuff such as Kafka, Cassandra, HDFS etc, or should I focus on the Cloud side (Cloud Dataflow, AWS EMR, Pub/Sub, Kinesis...) ?

I'd appreciate any help ;)
Do you even alias, bro?
Tags: becode, zsh, fish, alias
Published: 2019-10-12 15:26:49

> I'm proud of the pun in the title. Sorry not sorry ;)

* * *

It's a fact, we _live_ in the command-line. 

There was a time (and I _don't_ regret that) where using the command line for web development was a "strange thing"; the console was for the _sysadmins_.

But _the times are a changin'_, and between git, npm, webpack and all that marvellous tools, we live in the command line.

There's plenty tools to help you take the better of your terminal, such as a _better_ shell than bash, like [zsh](https://en.wikipedia.org/wiki/Z_shell) or [fish](https://en.wikipedia.org/wiki/Friendly_interactive_shell), multiplexers, like [tmux](https://en.wikipedia.org/wiki/Tmux), and even [complete frameworks](https://ohmyz.sh) to enhance your experience.

But the most useful feature of a terminal, hands down, are the aliases.

An alias is as simple as it sounds: it's a command you type as a shortcut for a longer command. Like typing `l` for `ls -FalH`, or `..` for `cd ..`.

Creating aliases is easy: for [bash](https://ss64.com/bash/alias.html), [zsh](http://zsh.sourceforge.net/Intro/intro_8.html) or [fish](https://fishshell.com/docs/current/commands.html#alias).

I can't recommend you enough to create your own aliases, since they tend to be _personal_, but when you take a look at [_dotfiles_](https://github.com/webpro/awesome-dotfiles), you'll see many common aliases.

* * *

Here's a list of some of my favorite aliases. You can find a [complete list](https://github.com/leny/pwendok/tree/master/fish/functions) in [my dotfiles repository](https://github.com/leny/pwendok).

### Navigation & listing

- `..` = `cd ..`
- `...` = `cd -` (jumping back to the previous directory you visited)
- `c` = `clear`
- `cat` = `bat` (a [better cat](https://github.com/sharkdp/bat))
- `ll` = `ls -FalH`
- `l` = `exa` (a [modern replacement for ls](https://the.exa.website))

### Git aliases

- `git` = `hub` (not [really an alias](https://github.com/github/hub), but if you work with GitHub a lot, it's wonderful)
- `gs` = `git status -sb`
- `gap` = `git add -p` (git add with _patch mode_)
- `grhh` = `git reset HEAD --hard`
- `gcdf` = `git clean -fd` (clean untracked files)
- `cdg` = `cd $(git rev-parse --show-toplevel)` (cd to the root of the repository)

### npm aliases

- `ni` = `npm install`
- `nid` = `npm install --only=dev` (only devDepencies)
- `nip` = `npm install --only=prod` (only dependencies)
- `nis` = `npm install --save`
- `nisd` = `npm install --save-dev`
- `nci` = [`npm ci`](https://docs.npmjs.com/cli/ci.html)

### misc

- `ping` = [`prettyping`](https://github.com/denilsonsa/prettyping)

* * *

I hope some of these can be as useful to you that they are for me.

Don't hesitate to submit your favorite aliases here or in an article on your own! It's always interesting to see what are the best shortcuts of others!
What words we should avoid?
Tags: discuss, writing, programming
Published: 2019-10-12 15:21:30

---
title: What words we should avoid?
published: true
description: simple, just, obvious and similar
tags: [discuss, writing, programming]
---

A lot of people heard about some words you should avoid in technical writing, for example, "simple", "just", "obvious". Because they can be removed most of the time without changing the sense of the sentence and they can make something seem easy when it isn't.

**I wonder what else in this category?**

I thought about one example recently "researchers say" unless you are quoting some research paper.
Javascript function expressions
Tags: javascript
Published: 2019-10-12 14:31:37

---
title: Javascript function expressions
published: true
description: How to define functions with function expressions in Javascript
tags: javascript
---

## How to define functions with function expressions in Javascript

Javascript function expressions are always part of other statements.

For example, they can be on the right side of a variable assignment, like the example below:

```
const hello = function() { return "Hello" };

console.log(hello);   // [Function: hello]
console.log(hello()); // Hello
Function expressions can also be passed as arguments to other functions:

myFunction( function() {} );   // function expression passed 
                               // in as an argument
```

The main difference between the function declarations we saw yesterday and function expressions is that in function declarations the function name is mandatory, while in function expressions it's optional.

Function declarations have a name because the main purpose of a function is to be invoked and the way we invoke a function is through its name.
Function expressions have other ways to be invoked.
For example when we assign a function expression to a variable, we invoke the function by calling the variable name followed by parenthesis.
If the function expression is an argument to another function, we invoke it when we call the parameter name inside the calling function.

```
function myOutsideFunction(inside) {
  return inside();
}

myOutsideFunction(function() {
  console.log("Hello world again");
})

// prints out:
// "Hello world again"
```

Function expressions can be called immediately, with a construct that is called "immediately invoked function expression".

The way we do it is to write a function expression, and then append parenthesis at the end. We also need to enclose the actual function expression in parenthesis or the Javascript interpreter will have trouble with the syntax.
Here's an example of an immediately invoked function expression:

```
(function() {
  console.log('Hello from a function expression');
})();
```

Another way to immediately invoke function expressions is to use a unary operator, like `+ - ! ~`

By prefixing the function expression with the unary operator, we signal to the Javascript engine that this is an expression, and not a statement, so the engine doesn't think that this is a function declaration.
Using this method, we can omit parenthesis around the function expression and still get the result of invoking the function expression correctly.

```
+function() {
  console.log('IIFE with a unary operator');
}();
```

Tomorrow we are going to briefly look at three more ways we can define functions in Javascript.
📚 Awesome links from dev.to and around the web #1
Tags: hacktoberfest, javascript, career, ruby
Published: 2019-10-12 14:29:37

Hey fellow developers and designers 👋🏽

I'm introducing a new series called `📚 Awesome links from dev.to and around the web` where will be posting curated links of interesting articles every Saturday.

Most of the articles I will post will be the ones I would have read during the week and found really useful, but if you also come across some cool articles you can [send them my way](https://dev.to/connect/@kudapara) (my DM is always open 😎).

With each post of this series I will also include `✨ Random delights from around the web`, which are interesting tools, books, podcasts or anything that I would have discovered on the web. Here too you are free to [suggest yours](https://dev.to/connect/@kudapara).

And then lastly I'll shamelessly(ish) plug my own work that I think you would be interested in.

So that said and done, lets dive right into this week's post 😉

---
**Why learn Javascript - [@blessedtawanda](https://dev.to/blessedtawanda)**

{% post blessedtawanda/why-learn-javascript-ka1 %}

**Web Development Projects That can help You Get a Job in 2019-2020 - [@justaashir](https://dev.to/justaashir)**

{% post justaashir/web-development-projects-that-can-definitely-get-you-a-job-in-2019-2020-4c36 %}

**4 reasons why being humble will help you become a better developer - [@maurogarcia_19](https://dev.to/maurogarcia_19)**

{% post maurogarcia_19/4-reasons-why-being-humble-will-help-you-become-a-better-developer-9b0%}

- [How to install ruby on rails with rbenv on Ubuntu 18.04](https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-with-rbenv-on-ubuntu-18-04)
- [Leveraging pundit](https://crypt.codemancers.com/posts/2018-07-29-leveraging-pundit)


---

# ✨ Random delights from around the world

- ⭐ [Hacktoberfest](https://hacktoberfest.digitalocean.com) - Support open source and earn a limited edition T-shirt!
- [Tailwind CSS](https://tailwsindcss.com) - A utility-first CSS framework for rapidly building custom designs.
- [Upcase by Thoughtbot](http://thoughtbot.com/upcase) - Explore video tutorials, exercises, forum discussions and the community you need to grow as a web developer for free.

---
# 🙈 Shameless Plugs

{% github kudapara/curated-design-tools %}


---
> Every action you take is a vote for the type of person you wish to become. 
- [@JamesClear](https://twitter.com/jamesclear/status/1048612840615997441)

---
Cheers 🥂
[@kudapara](https://twitter.com/kudapara)
Automating React components creation, say hi to`mkcomponent`
Tags: react
Published: 2019-10-12 14:22:47

I am a fan of automating trivial tasks when possible, this allows me to focus on the things that really matter, the linter is a good example of not having to think about a semicolon or unused variables because the machine has a better understanding of the resources used in my program.

While at [Typeform](https://www.typeform.com), a colleague created a simple CLI tool to create React components, and for me was a great idea, around 15 Frontend engineers didn't have to think about how we created components at the company, because the tool created the folder structure, and the component with the style we had at the company.

## The time I decided to create one

Because it was a private project I couldn't port it when I changed to [Badi](https://badi.com), and I thought it was a great idea to create a CLI tool because it will help me and I will learn how to create a REPL using node.

## Requirements

- Intuitive (options that are easy to remember)
- Can create Function and Class components
- Opt-in styled-components and test file
- Configurable, using a package.json namespace

## The interface

As used when creating a folder using the terminal `mkdir`, I thought that `mkcomponent` could be a good option.

The following options are in the first iteration:
- Component type: --func, --class, --pure
- Help: --help

Allow with some default conventions:
- pascal-case for the component name
- slug-case for folder and file names

And project-based options:
``` json
{
  "mkcomponent": {
    "withTest": false,
    "withStyled": false,
    "testSuffix": "test",
  }
}
```

## The result
I decided to have a simple version I can start using it at [badi](https://badi.com). If you feel curious to try it, you can find it as [`react-mkcomponent`](https://www.npmjs.com/package/react-mkcomponent?activeTab=readme), and here you can [find the repository](https://github.com/jepser/mkcomponent).

1. To install `yarn global add react-mkcomponent` or `npm install -g react-mkcomponent`
2. Open the folder you want to create component in and type `mkcomponent component-name --func|--class|--pure`
3. Voilà, you have a component!
Resume review request
Published: 2019-10-12 14:21:17

---
title: Resume review request 
published: true
description: Need help for my resume review 
Tags: discuss, career, help
---

One year ago [this amazing post](https://dev.to/kaydacode/resume-review-1oei) was published and many junior developers got amazing reviews and feedback on their resumes.

I have the impression that it's now old and no one is no longer looking at it and that is why I decided to post this.


I need someone who can take some minutes from his weekend to review my resume and give me actionable feedback.

[Here](https://drive.google.com/file/d/18vMKkRFF3vWu1dy8DmZ9jDB1Ly3L1J0m/view?usp=sharing) is a link to it, it was written with latex and the pdf was generate.

PS: I am also looking for jobs mostly remote,  backend and data science or engineering related, I will be available to start in January 2020.
How do I get contributions to my opensource project?
Tags: hacktoberfest, opensource, contributorswanted
Published: 2019-10-12 14:06:34

Hi! As I said in my previous post, I have completed hacktoberfest as a contributor to other repos. But I didn't even start as a repo maintainer. Even before Hacktoberfest has started, I prepared some issues and labeled them with hacktoberfest label.
But it is October 12 already, but I didn't get any PR's, issues, or anything(maybe except for a star or a two).
Could you please tell me what am I doing wrong as a repo maintainer preventing contributions?
My previous post about my repo:
{% link mrnaif2018/bitcartcc-new-contributors-welcome-open-source-project-3d86 %}
Daily Challenge #89 - Extract domain name from URL
Tags: challenge
Published: 2019-10-12 13:52:51

---
title: Daily Challenge #89 - Extract domain name from URL
published: true
series: Daily Challenge
description: Write a function that parses out the domain name.
tags: challenge
---

Write a function that, when given a URL as a string, returns only the domain name as a string. 
<pre>
domainName(https://twitter.com/explore) == "twitter"
domainName(https://github.com/thepracticaldev/dev.to) == "github"
domainName(https://www.youtube.com) == "youtube"
</pre>

Good luck!

***
_Want to propose a challenge idea for a future post?  Email **yo+challenge@dev.to** with your suggestions!_
how to execute commands from another terminals by being on just one terminal
Tags: linux, terminal, cmd, executable
Published: 2019-10-12 13:42:32

A)OPEN TERMINAL FROM TERMINAL
--
1.gnome-terminal 

--terminal command to open terminal .


2.gnome-terminal -e [command] 

--terminal command to open terminal and execute command in new terminal


3.gnome-terminal --command="bash -c '[command1]; [command2]; $SHELL'" 

--bash -c tells it is a bash command 
--command1 and command2 are commands to be executed on new terminal. 
--$SHELL makes the terminal remain open to work on.


4.gnome-terminal --tab  

--opens a new tab in the same terminal.