teleren/devto huggingface dataset:
Interactive Budget Planner. Join open source!
Tags: vue, showdev, opensource, discuss
Published: 2020-03-09 19:37:56

---
title: Interactive Budget Planner. Join open source!
published: true
description: Interactive guide for personal finance planning.
tags: #vue #showdev #opensource #discuss
---

This project is open source and it might be great place for newbie developers to play around, try to develop some features and fix bugs :D

It is built with Nuxt and Tailwind. Would be great to discuss ideas for refactoring and best practices. It's far away from perfect code, that's why it's could be a good project for jump in.

As a next thing I am going to create interactive quizz-games inspired by CashFlow (Robert Kiyosaki's board game)

I would be glad to hear some feedback. 

- [Budget Planner](https://moneydo-budget-planner.netlify.com/?utm_medium=devto)
- [Source Code](https://github.com/razbakov/moneydo)

Please support by giving a star to my repo :)
How to Know Thy User
Tags: discuss, ux, userresearch
Published: 2020-03-09 19:34:28

---
title: How to Know Thy User
published: true
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/wk9zyqj69l0j58yzj4aa.jpg
description: 
tags: discuss, UX, user-research
---

More often than not, the person using an application is represented by an icon that’s profoundly vague. It's a monotone stamp, devoid of any expression or recognizable features. **This icon could not be further from the truth.** The User is a unique individual with their own set of expertise and experience. They think. They feel. They probably drink less coffee than I do.

So I'd like to hear your feedback on how you go about getting to *know thy user*. 

 - How do I best communicate with my hallowed Users and develop a relationship with them that's advantageous towards my goals?

 - What is important for me to know about them? Monitor size? Blood type? Favorite band? What, no matter the project, is essential knowledge? What else falls under the "it depends" category?

 - Which tools are available to make this process awesome for everyone? What is a "must-have" for creating that link between you and the User group?
Fission on the IPFS Community Call
Tags: ipfs, video, presentations
Published: 2020-04-22 17:23:24

---
title: Fission on the IPFS Community Call
published: true
date: 2020-03-09 19:34:27 UTC
tags: IPFS, video, Presentations
canonical_url: https://blog.fission.codes/fission-on-the-ipfs-community-call/
cover_image: https://s3.fission.codes/2020/03/ipfsbot-twitter-header-community-call.png
---
Thanks to the IPFS team for hosting us on the weekly community call! These [community calls happen weekly on Mondays at 1600 UTC](https://talk.fission.codes/t/ipfs-weekly-community-calls/521).

We presented an intro to what we're building at Fission, including our hosted services, open source contributions, and more.

We've started to use the phrase "web native apps" to describe Fission's app creation platform that decouples storage from apps, with user controlled data, and secure by default. Which is what is expected by users  from native mobile apps.

You can watch the video on the IPFS Youtube channel here:

{% youtube wvmZj7IE9Bo %}

The slides are [available on IPFS as a PDF](https://events.fission.name/2020/ipfs-community-call/Fission-IPFS-Community-Call-March2020.pdf):

![Fission on the IPFS Community Call](https://s3.fission.codes/2020/03/Screen-Shot-2020-03-09-at-12.19.32-PM.png)<figcaption><a href="https://noti.st/bmann/TltFLG/fission-building-web-native-apps">Also on Notist</a></figcaption>

From the final slide, here are all the places where you can find out more and connect with us:

- Github: [fission-suite](https://github.com/fission-suite)
- Install Guide & Docs: [guide.fission.codes](https://guide.fission.codes)
- Technical Whitepaper: [whitepaper.fission.codes](https://whitepaper.fission.codes)  – this is a work in progress! 🚧 👷‍♀️✍️
- Discourse forum: [talk.fission.codes](https://talk.fission.codes)
- Discord chat: [fission.codes/discourse](https://fission.codes/discourse)
- Twitter: [@fissioncodes](https://twitter.com/fissioncodes), team accounts [@expede](https://twitter.com/expede),  [@bmann](https://twitter.com/bmann), [@icidasset](https://twitter.com/icidasset), and [@dholms on Github](https://github.com/dholms)
Ruby devs, how do you work?
Tags: ruby, healthydebate
Published: 2020-03-09 19:27:06

This post is more like a request for discussion thread than a normal 'informational' post. First some history.

### Daily work

In the company I work at, we use many different languages, but mostly based on the Java (JVM) ecosystem (Java, Groovy, Kotlin, etc.) and Ruby ecosystem (Rails, etc.). Most of the teams work with one language/ecosystem, but once in a while we collaborate on some code work in a different language than our daily work. That is fun, challenging and very good for learning new patterns and code styles.

### Observations

I usually work within the JVM ecosystem (mostly Kotlin), and feel very confortable there. The standard library is great, there is a lot of learning content available for such a new language, and it is possible to build on the shoulders of a giant (Java) in terms of libraries and performance.

Whenever I collaborate and write Ruby code, I feel a little bit powerless. The first thing I do when I open a project which is not my daily code base, I scroll around the directories and files, and look around.

Then, when we start working on the problem at hand, we open the corresponding files and start editing. The first thing I do is Ctrl + click two times:
  1. Find all the usages of the class/function we are working in (get to know the context of the work);
  2. Find the definition of a referenced class or variable (what are we working with).

This does not work in Ruby (and many other interpreted languages), as any piece of code can call any other piece of code. Even methods (Ruby does not seem to have properties) can be added dynamically. Things like dependency injection are not really a thing (http://weblog.jamisbuck.org/2008/11/9/legos-play-doh-and-programming).

This leads me to the following set of questions I would like to ask the community.

### Questions

- How do you find out about usages or definitions of models in code that you did not write, know little about but have to refactor for some reason?
- Apart from test coverage, how do you make sure you do not break anything when changing something else? Even with test coverage: do you unit test every property call?
- How do you store knowledge in the code about some model, like which properties mean what, which are required during construction, which must exist together etcetera? Ruby is object-oriented to its core (https://www.ruby-lang.org/en/about), so encapsulation is important. I fail to understand how to encapsulate something that any other piece of code can extend or modify.

Hopefully this lets me get a better feeling on how developers can work with interpreted languages like Ruby. Thanks in advance for the discussion!
🎉 Built a new app! Introducing Watchtower: the one dashboard to watch all your CI/CD pipelines from any account
Tags: productivity, devops, career, dotnet
Published: 2020-03-09 19:21:21

Hello all!

For the past year, I've had to juggle numerous build and release pipelines across different accounts and organizations in Azure DevOps. Some accounts were work related, and others were for my personal projects. My biggest frustration is that the CI/CD pipelines were segregated between the different accounts. Of course, this makes sense because they're in different user accounts. But why can't I have one page that shows all the pipelines that I care about?

Thus, the idea for Watchtower CI/CD Dashboard was born! I created the app in 48 hours using C#, .NET, and XAML. Currently, there's only support for Azure Pipelines, but I plan to expand to other CI/CD tools. You can "watch" your build pipelines and release pipelines in the app, and the best part is you can trigger builds and deploy releases as well! 

Give Watchtower a try if it sounds like it could be useful to you! Download it here: https://www.microsoft.com/en-ca/p/watchtower-ci-cd-dashboard-preview/9pcg8j6nb477
Filtering An Array
Tags: javascript, beginners
Published: 2020-03-09 19:01:58

This post assumes prior knowledge of: 

1. Array Iterations
2. Callback Functions

---

```js

const catalog = [
  { name: 'Hammer', desc: 'A 🔨', price: 1.5, id: 1 },
  { name: 'Chainsaw', desc: 'Cut up 🧟‍♂️s.', price: 11.5, id: 2 },
  {
    name: 'Frying Pan',
    desc: 'For 👨🏽‍🍳ing 🥘.',
    price: 10.5,
    id: 3
   },
   { name: 'Spatula', desc: 'Use it for grilling.', price: 7.5, id: 4 },
   {
     name: 'Airplane',
     desc: 'For flying around!',
     price: 100000000.5,
     id: 5
    },
    { name: 'Car', desc: 'For driving.', price: 10000.5, id: 6 }
]
    
// TODO: Create a new Array that contains all of the items with a 'price' less than $100.

```
---

```js    
const under100 = catalog.fiter(function(item) {
    	return item.price <= 100;
})
```
---

The `filter` *method* is part of `Array.prototype.` This means that we can call on it on anything that is a bona fide *Array* ( `catalog` 👆🏽). It takes in a *callback function* and `return`s a **new** *Array (*`under100` 👆🏽)*.* `filter` filters an *Array* by *iterating* over each element and passing it into its *callback function.* If the *callback function* `return`s `true`, then that *element* **is** 'added' to the `return`ed *Array.* 

In our example above, `item` represents one of the *Objects* in the *Array* `catalog`. If `item`'s `price` *references* a *value* less than or equal to `100`, `item` is *included* in `under100`. As you can see, this is why our *callback* *function* must `return` either `true` or `false` - this is how we are able to perform 'filtering.'

When `filter`ing, the original *Array* (`catalog`) is not *mutated* (changed) in any way. Instead a separate, new *Array* is created. Avoiding *mutations* is usually desirable and is a fundamental of the *functional programming paradigm.*

### ♻️ Refactoring Our Code Using ES6 *Arrow* *Syntax ➡️*

`const under100 = catalog.fiter(item => item.price <= 100)`
Must we use Relational Databases to be A good Developer?
Tags: discuss
Published: 2020-03-09 18:59:51

---
title: Must we use Relational Databases to be A good Developer?
published: true
tags: discuss
---

I find it weird when my database is not well Normalized and does not follow the 5 Normalization Rules.

1. First Normal Form
2. Second Normal Form
3. Third Normal Form
4. BCNF
5. Fourth Normal Form

What's the way forward? and What has worked for you?
React-Loaders-Kit
Tags: react
Published: 2020-03-09 18:58:45

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/qjvolas0tle3u3ot45hx.png)

Hi react community.

I just released an npm-package for designers and react developers. Feel free to use as you wish and your feedbacks are always welcome. If any issue is encountered, issues on github and pull requests are also welcomed.

Link - https://seimodei.github.io/react-loaders-kit-examples/

Have fun!!!
React-Loaders-Kit
Tags: showdev
Published: 2020-03-09 18:56:26


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/u81qty6wytyerh4dgev4.png)

Hi dev community. 

I just released an npm-package for designers and react developers. Feel free to use as you wish and your feedbacks are always welcome. If any issue is encountered, issues on github and pull requests are also welcomed.

Link - https://seimodei.github.io/react-loaders-kit-examples/

Have fun!!!
What would this JS code print? 🤔
Tags: discuss, javascript, beginners
Published: 2020-03-09 18:51:44

---
title: What would this JS code print? 🤔
published: true
description: What would happen when this piece of code is run?
tags: #discussion #javascript #beginners
---

What do you think this piece of code will print? Most of you might know the answer but the behavior is really interesting to me and got me thinking and learning about a very important concept in JS.

    function saySomething() {
        var greeting = "Hello";
        {
            greeting = "Howdy";
            let greeting = "Hi";
            console.log(greeting);
        }
    }
    saySomething(); //what would this print?
How I Became a Beginner Again (An Imposter Syndrome Story)
Tags: beginners, wecoded, codenewbie
Published: 2020-03-09 18:48:31

I walked into an interview blind.

At the marketing agency, I thought we were going to be talking about writing.

I had a fresh degree in English literature and a year on my resume writing copy for enterprise software companies. 

My interviewers saw my soul — the HTML, CSS, and computer science courses — my secret side projects, and my self-talk that I was not smart enough to be a professional. At this agency, developers decided they liked me enough to train me.

I walked out of the interview with an offer to start as a web developer intern. I packed my bags and moved immediately.

A few months turned into a few years, and I never had so much fun, growing from intern to full-time lead and perfecting my craft from project to project.

**But when it came time to move on, something happened: *I was scared*.**

When I went out into the world, outside of the safe haven of my agency, I struggled selling myself. Scathing technical interviews and massive lists of technical requirements scrambled my mind. In an instant, I was a beginner again, and the great investment I and others made had melted away in my mind to become a developer again.

This fear changed my path. I went back to writing — something I knew that I could confidently do. 

And this is where I have remained.

Just last Fall, I was in the middle of taking yet another computer science course, wondering when I was going to finally reach the professional threshold in my mind.

During this time, I bought my first home with my partner of ten years. When I missed class on moving day, my professor mistook me for a freshly-graduated high school student. He told me I was in the real world now and warned me against slacking again.

I wondered what brought me here — to yet another class and to being 19 again.

*When will I be good enough?* I kept wondering. And then, it hit me: *I am good enough right now.*

That is why this year I have started [Books on Code](http://booksoncode.com) -- to renew myself as a developer, to soak in the world, and to contribute in a way I am uniquely qualified to do.

Imposter syndrome — that fear of never being able to earn our place or of not being smart enough — has been the most insidious blocker in my life.

I got here by others believing in me.
Now it’s time for me to believe in myself.

----

Thank you for reading this short post. 

If you like, follow me on my journey! Sign up for my newsletter on [Books on Code](http://booksoncode.com), where I send weekly motivational letters, or [find me on Twitter](https://twitter.com/booksoncode).

Let’s conquer imposter syndrome together.
5 Things You Should Know About Using React (Hooks) with D3
Tags: react, d3, reacthooks, dataviz
Published: 2020-03-09 18:18:32

{% youtube MGRuvlXzZHs %}


Hi! 

This is the final episode of the "Using React (Hooks) with D3" series, and in this one, I recap and sum up the most important things to remember from this series.

Hope you like it, and as always, you can find the code for this episode and all the other episodes here on GitHub:
https://github.com/muratkemaldar/using-react-hooks-with-d3/tree/17-finale

Thanks for all the support for this series, see you in the next series! I will probably still do stuff regarding D3 / dataviz, but in another context. If you have any issues with the series and the code from this series, just let me know or create an Issue on the repo.

Enjoy!
Nevertheless, I Coded, and had Fun!
Tags: wecoded
Published: 2020-03-09 18:15:11

I didn't know I was going to do Frontend. I was all set to do hardware programming using C. But then one day, I stumble upon this awesome site which hosted awesome coding bootcamps. And then boom, I am going. No one can stop me.

A lot of people told me a lot of things. Negative things about the industry. About being a woman in Tech. Someone told me I couldn't code. Someone said this industry isn't for women. Nevertheless, I kept on. And I'm glad I did.

A lot of people will throw a lot of negativity at you the moment you set yourself up for a goal. I say don't listen to them. Just keep walking the path until you're there. These are the same people who didn't achieve anything themselves, and don't want you to either.

Currently I'm working on (and learning) a lot of things such as React and Javascript. Frontend Development is so much fun, because I love creating beautiful and engaging interfaces. I love it when I see people using the things I have developed. This definitely is for me.

All the ladies out there, don't listen to the naysayers, just do it.
Want to remove/delete your last commit? Here is how.
Tags: git, beginners
Published: 2020-03-09 18:15:06

## 1. To remove a commit done locally:
You made a commit and then realized you want to remove it. But, you still want to keep your changes. This is achieved by:

``` bash
$ git reset --soft HEAD^
```

`HEAD^` means go back one commit from where HEAD is now. This will get you to the state just before the last commit. 
If you do a `git status` you will see that your changes are there just as they where before you staged them.

## 2. To remove a commit you have already pushed:
This is slightly tricky. There are safe and unsafe ways of doing this. Some of these unsafe ways involve changing the history of the repo and will create problems for other developers working with you in the same repo. I do not recommend those methods.

The safest way of removing a commit from remote is to **revert** the bad commit. Find the commit hash and:

``` bash
$ git revert <commit-hash>
```

This creates a new commit that undos the changes made in the bad commit. Now push this to remote and you are good to go.

<a href="https://chipper-musician-9131.ck.page/562695812e">![signup](https://dev-to-uploads.s3.amazonaws.com/i/cufm58ypdt0dilhlgh5j.png)</a>
Como limitar las peticiones a una API
Tags: api, spanish, go, security
Published: 2020-03-09 18:13:48

Cuando se desarrolla una API es importante que en todo momento esté disponible para ser utilizada por los usuarios, pero la verdad es que cuando una API sale a producción siempre aparecen factores que alteran su estabilidad.

Uno de esos factores son los ataques [DDoS](https://es.wikipedia.org/wiki/Ataque_de_denegaci%C3%B3n_de_servicio), los cuales muchas veces son producidos por errores en aplicaciones que utilizan los servicios ofrecidos por la API o usuarios particulares, que realizan demasiadas solicitudes de información sobrecargando los recursos de los servidores (CPU, Discos Duros, Memoria).
	
Para estos casos es necesario agregarle algunas medidas de defensa a la API.
Una medida es aplicarle un limitante a las peticiones, el cual permite un número determinado de solicitudes que puedan realizar los usuarios a la API durante un rango específico de tiempo.

Esta limitante puede ser aplicada en varias formas a las solicitudes, dependiendo de lo que se desea lograr.

* Usuario: Limitar la cantidad de solicitudes por token asignados a usuarios o por IP de dispositivos.
* Geográficamente: Limitar solicitudes que provengan de regiones (países, estados, etc.) en particular.
* Horario: Algunos servicios ofrecidos por la API solo pueden utilizarse por los usuarios en un horario específico.
4.	Servidor: Disminuir las solicitudes de un servidor para otro servidor.

Existen varios algoritmos utilizados para implementar una limitante:

1.	[Token Bucket](https://es.wikipedia.org/wiki/Token_bucket)
2.	[Leaky Bucket](https://es.wikipedia.org/wiki/Algoritmo_de_cubeta_con_goteo)
3.	Sliding Window

Para la implementación utilice la librería [Tollbooth](https://github.com/didip/tollbooth) la cual usa el algoritmo Leaky Bucket para limitar las solicitudes.

Desarrolle un unico endpoint de una API devolverá un array de Usuarios en formato JSON. Ya teniendo la API funcional y testeada podemos pasar a la parte de integrar el limitante que permitirá como máximo 1 petición por segundo. Lo que quiere decir es que dentro de un tiempo de 1 segundo,  solamente una petición podrá ser atendida por la API, las demás peticiones serán rechazadas y se devolverá una respuesta con el código __HTTP 429__ según la [RFC 6585](https://tools.ietf.org/html/rfc6585#section-4) lo define como “Too many Request” y un mensaje indicando el error que ocurrió.

{% gist https://gist.github.com/gonzalezlrjesus/be7bacfda1315820450803c32d610f41.js %}

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/1k908pts08p2va02yauh.png)

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/czaag7eog890zdskig2m.png)

Con el limitante podemos asegurar que la API nos entregara un flujo de datos sin sobrecargar el servidor y evitar costes adicionales por un aumento de consumo de recursos por proveedores de hosting que cobran por uso.
Para una mejor confiabilidad es recomendable también aplicar medidas de control en las aplicaciones del lado de los clientes.
Nevertheless, Deniz Babat Coded
Tags: wecoded
Published: 2020-03-09 18:03:29

<!-- ✨This template is only meant to get your ideas going, so please feel free to write your own title & narrative! ✨ -->

## Equality in tech looks like… 

## I’m an expert at…

## My advice for allies to support self-identifying women and non-binary folks who code is...

<!-- Once your post is published, it will not appear on the /t/shecoded page until an admin approves it. This is an extra step to ensure there is no abuse on this important tag. -->