teleren/devto huggingface dataset:
Vilnius, Lithuania 🇱🇹
Tags: cdn, edge, pop
Published: 2018-07-20 09:33:23

---
title: Vilnius, Lithuania 🇱🇹
published: true
description: First CDN edge PoP deployment in Europe.
tags: cdn, edge, pop
---

The Commons Host CDN has placed its first footprint in Europe with a point-of-presence (PoP) in Vilnius, Lithuania. This takes the network beyond its South East Asian roots.

![Vilnius city view](https://thepracticaldev.s3.amazonaws.com/i/18tss8zq1c420eeq5roi.jpg)

Photo: [Sergei Gussev (Flickr)](https://www.flickr.com/photos/sergeigussev/37018865605)

The PoP, a [Little Lamb Mk I]() micro-server, is sponsored and hosted by [Zygis](http://zx23.net), an early days supporter of the Commons Host project. His expert advice over the past months has been very encouraging and significantly accelerated the rollout.

![Zygis in Vilnius wearing Commons Host swag tshirt](https://thepracticaldev.s3.amazonaws.com/i/aoj5o9itwllnpqickqci.jpg)

Photo: [Zygis](http://zx23.net) showing off sheep swag in Vilnius (selfie)

## Automation with Ansible

The main challenge with this deployment was the physical inaccessibility of the server. The initial PoPs in Singapore and Kuala Lumpur were deployed by hand: visiting on-site to install and configure the system. However it would not have been cost effictive to travel from Singapore to Lithuania to deploy a single server.

This was a job for Ansible, a Configuration Management (CM) automation tool. Over the past two months [Kenny Shen](https://machinesung.com) and I collaborated on the complete automation of Commons Host PoP deployments.

![Kenny and his custom keyboards](https://thepracticaldev.s3.amazonaws.com/i/lm5d2gcdz125f9fdsp3t.JPG)

Photo: [Kenny Shen](https://machinesung.com) operating next-level hacker keyboard

We now have the ability to set up, secure, and monitor the servers remotely. All code is available in the [commonshost/ansible](https://gitlab.com/commonshost/ansible) GitLab repository. Contributions welcome!

![Code contributors graph](https://thepracticaldev.s3.amazonaws.com/i/8f3idwsj1crug1t20j7q.png)

## More to Come

This newly created tooling will be the foundation for many more deployments, both physical machines as well as cloud servers.

The Vilnius PoP serves currently all Commons Host traffic for Europe, as directed by the Geo DNS load balancer. This is really not as much as it sounds like, yet.

Over the coming months more effort will be made to promote the service to developers. To support the growing demand, additional PoPs will be deployed. As more servers are added to the network, the global traffic load will be better dispersed and optimised for low latency. Exciting times.
Scrum Got 3 People Fired From A Software Project!
Tags: career, agile, culture, worklife
Published: 2018-07-20 23:04:44

---
title: Scrum Got 3 People Fired From A Software Project!
published: true
description: Over my career I've seen many software projects fail spectacularly when there's politics.
tags: #career #agile #culture #worklife
---

Over my career I've seen many software projects fail spectacularly due to political infighting between team members.

I prefer a simple definition of politics:

> When people tell each other what they want to hear _instead of the truth_.

I'd like to share the story of a software project I worked on, where the client was a non-profit company with a big budget.

They wanted to redesign a major application used to help struggling educational institutions.

But the staff were inexperienced with agile.

And multiple contractors on the project were fighting.

In this video, I share what can happen when **software development processes get people fired**!

Especially when there's politics...

Visit my site to watch the entire full video (or listen as a podcast):

# [📺 Watch or 🎧 Listen](https://jaymeedwards.com/2018/07/17/scrum-got-3-people-fired-from-a-software-project/)

<hr />[🔔 Subscribe for over 100 videos on healthy software development](https://YouTube.com/c/JaymeEdwardsmedia?sub_confirmation=1)
How to prevent misuse of a public REST API endpoint.
Tags: discuss, php, slim, restapi
Published: 2018-07-20 20:45:31

---
title: How to prevent misuse of a public REST API endpoint.
published: true
tags: discuss, php, slim, restapi
---
I have a REST API for CRUD operations on a database table, where inserting record does not require any authentication. The question is, how can I prevent that endpoint of my API from possible misuse, cause anyone can enter thousands of rows in a minute using a simple script.

I'm using Slim-PHP and JWT.

Thank You.
TIL: Debugging a b0rken Docker build step
Tags: docker, todayilearned, debug
Published: 2018-07-20 19:53:25

---
title: TIL: Debugging a b0rken Docker build step
published: true
description: today I learned how to debug a difficult Docker build step
tags: docker, til, debug 
---

# Debugging a b0rken Docker build step

`docker` is great! - but if your build will not work it can be a pain.

This nifty little trick can be used to inspect an image where a layer is not playing nicely, it does you have access to some sort of shell in the container.

I am emulating this with the shell builtin command `false`, but it could any build step, where the integrity of your container is relying on build steps to succeed

```Dockerfile
# Dockerfile
FROM       alpine:latest

LABEL      maintainer="jonasbn"
RUN        echo "hello world" > /tmp/hello_world
ENTRYPOINT ["cat", "/tmp/hello_world"]
```

Build it


```bash
$ docker build -t smelly_container .
```

So in order to get past the bad step you append: `; exit 0` to the _difficult_ `RUN` step and will build not matter the return value of the previous shell command

```Dockerfile
# Dockerfile
FROM       alpine:latest

LABEL      maintainer="jonasbn"
RUN        echo "hello world" > /tmp/hello_world ; false; exit 0
ENTRYPOINT ["cat", "/tmp/hello_world"]
```

Now you can inspect the container

```sh
$ docker run -it --entrypoint /bin/sh smelly_container
/ # cat /tmp/hello_world 
hello world
```

And you can of course run it, your mileage might vary depending on the severity of the _b0rkedness_ of your _difficult_ build step, which we chose to ignore

```bash
$ docker run -it  smelly_container
hello world
```

Source: [StackOverflow](https://stackoverflow.com/questions/30716937/dockerfile-build-possible-to-ignore-error)

Originally posted in [my TIL collection](https://github.com/jonasbn/til)
Mdadm - quick command reference
Tags: mdadm, raid, reference
Published: 2018-07-20 19:10:32

---
title: Mdadm - quick command reference
published: true
description: 
tags: #mdadm #raid #reference
cover_image: https://thepracticaldev.s3.amazonaws.com/i/00j8cud85u3bfzeugy5r.jpg
---

```
# show sync status
cat /sys/block/md0/md/sync_action

# show sync progress
cat /proc/mdstat

# show details
mdadm --detail /dev/md0

# mark faulty
mdadm /dev/md0 -f /dev/sdc1

# remove drive
mdadm /dev/md0 -r /dev/sdc1

# readd drive
mdadm /dev/md0 -a /dev/sdc1
```


- https://www.thomas-krenn.com/en/wiki/Mdadm_checkarray
- http://bencane.com/2011/07/06/mdadm-manually-fail-a-drive/
- cover image by dgazdik https://pixabay.com/en/hard-drive-hardware-harddisk-1482561/
Settings is not an article
Tags: meta
Published: 2018-07-18 12:40:47

---
title: Settings is not an article
published: true
description: 
tags: meta
---

I'm trying to edit and save my profile --  getting error that:
```
1 error prohibited this article from being saved:
```
I understand that settings are build on top of Articles/post engine, but it's little bit weird.
Also, I'm getting this message because `Employer url is not a valid URL`.
I've entered <myemployername.com>. Indeed this is not valid URL. I suppose that validator didn't allow that data because there is no protocol name. But, is it so important here? Are there many `ftp` based employer urls? or any of [Uniform Resource Identifier (URI) Schemes](https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml).
I can bet my boots that there are not.
So may be it would be more convenient for users to fill in their employer urls without scheme, assuming http(s) by default?

P.S.: [About the slashes](http://www.dailymail.co.uk/sciencetech/article-1220286/Sir-Tim-Berners-Lee-admits-forward-slashes-web-address-mistake.html)
Using Two Different Protocols for the Same Git Remote
Tags: git
Published: 2018-07-20 17:50:48

---
title:  Using Two Different Protocols for the Same Git Remote
published: true
description: Save yourself some authentication headaches when you just want to git-fetch
tags: git
---

_Originally published at https://hoelz.ro/blog/using-two-different-protocols-for-the-same-git-remote_

If you read my post on [Adding Remote Shortcuts to Git](https://hoelz.ro/blog/adding-remote-shortcuts-to-git), you may have found it useful for specifying shortcuts for easy cloning.  In case you haven't read it, the summary is that to clone my linotify repository on GitHub, I need only type the following:

```
  $ git clone hoelzro:linotify
```

This is because I set up an alias of sorts that translates `hoelzro:` to `git@github.com/hoelzro/`.  This works very well, but sometimes it might be nice for read-only traffic to use a protocol other than SSH.  Maybe you're on a new machine and you forgot to associate its public key with the remote side (With GitHub this is easy, but what if you're hosting your code on a webserver that only uses public key-based authentication?).  Maybe you have `ssh-agent` configured to time out identities after a while, and you don't want to type your password just to run `git fetch`.  I can't tell you how many times I've typed `git fetch` only to be prompted for my key's password.  How annoying!  Wouldn't it be nice if I could tell Git to use the HTTPS protocol for reading from a repository, and SSH for writing?

After delving into the `git-config` manpage a bit, I discovered another gem similar to `insteadOf`: `pushInsteadOf`.  So I modified my `gitconfig` to use this (which illustrates another advantage of the `insteadOf` configuration option: I change it once in my `gitconfig`, and the changes apply to every one of my repositories using that shortcut on my machine.  If I decided one day that I wanted to move all of my repositories off of GitHub and onto a private server, I wouldn't need to set up new remotes in each of my repositories.):

```ini
[url "git@github.com:hoelzro/"]
  pushInsteadOf = hoelzro:
[url "https://github.com/hoelzro/"]
  insteadOf = hoelzro:
```

Now when I run `git fetch` or `git pull` on my repostories, I never get prompted to enter my SSH key's password, since reading from my repository
is done via the HTTPS protocol.
Learn New Technology as a Way of Stepping Up Your Understanding of Your Current One
Tags: career
Published: 2018-07-20 17:46:36

---
title: Learn New Technology as a Way of Stepping Up Your Understanding of Your Current One
published: true
description: 
tags: career
---

One common question for software developers is how to progress from "intermediate" to "senior"—whatever those titles mean. A lot of the journey is how you position yourself and stay confident, but in terms of taking these leaps in your own capacity as a technologist, I have a thought on the subject.

My biggest leaps on my "main competency" have been when I have taken opportunities to learn a different one. My "main competency" is as a Rails developer, and while I feel comfortable transitioning technologies, this environment remains my bread and butter. But my leaps and gains have always been when I have learned something different altogether.

Knowing how Go handles a use case gives me a lot of context into why and how Ruby does it. Depth and breadth are not at odds in this sense. Learning a new and different thing will increase depth. This has always been my experience. I don't necessarily want to _use_ a bunch of different technologies. It would make my head spin. But as a matter of developing my career, this has been a useful pattern.

Functional programming helps you better understand OOP. Type systems help you understand typeless. Schemaless helps you understand schemas. And on and on and on.

Consider learning new things as an exercise in perspective. Whether or not you're captivated by the new thing, the exploit will have been worth it.
WhatsApp: usando 2 contas no mesmo aparelho
Tags: coisasquetodomund, dicastech, 2chips, whatsapp
Published: 2018-08-14 00:21:31

---
title: WhatsApp: usando 2 contas no mesmo aparelho
published: true
tags: Coisas que todo mund,Dicas tech,2 chips,whatsapp
canonical_url: http://blog.paulorobertoelias.com.br/index.php/2018/07/20/whatsapp-usando-2-contas-no-mesmo-aparelho/
---

![](http://blog.dentalgutierre.com.br/wp-content/uploads/2018/02/whatsapp-business-dental-gutierre.png)

Todo mundo que possui aparelhos com dois chips, caso um deles seja profissional, já se deparou com esse problema. Como usar o app do WhatsApp nos dois?

No início do ano, a empresa lançou uma versão “Business” do app, voltada para o uso empresarial. Ela contém inclusive alguns recursos específicos, como TAGs que o usuário pode usar para marcar grupos e mensagens (exemplo: “Pedido concluído”), facilitando a usabilidade também como um controle de demandas.

Contudo, um outro uso muito interessante foi proporcionado por esse lançamento: o fato de finalmente podermos acessar duas contas diferentes (uma para cada chip), no mesmo aparelho e de forma oficial.

Já existiam outra maneiras mais nebulosas de se atingir isso, usando apps de terceiros, usando o mecanismo de usuários do Android (que nem todos os fabricantes implementam e ainda por cima, não permite o login em dois usuários simultâneos), entre outras.

Contudo nenhuma delas é tão prática quanto essa e sem a segurança que um método oficial oferece. Embora eu ainda queira pesquisar um pouco mais, pois o modo que a empresa valida as contas é um pouco obscuro (recebi ligações com códigos de confirmações assim como SMS), até agora não tive problemas e mesmo com um certo receio de algum bloqueio na conta, venho usando com sucesso e feliz por aposentar meu segundo aparelho.

Abs.
Why do developers have the toughest interviews in the world?
Tags: interview, developer, discuss
Published: 2018-07-20 13:07:14

---
title: Why do developers have the toughest interviews in the world?
published: true
description: Why do developers have the toughest interviews in the world?
tags: interview,developer, discuss
---

Reading [this](https://dev.to/antonfrattaroli/what-happens-when-you-type-googlecom-into-a-browser-and-press-enter-39g8) article inspired me to raise some questions to the developers community.

In case you don't want to read the post, the writer, Anton Frattaroli (https://dev.to/antonfrattaroli) says that he was asked a question in a job interview, and the question was: "What happens when you type 'google.com' into a browser and press Enter?".

Why is this even an interview question for a DEVELOPER?

Why a basketball player is NOT required to also know how to play football or tennis?
Why a Math teacher is not also required to teach Physics or Chemistry?
Why a house painter cannot paint cars or paintings as well?
Why a dentist cannot operate on your heart?
...

WHY is it when it comes to DEVELOPERS, we are supposed to know NETWORKING, OS shell/bash/commands, other languages, the WEB, the INTERNET, COMPUTER HARDWARE etc..?

I believe, as developers, we are required to know our language (PHP, Java, Python..) very well. We also should be required to know couple of frameworks and technologies accompanied with that language, such as Laravel(framework), MySQL(database). And we should know some "global" tools such as an IDE/Editor (PHPStorm, Sublime), versioning tool (git, SVN) and so on. For a web developer, HTML/CSS/JavaScript is a must. But beyond those, I really don't see why a PHP developer would stuff their head with Networking or OS specific info. 

Surely, knowing more is better, but I don't think it makes you better developer than someone who REALLY understands PHP.

The thing is, as developers, we usually get to know things, about networking, OS, the WEB and so on JUST to get the development process ahead. I remember installing PHP and MySQL on a Redhat server just so I can write some applications later on. I cannot say how MAD I was when I was asked to do so and how HAPPYYYY I was when i did it! I enjoyed learning a new thing. We all do as developers. Which is why, I think, people who are not developers EXPECT from us to know everything!

We need to set boundaries. Ask us about what we love to do, what we learned and did for thousands of hours. Don't ask us about the few hours we spent reading an article about Networking, or the few hours I spent installing PHP on a server. We are ADAPTABLE bunch, us the developers. We can do almost anything! But let us do what we are BEST at it!

In case I missed something, feel free to add your thoughts!
DigitalOcean Webinar Series: CI/CD on Kubernetes
Tags: kubernetes, devops
Published: 2018-07-20 16:01:39

---
title: DigitalOcean Webinar Series: CI/CD on Kubernetes
published: true
description: Learn the various CI/CD toolsets, service mesh and how to configure CI/CD pipelines using Kubernetes in this webinar series by DigitalOcean
tags: kubernetes, devops
cover_image: https://go.digitalocean.com/rs/937-EID-756/images/CICD-on-K8S-DevToCover.png
---

## Are you interested in learning how to perform continuous integration and continuous delivery using Kubernetes?

Join us for a webinar series hosted by Neependra Khare - Author, Speaker, Certified Kubernetes Administrator and Docker Captain.

## Key themes of the series:
- Introduction to release management & Cloud Native tools with Kubernetes
- Service Mesh and it's role in delivering fully tested code
- CI/CD toolsets that can be used with Kubernetes

## Beneficial for:
- Developers of all skill levels interested in delivering code with Kubernetes
- Businesses looking to adopt CI/CD using Kubernetes
- Architects & DevOps engineers wanting to understand tools to enable Continuous Delivery with Kubernetes

[For the detailed agenda, schedule and registration - check out the series page here] (https://go.digitalocean.com/cicd-on-k8s?utm_source=devto&utm_medium=display&utm_campaign=Devto_2018_Brand)
Teaching Git Some New Tricks
Tags: git, gitnewbie, gitmaster, gitninja
Published: 2018-07-20 15:47:37

---
title: Teaching Git Some New Tricks
published: true
description: tl;dr You can create new Git commands with aliases
tags: git, gitnewbie, gitmaster, gitninja
---

First (second) dev.to article!  Learn to hit the save button, Jonathan! 

You can create aliases both on the repo level and globally just by adding or omitting the `--global` flag.

Creating aliases is easy.  Just type `git config --global alias.co checkout` to create a global alias for `git checkout`.  Now, all you have to do is type `git co develop`.  Awesome, right?

Some commands have flags you can add.  For example, the `checkout` command allows you to optionally create and checkout a new branch with the `-b` flag.  Git handles these aliases with ease by just surrounding the command with quotes.  I like to use `cob` for that.  

`git config --global alias.cob "checkout -b"`

Now, to create a new branch, I just type `git cob new_branch_name`.

Here are some of my favorite aliases:

	st status
	co checkout
	cob checkout -b
	lol log --oneline
	
If you want to chain commands together, which begin with `git`, you have to prefix that with a bang (!).

Say I wanted to stash my changes and do a pull in one command.  Let's call this alias "shelve".  I would type the following:

```
git config --global alias.shelve "!git stash && git pull"
```
 
I'm liking dev.to so far and I hope to write some more articles.  I especially like talking about Git.

Reference: [git config](https://git-scm.com/docs/git-config)
Assigned seats + missing ticket puzzle
Tags: challenge
Published: 2018-07-20 14:50:55

---
title: Assigned seats + missing ticket puzzle
published: true
cover_image: https://cl.ly/3m0Y3X1p1C2y/Image%202018-07-20%20at%2010.48.51%20AM.png
description: A puzzle involving assigned seats and missing tickets. 
tags: challenge
---

I just came across [this tweet](https://twitter.com/wolfejosh/status/1020138298646450176) and thought it would be fun to share here:

{% tweet 1020138298646450176 %}

It looks like some people in the Twitter replies have already come up with a solution, but I thought it would be a fun puzzle nonetheless!
Youtube-dl-gui. A sane way to download youtube videos in bulk
Tags: youtube, download, python
Published: 2018-07-20 14:48:36

---
title: Youtube-dl-gui. A sane way to download youtube videos in bulk
published: true
description: Youtube Video Downloader
tags: youtube,download,python
cover_image: https://i.imgur.com/TW7luLY.jpg
---

#How to download YouTube videos in bulk?

This is one of the most asked questions in google. 

But the answers include many shortcuts and paid softwares like 4k-video-downloader

Now I am using a software which is open source and free to download without any restrictions. 

[Youtube-dl](https://rg3.github.io/youtube-dl/)

##History

It started as a command line tool for downloading youtube videos, now it supports many sites. 

Note: A link to supported sites is [here](https://rg3.github.io/youtube-dl/supportedsites.html)


After sometime a GUI(graphical user interface) is also made to ease of use
![gui-for-Youtube-downloader](https://camo.githubusercontent.com/4721687954e26a917f324cd4283527702f89ed50/687474703a2f2f692e696d6775722e636f6d2f49346f585057732e706e67)

 
This blog is a simple tutorial about how to use it without doing much google search


First of all, 

##Configure the software for your convenience 



When downloading an entire playlist its better to have **auto-increment** option in the software.

playlist-index will add indexes accordingly to the video

```

%(playlist_index)s-%(title)s.%(ext)s

```


![](https://thepracticaldev.s3.amazonaws.com/i/0t6845kscwv13bonmehs.png)

###Adding the right format


When downloading the video you need the right resolution type and and video type possible and can be selected from home screen like this
![](https://thepracticaldev.s3.amazonaws.com/i/ad9zwxbtdzxaa5fi55e0.png)

But there is customize this too, using the *Format* tab in *Options* 

![](https://thepracticaldev.s3.amazonaws.com/i/lc1cy2oswsb9uvu7ptkg.png)


###Subtitles

Subtitles are one of the important features while watching videos, so diverse group of people benefit from the content of the video, even though they don't understand content creators' language 

You can download subtitle language(s) of your choice, if you need you can embed it too(only on mp4 videos) !!!

![](https://thepracticaldev.s3.amazonaws.com/i/adhqaswyl6sw7yu2p84p.png)

###Advanced

You can add advanced features like adding authentication and proxy in the advanced tab
![](https://thepracticaldev.s3.amazonaws.com/i/z7dim1kkuvr9fsffkarx.png)

###Miscellaneous 

Sometimes internet will be down and the software don't have a resume option,

But there is something else available 

When you use 

```-c  or  --continue```  combining with the index of the video
```---playlist-start NUMBER ``` 

to continue from where you left off


#Conclusion

**Youtube-dl-gui** is  very helpful for me. But no great beginner posts available.

Hope it helps!!!!