teleren/devto huggingface dataset:
Making Mistakes
Tags: beginners, career
Published: 2019-05-25 13:27:01

---
title: Making Mistakes
published: true
description: My experiences with learning to code and messing things up along the way.
tags: beginners,career
---

If you ever struggle with learning to code, I want you to know that my code to generate a CSV file of user IDs has produced the output in the image below. I've been coding for 8 years, and it's one of the many mistakes I've made this week.

![](https://thepracticaldev.s3.amazonaws.com/i/xqusquryxpr399eq3sw6.jpg)

When I started coding I had a constant feeling of having no idea what I was doing. 

I still have no idea what I'm doing, and make mistakes daily.

Long ago, these would make me frustrated and angry with myself. As I gain more experience, my attitude towards mistakes evolves.

Some of my current thoughts on making mistakes are:

1. Mistakes are human, and are always an opportunity to improve
2. Every programmer makes mistakes, even the really famous ones, and even if they hide it well
3. My team is compassionate and will help me rather than shame me for slipping up

I can't stress enough how important the last point is. It's so important to find a team where you feel psychologically safe. In my current team a mistake often feels like an opportunity to collaborate, learn, and improve our process. It's something to reflect on without shame.

Some teams turn the very human act of making a mistake into exercise in assigning blame. Every line of code is another potential slip up, another layer of anxiety, and another step towards burnout.

This is just one aspect of a toxic company culture and it will have a negative impact on your mental well-being.

For this reason it's important not to be afraid to ask difficult questions about company culture and attitude towards mental health at interviews. If a potential employer isn't receptive to questions on these subjects, you probably don't want to work with them.
How to not start with Flutter
Tags: flutter, dart, ios, android
Published: 2019-05-25 13:12:15

---
title: How to not start with Flutter 
published: true
description: A little advice for newcomers in Flutter
tags: #flutter #dart #ios #android
---

# How to not start with Flutter

Some days ago I posted on twitter my biggest mistake about learning Flutter:

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

*(Now, provider package is the new recomendation by Flutter docs)*

Motivated by a lot of questions on Stack Overflow about "BLoC" pattern,
I decided to share on Twitter (and surprisingly got some nice feedbacks) and now write this post to help future flutter developers.

Almost every single day, newcomers on flutter post questions about "BLoC" or even worst, about packages that makes "simple" to implement this pattern.

You have other topics that really matter in the beginning:

- Dart language (even if it is not hard)
- Widget tree
- Box Constraints
- Basic widgets
- Stateless and Stateful widgets
- Navigation
- Widgets lifecycle
- Material and Cupertino packages
- Keys

When you need to share values between widget or pass them down in your widget tree, use InheritedWidget, it is easy and probably meet what you need in the first steps. If you already use MediaQuery.of(context) or Theme.of(context), you already used [InheritedWidget](https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html).

And even after having good knowledge about topics above, when you started with state management, there are excellent packages to start: [scoped_model](https://pub.dev/packages/scoped_model) and the most recent and powerful [provider](https://pub.dev/packages/provider). I strongly recommended [scoped_model](https://pub.dev/packages/scoped_model). It is simple to understand, well documented, works fine for small and medium apps (no matter how complexity app is) and was explicitly the first package about state management recommended by Flutter docs (and now [provider](https://pub.dev/packages/provider) is the new black).

Keep in mind that state management isn't a simple topic, there isn't a better approach and Flutter let you chose whatever solution you want. And the most important on your journey is to discover what solution fits your needs and what solution you feel more comfortable and confident to use in your app.

In conclusion, would like to point that this article is not against Bloc pattern (definitely not). It is just an advice for those who are arriving in Dart & Flutter side and may be frustrated trying to implement Bloc when they don't need.
Virtual assistants: the new UX frontier
Tags: python, node, microservices, bot
Published: 2019-05-25 12:42:02

Recently, I've developed a PoC around chat bots, data analysis and artificial intelligence. The underlying idea was to explore new ways to consume data and to interact with backend servers.

The architecture is quite simple - on the top of a centralized business environment, I've built a microservice (Nodejs/Express), a backend server in charge of the aggregation of the various data source: SQL server, Blob storage, xls files, external API. The data, once consalidated, will be delivered to the downstream services through a Rest API.

Another backend service will be dedicated to the analyze of data and the generation of graph. The natural choice for this job is Python (Flask) because of the diversity and quality of the libraries dedicated to these tasks: Pandas, Matplotlib or even Tensorflow for Machine Learning.

Architecture of the prototype:
![](https://thepracticaldev.s3.amazonaws.com/i/j82n6p6rfkqydxz6m4o9.png)

Finally - the bot - our UI with the user. I've used for this prototype the Telegram Bot Framework for two main reasons: free and easy to implement. But later I would definitly want to try the new Microsoft Bot Framework together with the QnA Maker and the Cognitive Services

When the user ask for a report, an information or any KPI that require data analysis or machine learning, here is the flow:

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

As a conclusion I will simply say that bots or virtual assistants offer a new way to consume the information - They will become a realistic alternative to all the heavy clients developed over the past decades: no barrier or complex interface between our intent and the command executed by the machine.
Top Node.js Frameworks for Web Developers
Tags: javascript, koa, node, express
Published: 2019-05-25 11:53:17

---
title: Top Node.js Frameworks for Web Developers
published: True
description: Top Node JS development frameworks. The node.js framework can be characterized as a cross-stage and open-source runtime condition that is based on Chrome's V8 JavaScript engine.
tags: #javascript, #koa, #node, #expressjs 
---
<img src="https://thepracticaldev.s3.amazonaws.com/i/j7w74y2oik7gdhnhjzpf.png" alt="top node js frameworks">

Top Node JS development frameworks. The node.js framework can be characterized as a cross-stage and open-source runtime condition that is based on Chrome's V8 JavaScript engine. Fundamentally, it is utilized to create serverside web applications that are adaptable just as quick.

**Top Node.js Frameworks for Developers in 2019**

**Express.JS**
Express is a well known, quick, negligible and adaptable Model-View-Controller (MVC) Node.js framework that offers an amazing accumulation of highlights for web and portable application development. It is pretty much the true API for composing web applications over Node.js. It's a lot of steering libraries that give a meagre layer of crucial web application includes that add to the dazzling existing Node.js highlights.

**Pros of Express.js**

-Quick application development

-I/O demand taking care of

-Open-source Community

-Simple to learn

-Straightforward coordination of outsider administrations

**Cons of Express.js**

-Occasion driven Callbacks

-Code Organization

-Logic of modules


**Meteor.js**
Meteor.js, an ultra-straightforward full stack Node.js framework for structure present-day web and versatile applications. It is good with the web, iOS, Android, or work area.

It incorporates key accumulations of advancements for structure associated customer responsive applications, a manufacturing device, and a curated set of bundles from the Node.js and general JavaScript people group.

**Pros of Meteor.JS**

-Debugging

-Consistent Client-Server Communication

-Set of Packages and Libraries

-Constant Testing Tool

**Cons of Meteor.JS**

-Absence of MongoDB Support

-No Rendering on the Server Side

-Absence of Native Widget Library

-No Inbuilt Support for PWA


**Koa.js**: Read the full article here: **https://www.decipherzone.com/blog-detail/Top-Node-Js-Frameworks-for-Web-Application-Development**
5 Articles You Can read over the weekend
Tags: weekendread
Published: 2019-05-25 10:56:42

---
title: 5 Articles You Can read over the weekend
published: true
description: 5 Articles You Can read over the weekend
tags: weekend read
---

<b>1) InnoDB vs MyISAM</b>

This article discusses  Main Differences between Storage Engines like InnoDB and MyISAM, written in Tabular form for great understanding. 

Read Here: <a href="https://fullstackgeek.blogspot.com/2019/05/main-differences-between-innodb-and-myisam.html">InnoDB vs MyISAM | Storage Engines | Tabular Differences</a> 


<b>2) GitHub Announces Beta Testing of New Sponsorship Tool</b>

GitHub today announced the beta launch of Sponsors, a new tool that allows you to lend financial support to your favorite open-source project on the site via recurring monthly payments.

Read Here: <a href="https://dzone.com/articles/github-launches-sponsors-to-fund-open-source">GitHub Announces Beta Testing of New Sponsorship Tool</a> 



<b>3) Redis vs MySQL Benchmarks</b>

