teleren/devto huggingface dataset:
Google keyword rank checker
Tags: seo, freetools, keywordrank, google
Published: 2020-05-08 04:24:54

---
title: Google keyword rank checker
published: true
description: Check the google position for websites you are trying to rank. Discover your competitor's best backlinks.
tags: SEO, Free Tools, Keyword rank, Google
---

## Tracking websites that are not on the first page

If you are trying to rank a new website, you know how tricky it can be to monitor progress. I've spent way more time trying to find my website on page 6 or 7 on google than I would like to admit.
There are a few tools out there that will do this for you. I found them however slow and full of ads. Even worse, they hide the actual submit button and make other buttons look like the submit button, tricking you to click on unwanted ads.

As a result, I decided to create my own, lightweight, fast, and clutter free [tool to check keyword rank](https://seoapps.dev/keyword-rank). 

![Clean keyword rank tool](https://dev-to-uploads.s3.amazonaws.com/i/m1qhschjh3yo5zlcld9b.png)

Much better, this is my kind of interfaces!

Simply enter your search keywords, the domain you want to find and the tool will show you the top 100 results within a couple of seconds, highlighting the domain you are trying to find. Nice and simple, just how I wish the existing tools would be.

## Discovering backlinks within the top 100 search results

While working on this tool and looking at the list of results for one of my websites (ranking on the third page at this point), I spotted a blog post about said website ranking on page 8. That sparked an idea: Wonder how many backlinks the very first result on google has from within the top 100 search results for this search term? Could I simply crawl the 100 search result pages and search for backlinks pointing to that domain?

## Elixir to the rescue

The answer of course is yes, it's actually quite trivial to do in Elixir which I happened to use for this. Elixir can run thousands if not millions of concurrent processes, so 100 concurrent http requests and crawling the content is a piece of cake. Elixir also has a great library to parse html called [floki](https://github.com/philss/floki), which is used by default in Phoenix test suites, so finding links and even figuring out wether they are follow or no follow is also very easy.

Next I just push the discovered backlinks down to Elm using web sockets, and Elm simply updates the loading spinner and displays the results.

Turns out the first search result had backlinks from 7 other pages in the top 100, with 6 of them being really easy to create for my own website.

So yeah, if you are wondering why a website, be it a competitor or just out of interest [is ranking so well for particular keywords, give the keyword-rank checker tool](https://seoapps.dev/keyword-rank) a go! It can help you not only understand why they are ranking as they are, it can also be used to discover potential backlink opportunities.
Linuxfest Northwest presentations 2020
Tags: linux
Published: 2020-05-08 03:53:22

Here's a bunch of presentations from linuxfest Northwest. My talk was about the dev experience. Not sdks or apis... Focus on documentation development lifecycle and tools for developer experience testing for documentation. 

https://www.linuxfestnorthwest.org/conferences/2020

Repo:
https://gitlab.com/remastersys/dx-os
'setState()' is called twice
Published: 2020-05-08 03:31:02

I'm creating a notes application just to practice, but it turns out that when I call the function 'addNote ()', which is in charge of adding a new note to the list, the function 'setState ()' is called twice and returns to render the component. This is a part of the function:

```
this.setState(p => ({
      notesList: removeSelectNoteClass(p.notesList, key),
      targetKey: key
}))

```
Candidate Q&A - Part 3: Portfolios and getting noticed (recorded live)
Tags: beginners, career, github
Published: 2020-05-08 02:56:06

Recording from last week's live Q&A. This is Part 3: Portfolios, and getting noticed:
 0:05 - Is a portfolio important? Is Github enough?
 2:32 - The #1 most impressive project you can do for any job
 3:52 - What if a hiring manager doesn't understand code?

CHECK OUT THE REST OF THE Q&A:
☆ Part 1: Getting Internships 
  What are actionable things you can do to find an internship? What if you're not currently a student? 
  https://www.youtube.com/watch?v=q1jSWJZ43Qs&list=PLY0uEDNh-HardKF2j3CxlwwV1Gf6zTx5K

☆ Part 2: Negotiations gone awry and how to fix them 
  I answer a BUNCH of questions about negotiations, including talking about raises and promotions:
  https://www.youtube.com/watch?v=bFpELzBGgs0&list=PLY0uEDNh-HardKF2j3CxlwwV1Gf6zTx5K

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

DANGOORMENDEL:
One-on-one success-based coaching for technical and tech-adjacent candidates applying to tech companies. We specialize in interview preparation and offer negotiation.

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

SUBSCRIBE:
☆ Youtube ☆ https://youtube.com/c/CandidatePlanet
☆ Newsletter ☆ https://dangoormendel.com/newsletter

MORE INFO:
☆ LinkedIn ☆ https://linkedin.com/in/lus
☆ Website ☆ https://dangoormendel.com
☆ Speaking Inquiries ☆ lusen@candidateplanet.com
☆ Client Inquiries ☆ hello@dangoormendel.com
Candidate Q&A - Part 2: Negotiations gone awry and how to fix them (recorded live)
Tags: beginners, career, negotiation
Published: 2020-05-08 02:53:14

Recording from last week's live Q&A. This is Part 2: Negotiations
 0:39 - Phone call vs email 😬
 3:25 - Offer was higher than I was expecting 😮
 5:13 - Given higher title after accepting... now I'm underpaid! 😧
 9:19 - Let's talk about raises and promotions 🙃
    ☆ Tips for asking for a raise ☆ https://www.youtube.com/watch?v=gjqDE2ZYMik 
11:26 - Stocks, options and equity, oh my! 🤨
15:18 - More back and forth and lawyers for director+ 😉

CHECK OUT THE REST OF THE Q&A:
☆ Part 1: Getting Internships 
  What are actionable things you can do to find an internship? What if you're not currently a student? 
  https://www.youtube.com/watch?v=q1jSWJZ43Qs&list=PLY0uEDNh-HardKF2j3CxlwwV1Gf6zTx5K

☆ Part 3: Portfolios 
  I wrap up the night with some advice about portfolios and getting noticed
  https://www.youtube.com/watch?v=G5IacJmXdDE&list=PLY0uEDNh-HardKF2j3CxlwwV1Gf6zTx5K

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

DANGOORMENDEL:
One-on-one success-based coaching for technical and tech-adjacent candidates applying to tech companies. We specialize in interview preparation and offer negotiation.

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

SUBSCRIBE:
☆ Youtube ☆ https://youtube.com/c/CandidatePlanet
☆ Newsletter ☆ https://dangoormendel.com/newsletter

MORE INFO:
☆ LinkedIn ☆ https://linkedin.com/in/lus
☆ Website ☆ https://dangoormendel.com
☆ Speaking Inquiries ☆ lusen@candidateplanet.com
☆ Client Inquiries ☆ hello@dangoormendel.com

{% youtube bFpELzBGgs0 %}
1:Create a live blog with Amp
Tags: amp1
Published: 2020-05-08 02:52:02


Create a live blog
Live blogs are web pages that are updated frequently throughout an on-going event, such as a sporting event or an election. In AMP, you can implement a live blog by using the amp-live-list component.

This tutorial provides a short overview of the amp-live-list component and focuses on some implementation details for live blogs, like pagination and deep linking. We'll use AMP By Example's live blog sample to illustrate implementing live blogs in AMP.

<amp-live-list id="my-live-list"
    data-poll-interval="15000"
    data-max-items-per-page="5">
  <button update on="tap:my-live-list.update">You have updates</button>
  <div items></div>
</amp-live-list>
As we are also using amp on <a href="https://www.atomstudy.com">atomstudy</a>
Candidate Q&A Part 1: Getting Internships (recorded live)
Tags: beginners, career, internship
Published: 2020-05-08 02:47:44

This is Part 1 of last week's live Q&A recording.

GETTING INTERNSHIPS:
 0:13 - How to find internships
 3:12 - Can I apply to internships if I'm self taught?

CHECK OUT THE REST OF THE Q&A:
☆ Part 2: [Negotiations gone awry and how to fix them](https://www.youtube.com/watch?v=bFpELzBGgs0&list=PLY0uEDNh-HardKF2j3CxlwwV1Gf6zTx5K) - I answer a BUNCH of questions about negotiations, including talking about raises and promotions
☆ Part 3: [Portfolios](https://www.youtube.com/watch?v=G5IacJmXdDE&list=PLY0uEDNh-HardKF2j3CxlwwV1Gf6zTx5K
) - I wrap up the night with some advice about portfolios and getting noticed
  
CANDIDATE PLANET:
Empowering candidates to ace interviews and negotiate offers. Leave a comment or email Lusen@CandidatePlanet.com with questions you want me to answer.

DANGOORMENDEL:
One-on-one success-based coaching for technical and tech-adjacent candidates applying to tech companies. We specialize in interview preparation and offer negotiation.

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

SUBSCRIBE:
☆ Youtube ☆ https://youtube.com/c/CandidatePlanet
☆ Newsletter ☆ https://dangoormendel.com/newsletter

MORE INFO:
☆ LinkedIn ☆ https://linkedin.com/in/lus
☆ Website ☆ https://dangoormendel.com
☆ Speaking Inquiries ☆ lusen@candidateplanet.com
☆ Client Inquiries ☆ hello@dangoormendel.com

{% youtube q1jSWJZ43Qs %}
42 : My first interactive website 
Tags: html, css, javascript
Published: 2020-05-08 01:51:35


Solving problems was not the ultimate solution, the web front end developer roles to build a variety of websites, so, let's make something cool,

I always admire drawing my imagination, and the coding is my art tool, truly fit my personality, it is such a beautiful combination between function and aesthetics. 

----- 

#**What will your website look like?**

##*First things first: planning* 
Before doing anything, you need some ideas. 
What should your website actually do? A website can do basically anything, but, for your first try, you should keep things simple. We'll start by creating a simple webpage with a heading, an image, and a few paragraphs.

----- 
*To begin, you'll need to answer these questions:*

* What is your website about? Do you like dogs, New York, or Pac-Man?
* What information are you presenting on the subject? 
* Write a title and a few paragraphs and think of an image you'd like to show on your page.
* What does your website look like, in simple high-level terms? 
* What's the background color? 
* What kind of font is appropriate: formal, cartoony, bold and loud, subtle?

---- 

##*Sketching out your design* 
Next, grab pen and paper and sketch out roughly how you want your site to look. For your first simple webpage, there's not much to sketch out, but you should get in the habit of doing this now. It really helps — you don't have to be Van Gogh!

----
##*Choosing your assets*
Text / Theme Color / Images / Font
ranked update: multiple choice
Tags: javascript, computerscience
Published: 2020-05-08 01:00:02

The ranked mode has been adjusted for a much better user experience. The previous textboxes have been replaced by multiple choice dropdowns.

The reason is that for non-experienced programmers figuring out what some answer or emoji/bug could be, is way too difficult.

Assume the following code:
```
Math.💚(num)
// 💚 = ?  (Identifier)
```
You and I may already be thinking that "💚" is likely to be "round", "floor" or "ceil". But someone who has no clue about the Math library is at a dead end. By providing multiple possible choices, they should be able to figure it out, it's a puzzle game after all.
TerminusDB Webinar - Chat with 5 Star Terminator
Tags: graph, database, management, startup
Published: 2020-05-08 00:50:48

---
title: TerminusDB Webinar - Chat with 5 Star Terminator
published: true
description: This week we are very honoured to have our 5 star Terminator - Chris Horn - founder and CEO of IONA Technologies, board member of several tech companies including TerminusDB, chair of many organisations including UNICEF Ireland. Sure we will learn a lot about leadership in tech companies, especially for start-ups by chatting with him.
tags: graph, database, management, startups
---

This week we are very honoured to have our 5 star Terminator - Chris Horn - founder and CEO of IONA Technologies, board member of several tech companies including TerminusDB, chair of many organisations including UNICEF Ireland. Sure we will learn a lot about leadership in tech companies, especially for start-ups by chatting with him.
let vs const vs var: when to use which
Tags: technical, guides
Published: 2020-07-09 18:11:48

---
title: let vs const vs var: when to use which
published: true
date: 2020-05-08 00:21:19 UTC
tags: Technical,Guides
canonical_url: 
---

 ![let vs const vs var: when to use which](https://blog.kentonvizdos.com/content/images/2020/05/Let-VS-Consf-VS-Var.png)

Variable used to be the norm in JavaScript, but now there are better players on the playing field: let and const. The main difference? Scope.

See, scope is _important_ in programming. In most cases, always using global variables isn't a great idea, but there are still some good uses for it if you look hard enough.

First, lets go over the similarities and differences between let and const. Mainly, both are locally scoped so:

```
const letsTest = () => {
	let x = 5;
}

letsTest();

console.log(x) // this fails.
```

But also, it is very useful in for loop scenarios:

```
var a = [];
(function () {
   'use strict';
   for (let i = 0; i < 5; i++) { // ***`let` works as expected***
     a.push( function() {return i;} );
   }
} ());
console.log(a.map( function(f) {return f();} ));
```

As expected, a now equals [0,1,2,3,4], however if you make a small change by changing let to var, you'll notice things start getting gross as it would return [5,5,5,5,5]

Source: [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Block\_scope\_with\_let](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Block_scope_with_let)

As for a difference, const is a constant variable (woah), so it cannot be changed after initialization

```
const x = 5;
x = 1; // Fails.
```

Other than that, let and const are pretty much the same. Better than var. As of ES6, var hardly ever should be used.

While this is a short article, it is good to know the very small differences between the three. Best of luck with your variables!
Elm Calculator Part 9 - Combination Key Input
Tags: elm, webdev, beginners, codenewbie
Published: 2020-05-08 19:12:12

---
title: Elm Calculator Part 9 - Combination Key Input
published: true
date: 2020-05-08 00:00:00 UTC
tags: elm, webdev, beginners, codenewbie  
canonical_url: https://pianomanfrazier.com/post/elm-calculator-book/09-keypad-combos/
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/u26mai0h3j5xcrz6tbis.png
series: Elm Calculator
---

_This post is part of a series. To see all published posts in the series see the tag ["elm calculator book"](https://pianomanfrazier.com/tags/elm-calculator-book/).If you wish to support my work you can purchase the book on [gumroad](https://gum.co/NwMtt)._

**This project uses Elm version 0.19**

- Part 1 - Introduction 
- Part 2 - Project Setup 
- Part 3 - Add CSS 
- Part 4 - Basic Operations 
- Part 5 - Adding Decimal Support 
- Part 6 - Supporting Negative Numbers 
- Part 7 - Add Dirty State 
- Part 8 - Support Keypad Input 
- **_Part 9 - Combination Key Input (this post)_**
- Part 10 - Testing 
- Part 11 - Netlify Deployment 

* * *

- **_browse:_** [https://gitlab.com/pianomanfrazier/elm-calculator/-/tree/v0.9](https://gitlab.com/pianomanfrazier/elm-calculator/-/tree/v0.9)
- **_diff:_** [https://gitlab.com/pianomanfrazier/elm-calculator/-/compare/v0.9...v0.10](https://gitlab.com/pianomanfrazier/elm-calculator/-/compare/v0.9...v0.10)
- **_ellie:_** [https://ellie-app.com/72nYc5Zj9Hma1](https://ellie-app.com/72nYc5Zj9Hma1)

Users can press backspace to delete a single digit. How would we allow the user to clear the whole input area? Or clear the whole stack?

We'll provide a keyboard combination to support this. So we can allow users to press CTRL + BACKSPACE and it would clear the input box and CTRL + SHIFT + BACKSPACE would clear the whole stack.

We have already done the hard work in the previous chapter. We need to tweak our update function to check for CTRL + SHIFT or just CTRL before we check the other keys.

```elm
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        ...
        HandleKeyboardEvent event ->
            if event.ctrlKey && event.shiftKey then
                case event.keyCode of
                    KK.Backspace ->
                        update ClearAll model
                    _ ->
                        ( model, Cmd.none )
            else if event.ctrlKey then
                case event.keyCode of
                    KK.Backspace ->
                        update Clear model
                    _ ->
                    ( model, Cmd.none )
            else
                case event.keyCode of
                    KK.Multiply ->
                        ...
```

And that's it. We now have key combos.

The next chapter will cover testing. We will write a test using elm-test and elm-program-test to verify our calculator.
Postgres composite types for tables
Published: 2020-05-15 14:32:51

---
title: Postgres composite types for tables
published: true
date: 2020-05-08 00:00:00 UTC
tags: 
canonical_url: https://www.geekytidbits.com/postgres-composite-type/
---

A nice feature in PostgreSQL is that when you create a table, “a composite type is also automatically created, with the same name as the table, to represent the table’s row type” (quoted from the [documentation](https://www.postgresql.org/docs/11/rowtypes.html)). A composite type represents the structure of a row or record. This means you can work with a single record of a table much like an object in an OOP language.

So, if you create an `example` table:

```
CREATE TABLE example (​
  id int,​
  name text​
);
```

You also get a composite type (also known as a “user defined type” in other database systems) named `example`.Then, in PL/pgSQL, you can then do things like:

Create a function that returns an `example` record:

```
CREATE OR REPLACE FUNCTION construct_example (p_name text)​
RETURNS example​
AS $$​
DECLARE​
  v_example example;​
BEGIN​
  v_example.id = 1;​
  v_example.name = p_name;​
  RETURN v_example;​
END;​
$$​
LANGUAGE plpgsql;
```

Use an `example` record as a single record source for an `INSERT INTO` statement:

```
INSERT INTO example VALUES ((SELECT construct_example('ABC')).*);
```

Use `ROW` to construct a record on the fly:

```
SELECT ROW(1::int, 'ABC'::text)::example;
```

Use JSON to hydrate a record:

```
v_json_object = '{"id": 1, "name": "ABC"}'::json;​
v_example = json_populate_record(NULL::example, v_json_object);
```

It’s actually quite handy to be able to work with a single record that is of the same type as a table.

### IS NULL and IS NOT NULL

One curious thing about composite types is how the `IS NULL` and `IS NOT NULL` constructs work on them.

`IS NULL` is `TRUE` if a variable of the composite type is `NULL` or if **all** the fields of the record are `NULL`.

So, both of these evaluate to `TRUE`:

```
SELECT ROW(NULL::int, NULL::text)::example IS NULL;​
SELECT NULL::example IS NULL;
```

`IS NOT NULL`, on the other hand, is only `TRUE` if **all** the fields in the record are not NULL.

```
SELECT ROW(1::int, NULL::text)::example IS NOT NULL;​
-- false!​
SELECT ROW(1::int, 'ABC'::text)::example IS NOT NULL;​
-- true
```

Because of this, a composite type variable can have both `IS NOT NULL` and `IS NULL` constructs equal to `FALSE` at the same time!
Zoom has acquired Keybase
Tags: news, security, zoom, keybase
Published: 2020-05-07 23:27:16

### [Techcrunch: Zoom acquires Keybase to get end-to-end encryption expertise](https://techcrunch.com/2020/05/07/zoom-acquires-keybase-to-get-end-to-end-encryption-expertise/)

Keybase never really developed an actual business model from what I can tell, so this is not all that surprising in some ways.

This seems like it must be a direct response to the very public security issues they've had. It's rare you see such direct cause and effect with this kind of thing.

About Zoom's issues...

{% link https://dev.to/rhymes/a-semi-technical-explainer-of-all-known-zoom-issues-1bab %}
Crystal Fridays is Tomorrow! 🥳🎈😎
Tags: crystal, programming, languages
Published: 2020-05-07 23:14:49

>10am Pacific Time at [twitch.tv/arschles](https://twitch.tv/arschles)

It's that time again.... Crystal Fridays! The awesome hour where we I code some [Crystal](https://crystal-lang.org) code on [Twitch](https://twitch.tv/arschles) and answer your questions (or at least ... try to 😀)

**Come check it out at 10am Pacific Time at [twitch.tv/arschles](https://twitch.tv/arschles)**

_(Hint: the past few weeks we've been working on [cprox](https://github.com/arschles/cprox). We're gonna be hacking on something new this week...)_

See you there! 🚀
#discuss What is your top 3 mindset hacks for being a more productive developer?
Tags: productivity
Published: 2020-05-07 22:49:18

### Mine Top 3
- Asking myself: «What am I doing» (& switching focus back to the task :))
- Loosen up my attitude to all that jazz like file organization, editor colors, plugins, naming convention.
- Reminding myself that tools should serve me, not the other way

Yours?
Day 133 : Enough
Tags: hiphop, code, coding, lifelongdev
Published: 2020-05-07 22:29:02

_liner notes_:
- Professional : Whew! Got up early to sit in on different people running through their presentations for next week's online conference, Vonage Developer Day: https://developer.nexmo.com/day I like seeing how people present and the feedback they receive. That way I can incorporate it into my own presentation. Had my team meeting as well. Then it was my turn to test run my presentation. I had finished my slides at the very last minute! haha Did my talk and got really good feedback. I was under my allowed time which is good because there was something else I wanted to talk about. Another piece of feedback is that I need to make my fonts larger. Funny thing is that made them larger than I normally do. haha I guess too much is never enough when it comes to fonts on slides. haha

- Personal : Didn't do too much last night since I wanted to get up early to attend the talk prep sessions. Just did a little review of my Japanese lessons on an app.

![The Mountainous coast line of Crete, Greece](https://dev-to-uploads.s3.amazonaws.com/i/6bo26f2obzhaacup6px5.png)

Super tired after my presentation. For some reason it takes a lot of out me. haha Going to rest up and get into some light coding/designing after dinner.

Have a great night!

peace piece
Dwane / conshus
https://dwane.io / https://HIPHOPandCODE.com
{% youtube isrU9HtWpt4 %}
Azure Functions Output bindings
Tags: azure, serverless, csharp, tutorial
Published: 2020-05-07 22:16:52

Binding to an Azure function is a way of declaratively connecting another resource to it; bindings may be connected as input, output, or both. Data from bindings is provided as parameters.

Bindings are optional and a function might have one or multiple input and/or output bindings.

In this video, I walk through a simple example of using a Table and Queue output bindings with Azure Functions.

{% youtube ip1d51qhn4k %}

I plan on creating more content around Azure; it's great to share what I've been learning.

If you have any feedback at all, please let me know in the comments below or reach out to me on socials.

Thanks for reading and possibly watching!