teleren/devto huggingface dataset:
Should you build an MVP?
Tags: mvp, productdevelopment, productmarketfit
Published: 2021-12-15 10:51:02

---
title: Should you build an MVP?
published: true
date: 2021-12-10 00:00:00 UTC
tags: mvp,productdevelopment,productmarketfit
canonical_url: https://jhall.io/archive/2021/12/10/should-you-build-an-mvp/
---

“MVP” has become an industry buzzword. It’s cool these days to build an MVP if you’re a startup. It’s cool to write a new feature as an MVP. It’s cool to call your new cookie recipee an MVP.

But is that a good idea?

First, I estimate that 95% of the time I hear the term “MVP”, it’s acutally being [misused](https://jhall.io/archive/2021/06/13/the-misunderstood-mvp/).

When Eric Reis, author of [_The Lean Startup_](https://amzn.to/2StmwGI), coined the term, he had this in mind:

> The minimum viable product is that version of a new product which allows a team to collect the maximum amount of validated learning about customers with the least effort.

The MVP is a learning too. It’s intended for market validation. It’s designed to learn about your customers.

So do you need that?

How certain are you that the thing you want to build will solve a real problem? How certain are you that people will use it?

If you’re already highly certain that your product, service, or feature idea is a good one, and that your customers will use it, you probably don’t need an MVP.

If you’re setting up a Kubernetes cluster for internal use, you probably don’t need an MVP. You presumably have a good understanding of what problems it solves, and that your company needs to solve those problems. Doing a half-assed job and calling it an “MVP” isn’t serving anyone.

On the other hand, if you have a new idea for a new Kubernetes custom resource definition that can automatically [order pizza](https://github.com/rudoi/cruster-api) for the Ops crew any time a deployment fails, you probably don’t have anything like a solid idea that people will pay for that. Investing in an MVP to prove the concept is probably a good idea.

In short, don’t assume you NEED an MVP, just because the misused buzzword is en vogue.

First determine what questions you need answered, then decide if an MVP is the right tool to answer those questions.

* * *
_If you enjoyed this message, [subscribe](https://jhall.io/daily) to <u>The Daily Commit</u> to get future messages to your inbox._
Day 494 : Growing
Tags: hiphop, code, coding, lifelongdev
Published: 2021-12-09 23:17:50

_liner notes_:
- Professional : Don't remember if I mentioned it previously, but I found out that the Executive Leadership Team (people like the CEO, CTO, etc) wanted to see demos of the winning projects from our hackathon. We'll, today was the day. I updated the slides since more has been done with the project and ran through it a couple of times to make sure things work and get a good flow. Did the presentation and demo, had some hiccups, but it wasn't my fault, I think the platform I was using was having some issues. For the most part, it worked and and everyone said it was a good presentation. A lot of people seem excited to see the project be released. That was the start of a bunch of meetings. After the last meeting, I had to take a nap. haha Got up and then worked on my next blog post for the rest of the day.

- Personal : Worked on my new side project. I got stuck with converting my private key to a form that could be used with the hosting platform. Previously on other projects, I would store the file in a hidden folder only accessible from the server. Since there really isn't a server and the hosting platform pulls and builds from my GitHub repo, I didn't want to push my private key file to my repo. So what I found from searching the net, was that I needed to convert the file to a long string of characters, put that in the hosting platform's dashboard and in my code, decode the file back so it could be used. Ran into an issue, that kind of had me stumped, until I console logged the decoded contents of the file and saw that not all of the converted string was in the dashboard. Reconverted it and saw what was missing, added it to the dashboard and everything worked! At least now I know of another way to pass my private key into my projects going into the future. Always growing, always learning. Code. haha. Ended the night researching drones. haha

![Coastline of Kangaroo Island, Australia with cliffs and beaches meeting the ocean](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6z1992zzl84k1qcay0uc.jpg)

Now that I got the back end stuff working and can call the info I need for my side project. I just need to convert the original demo that was built into vanilla JavaScript to Svelte which is what the framework I'm using supports. Should be an interesting exercise. It should require less code. We'll see. After that, I'm basically done. Thinking I may finish it tonight/tomorrow and test it out over the weekend and launch on Monday. Maybe look into more drones.

Have a great night!

peace piece
Dwane / conshus
https://dwane.io / https://HIPHOPandCODE.com
{% youtube YUpjElVq8Oo %}
Delete Azure DevOps project wiki using Az CLI
Tags: azure, devops, azurecli
Published: 2021-12-09 23:12:45

If you use [Azure DevOps](https://dev.azure.com), then it's possible that you've come across with this screen when you select the Wiki option in the Overview left icon:

![Azure DevOps wiki screen](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y8rdfs4f9x9quycjsbft.png)

For those that are not familiar with this feature, if you select the option "Create project wiki", Azure DevOps will immediately, and without requiring any kind of confirmation, present you with an online editor where you can right away start writing and publishing content to your newly created wiki. 

If on the other hand you select the "Publish code as wiki" option, you'll be presented with a screen where you can select a repository, branch and folder, that will serve as the root folder for your wiki. This is a great scenario because in the same DevOps project you can have multiple wikis, hosted in different repos or in different folders of a single repo.

One thing that both options have in common is that behind the scenes the wiki is just markdown files. With the second option you chose where those files are stored but with the first one DevOps will create a default wiki repository that you apparently can't control in any way using the DevOps interface.

In my specific case that was a problem because I accidently clicked on the first option, and I was left without any apparent way to undo my mistake and to go back to the "Publish code as wiki" scenario. Everytime I went back to the wiki screen I could only see the editor and no options to remove the wiki from the project.

With a bit of research I was able to find a very simple solution for this problem, and [Azure CLI](https://docs.microsoft.com/en-us/cli/azure) was again my best friend. 

Using this tool, and the respective [DevOps extension](https://docs.microsoft.com/en-us/cli/azure/devops/extension?view=azure-cli-latest), you can easily find the ID of that default repository using the following command: 

```shell
 az devops wiki list -p "{repository-name}" --organization "https://dev.azure.com/{organization-name}"
```

The output of that command will give you the details of the default repo that was created to host the wiki, including the necessary Id that you can now use to permanently remove that repository from your project:

```shell
az repos delete -p "{repository-name}" --organization "https://dev.azure.com/{organization-name}" --id {repository-id}
```

After running the above, you can now go back to Azure DevOps and to the wiki screen and you'll again be presented with the two options to choose from.
Changing Default Search Provider in Firefox on Linux Mint
Tags: firefox, linux
Published: 2021-12-09 22:53:42

On Linux Mint, the default version of Firefox is installed and configured to allow the following search engines to be queried directly from the address bar:

* Yahoo!
* Startpage
* DuckDuckGo
* Wikipedia

Mint defines these as the default available set of search engines based upon 3 criteria (funding to Linux Mint, privacy support and whether the search engine is non-commercial).

Other search engines such as Google, Bing or Twitter, etc. can easily be added into the default version of Firefox however.

To add a different search provider, browse to [Search Engines](https://www.linuxmint.com/searchengines.php)

At the bottom of the page, click on the icon of the requested search engine, then click on the `...` button in the URL bar and select the `Add Search Engine` option.

You then have the option to change the default search engine within Firefox preferences to your new choice.
Automating AppSec with Contrast Security
Tags: security, podcast, cybersecurity, devops
Published: 2021-12-09 22:41:16

Everything we do is online. We bank online, access healthcare, pay our taxes, build our businesses -  and along the way we put trust in companies to keep us protected.

Unfortunately, companies aren’t great at writing secure software. Contrast Security wants to change that.

Jeff Williams, Co-founder & CTO of Contrast Security, and Steve Wilson, CPO, join the Dev Interrupted podcast to discuss the future of application security (AppSec), the importance of security automation and why the traditional way of doing security - where you scan app after app a few times a year - is over.

{% spotify spotify:episode:6G6iaZ6CUOdjx3EZW13chi %}

## Episode Highlights Include:
- By the numbers: the average application is attacked **13,000 times a month**
- And has over **35 vulnerabilities**
- The reasons AppSec should to be automated
- How to reduce the cost of AppSec
- Why shifting left doesn't result in more secure code


## Join the Dev Interrupted Community
With over 2000 members, the Dev Interrupted Discord Community is the best place for Engineering Leaders to engage in daily conversation. No sales people allowed. [Join the community >>](https://discord.com/invite/devinterrupted)

![https://discord.com/invite/devinterrupted](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ug8aw08f09fmzk0631c.png)
TikTok’s Algorithm, Timnit Gebru’s New Research Institution, & more on DevNews!
Tags: news, podcast
Published: 2021-12-09 22:33:08

---
title: TikTok’s Algorithm, Timnit Gebru’s New Research Institution, & more on DevNews!
published: true
description: Listen to S6E6 of the DevNews pod wherever you get your podcasts.
tags: news, podcast
series: DevNews Season 6
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/zoxvbu0494gq3sxtjp4v.png
---

Let's talk about TikTok, AI ethics, and lots more in this week's episode of DevDiscuss

{% podcast https://dev.to/devnews/s6-e6-tiktok-s-algorithm-jetbrain-s-fleet-ide-timnit-gebru-s-new-research-institution-and-more %}

**Hosts:** @saronyitbarek & @joshpuetz 

**Guests:** 
**[Dennis Ushakov](https://twitter.com/en_Dal)**, Fleet Developer at JetBrains

**[Julian McAuley](https://github.com/julianmcauley)**, Computer Science Professor at the University of California San Diego

In this episode, we talk about Timnit Gebru’s new research institute, researcher’s contentious relationship with Facebook, and a company that has been secretly helping governments track people’s mobile phones. Then we chat with Dennis Ushakov about Fleet, the company’s new IDE. Finally, we speak with Julian McAuley about an internal TikTok document the New York Times obtained titled, TikTok Algo 101.

---

_You can [follow DevNews](dev.to/devnews) to get episode notifications and listen right in your feed_ _— or subscribe on your platform of choice! Plus, if you leave us a review, we'll send you a free pack of thank-you stickers. Details [here](https://airtable.com/shr8oKAIMZgdYnBxx)._ 

## **Quick Listening Links**
- [Apple Podcasts](https://podcasts.apple.com/us/podcast/s6-e6-tiktoks-algorithm-jetbrains-fleet-ide-timnit/id1525581923?i=1000544407504)
- [Spotify](https://open.spotify.com/episode/4tb72VcYgQRLOGxDKWPNDe)
- [Google](https://podcasts.google.com/feed/aHR0cDovL2ZlZWRzLmNvZGVuZXdiaWUub3JnL2Rldm5ld3NfcG9kY2FzdC54bWw/episode/aHR0cHM6Ly9kZXZwb2RzLmRldi9wb2RjYXN0cy9kZXZuZXdzLzQ2?sa=X&ved=0CAQQkfYCahcKEwjYrv7K4tf0AhUAAAAAHQAAAAAQCg)
- [Stitcher](https://www.stitcher.com/show/devnews/episode/s6-e6-tiktoks-algorithm-jetbrains-fleet-ide-timnit-gebrus-new-research-institution-and-more-88888450)
- [Listen Notes](https://www.listennotes.com/podcasts/devnews/s6e6-tiktoks-algorithm-GZiyNL7gd30/)
- [TuneIn](https://tunein.com/podcasts/Technology-Podcasts/DevNews-p1352512/?topicId=168317867)
- [RSS Feed](http://feeds.codenewbie.org/devnews_podcast.xml)
- [DEV Pods website](https://devpods.dev/podcasts/devnews/episodes/236)

### _Acknowledgements_ 
- _@levisharpe for producing & mixing the show_ 
- Our Season 6 sponsors: [Cosmos HackAtom](https://www.hackatom.org/) & [Microsoft Azure](https://www.microsoft.com/en-us/dev-community/Event/Register?eventId=DevNewsPodcast_FI2YKJLHvJdZ&ocid=aid3038582)


We hope you enjoy the show this week! 📰
Guía para registrarse en nuestras Actividades.
Published: 2021-12-09 22:08:50

**Hola!**

Es muy fácil registrarse en nuestras actividades y participar en la dinámicas que lanzamos en HUAWEI Developers Latinoamérica. 

Actualemente estamos ejecutando múltiples dinámicas para hacer crecer nuestra comunidad. Estos son los enlaces.

**HUAWEI Developers Latinoamérica WINTER CONTEST**
https://bit.ly/32dYDHU

**HDG GROUP MÉXICO**
https://bit.ly/3m01qf3

**HDG GROUP PERÚ**
https://bit.ly/3rKyJ9x

**HDG GROUP Panamá y Costa Rica**
https://bit.ly/3Eiqll1

**HDG GROUP CHILE**
https://bit.ly/3dbNSYT

Para registrarte será necesario crear tu cuenta de HUAWEI Developer. Sigue los siguientes pasos.

1. Da click en el enlace al que desees registrarte, para ver una imagen con un botón de registro.

![IM](https://i.imgur.com/Yi5qFDc.jpg)

2. Para poder registrarte deberás contar con una cuenta de Developer Huawei. Podrás crear una cuenta gratuitamente.
![IMG](https://i.imgur.com/aWbUW9d.jpg)
3. Llena el formulario con tus datos, no olvides seleccionar tu país. Puedes seleccionar el registro con email ó con tu teléfono.
![IMGs](https://i.imgur.com/gzP18MI.jpg)

4. Al momento de tu registro deberás obtener el código de verificación en la bandeja de entrada de tu correo ó a través de SMS.
![IMMg](https://i.imgur.com/1oGT2a8.jpg)
5. Una vez llenado el formulario acepta el aviso de privacidad.
![immg](https://i.imgur.com/yhPZvuf.jpg)

6. Ahora debemos de agregar el numero telefónico par poder recuperar tu cuenta en caso de olvidar la contraseña.

![iMmgg](https://i.imgur.com/iXpWgfR.jpg)

7. Al terminar el proceso de agregar tu código de verificacion serás redirigido a la siguiente página en donde ya podrás inscribirte a la actividad.

![mm](https://i.imgur.com/rngZGNl.jpg)

8.  Listo! ya estás registrado en la actividad.

Si estas participando en el programa de referidos tus colegas deberán realizar este proceso y compartirte la fotografia de su correo registrado en developer.huawei.com tal como esta imagen. 
![Imgur](https://i.imgur.com/LNDCSHm.jpg)

Para conseguirla solo deberas ir a la seccion de _My Profile_

(≧▽≦ﾉﾉﾞ☆
How to Set up Neovim for Full Stack Development
Tags: vim, webdev, tutorial
Published: 2021-12-09 21:49:57

# Set up Neovim for Full Stack Development
You'll need:
- Coc 
- emmet

## If you're new to neovim:
1. [install neovim](https://github.com/neovim/neovim/releases/tag/v0.6.0)

2. Install vim-plug (or any other plugin manager)
https://github.com/junegunn/vim-plug
3. I recommend checking out my [dotfiles](https://github.com/bashbunni/dotfiles) which has lots of comments so you can find any extra features that might be helpful for you.

*I will write another post for a more in-depth description of getting started with neovim...*

## Install Coc
To install Coc, you'll want to follow their instructions at the link below. It is 
https://github.com/neoclide/coc.nvim

## Configuring Coc
With neovim open, type the following:
`:CocInstall coc-html coc-tsserver coc-json coc-emmet  coc-prettier`

Coc tsserver is for javascript, typescript, and JSX support

You'll want to create a shortcut for `:call CocAction('format')`. I have the following shortcut so that I can format my projects with space + f:
`nnoremap <leader>f :call CocAction('format')<CR>`

## Install Node and Npm
head over to the [Node.js downloads page](https://nodejs.org/en/download/) and follow their installation instructions. You can also use your package manager to install Node. 

### Debian and Ubuntu
`sudo apt install nodejs`
### Arch Linux
`sudo pacman -S nodejs`

## Other Recommendations
I highly recommend installing [tmux](https://linuxize.com/post/getting-started-with-tmux/) so you can run your frontend, backend, neovim, and git cli in the same terminal window which makes it *way* easier to keep your workspace clear. Tmux is great because you can name your sessions and easily navigate to the right spot for what you're looking to do. 
e.g.
![tmux demo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a3ylgz2lnmejkgtcp95a.png)
Solving day 9 of Advent of Code 2021 in JavaScript
Tags: challenge, adventofcode, javascript, video
Published: 2021-12-09 21:37:46

---
title: Solving day 9 of Advent of Code 2021 in JavaScript
published: true
description: JavaScript walkthrough of Advent of Code 2021 (day 9)
tags: challenge, AdventOfCode, javascript, video
series: Advent of Code 2021 in Javascript
---

{% youtube CDK4TxkEd60 %}
Let's Talk Logical Operators
Tags: javascript, beginners
Published: 2021-12-09 21:26:31

##We're going to go over three of the logical operators that Javascript uses:
![truthy operator values](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ia76ynvidwmmwgd3557.png)

###Why use a logical operator? 

The benefit of a logical operator is to connect two (or more!) expressions so that the value of the total (all of the expressions you just connected) is dependent on those expressions. 

These operators are used within code to compare variables and values when creating various logic methods, often using their boolean values. When used within functions it gives more logic options for the code to use and change based on user behavior. This can also help DRY up code in condensing functions.


###! (NOT)
The NOT `!` operator is generally used as a boolean. Logical NOT will have truthy value if the operator it's called on (like `!(6 === 3)` is false and vice-versa (like `!(6 === 6)` is considered a false value. Here's a different way of wording the NOT operator with the previous examples: Return true if x is not strictly equal to y, otherwise return false. 

![Logical Operators](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w7zfe4gt7jnhzc134bnp.png)

###&& (AND)
The AND `&&` operator will return true if both sides of the operator or boolean values are true (`(x < 10 && y > 1)` is true) otherwise, it returns false. In other words, when using the AND operator, if both x and y are true, then the logic as a whole is true. If one part of the logic is false, the whole problem returns false. It's also important to not that you can chain on the AND operator more than once. 

![AND Operator](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dn3yv2zl5t3ne63j8yiv.png)


###|| (OR)
As with the other operators, the OR `||` operator is usually used within a boolean context. A problem using the OR operator will return true if either side of the values are true. If either/both x or y are true, return true. If both are false, return false. It's also important to not that you can chain on the OR operator more than once. 

![OR Operator](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8th6s63s8fiom947h8ja.png)

###What if you mix operators? 
Operators can be mixed within one expression. However, logical operators use an order of precedence, called logical operator precedence if that occurs. The order is as follows: logical NOT (`!`), logical AND (`&&`), then logical OR (`||`)

![example](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gvqvcgup97hhnj0osj12.png)

###TL;DR
* NOT `!` - this will negate a boolean value (!is = is not)
* AND `&&` - can be used with two (or more) values and will return true if all values are also true, will return false otherwise
* OR `||` - can also be used with two (or more) values and will return if any of the values are true, will return false if all of the values are false
* if you use these operators in the same expression, keep in mind the order in which Javascript will go through them.
Managing Go Modules
Tags: go, beginners, programming
Published: 2021-12-09 21:21:17

## Managing Dependencies with go.mod
A project's dependencies are declared in the go.mod file. This is where the modules are stored when you do `go get <module name>`. You can remove unused dependencies using `go mod tidy` and your go.mod will only include all used imports. 

When you clone a Go project from github, for example, you'll want to run `go get` to install all of the dependencies declared in the go.mod file. If you're coming from a background in web development, this is similar to how you run `npm install` to install all of the dependencies declared in your `package.json` file. 

### Indirect Dependencies
You may see some dependencies in your go.mod file that are indirect (denoted by `// indirect`). This means that one of your dependencies doesn't have its own go.mod file, so, the dependencies that it imports are included in your project's go.mod file. 

For example:
Let's say we're building a Twitch bot, we need `github.com/gempir/go-twitch-irc/v2`, but it doesn't have a go.mod file and it uses functions from `github.com/gempir/go-twitch-irc`. You would then have `github.com/gempir/go-twitch-irc // indirect` in your project's go.mod file. 

*note: the above is a hypothetical scenario, you won't actually have any indirect dependencies with github.com/gempir/go-twitch-irc/v2*

### What is go.sum?
go.sum includes the checksum for the dependencies to make sure that you're installing the *exact* same dependency as the author used. 

## Managing your Projects as Go Modules
To create a new Go project where you can have a go.mod file, you need to set it up on your GOPATH with a name for your project. 

Running `go mod init <module name>`
Your module name can be your project name or it can be a link to your github repo, just remove the https:// portion of the url.

You need to run `go mod init` before you're able to get dependencies for your project with `go get`