teleren/devto huggingface dataset:
The Dreaded Imposter Syndrome
Published: 2020-02-04 18:45:40

I've got imposter syndrome… and maybe you do too?

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0uh5k02lt01m58sfq5ws.gif)

First of all… what even is Imposter Syndrome? Imposter Syndrome is loosely defined as the fear of being found out as a fraud, as somebody who is not qualified to be doing the work they are doing despite their talent and experience. This belief tends to be somewhat baseless, as people are often more qualified than they believe. However, our inner voices can be strong and the more we tell ourselves something, the more it tends to come to fruition. 

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

Anybody can experience imposter syndrome. What I've found interesting about Flatiron School is that people from all backgrounds come together all with the same end goal of becoming software developers. Everyone has a different story before starting the bootcamp which means it should be hard to compare or quantify our skills. However, it can be so easy to slip into a mindset of comparison as we move through the program. I believe that it's essential to think of our differences as strengths rather than weaknesses. Being exposed to different perspectives can spark new ideas and keep our current ideas fresh. 

I do feel like I've experienced imposer syndrome coming to Flatiron. My educational background isn't in tech; I have a bachelors degree in Sociology with a minor in Social Work. Even though I spent (too) much of my time growing up playing computer and video games, I didn't take the plunge into learning to code until around two years ago. Even though I zoomed through HTML and CSS, JavaScript took me good amount of time to get the hang of. I knew the pace of the bootcamp would be fast and I was worried I wouldn't be able to keep up. And true to imposter syndrome, I felt like I almost tricked my way into the course. Even though I had been studying programming for over a year and half, at times it didn't seem like enough. Did I just get into the program out of sheer luck? Another thing that came to mind was the pervasive gender gap in technology. Women are outnumbered to men, and in a way that made the stakes higher to me. I was afraid of failing and being seen as yet another woman who couldn't cut it in the field.

So what can we all do to combat imposter syndrome? Here are some strategies that I've come up with and been trying to practice so far.

1. Reminding myself that learning anything takes time, and that's why maintaining a positive mindset and respecting where I'm at right now is so important.
2. Appreciating the challenges that learning to code has presented me. Celebrating what I do know and claiming what I have learned so far
3. Finding a mentor who you I relate to and be open with. Talk to them about how I'm contributing and what I do well and know well and what else I have to learn.


Remember that everyone is on a learning journey all of the time - and as long as you remain open and curious, you can quiet your inner imposter.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/qgohnidqdr75ddb3kr6u.gif)
Agora Student Ambassador Program
Tags: agora, agoraio, ambassador
Published: 2020-02-04 18:26:00

# **Agora Student Ambassador Program**

The Agora Student Ambassador Program aims to identify energetic, passionate, brilliant, like-minded college students across the globe who are chosen to train on Agora Real-Time Communication for AI/ML, Web/App and IoT applications.

These Agora Student Ambassadors (ASA) are growing campus representatives and leaders, who are enthusiastic to learn innovative approaches to real-time communication, artificial intelligence, and voice/video technologies. By sharing their training with fellow colleagues, ASAs then act as the primary channel between campus students and Agora team.

# **Program Benefits for SA**

◆ Formal Association with Agora via exclusive Agora gear and Ambassador Title.
◆ Opportunity to connect with Agora engineers and learn via web connect sessions and office hours.
◆ Partial travel support, speakership opportunities, and opportunities to train others.
◆ Sponsored funds/swag to assist in hosting sessions, training others, and speaking on and off-campus to promote your work.
◆ Contribute to shaping our product roadmap in the alpha stages of our new products.
◆ Exclusive access to the Agora beta programs.
◆ Annual Summit for all active ASA.
◆ Opportunity to work/intern at Agora and its partners.
◆ Linkedin Recommendations on successful active tenure.

And many more surprises!

Head on to below link to learn more and apply.

https://bit.ly/agorastudentambassador
How to save chart as image Chart.js
Tags: chartjs, javascript, charts
Published: 2020-02-04 18:21:45

HTML code:

