teleren/devto huggingface dataset:
Give Glitch superpowers with this browser extension 🎏💖
Tags: showdev, glitch, sideprojects
Published: 2020-01-14 18:01:26

I'm super excited to share my latest project: a browser extension to make it easier to remix glitch apps, import code from git, or start a fresh project.

You can install it on [Chrome](https://chrome.google.com/webstore/detail/glitch-extension/pdiedadcnaailaknceakckfffhfjiagd) or [Firefox](https://addons.mozilla.org/en-US/firefox/addon/glitchextension/) right now! 

With it, you can easily:
👀 View glitch app details
🎤 Remix glitch apps
🍱 Generate embed code
💻 Import code from GitHub and GitLab
✨ Start new Glitch projects from any page on the web

{% youtube 8pey0Kujwjg %}

## All about Glitch

[Glitch](https://glitch.com/) is an awesome tool where you can find cool projects, copy them and make them your own, and create things you can share with people immediately – all in your browser. You can read more about what Glitch is this “[What is Glitch?](https://medium.com/glitch/what-is-glitch-90cd75e40277)” post.

Seriously – there is some really [cool stuff](https://glitch.com/@glitch/glitch-team-faves) to check out. [Here is a project](https://doodle-place.glitch.me/) that is filled with animated doodles where you can create your own.

## Why I made this

If you can’t tell, I’m a bit of a super fan of Glitch. In fact, I can show you the exact date and time Glitch won my heart. 😅

{% twitter 975910762978852865 %}

I found that when I was in my own project it was super easy, but checking out random projects, moving between the source and the app, and pulling in code from GitHub was definitely harder.

So I decided to scratch my own itch!

## Give it a try

If you are a Glitch fan like me, then give this extension a try! It’s available for [Chrome](https://chrome.google.com/webstore/detail/glitch-extension/pdiedadcnaailaknceakckfffhfjiagd) and [Firefox](https://addons.mozilla.org/en-US/firefox/addon/glitchextension/). And if it works for you, upvote it on [Product Hunt](https://www.producthunt.com/posts/glitch-extension/)! 😻
Interested in creating your own browser extension? All the code is available in this [Glitch project](https://glitch.com/edit/#!/extension) 👾 for you to remix into something that works for you.

Happy coding,
Avi
Reuven Lerner made one of the first 100 websites... ever... and other things I learned recording his DevJourney
Tags: devjourney, career, teaching, python
Published: 2020-01-14 17:41:29

---
title: Reuven Lerner made one of the first 100 websites... ever... and other things I learned recording his DevJourney
published: true
description: Reuven Lerner is a consultant, an author and a teacher. After interviewing him for the DevJourney podcast, here are the key takeways I personally took out of the discussion.
tags: DevJourney, Career, Teaching, Python
cover_image: https://thepracticaldev.s3.amazonaws.com/i/vmkjwmnq0m7el1fdimmq.png
canonical_url: https://timbourguignon.fr/devjourney83
---

This week, I published Reuven Lerner's #DevJourney story on my eponym Podcast: [Software developer's Journey](https://devjourney.info). Among many other things, here are my main _personal_ takeaways:

* As a child, Reuven was prescribed video gaming (on an Atari) to help refocus his eyes! That's the first time I heard of such a prescription :P
* Reuven was studying at MIT when the World Wide Web was born. As such, he created one of the first 100 websites ever, which has added to "the list" :P 
* Reuven described Web-Development back then as "fiddling" more than software engineering. _"You cannot call that software development"_ he said. Was it really this way? Or was he so good at his job, that it appeared too easy to him and thus not a "real" job? I tend to believe the latter...
* _"It's better to be the bigger fish in a smaller pond"_ said Reuven. He tried to be a trainer for various topics. But his training business really had a breakthrough when he decided to specialize on Python only!
* Reuven made an interesting point about the training business. As a contractor, you can be booked and dropped very quickly. As a trainer, you are booked a very long time in advance. This provides more visibility on your own cash-flow and a better control over your finances.
* Reuven said: _"There are two types of questions, good questions and excellent questions. Good questions are the ones where the students don't know the answer. Excellent questions are the ones where the teacher doesn't know the answer [...] We are all always learning, asking questions is an attitude we have to embrace."_ I couldn't agree more.
* Pair-programming is a great accelerator for learning, remembering and trying things.
* One more quote I love: _"Try to learn and use the idioms of the language, you can "speak Python with a strong C++ accent", but the language and the frameworks will then be in your way."_

Thanks Reuven for sharing your story with us!

You can find the full episode and the shownotes here:
* On [devjourney.info](https://devjourney.info/Guests/83_ReuvenLerner_.html)
* Or directly [here on DEV](https://dev.to/devjourneyfm)

Did you listen to his story?

* What did you learn?
* What are your personal takeaways?
* What did you find particularly interesting?

_Note: this article was first published my blog: [timbourguignon.fr](https://www.timbourguignon.fr)_
Spotify embedded link on HTML
Tags: css, html
Published: 2020-01-14 17:23:29

A simple embedded Link can draw your visitor's attention to some important part of your interface. You can also use these animations to make your website look more interesting!

For starters, I'll show the CSS since it's self-explanatory.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/fbarr43t16pe1nxaylri.png)


Now to actually see it, You will need to add the correct tag to link it.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/xlw3038ejaz6phgtoesm.png)

We usually have our CSS in a separate file ending with '.css' but with these specifics, we will need it inside the HTML tag itself.

"frameborder"
- The frame border attribute specifies whether or not to display a border around a frame.
- They only have 2 values

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/9grg6fzlq0zmqgf12t8c.png)


"allowtransparency"
- the allow transparency attribute of the IFRAME element specifies whether to allow a transparent background in the iframe.
- boolean (true or false)


"allow=encrypted-media"
- Extensions provide an API that enables web applications to interact with content protection systems, to allow playback of encrypted audio and video


In the end, it should look like this!

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/6n81oca9m82tfhiq40b2.png)

example use: https://oscar18guzman.github.io/tunes/ForHerPage/for_her.html
Unlock 2 Udemy Courses With Codemotion
Published: 2020-01-14 17:02:57

3 ways Codemotion tries to promote continuous learning

"Continuous learning is the ability to continually develop and improve one's skills and knowledge in order to perform effectively and adapt to changes in the workplace."

Technologies and best practices are constantly evolving.

This means that software developers' skills and experiences can rapidly become out-of-date. To be successful and content, the best employers ensure employees adapt and develop their skills along with their changing environment.
To be and to become a developer who is able to deliver a positive impact on an organization one needs to stay ahead. Developers need to be provided with continuous learning opportunities and dev teams should be encouraged to use their own initiatives for ongoing personal development.

At Codemotion we always try to find out new ways to engage developers. 

Codemotion is not just an annual conference! We launch 5 new projects each year which meant to connect like-minded developers and communities. 
Unlock Your Udemy Course Of Choice For FreeOur new platform is truly unique. Developers can unlock Udemy Courses by referring other developers to Codemotion. It is easy as 1-2-3: sign up and perform fun tasks in order to collect points.

At 500 points you can choose to unlock an Udemy Course of your choice,
at 1000 points an IT Certification Course of your choice and so on.

Gamifying continuous learning with an easter egg hunt. Funny? Well, it will get you a free course! Visit: https://vyper.io/c/21285vgthd

Codemotion's Community Organizer Toolis a great example of bringing people together and migrate the face-to-face between community organizers, speakers, and their curious audience. Read more on the only tech community organizer tool here [https://extra.codemotion.com/community-tool-benefits/]

Agora For Side-Project Awards and Peer-Review[myproject.codemotion.com] where developers can upload their side projects and get votes and feedback from their peers. The highest-ranking project will win EUR 5000. It is worth a try!


Try one of our new Udemy Course Unlocking Challenge on https://vyper.io/c/21285vgthd
Using Deliberate Practice To Level Up Your Python
Published: 2020-01-14 16:57:30

<p>An effective strategy for teaching and learning is to rely on well structured exercises and collaboration for practicing the material. In this episode long time Python trainer Reuven Lerner reflects on the lessons that he has learned in the 5 years since his first appearance on the show, how his teaching has evolved, and the ways that he has incorporated more hands-on experiences into his lessons. This was a great conversation about the benefits of being deliberate in your approach to ongoing education in the field of technology, as well as having some helpful references for ways to keep your own skills sharp.</p><p><a href='https://www.pythonpodcast.com/reuven-lerner-deliberate-practice-episode-245/'>Listen Now!</a></p>
Planet Scale SQL For The New Generation Of Applications - Episode 115
Published: 2020-01-14 16:56:58

<p>The modern era of software development is identified by ubiquitous access to elastic infrastructure for computation and easy automation of deployment. This has led to a class of applications that can quickly scale to serve users worldwide. This requires a new class of data storage which can accomodate that demand without having to rearchitect your system at each level of growth. YugabyteDB is an open source database designed to support planet scale workloads with high data density and full ACID compliance. In this episode Karthik Ranganathan explains how Yugabyte is architected, their motivations for being fully open source, and how they simplify the process of scaling your application from greenfield to global.</p><p><a href='https://www.dataengineeringpodcast.com/yugabytedb-planet-scale-sql-episode-115/'>Listen Now!</a></p>
[Recommendation] How do I get started learning blockchain?
Tags: blockchain, courses, tutorials, discuss
Published: 2020-01-14 16:48:15

---
title: [Recommendation] How do I get started learning blockchain?
published: true
description: sources, tutorials, courses for learning blockchain
tags: blockchain, courses, tutorials, discuss
---

Hello everyone! I am a CS undergraduate and want to learn blockchain. How should I start? Can you please recommend some good sources like courses and tutorials to start learning?
Tips on interviewing junior devs?
Tags: discuss, career, help
Published: 2020-01-14 16:41:45

Hey guys,

Our company will be hiring new devs in the coming days, and I volunteered to be involved in the hiring process, specifically with face-to-face interviews.
For background, I am also a software engineer and am taking on additional responsibilities for the growth of both our company as well as myself.

Do you have any tips on what to look for when interviewing junior devs?
Are there any red flags that I should be wary of? How about green flags?
What questions can I ask that would tell me a lot about a developer? We do have an extensive list of questions prepared but I would like to see if we might have missed any good ones.

Thanks!
Simple command-line trick to help manage multiple projects
Tags: bash
Published: 2020-01-14 16:29:24

I work on multiple projects during a regular work day - usually 2-4, but could be as many as 8. Each project has a different main Git branch, theme folder, build command to compile said theme, and a couple of other settings (I'm a Drupal developer, so several settings are Drupal-specific, but the concept I'm going to explain can apply to any type of project). Keeping track of each of these as I switch between projects was a pain in the neck, so I came up with an old-school solution.

*tl;dr: Create a dot-file in your project root folder that contains the relevant info and display it when you change to that project.*

In the olden days of Norton Commander and BBS systems, you could create a file in your directories that contained descriptions for files in that directory. I think the file was named `descript.ion` or something like that. Anyway, using that idea, I created a `.readme` file in each project's root folder. The file contains a standard structure so that it's easy for me to find the info I need. Here's an example:

```
Git main branch : dev
Config import   : vcs
Drupal version  : 8.7.11
Code folder     : docroot/profiles/myproject/
Theme folder    : docroot/profiles/myproject/themes/myproject_theme
Theme scripts   : npm run exec
```

*Don't forget to exclude this file in your `.gitignore` file. I guess you could leave it there for other developers in your team, as long as there is nothing sensitive in there - depending on what your root folder is, this file might get exposed at some point.*

This alone is pretty handy, but I had to type `cat .readme` each time to see this info, and if I can save some typing, I will. Each project already had a bash alias that changes directory to it, so all I did was add `cat .readme` to that alias:

```
alias mp="cd ~/Sites/myproject && ls -al && cat .readme"
```

The `ls` command is helpful to me to know exactly where I am - how many times do you cd into a directory and immediately type `ls`?? In fact, I integrated the `ls` into the `cd` command and removed it from the alias above:

```
alias l="ls -al"

function cd () {
  builtin cd "$1"
  l
}
```

The above aliases go into `~/.bash_profile` or `~/.bashrc` depending on your OS. I only work on Mac and Linux, so I don't know if you can do something similar in Windows' command line.

That's it. Hopefully you find this as useful as I do. If anyone has a different solution let me know in the comments below.
Functional-Light JavaScript
Tags: 100daysofcode, javascript, functional
Published: 2020-01-14 16:19:40

## Functional-Light JavaScript

I am pretty sure everyone can understand functional-light javascript courses. Side effects never got cleaner like this.
### So what are side effects?
In general they are...

1. I/O console, files
1. Network calls
1. Database Storage
1. DOM
1. timeStamp
1. Random numbers

day20
Extra bullet against Phishing
Tags: phishing, aws, security
Published: 2020-01-14 16:18:18

In this short article, I want to share with you a very simple script that may save the day.
### Intro
It is not a secret that attackers prepare for the phishing attacks, especially for spear phishing. **Spear phishing** is a phishing attack specifically designed against an individual or business. Usually, the aim of an attack to make you act as an attacker wanted to (e.g. click a link, open an attachment, etc). To achieve it an attacker tries to imitate a legitimate activity as good as possible. For example, the common case is using a company's official email signature format or even a mail template from an internal company portal. 

Also, I am sure you already know, attackers love to use domain names indistinguishable from the company's domain name. This is the thing we can use to be a step ahead. We have to generate the list of possible domains that an attacker may register for usage and periodically check DNS records of the domains from the list. Once we find a new domain, we have good chances to be prepared for an attack. 
### Function
I made a simple **Lambda function** that checks domains and sends a notification via SNS once a valid record was found ([link](https://github.com/vitaliy0x1/SecurityBlog.Cloud/tree/master/lambda_for_domains_checking)). To simply deploy the function I also made a CloudFormation stack. You may use the link as `Amazon S3 template URL`. 
```
https://s3.eu-central-1.amazonaws.com/securityblog.cloud/cf_files/template.yaml
```
After the stack is created, in function environment variables you have to specify the following:
* SNS Topic ARN
* Add domains to the list. You may use [dnstwist](https://github.com/elceef/dnstwist) to generate such a list.
```
$ dnstwist.py --format idle domain.name > out.txt
```

### Other ways
I already mentioned [dnstwist](https://github.com/elceef/dnstwist), it has much more functionality you may utilize for your needs. 
Also, there is a web version of the tool - [dnstwister.report](https://dnstwister.report/). You may easily subscribe to new `dnstwist` findings.

Someday such a simple thing may save a lot of time in the future which you spend on an investigation. 

Have a good day! ☀️


*Photo by Sebastian Pena Lambarri on Unsplash*
Top 5 DEV Comments from the Past Week
Tags: bestofdev
Published: 2020-01-14 16:09:29

---
title: Top 5 DEV Comments from the Past Week
published: true
description: Highlighting some of the best DEV comments from the past week.
tags: bestofdev
cover_image: https://res.cloudinary.com/practicaldev/image/fetch/s--7VrAA2ln--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/qmb5wkoeywj06pd7p8ku.png
---

This is a weekly roundup of awesome DEV comments that you may have missed.  You are welcome and encouraged to boost posts and comments yourself using the **[#bestofdev](/t/bestofdev)** tag.

The **[Tell me an unpopular software opinion](https://dev.to/ben/tell-me-an-unpopular-software-opinion-52k2)** was one of the most popular threads last week, and had plenty of well-loved replies.  If an _unpopular_ opinion receives lots of positive reactions... does that make it popular?  In any case, @gypsydave5 was at the top of the thread with this comment:
{% devcomment k52e %}

@sunitk shares their frustrating interview experience in **[Reasons I've Been Rejected For Software Engineering Roles](https://dev.to/jgaskins/reasons-i-ve-been-rejected-for-software-engineering-roles-5221)**:
{% devcomment jpli %}

@beggars adds to conversation in **[Will you write code after you retire? How will your relationship with our craft change?](https://dev.to/ben/will-you-write-code-after-you-retire-how-will-your-relationship-with-our-craft-change-19nf)**.  Now I'm wondering what the name of that retirement community might be:
{% devcomment k6ii %}

@marceloadsj adds a thorough reply to an article titled **[Svelte Needs A Virtual DOM](https://dev.to/svaani/svelte-needs-a-virtual-dom-1ebm)**:
{% devcomment k2dk %}

Finally, @thompcd thanks the author and reiterates one of the tips from **[✒️ Some 🔥 tips on using the JS console (console.log & console.table)](https://dev.to/benjaminmock/some-tips-on-using-the-js-console-console-log-console-table-47c8)**:
{% devcomment k4jg %}

See you next week for more great comments ✌
Interview Prep #5: String Compression
Tags: career, beginners, cpp, computerscience
Published: 2020-01-14 16:01:12

## Problem

We are given a string which we are supposed to compress by using the count of the repeated characters.
```
Example:

input: aabbbcccccaa
output: a2b3c5a2
```
If the compressed string is not smaller than the original string we shall return the original string.

## Solution

The solution to this problem involves trivial string manipulation. First we create a `copy` string which is twice the size of the given string. This is the maximum size the compressed string can get (if all characters are unique). We will edit this `copy` string to construct the compressed string. We iterate through the original string and find out the number of character count and edit the the second string accordingly. For doing this will use two pointers. First to keep track of the character we are on the second will count the number of occurrences of the same character. In the end will compare the two strings and then return the smaller one.

```cpp
string compressed_string(string& s) {
  string copy = s + s;
  // i is the first pointer, j is the second pointer
  // c keeps track of where we are on in the copy string
  int c = 0, i = 0;
  while(i < s.length()) {
    int j = 1;
    while(i + j < s.length() && s[i] == s[i + j]) {
      ++j;
    }
    copy[c] = s[i];
    copy[c + 1] = j + '0';
    c += 2;
    i += j;
  }
  // erase the remaining copy string
  copy.erase(c);
  if(copy.length() < s.length()) {
    return copy;
  }
  return s;
}
```

> References: Cracking the Coding Interview - Gayle Laakmann McDowell
Hey! I realized that many of you guys don't use C++. If you are comfortable with some other language, feel free to submit the solution to this problem in your favorite programming language in the comments below.
Have a wonderful day 😄
Big-O Cheat Sheet
Tags: beginners, computerscience, algorithms, cheatsheet
Published: 2020-01-14 15:36:45

A classmate in my Data Structures & Algorithms course this semester posted this link, created by [@ericrowell](https://mobile.twitter.com/ericdrowell).  I'd never seen it and it instantly ended up in my bookmarks, so I wanted to pass it on:

[Big-O Cheat Sheet](https://www.bigocheatsheet.com/)

It provides a table that gives Big-Θ and Big-O complexities for a set of common operations on range of data structures, as well Big-Ω, Big-Θ, and Big-O for various array sorting algorithms.

I'm thinking about buying [the poster...](https://www.redbubble.com/people/immortalloom/works/22929408-official-big-o-cheat-sheet-poster?p=poster&finish=semi_gloss&size=large&SSAID=389818&utm_source=shareasale&utm_medium=affiliates&utm_campaign=banner&sscid=11k4_ano9b)

![poster image](https://www.bigocheatsheet.com/img/big-o-cheat-sheet-poster.png)