In this article, we would be discussing the performance benchmarks of Redis and MySQL. To begin with, we would start with the introduction and installation of Redis over Ubuntu Machine. Then we would move towards the benchmarking between these two.

Read Here: <a href="https://fullstackgeek.blogspot.com/2019/04/redis-vs-mysql-benchmark.html">Redis vs MySQL Benchmarks</a> 



<b>4) 7 Continuous Integration Tools for PHP Laravel Developers</b>

In this article we'll cover 7 tools that can increase code quality, reduce development time, easily reveal errors and generally make your life as a PHP developer easier.

The goal is to set up various tests for our code, without having to
provision or maintain any servers. With a fast feedback cycle, we'll
be able to catch errors early and fix them before they grow.

Read Here: <a href="https://dev.to/markoa/7-continuous-integration-tools-for-php-laravel-developers-2m28">7 Continuous Integration Tools for PHP Laravel Developers</a> 



<b>5) Asynchronous JavaScript</b>

In this article, we are going to discuss Asynchronous tasks in significant depth. We will be discussing what exactly are Asynchronous tasks, what the hack are callbacks, closures, promises and much more in the context of JavaScript.


Read Here: <a href="https://fullstackgeek.blogspot.com/2019/02/asynchronous-javascript-explained-for-beginners.html">Asynchronous JavaScript</a>
Value Tuples for passing Lists of Key-Value Pairs in C# 7
Tags: csharp
Published: 2019-05-25 10:30:14