```html
<!-- Chart.js Object -->
<canvas id="lineChart" width="300" height="150"> </canvas>

<!-- Download Button
"download" attribute is very important:
<a download ="nameChart.jpg"></a> 
-->
<a id="download"
        download="ChartImage.jpg" 
        href=""
        class="btn btn-primary float-right bg-flat-color-1"
        title="Descargar Gráfico">

        <!-- Download Icon -->
 <i class="fa fa-download"></i>
 </a>
```
JavaScript code:
```javascript
//Download Chart Image
document.getElementById("download").addEventListener('click', function(){
  /*Get image of canvas element*/
  var url_base64jp = document.getElementById("lineChart").toDataURL("image/jpg");
  /*get download button (tag: <a></a>) */
  var a =  document.getElementById("download");
  /*insert chart image url to download button (tag: <a></a>) */
  a.href = url_base64jp;
});
```
Example of Line Chart:

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


Full code in GitHub: 
-  https://github.com/NoeMelo/Chart.js
Writing Good Tick Limiters
Tags: java, gamedev, beginners
Published: 2020-02-04 18:09:12

Something I've seen in sooo many game tutorials at the start is that a lot of people are making a tick limiter much more difficult than it really should be. If you're not familiar with it, a tick limiter is used to limit the number of ticks per second so that the game runs the same speed on every device. 

(All code is written in Java).

I see so many people do this:

    long newTime = System.nanoTime();
    long frameTime = newTime - currentTime;

    currentTime = newTime;
    accumulator += frameTime;

    while (accumulator >= nanosPerLogicTick) {
        //tick and stuff
    }

Or the even worse one:

    int fps = 60;
    double timePerTick = 1000000000 / fps;
    double delta = 0;
    long now;
    long lastTime = System.nanoTime();
    long timer = 0;
    int ticks = 0;
		
    while(running){
        now = System.nanoTime();
        delta += (now - lastTime) / timePerTick;
        timer += now - lastTime;
        lastTime = now;
			
        if(delta >= 1){
            //tick and stuff
            ticks++;
            delta--;
        }
			
        if(timer >= 1000000000){
            ticks = 0;
            timer = 0;
        }
    }

Wow... doesn't that seem a little extra? Turns out in Java it's as simple as this:

(Global var containing last time)

    private long lastTick = System.currentTimeMillis();

And finally, the if statement:

    if (System.currentTimeMillis() - lastTick >= (1000 / 60)) {
        lastTick = System.currentTimeMillis();
        //tick and stuff
    }

Hope this helps!
RESTful API with React help
Tags: react, api
Published: 2020-02-04 17:58:40

I am using the rick and morty API to learn some things using the rest api. I have built crds out like they have with the character info on it. What I need to do is figure out how to include an episodes name array to the card as well. But it's a different API /episodes instead of /characters. I considered using an each as it went through but that seems really inefficient. I am using map inside the render of the component and have built a separate component for episodes, and again, it feel like that is making it more complicated. Just wondering what kid of strategy you might use to access the episodes and display them in a card.
JavaScript is Taking Over the World, and TypeScript With It
Tags: javascript, typescript, productivity, webdev
Published: 2020-02-04 17:17:36

JavaScript has become the most popular programming language in the world. But as JavaScript has become more popular, so has TypeScript, and it's rise continues. The RedMonk language popularity measure has been [recently released](https://redmonk.com/sogrady/2019/03/20/language-rankings-1-19/) and has shown a huge jump in TypeScript usage.

Not everyone is happy about this. Many developers love their nice, dynamic JavaScript, and don't want types. But like it or not, there's a very real possibility that you may end up in a job using TypeScript.

