teleren/devto huggingface dataset:
Data Modeling That Evolves With Your Business Using Data Vault - Episode 119
Published: 2020-02-10 16:42:52

<p>Designing the structure for your data warehouse is a complex and challenging process. As businesses deal with a growing number of sources and types of information that they need to integrate, they need a data modeling strategy that provides them with flexibility and speed. Data Vault is an approach that allows for evolving a data model in place without requiring destructive transformations and massive up front design to answer valuable questions. In this episode Kent Graziano shares his journey with data vault, explains how it allows for an agile approach to data warehousing, and explains the core principles of how to use it. If you're struggling with unwieldy dimensional models, slow moving projects, or challenges integrating new data sources then listen in on this conversation and then give data vault a try for yourself.</p><p><a href='https://www.dataengineeringpodcast.com/data-vault-data-modeling-episode-119/'>Listen Now!</a></p>
Update the Android SDK for a Visual Studio Build Tools installation
Tags: cicd, visualstudio
Published: 2020-02-10 18:20:35

---
title: Update the Android SDK for a Visual Studio Build Tools installation
published: true
date: 2020-02-10 16:30:00 UTC
tags: CI/CD,Visual Studio
canonical_url: https://christophweigert.com/update-the-android-sdk-for-a-visual-studio-build-tools-installation/
---

 ![Update the Android SDK for a Visual Studio Build Tools installation](https://christophweigert.com/content/images/2020/02/xamarin-banner.png)

We recently set the Target Framework Version for our mobile app to SDK Version 29. On two of our three build agents, we had no issues because they were regular Visual Studio instances running on developer machines. But one build agent only had the Visual Studio Build Tools installed without any GUI.

After some digging in the Visual Studio and Android SDK folder, I couldn't find the AndroidSdkManager.exe that's provided from the regular Visual Studio Installation.

![Update the Android SDK for a Visual Studio Build Tools installation](https://christophweigert.com/content/images/2020/02/image.png)<figcaption>The AndroidSdkManager.exe is not available for Build Tools only installations.</figcaption>

After searching the Android Developer site, I found an article that explained how to update or install SDKs by the command line:

[

sdkmanager | Android Developers

The sdkmanager is a command line tool that allows you to view, install, update, and uninstall packages for the Android SDK.

 ![Update the Android SDK for a Visual Studio Build Tools installation](https://www.gstatic.com/devrel-devsite/prod/v172e5dffd78b32f4b12f8112b00e940d4993af48229fac5346097b33edb0f543/android/images/touchicon-180.png)Android Developers

 ![Update the Android SDK for a Visual Studio Build Tools installation](https://developer.android.com/images/android-developers.png)
](https://developer.android.com/studio/command-line/sdkmanager)

On the build agent, the path was

> C:\Program Files (x86)\Android\android-sdk\tools\bin

Start a PowerShell Session (Shift+Right-click) and type

> .\sdkmanager.bat --list

You will see a list of all installed android tools.

![Update the Android SDK for a Visual Studio Build Tools installation](https://christophweigert.com/content/images/2020/02/image-1.png)

The last output of the previous command will be available updates.

![Update the Android SDK for a Visual Studio Build Tools installation](https://christophweigert.com/content/images/2020/02/image-2.png)

Make sure to install those by running

> .\sdkmanager.bat --update

But be careful, you have to accept the SDK License Agreement.

Back to our missing build-tools and platform version we have to issue another command

> .\sdkmanager.bat "build-tools;29.0.3"  
> .\sdkmanager.bat "platforms;android-29"

![Update the Android SDK for a Visual Studio Build Tools installation](https://christophweigert.com/content/images/2020/02/image-4.png)

Now you can trigger a build from your CI pipeline and see if everything is working.
The Open Source for All Initiative: Investing in Underrepresented Minorities in Tech
Tags: inclusion
Published: 2020-02-10 16:19:31

Here at This Dot Labs we are a development consultancy that is known for its work in providing opportunities to underrepresented minorities in tech.  We are very excited to be partnering with  StackBlitz, a company that is an online IDE used by millions of developers every month & adopted by open source projects such as Angular (Google), RxJS (Microsoft), and many others.  We have teamed up this January to announce the [Open Source for All Initiative](https://www.opensourceforall.com/)  to provide $20,000 of opportunities to those who need their first foot in the door.

With only 50% of boot camp students able to find employment within 3 months of graduation [(Dice)](https://insights.dice.com/2018/03/14/bootcamp-grads-trouble-finding-work/), we both feel passionate about trying to help bridge the divide between graduating boot camp and someone's first development job. 

The $20,000 investment from StackBlitz and the supply of mentors (senior software engineers) from us will give paid apprenticeship opportunities for boot camp graduates to contribute to prominent open source projects.

We have over 20 bootcamp partners including Fullstack Academy, Coding Dojo, Prime Academy, Vets Who Code and The Last Mile.  

“It’s tough to go from a bootcamp to an entry level developer role,” says Co-founder and CEO Tracy Lee, “and that challenge is compounded if you are a minority. Our apprentice program makes it easier for folks to transition to a full time job smoothly.”

StackBlitz is already used by open source projects such as Angular (Google) and RxJS (Microsoft) in their documentation. 

"We have been very happy to work with the StackBlitz team and hosting the Angular documentation code samples on StackBlitz has been great for developers." said core team member Stephen Fluin.

“StackBlitz has been a great partner at helping provide code samples in our documentation, and I admire Tracy's work with under-represented groups in tech,” says Ben Lesh of the RxJS core team, “The pairing for this initiative is great and I expect good things to come out of it.”

Those interested in participating in the program as apprentices can apply [here](https://www.opensourceforall.com/). If you’re an open source project who wishes to provide opportunities to underrepresented minorities and have great code examples in your documentation enhanced for free, sign up [here](https://www.opensourceforall.com/).  We can’t wait to work with everyone and make a difference in the tech world!

*[This Dot Inc.](labs.thisdot.co) is a consulting company which contains two branches : the media stream, and labs stream. This Dot Media is the portion responsible for keeping developers up to date with advancements in the web platform. This Dot Labs provides teams with web platform expertise, using methods such as mentoring and training.*
Software Architecture 101
Tags: beginners, architecture
Published: 2020-02-10 16:16:01

Hi, Everyone! Hope you are all well and enjoyed your holidays. Mine were very busy, hectic, even. So much so, that I found myself with little to no time for web development. But I am gradually getting back into the groove and I wanted to share this article with you all. I know many of us beginners are working on Web App projects and might find this article as helpful as I did. You can check it out here:
{% medium https://medium.com/better-programming/how-to-design-a-web-application-software-architecture-101-df568b88da76 %}
The 7 Most Popular DEV Posts from the Past Week
Tags: top7
Published: 2020-02-10 16:09:07

---
title: The 7 Most Popular DEV Posts from the Past Week
published: true
description: A round up of the most-read and most-loved contributions from the community this past week.
tags: icymi
cover_image: https://thepracticaldev.s3.amazonaws.com/i/sfwcvweirpf2qka2lg2b.png
---
Every Monday we round up the previous week's top posts based on traffic, engagement, and a hint of editorial curation. The typical week starts on Monday and ends on Sunday, but don't worry, we take into account posts that are published later in the week. ❤️

#1. Saves The Day

No, not the band. The director at Deadly Byte explains the `.gitattributes` file is, and why we should use it!

{% link https://dev.to/deadlybyte/please-add-gitattributes-to-your-git-repository-1jld %}

#2. Four Scenarios

Annie tests our understanding of `this` in JavaScript with four multiple choice questions. Can you get all the right answers?

{% link https://dev.to/liaowow/take-this-quiz-understand-how-this-works-in-javascript-44dj %}

#3. Great Curiosity

Jeremy walks us through a casual security audit of their personal website. In this post, we see their process for determining where their attacks where coming from.

{% link https://dev.to/pluralsight/analyzing-the-attacks-on-my-website-30jf %}

#4. Get Comfy

Emma compiles a list of six data structures developers should know, along with resources on how to learn more about each of them.

{% link https://dev.to/ladybug/six-data-structures-you-should-know-in-2020-3h5a %}

#5. A Tricky Combo

Jan-Willem helps us understand the fine line between successful and disastrous implementations. In this post, they share 10 tips to prevent SEO disasters.

{% link https://dev.to/jbobbink/what-i-learned-about-seo-from-using-the-10-most-used-js-frameworks-4alk %}

#6. Side Hustle

Takuya shares their journey of creating a revenue generating side hustle. In this post, we learn how they first came up with the idea, what it was like to get their first sales, and how they think about growth strategy.

{% link https://dev.to/craftzdog/how-i-built-a-markdown-editor-earning-1300-mo-profit-inkdrop-4l6f %}

#7. People, Traffic, Requests

Mark reviews the basics of API gateways and explains the pros and cons to consider.

{% link https://dev.to/bearer/what-is-an-api-gateway-42i6 %}

_That's it for our weekly wrap up! Keep an eye on dev.to this week for daily content and discussions...and if you miss anything, we'll be sure to recap it next Monday!_
Switching between multiple PHP versions on macOS
Tags: php, todayilearned, tutorial, macos
Published: 2020-02-10 16:04:21

---
title: Switching between multiple PHP versions on macOS
published: true
tags: php, todayilearned, tutorial, macos
canonical_url: https://www.markhesketh.com/switching-multiple-php-versions-on-macos/
---

I often need to switch between multiple PHP versions on my macOS environment when working on legacy projects.

As usual, I had forgot how to do this, so I’ve decided to publish the steps for my own and other’s reference.

The instructions below are for use with macOS 10.15 Catalina, and allow installation of PHP 5.6, 7.0, 7.1, 7.2, 7.3 & 7.4.

![](https://storage.googleapis.com/mh-blog/uploads/2020/02/php-macos-multiple-versions-1024x474.jpg)<figcaption>Using multiple versions of PHP on macOS via homebrew</figcaption>

## 1. Prerequisites

You’ll need both Xcode Command Line Tools and [Homebrew](https://brew.sh) installed.

**1.1 Install XCode Command Line Tools**

```
xcode-select --install
```

**1.2 Install Homebrew**

[Homebrew](https://brew.sh) is a package manager for macOS. It is similar to `apt` on Ubuntu.

```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

```

Check that brew has been installed correctly:

```
$ brew --version
Homebrew 2.2.5
```

You can also run `brew doctor` to check everything is good to go.

## 2. Install Multiple Versions of PHP

As of writing, **only PHP 7.2, 7.3 and 7.4 are actively maintained** and officially supported by Homebrew.

To **install PHP 5.6, 7.0 & 7.1** we’ll need to ‘tap’ an additional repository:

```
brew tap exolnet/homebrew-deprecated
```

Now, we can install all the available PHP versions:

```
brew install php@5.6
brew install php@7.0
brew install php@7.1
brew install php@7.2
brew install php@7.3
brew install php@7.4
```

This may take a little time to install. Go make yourself a brew!

## 3. Switching between PHP versions

Once installed, you can switch between PHP versions by ‘linking’ and ‘unlinking’ in brew:

```
# Switch from 7.4 to 5.6
brew unlink php@7.4
brew link php@5.6 --force
```

![](https://storage.googleapis.com/mh-blog/uploads/2020/02/php-macos-multiple-versions-switch-1024x810.jpg)<figcaption>Switching from PHP 7.4 to 5.6</figcaption>

You can combine `brew unlink` and `brew link` to swap between any installed version.

## Open Source Alternatives

There are a few open source projects that aim to automate this for you, if you prefer:

- [phpbrew/phpbrew](https://phpbrew.github.io/phpbrew/)
- [philcook/brew-php-switcher](https://github.com/philcook/brew-php-switcher)

[Source](https://www.markhesketh.com/switching-multiple-php-versions-on-macos/)
Ara Issue of the week
Tags: contributorswanted
Published: 2020-02-10 15:47:21

Well I am back again with more opportunity's for contribution
{% github https://github.com/FultonBrowne/Ara-Server/issues/82 %}

if like my work and want to see ara grow please give ara a star, give me a follow, or [buy me a coffee](https://www.buymeacoffee.com/28EcqNL)
if else golang
Tags: go, beginners
Published: 2020-02-10 15:45:12

If-else lets you branch code. A branch is a block of code (1 or more lines) that is executed on certain conditions. This is called an <a href="https://golangr.com/if/">if statement</a>.

Most programming languages support branching (C, C++, Java, Python, Perl etc). In <a href="https://golang.org">Golang</a> these branching options exist:

* if
* if..else
* if..else if....else 
* switch..case 

Before learning about if statements, make sure you can <a href="https://golangr.com/hello-world/">run Go programs</a>.

## If..else example

The program below shows an example of if-else branching in Go. The variable legs is set. Which code block is executed depends on the value.

```go
package main

import (
	"fmt"
)

func main() {
        legs := 4
	if legs == 4 {
		fmt.Println("Cat")
	} else {
		fmt.Println("Spider")
	}
}
```

## If example

Without an else clause, it just executed the branch if the condition is true. In this example its true if x is greater than 1.

```go
package main

import (
	"fmt"
)

func main() {
	var x = 2
	if x > 1 {
		fmt.Println("x greater than 1")
	}
}
```

## If elseif else

In this example the use of if..elseif..else is used. You can check multiple conditions at once instead of writing the if-statement over and over.

```go
package main

import (
	"fmt"
)

func main() {
	var x = 2
	if x == 1 {
	    fmt.Println("x is 1")
	} else if x == 2 {
	    fmt.Println("x is 2")
	} else if x == 3 {
	    fmt.Println("x is 3")
	} else {
	    fmt.Println("x is something else")
	}
}
```

**Related links:**
* <a href="https://golang.org">Golang official website</a>
* <a href="https://golangr.com">Go programming tutorial</a>
Why Data Structures and Algorithms?
Tags: computerscience, datastructures, algorithms, beginners
Published: 2020-02-10 15:44:14

Data Structures and Algorithms are some of the most essential topics for programmers, both to get a job and to do well on a job.

Good knowledge of data structures and algorithms is the foundation of developing the high quality applications.

## What is Algorithms?

Basically an algorithms is a process or set of rules which is used to solve a computer problem.

<img src="https://miro.medium.com/max/596/1*c-75ePZfP9qra_fRzbLUNg.png" alt="Algorithms" />

## What is Algorithms used for?

Algorithms is used to solve a particular problem with the best approach.

There are different approaches to solve a problem. Some approaches take more time and effort and some don't according to programmers knowledge and experience on how they implements the best algorithm for that particular problem.

Let consider the task of searching an element in an array:

* Algorithm 1: Using Linear search.
* Algorithm 2: Using Binary search.

Linear search and Binary search, which one is faster? To get to know the faster one you have to get your hands dirty with data structures and algorithms.

Algorithm analysis (Big O Notation, Big Omega Notation, Big Theta Notation) is a technique that is used to measure the performance of the algorithms. Speed is one of the key parameters in determining the potential of an algorithm.

There are some other factors like user-friendliness, security, maintainability, and usage space that determine the quality of an algorithm. Time and space complexity are metrics used to measure parameters.

To apply algorithms in programming, firstly you need to pick up one of computer programming language to implement the algorithms and then apply the usage of variables, loops, make the use of jump statements as it makes algorithms run smoothly using little space of memory, or use the break to terminate the process, and so on.

## What is Data Structures?

Data Structures is a particular way of organizing data in a computer so that it can be used efficiently.

<img src="https://miro.medium.com/max/1100/1*JQQgERSZ5l0BmX99aCCWXA.png" alt="Data Structures" />


## What is Data Structures used for?

Data Structures is used to organize the storage and retrieval of information stored in both main memory(Known as RAM) and secondary memory(Known as Hard Disks).

You know? Data Structures is a core key factor in software design.

A data structure is selected or designed to store data for the purpose of applying with various algorithms.

## Summary

All the above points give you a clear understanding that how the organizing of data is really important in programmers day to day life.

Data structures along with algorithms is a core key of computer science.

Thanks for reading ❤ Say Hello! <a href="https://github.com/bunlong">Github</a> | <a href="https://www.linkedin.com/in/bunlongvan">LinkedIn</a> | <a href="https://twitter.com/bunlongvan">Twitter</a>
Are you a hype-driven developer?
Tags: leadershipmindset, javascript
Published: 2020-02-11 00:38:21

---
title: Are you a hype-driven developer?
published: true
date: 2020-02-10 15:38:43 UTC
tags: Leadership mindset, ,javascript
canonical_url: https://www.simplecto.com/are-you-a-hype-driven-developer/
---

 ![Are you a hype-driven developer?](https://www.simplecto.com/content/images/2020/02/hype-js-1.jpg)

I have a lot of empathy for new developers today.

There is so much media, hype, and bullshit out there that you might not know what skills and tools to learn, develop, and build with.

_If you are a developer and have felt the same way then feel free to reach out.  _

Startups with young inexperienced teams get hyped up on Hacker News and Medium posts about what Google and Netflix are doing -- never mind the face that startups have no scale and no customers.  I want to start sharing and talking more about making better choices and having honest conversations about scale, user experience, and using the right tools for the right job.  

You don't have to be a HYPE-DRIVEN-DEVELOPER!  

Please reach out if you want to add your 2 cents!
How to get WordPress plugin release in GitHub actions
Tags: github, devops, wordpress, actions
Published: 2020-02-10 15:18:16

We started to use GitHub actions to build Visual Composer [release](https://github.com/VisualComposer/builder/releases) candidates in GitHub. This action will prepare a proper zip archive file which we can use to update our plugin in Wordpress.org. 

We decided that the release will be built on the new tag. The tag will be the version of the published release.

```yml
on:
  push:
    tags:
      - '*'
```

We already had the script which was able to create a valid zip archive of Visual Composer Website Builder for Wordpress.org. It looks like this.

```sh
$ node _infrastructure/vcwb-builder/builder plugin -b VERSION -p ./_infrastructure
```

Yeah, this script will set plugin version also `-b VERSION`. The question is how to get the version from GitHub tag. There is access to `$GITHUB_REF` where we can get tags. I decide to create variable `get_version` which can be used in other steps of the job.

```yml
- name: Get the version
  id: get_version
  run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
```

Then we just need to use `steps.version_version` in the next step.

```yml
- name: Build project
  run: |
    yarn install
    node _infrastructure/vcwb-builder/builder plugin -b ${{ steps.get_version.outputs.VERSION }} -p ./_infrastructure
```

The next action is to create Github release itself.

```yml
- name: Create Release
  id: create_release
  uses: actions/create-release@v1.0.0
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  with:
    tag_name: ${{ github.ref }}
    release_name: ${{ github.ref }}
    draft: false
    prerelease: false
```

After release creation needs to upload our zip archive. I use `actions/upload-release-asset@v1.0.1` action for that.

```yml
- name: Upload Release Asset
  id: upload_release_asset
  uses: actions/upload-release-asset@v1.0.1
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  with:
    upload_url: ${{ steps.create_release.outputs.upload_url }}
    asset_path: ./_infrastructure/visualcomposer.zip
    asset_name: visualcomposer.zip
    asset_content_type: application/zip
```

That's it. The full version of the configuration file you can check [here](https://github.com/VisualComposer/builder/blob/master/.github/workflows/create-dev-release.yml).

Good luck :v:
golang print array
Tags: go, beginners
Published: 2020-02-10 15:07:59

When programming you often work with data. This data can be a single digit, a single word, but often it's much more than that. Programmers often work with a collection of data. A collection could be an array.

The <a href="https://golang.org">Go programming language</a> (golang). The Go programming language lets you define and work with arrays. An <a href="https://golangr.com/arrays/">array</a> can be a list of integers, a list of strings and so on.

You can define an array in golang like this, one array of integers and one array of strings:

```go
setA := []int{1, 2, 3,4,5}
setB := [5]string{"one", "two", "three", "four", "five"}
```

Then you could just output the whole array, like this:

```go
package main

import (
	"fmt"
)

func main() {

        setA := []int{1, 2, 3,4,5}
        setB := [5]string{"one", "two", "three", "four", "five"}

	fmt.Println(setA)
	fmt.Println(setB)
}
```

But this only shows the raw array. How can you iterate over it?

## Example

Do you want to loop over an array and format it at the same time or do something else with the data? You can use a <a href="https://golangr.com/for/">for loop</a> to achieve that.

```go
for _, value := range setA {
  fmt.Printf("- %d\n", value)
}
```

That gives you this code:

```go
package main

import (
	"fmt"
)

func main() {

        setA := []int{1, 2, 3,4,5}
        setB := [5]string{"one", "two", "three", "four", "five"}

        for _, value := range setA {
          fmt.Printf("- %d\n", value)
        }

        for _, str := range setB {
          fmt.Printf("* %s\n", str)
        }
}
```

which outputs the following:

```
- 1
- 2
- 3
- 4
- 5
* one
* two
* three
* four
* five
```

The difference in style, because there are two loops which call fmt.Printf differently and to demonstrate there are two arrays.

So for both iterating over a string and integer array is the same, except the formatting in the Printf function.