---
title: Value Tuples for passing Lists of Key-Value Pairs in C# 7
published: true
tags: csharp
canonical_url: https://alistairevans.co.uk/2019/05/25/value-tuples-for-passing-lists-of-key-value-pairs-in-c-7/
---

Prior to C# 7, I have many, many times found myself needing to pass a hard-coded list of key-value pairs to a method, and I’ve had to do it painfully:

{% gist https://gist.github.com/alistairjevans/5af8898fd75932df26d7130eec728158 %}

We can make this marginally better with a factory function:

{% gist https://gist.github.com/alistairjevans/fef974b5b5e47b01a5932968bcb757d1 %}

Then we can swap the list with an array to improve it a little more:

{% gist https://gist.github.com/alistairjevans/537163d8e44965227a153c77e841df9e %}

Finally, we can use ‘params’ on the method so we don’t need to declare an array on the caller:

{% gist https://gist.github.com/alistairjevans/bd36d10719ba0d9d36b48990c468ad28 %}

Okay, so it’s not too bad, but we still have that factory function which I’m not a fan of.

## Value Tuples

Briefly, Value Tuples let you do things like this:

{% gist https://gist.github.com/alistairjevans/4f385b0da684ede531e6ac2e837770b6 %}

You get a small value type containing your two values, that you can declare inline, and access the individual values in the result.

You don’t just have to use these in return types, you can use them anywhere a type definition could be used.

I’ve generally been a little reticent to use this new-ish feature too heavily, because I’m worried about people using them where they should actually be defining types.

That being said…

## Making Our Parameters Nicer

In C# 7, now we get to pass those key-value lists the nice way:

{% gist https://gist.github.com/alistairjevans/6549517501024b490840b63bda6e3dd8 %}

Look at that! No factory function required, we can simply pass in the pairs, just as I’ve wanted to be able to do for years, and it’s super readable.

Just define the array type of your params argument as the tuple you want, and away you go!

I’m still a little wary of Value Tuples generally, but this is definitely a lovely use case for them.
Who are your career heroes & why? (Signal Boost!)
Tags: discuss, career
Published: 2019-05-25 06:15:02

You can't be successful alone, heck we are all here on Dev.to because we know that a strong community lifts all up. So I want to know, who are your career heroes and why? If they have a social media presence feel free to link them!

So my career heroes have nothing to do with my field (data) but have steered me so right over the years.

First up is a **Danielle Riendeau**. Currently Managing Editor at Vice, Co host of the Waypoint Podcast, Teacher at Berklee University, Indie Game Developer, runs marathons, MMA fighter and oh yeah shes also a paramedic. I've listened to her on podcasts for years now (she used to be on Idle Thumbs) and I admire everything she does. The energy and caring she brings to the sixty thousand things she does every week leaves me feeling insecure. That motivates me, I have a good career and a bright future, but I also want to do more, so I can deliver more. I draw, I write here, I'm writing Sci-Fi and I have a new top secret goal as well. All because of her. She has an amazing motto which has been my guiding principle for two years now, it's my permanent slack status (unless I'm sick) and that is: *Be good, and be good at it.* - I'll write an article on that motto at some point in the future.


[Link to her Twitter](https://twitter.com/Danielleri)

My second career hero is **Laura Kate Dale** who has continued to achieve success in a field that traditionally is for straight white men. Like Danielle, she is a queer woman in video games. As you can imagine, not only are they both fighting their way through a male dominated field, but subject to high volumes of online abuse. In fact, I've had to mute certain terms on twitter because I can't handle seeing the hate speech that goes towards Laura.

Laura is also an overachiever, after freelancing for many many years and doing something like 14 podcasts a week, she is now a News Editor for Kotaku UK, and has broken some very high profile new stories over the years. She still podcasts, and takes part in video DND series. She's also been nominated for a 30 under 30 title. She also has two books coming out this year, one called Uncomfortable Labels, an autobiography about her life as a Gay autistic trans woman, and another book called Things I learned from Mario's Butt, which is all about video bums :). I'm in constant awe at what Laura has achieved, amongst so much adversity. As a queer man I have faced a fraction of what she has faced as I've been able to hide behind my many privileges. That fraction was too much for me to handle. Laura has taught me how to stay authentic to who you are and what you want to achieve, even if everyone around you says otherwise.

[Link to her Twitter](https://twitter.com/LaurakBuzz)
Should behavioural changes be considered breaking changes under SemVer?
Tags: discuss, healthydebate, semver
Published: 2019-05-25 08:41:36

---
title: Should behavioural changes be considered breaking changes under SemVer?
published: true
description: Contractual changes -vs- Behavioural changes
tags: discuss, healthydebate, semver
---

While [writing a different post](https://dev.to/turnerj/3-questions-i-have-about-developing-open-source-libraries-4a89), I had a thought about point 8 of the [Semantic Versioning (SemVer)](https://semver.org/) specification.

> 8\. Major version X (X.y.z | X > 0) MUST be incremented if any backwards incompatible changes are introduced to the public API. It MAY include minor and patch level changes. Patch and minor version MUST be reset to 0 when major version is incremented.

The term "backwards incompatible change" is interesting here because it doesn't specifically reference interfaces and contracts between two pieces of code - a "backwards incompatible change" can just as easily be a behavioural change of the code base.

Consider the following for an example of a behavioural code change:

Initial code:
```javascript
function encodeText(text) {
    return text.replace('a', 'xyz');
}
```

New code:
```javascript
function encodeText(text) {
    return text.replace('a', 'xyz').replace('b', 'foo');
}
```

Contractually, the code is the same as it is still called `encodeText`, still takes one argument and still returns a string. Its behaviour on the other hand isn't as now additional text is encoded too.

Let's take it one step further, _what about bug fixes_?

For a bug fix, you are changing one set of behaviours for another (unintended behaviour to intended behaviour). The original bug may never have been intended but given it is now in the wild, it might now be depended to act that way.

[![XKCD Workflow #1172](https://imgs.xkcd.com/comics/workflow_2x.png)](https://xkcd.com/1172/)

You might be thinking that is a little extreme and I agree. If bug fixes were considered breaking changes because they are a behavioural change, there would be a lot more major versions for libraries.

So question time:
1. Should behavioural changes be counted as a type of breaking change?
1. If yes to above, should bug fixes be counted as a breaking change?
React Europe KendoReact Hackathon Challenge
Tags: react, javascript
Published: 2019-05-25 07:48:15

---
title: React Europe KendoReact Hackathon Challenge
published: true
description: React Hack
tags: React, JavaScript
---

I have created a React application to start from which can be cloned from GitHub:
https://github.com/httpJunkie/kendoreact-tripxpert

The Challenge: Try and recreate the functionality and or style in the working example:
https://demos.telerik.com/aspnet-mvc/tripxpert/

Our KendoReact components could help to make the job easier, they can be found at:
www.KendoReact.com
React Hack
Tags: react, javascript
Published: 2019-05-25 07:47:23

---
title: React Hack
published: true
description: React Europe Hack-a-thon KendoReact
tags: React, JavaScript
---

I have created a React application to start from which can be cloned from GitHub:
https://github.com/httpJunkie/kendoreact-tripxpert

The Challenge: Try and recreate the functionality and or style in the working example:
https://demos.telerik.com/aspnet-mvc/tripxpert/

Our KendoReact components could help to make the job easier, they can be found at:
www.KendoReact.com
3 questions I have about developing open source libraries
Tags: discuss, opensource
Published: 2019-05-25 07:08:49

---
title: 3 questions I have about developing open source libraries
published: true
tags: discuss, opensource
---

I maintain a handful of open source projects on GitHub and have had a few questions about maintaining software like this, specifically around versioning and maintenance. I don't think there is a single "right" answer but the discussion might help others working on their own libraries.

I work on .NET libraries though would be interested in answers to these questions for any language/platform/package manager.

## How often do you actually release new versions of your library?

This question is quite broad and by itself, doesn't seem particularly useful. What I mean though is like, if you have someone raise an issue and you patch it, do you immediately release a new version of the library? Do you wait an arbitrary amount of time before releasing? Do you try and queue up multiple changes together before releasing?

## How do you manage pushing out releases of your library onto whatever package manager etc you use?

Again, kinda a broad question on the surface. I know various package managers would have CLI tools or might just read the "releases" or tags on GitHub. What I'm interested in here is the process of actually bumping a version number of your library _and_ getting it out.

For example, I work with .NET and currently have the version number in a `*.props` file which is read during the build. This version is manually updated in an "update version" commit (eg. "Version 1.0 Released"). I then add a release to GitHub with the same version number and set it to create a tag with that same version number.

Now, I take the built package from the CI server (as it fires off a build when the tag is created) and I manually login to NuGet, uploading the package.

Now I know I could at least automate the pushing to NuGet but is that a good thing to do here? Should I even be letting certain CI builds just automatically push to NuGet? Should these be bumping their own "patch" version numbers? Would I be pushing out too many releases then?

This is probably the most important/curious question of the 3 that I have. Any thoughts on this stuff would be awesome.

## How do you approach maintaining old versions of the code base, particularly when they are a major version behind?

I follow [Semantic Versioning](https://semver.org/) so I already considering breaking changes requiring a major version bump.

If someone is working on an older version of the library, do you go back and fork off the code base from that version and have it with the new fix? Do you just tell people to upgrade to your latest (major change) version which has it fixed? Is it something else in between?

When I have worked with open source products (eg. CMSs), they do normally maintain a few major versions back and patch with security updates. Do people do that with libraries too? Do you just maintain a "cutting edge" version of the library? Is this more a case of resources/time to be able to maintain a series of patch versions of older releases?