That's why I've put together a brand new, completely free course on the [Five Essential Lessons for TypeScript Competence](https://thinkster.io/tutorials/five-essential-lessons-for-typescript-competence). I have cut out all the extra cruft and kept in just the essential things that you need to know about TypeScript. I even included some practice exercises so that you can actually LEARN the concepts by DOING, instead of just listening and then immediately forgetting most of what you heard. Check it out. It's well worth your time if you're not comfortable with TypeScript yet. You'll be TypeScript competent in just fifteen minutes.

I hope you enjoy it.

Happy coding!


Signup for my newsletter at [here.](https://is-tracking-link-api-prod.appspot.com/api/v1/click/4616255200034816/5570275139911680)
Visit Us: [thinkster.io](https://thinkster.io/) | Facebook: @gothinkster | Twitter: @GoThinkster
Which website do you follow for JavaScript problem solving?    
Tags: javascript
Published: 2020-02-04 17:49:08

Hello gorgeous friends, I was thinking that now i need to start solving JavaScript problems online, participate in online contests and engage with community. I found tons of problem solving sites and as a beginner i dont know which one to pick. 
So can you guys please tell me which website do you prefer for JS problem  solving and which one do you recommend. Thanks.
If you're a bird, I'm a bird: Learning to fly as a fledgling dev
Tags: wecoded, codenewbie
Published: 2020-02-04 17:19:06

I'm becoming a web developer. Like a newly hatched bird, I've been pouring HTML, CSS, Javascript, and all the trappings of frontend development down my throat. Sooner then I would like, I'll step off the ledge and see if I can fly.
 
The process has been intense. Who knew turning into a bird came with so much doubt? Am I really a bird? Do I have what it takes to bird? Will anyone give this bird a job? Give me a minute, I need to google how to flap my wings. 

As a fledgling developer, I am often overwhelmed by everything I don't know. There are more languages to speak computer than I know the names of. There are frameworks, best practices, four-year degrees, bootcamps, free resources, popular languages, unpopular languages, and at the end of the day there are flocks of birds who have made it up into the sky.

I watch them with envy. It's hard to imagine that every one of those developers who warm their wings near the sun started where I am now — looking over the edge of a wobbly nest and wondering if I know enough to keep me in the air. 

There's only one way to find out. The transition from learning to doing is daunting. But there is no better way to know that I can fly than to feel the wind beneath my wings. Every time I take a leap the panicky flapping of frantic wings gets a little closer to the smooth glides that can carry me up to the sun. 

Whether it's beginning the job hunt, starting a tutorial for a new language, or stepping into the networking unknown at a local tech event, I'm getting closer to the developer I want to be. The process is an endless one — there's always more to learn — but luckily my confidence grows with every short flight I take.

Looking up at the sky from my rickety nest, it's hard to imagine the heights I can reach without thinking of the drops, as well. But my true fear is not in the flying, it's at the thought of being stuck on the ground. 

Give me a minute to gather my courage. Would you like to jump with me? How else will we learn to fly? Let's count down together shall we? 3...2...1.
Laravel: How to configure multiple search drivers
Tags: laravel, algolia, scout
Published: 2020-02-04 17:03:27

In this tutorial, we will look at how to configure multiple search drivers in Laravel. As anyone familiar with Laravel knows, Algolia is the officially supported search driver, it is the only search engine that ships out of the box with Laravel scout.

However, because Algolia can get pretty expensive, we mostly turn to other free alternatives till it is absolutely required to use Algolia.


__Assumptions__:

This is not a from-the-scratch tutorial so here are a couple of assumptions I am making:

- You have built/curently building an app with the Laravel framework.
- You already have scout installed and most likely have one search driver currently set up. If not, [checkout the documentation on how to do this](https://laravel.com/docs/6.x/scout)

__Scenario__:

You want to reduce your cost to the barest minimum by using Algolia for specific models with expensive search operations while the remaining models use the free alternative you have setup.


- Install algolia sdk via composer

```composer require algolia/algoliasearch-client-php:^2.2```

- Add your app_id and secret to the .env file. To get this, login to your algolia account, go to API Keys and copy your application id and admin api key so you have something like this in your .env file

```
...
ALGOLIA_APP_ID=<application id>
ALGOLIA_SECRET=<admin api key>
...
```

- Configure algolia in your scout.php file:

```
'algolia' => [
        'id'     => env('ALGOLIA_APP_ID', ''),
        'secret' => env('ALGOLIA_SECRET', ''),
    ],
```

and also make sure the other search driver you have setup is your default e.g. ```'driver' => mysql```

- Configure algolia for a particular model: 

Laravel scout has a `searchableUsing()` method which is responsible for getting the appropriate scout engine for the model and this is what we'll be overriding.

Right now, you can check the scout engine a model uses using artisan tinker like so:

Run ```php artisan tinker``` then


```App\Models\Patient::first()->searchableUsing() ``` in my case, it returns ```DamianTW\MySQLScout\Engines\MySQLEngine ``` which is the engine I am currently using.

Now we have that confirmed, we can go ahead to override the method

```
public function searchableUsing()
{
   return app(EngineManager::class)->engine('algolia');
}
```

The `algolia` in this case is from the engine we setup in our scout.php file i.e. the name we put in our engine must match what's stated in the scout config file. To avoid mistakes, we can add this to a constants file or a .env then pick from there. 

You can verify that the override was successful by checking as we did earlier with the tinker environment.

So you can go ahead to (re)import your records and everything should work as normal.
Golang panic and recover
Tags: go, beginners
Published: 2020-02-04 16:54:52

In <a href="https://golang.org/">Golang</a>, Panic is a function that stops the ordinary flow of control and starts panicking.

<a href="https://golangr.com/errors/">Errors</a> are for abnormal conditions during program execution, but there are some cases where the program cannot continue executing after something went wrong.

In that case you can use panic to terminate the program.

A simple example is creating a new file, which is a requirement of the program. If the file cannot be created, the control flow must stop:

```go
    _, err := os.Create("/tmp/file")
    if err != nil {
        panic(err)
    }
```

## Example

The program below demonstrates the use of panic(). A program calls a function sayHello(name), which on normal situations outputs the name.

But what if a name is not specified? Then something went wrong: panic.

```go
package main

import (  
    "fmt"
)

func sayHello(name *string) {  
    if name == nil {
        panic("runtime error: name cannot be nil")
    }
    fmt.Printf("Hello %s\n", *name)
}

func main() {  
    sayHello(nil)
}
```

This outputs in the terminal:

```go
➜  ~ go run pan.go 
panic: runtime error: name cannot be nil

goroutine 1 [running]:
main.sayHello(...)
        /home/frank/pan.go:9
main.main()
        /home/frank/pan.go:15 +0x3a
exit status 2
```

## Recover

If the *panic* situation happens, the program terminates. In the real world, this is not good. 

The application terminating on error? Nobody wants that. Instead, you need a mechanism to recover from the error.

```bash
This is a Panic Situation
Recovery function
Main block executed
```

In code that looks like this:

```go
package main

import (
    "fmt"
)

func makePanic() {
    defer recoveryFunction()
    panic("This is a Panic Situation")
}

func recoveryFunction() {
    if recoveryMessage := recover(); recoveryMessage != nil {
      fmt.Println(recoveryMessage)
    }
    fmt.Println("Recovery function")
}

func main() {
    makePanic()
    fmt.Println("Main block executed")
}
```

**Related links:**
* <a href="https://golang.org/">Golang official website</a>
* <a href="https://golangr.com/">Learn Golang</a>
Using git to open your editor
Tags: git, bash, vim, vscode
Published: 2020-02-04 16:30:57

---
title: Using git to open your editor
published: true
description: Get back to work quickly using git history
tags: git, bash, vim, vscode
---

As busy developers, interruption is inevitable.

Someone asks a question and we need to research some code, so we open files, switch branches or change projects, The position of the editor gets lost.

Eventually the disruption ends and we we want to return to where we left off.

Sure, we can search or click around to re-open those files and close tabs.

But wait... there is another way 😅

We can use `git` history to control what files are opened by our editor.

## Modified Files

When returning to a repo that has uncommitted changes, it would be nice to re-open all changes in one shot. 

The `git ls-files` command can give us a list of changed file names. The command requires some flags to return both *modified* `--modified` and *new* files `--others`. It's also a good idea to use `--exclude-standard`, just to skip files excluded by `.gitignore`.

```bash
> #...modify file1.js
> #...modify file2.js
> #...add file3.js
> git ls-files . --modified --others --exclude-standard
file1.js
file2.js
file3.js
```

Armed with the list of modified files, we can setup a bash `alias` to open  these file with our editor:

```bash
# ~/.bash_aliases

# for vim
# vim -O opens a split window
alias mods='vim -O $(git ls-files . --modified --exclude-standard --others)'

# for vscode
alias mods='code $(git ls-files . --modified --exclude-standard --others)'
```

Now simply type `mods` - and presto - your editor opens with all the modified files. ✨

## Amending Commits

When working on a branch, it's common to continue work based on the last commit. Maybe a reviewer suggested an edit on GitHub, or there's a typo. It would be awesome to just re-open the last commit right where we were.

This is very similar to what we did before, except this time the file list comes from the previous commit.

We can use the `git diff-tree <sha>` command to get the file list from a commit. We only want names `--name-only` and don't need the commit id `--no-commit-id`, and we only want files from the last commit (aka `HEAD`).

```bash
> git diff-tree --no-commit-id --name-only HEAD
file1.js
file2.js
``` 

Just like before, we can setup a bash `alias` to pass the files list to our editor:

```bash
# ~/.bash_aliases

# for vim
alias amend='vim -O $(git diff-tree --no-commit-id --name-only -r HEAD)'

# for vscode
alias amend='code $(git diff-tree --no-commit-id --name-only -r HEAD)'
```

Now you can type `amend` - and voila - you are editing the files from the last commit ✨

**Happy Coding!**

✌
Software Developer-Java (Atlanta,GA)
Tags: java, microservices, sql
Published: 2020-02-04 16:24:55

Role:  Software developer - Java
Location:  Atlanta, GA
Interview Mode: Skype
Duration: 6 Months
Mandatory Skills: Java,MicroserviceDevelopmment
Job Description:
Competencies: Java,MicroserviceDevelopmment

Job Description: "JD Software Developer- Atleast 7 years of experience
Proven record of working independently . Work closely with the Senior developer , understand requirement and be able
to deliver work . Aware of agile development. Should be able to independently pick up stories and deliver it .
Should be able to Effectively and efficiently communicates with technical and non-technical audiences, including
executive leadership
Must have Skills
Java/J2ee, Java8, Spring, Springboot, MicroServices, Spring Data, JPA, Hibername, Junits, Mokito, Eclipse/STS, SQL, GIT,
MAVEN, Bitbucket, POSTMAN(Rest API Client), SOAPUI, PCF
Good To have Skills
RabbitMQ, Spring Security, Caching, Splunk, Jira, Jenkins. "


If your skills match the same, connect at shivani.dalal@tekfortune.com
How to make your own CSS media object pattern
Tags: css
Published: 2020-02-04 16:21:00

{% youtube 8omyNs6s390 %}

Originally created by Nicole Sullivan [back in 2010](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/), the media object is a common web pattern that "could save you hundreds of lines of code".

View the demo on [CodePen](https://www.youtube.com/redirect?q=https%3A%2F%2Fcodepen.io%2Falexcarpenter%2Fpen%2FLYEwXRV%3Feditors%3D1101&redir_token=yxEs2hQwBqEvZKwC9vGu6y_af318MTU4MDkxOTUxNkAxNTgwODMzMTE2&v=8omyNs6s390&event=video_description)
Arrow functions
Tags: javascript, beginners, webdev, codenewbie
Published: 2020-02-04 16:11:45

## What are Arrow Functions?

I have previously talked about arrow functions in my other post.

{% post https://dev.to/bharathck/understanding-es6-arrow-functions-30lb %}

Basically, arrow functions introduced in es6 are writing normal functions but in a more concise and shorter way.

Arrow functions are by default anonymous, you have to assign the function to a variable to access it.

**Implicit return:**

Using arrow function we can return something implicitly ie.. without actually using the keyword `return`

```javascript
const sayHi = (name) => `Hi ${name}`;


sayHi('bruce');
//result
Hi bruce
```

See? the string is being returned without using the keyword `return`, well it's not a big thing but keeps the code clean.

**Note:** _Since, arrow functions are assigned to a variable, these aren't hoisted._

## Things you must know about Arrow function:satisfied:

- Arrow functions do not bind their own this, instead, they inherit the one from the parent scope, which is called `lexical scoping`. This makes arrow functions to be a great choice in some scenarios but a very bad one in others.
ie.. `this` inside the arrow function would have the same value as it did right before the arrow function was assigned.

- An arrow function expression has a shorter syntax compared to function expressions and lexically binds the `this` value (does not bind its own `this`, `arguments`, `super`, or `new`). 

- Arrow functions are always anonymous. This means you cannot bind a value to `this`.

- So, in a case where you want to make use of closures and utilize the power of `this` keyword then arrow functions are not a great choice and will break your code.

Here we talked about `lexical scoping`, `this` keyword and `binding`, if you have no idea what those mean, we will discuss those concepts at the end of this series. :relaxed:

## WRAPPING UP

Now you know what arrow functions are, how and when to use them along with a concept called implicit returns to make your code look cleaner.


Stay tuned for further posts in this series. :grin:

Thank you!