teleren/devto huggingface dataset:
AKS: Configure TLS termination with the http application routing addon
Tags: ask, nginx, ingress, tls
Published: 2019-06-04 19:50:56

---
title: AKS: Configure TLS termination with the http application routing addon
published: true
tags: ask,nginx,ingress,tls
canonical_url: https://carlos.mendible.com/2019/01/10/aks-configure-tls-termination-with-the-http-application-routing-addon/
---

When you install a AKS cluster you can configure it to deploy the [http application routing addon](https://docs.microsoft.com/en-us/azure/aks/http-application-routing) or you you can update an existing cluster to deploy it.

Either way you end up with an [NGINX Ingress Controller](https://github.com/kubernetes/ingress-nginx) running, in the **kube-system** namespace of your cluster, with the following properties:

- _ingress-class: addon-http-application-routing_
- _annotations-prefix: nginx.ingress.kubernetes.io_

Does this means that you can use this controller for TLS termination? The answer is yes! And you can also use rate limits, and whitelisting as described in my post [Secure your Kubernetes services with NGINX ingress controller, tls and more.](/2018/03/20/secure-your-kubernetes-services-with-nginx-ingress-controller-tls-and-more/)

So to try it out, follow steps **2** and **5** of the previous post, but be sure to replace the contents of the **ingress\_rules.yaml** file with the following yaml (Don’t forget to replace the DNS Zone Name):

```
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dni-function
  namespace: default
  annotations:
    kubernetes.io/ingress.class: addon-http-application-routing
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - dni-function.<YOUR CLUSTERS DNS ZONE NAME>
    secretName: tls-secret
  rules:
  - host: dni-function.<YOUR CLUSTERS DNS ZONE NAME>
    http:
      paths:
      - path: /
        backend:
          serviceName: dni-function
          servicePort: 80
```

Note that the **kubernetes.io/ingress.class** value must be: **addon-http-application-routing**

Once you have tls working go ahead and try rate limits and whitelisting!

Hope it helps.

Please download all code and files [here](https://github.com/cmendible/kubernetes.samples/tree/master/15.http-application-routing-tls) and be sure to check the [online documentation](https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md) to learn more about the annotations and other NGINX features.
Big reason to use React navigation over Wix navigation (React Native)
Tags: reactnative, navigation
Published: 2019-01-10 15:07:42

---
title: Big reason to use React navigation over Wix navigation (React Native)
published: true
description: 
tags: React Native, Navigation
---

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

Today I discovered a really big reason why React navigation is fundamentally better than Wix navigation. React navigation has functions createBottomTabNavigator/createStackNavigator, etc. which return a component. However, Wix navigation just has registerComponent, which take the screen you want to render (with a wrapper around it, if you want it) and just returns a void and creates this screen natively.
The problem with the latter is that, if you use a wrapper around your screen, this wrapper will be mounted for every screen that is registered. For our app this meant that our LocalAuthWrapper was also mounted 5 times on app start, because we had an app with 5 tabs, and it mounts all tabs. Therefore, the dialog to authorize with local auth mounted 5 times, which is 4 times too many. Because of how this library works, it didn't function anytime after the first time, and therefore we had to make native changes to this library.

I think it's kind of ugly that our wrapper gets mounted every single time a new screen loads... Also less efficient. With react navigation, you don't have this problem, because you can wrap your wrapper around the whole of the navigation, because navigation is a component too.

This fundamental difference should not be overseen! It can be very important.

Originally published [here](https://karsens.com/big-reason-to-use-react-navigation-over-wix-navigation/)
Processing Large CSV files with Elixir Streams
Tags: elixir, stream
Published: 2019-01-10 15:06:57

---
title: Processing Large CSV files with Elixir Streams
published: true
description: Elixir Streams are a powerful and elegant way to process large CSV files. In this article I compare the greedy and the lazy approach with  memory and cpu benchmarking.
tags: elixir, stream
---


[Processing Large CSV files with Elixir Streams](https://www.poeticoding.com/processing-large-csv-files-with-elixir-streams/?utm_source=devto&utm_medium=devto_149)

In this article I introduce Elixir Streams as a powerful and elegant way to process large CSV files. I compare the greedy and the lazy approach with some memory and cpu benchmarking.
Developer Stockholm Syndrome
Tags: community, life, hate, languages
Published: 2022-06-15 17:25:34

---
title: Developer Stockholm Syndrome
published: true
date: 2019-01-10 14:46:00 UTC
tags: Community,Life,hate,languages
canonical_url: https://barretblake.dev/2019/01/developer-stockholm-syndrome/?utm_source=rss&utm_medium=rss&utm_campaign=developer-stockholm-syndrome
---

Developers seem to have an irrational love/hate relationship with programming languages. We tend to love the languages we use on a regular basis. And we seem to hate languages we don't or no longer use. I've come to refer to this as Developer Stockholm Syndrome.

The post [Developer Stockholm Syndrome](https://barretblake.dev/2019/01/developer-stockholm-syndrome/) first appeared on [Barret Codes](https://barretblake.dev).
An easy way to display a toast with JavaScript
Tags: javascript, frontend
Published: 2019-01-10 14:22:29

---
title: An easy way to display a toast with JavaScript
published: true
description: Show toast with an independent library. There is no dependency on other libraries like jQuery.
tags: javascript,front-end
---


```html
<!DOCTYPE html>
<html>
<body>
<script src="https://riversun.github.io/jsframe/jsframe.js"></script>
<script>
    const jsFrame = new JSFrame();
    jsFrame.showToast({
        html: 'This is a simple toast', align: 'top', duration: 2000
    });
</script>
</body>
</html>
```

![toast](https://riversun.github.io/jsframe/capture/toastd.gif)



Here is a [simple demo](https://riversun.github.io/jsframe/examples/v150/toast_simple.html).

And also you can customize like [this](https://riversun.github.io/jsframe/examples/v150/toast.html).


For more details,check [library](https://github.com/riversun/JSFrame.js) on github.
What is your criticism culture?
Tags: discuss
Published: 2019-01-10 13:58:59

---
title: What is your criticism culture?
published: true
description: Some of us love to celebrate success and that's ok, but how do we grow as a team?
tags: discuss
---

Unfortunately, development is not all ⛅ and 🌈.  Like any activity that interacts with humans, it's never perfect. In fact, people give speeches about definition of done and the principal of good enough.

What we don't talk about enough is the awkward stuff. You know, when things aren't unicorn farts and glitter swirls.

I have a somewhat unique perspective since I'm a veteran. In the military, you win as a team and you lose as a team. When there is something off, you call it out. You don't name names. People jump on the issue and fix it...as a team. This is how we grow.

In agile software development, we use retrospective meetings to call out what didn't go so well. We document. We review. And maybe... Just maybe, it doesn't come up in the next retrospective.

So, how do you all critique each other? What is your process? What have you learned along the way?
How to set goals for your (side)project properly.
Published: 2019-01-10 13:34:11

---
title: How to set goals for your (side)project properly.
published: true
description: I set my goals for Shipharder.com for 2019
tags: 
---

In order to be clear on what “success” for a project would look like, it is always good to define goals. 
Just like riding a bike, it is always good to look where you want to head, and this is the equivalent of setting goals for a project that you’re working on.

I’ve been thinking about concrete goals that I want to reach for Shipharder.com recently. It proved hard to just set some goals without thinking about what you’re trying to build first.

I gave it all some serious thinking and found that only after defining what Shipharder.com is and thinking of which direction it is going I could come to concrete targets.

This is why my approach for setting goals were divided into the following concrete steps:
- write down a definition for your product or project
- make clear what the mission is
- based on the previous points, decide on the targets that need to be met this year

In the case of Shipharder.com, this all resulted into the following:
- The definition: Shipharder.com features mindshaping content on how to build viable products and documents a developer’s efforts on doing so

- The mission: Shipharder.com provides interesting and inspirational content that will guide (digital) product makers to get a mindset to create viable products

After I got this clear, i defined my goals as:

- 📩 reach 1000 subscribers for the Shipharder.com mailing list
- 📈 5k monthly visitors that read the Shipharder.com cornerstone blog posts & watch the vlogs
- 💵 ads income generated by the website: aiming for revenue (any!) and a payout in 2019
- 📦 at least one side project of mine becoming viable and getting me additional income

These aren’t shocking goals. And I know that shooting for the stars will help you to get bigger than expected goals.

Read more on my goals in this post: https://www.shipharder.com/goals-shipharder-2019/

I'm really curious about your feedback on these. Are they too weak, too soft or too specific? 
How did you set your goals for your product(s) for the last/this year?

Thanks for reading 🙌🏻 looking forward to any light you can shed on the matter.
How to communicate between AVR and PC using Virtual Serial Port Driver.
Tags: virtualcomport, avr, rs232, max232
Published: 2019-01-10 13:20:18

---
title: How to communicate between AVR and PC using Virtual Serial Port Driver.
published: true
description: This article will talk about how to communicate between AVR and PC in a simple but quite comprehensive way. It's simple because I'm going to use a rather "classic" interface to communicate between AVR and PC, RS232 interface via COM ports. Comprehensive as I will guide you through the transition between AVR and PC, how to write program interface RS232 on the computer and on the AVR.
tags: virtual com port, AVR, RS232, Max232
---
This article will talk about how to communicate between AVR and PC in a simple but quite comprehensive way. It's simple because I'm going to use a rather "classic" interface to communicate between AVR and PC, RS232 interface via COM ports. Comprehensive as I will guide you through the transition between AVR and PC, how to write program interface RS232 on the computer and on the AVR.

https://www.virtual-serial-port.org/article/avr-and-pc-communication/
Basic principles that will make your programming life in 2019. 
Tags: coding, devtips, productivity
Published: 2019-01-10 13:06:03

---
title:  Basic principles that will make your programming life in 2019. 
published: true
description: 
tags: coding,devtips,productivity
---
I have seen code that only the programmer who writes it understands how it works. However, when one asks the programmer to explain what the code does, he or she would only say “Only God knows that”.

That is why I would like to discuss some basic (but very powerful) principles that will make your life (and most of your collaborators’ lives) easier.


## 1. **DRY – Don’t Repeat Yourself**

   You must try to maintain the behavior of the functionality of the system in a single piece of code.
On the other hand, when the DRY principle is not followed, this is known as WET solutions, which stands for either Write Everything Twice or We Enjoy Typing.
DRY programming is very useful, especially in big applications where the code is constantly maintained, changed and extended by a lot of programmers.

   A common way to DRY up code is to wrap our duplicated logic with a function and replace all places it appears with function calls.

Example (with code repetition):
```javascript 
//flow A

let username = getUserName();
let email = getEmail();
let user = { username, email };
client.post(user).then(/*do stuff*/);
```

```javascript 

//flow B
let username = getUserName();
let email = getEmail();
let user = { username, email };
client.get(user).then(/*do stuff*/);
```

DRY Example:
```javascript 
function getUser(){
	return {
		user:getUserName();
		email:getEmail();
	}
}
//flow A
client.post(getUser()).then(/*do stuff*/ );
//flow B
client.get(getUser()).then(/*do stuff*/);

```
## **2. KISS – Keep It Simple Stupid**

 The simpler your code is, the simpler it will be to maintain it in the future. This will be greatly appreciated by anyone else that needs to examine your code in the future.

  Keeping it simple surprisingly hard. Usually when someone tries to over-engineer a solution to a problem. For example, an Architect suggests creating a Microservice framework for a simple website. 


## **3. YAGNI – You Aren’t Gonna Need It**

  Sometimes, as developers, we try to think way ahead, into the future of the project, coding some extra features “just in case we need them” or thinking“we will eventually need them”. Just one word: Wrong! You didn’t need it, you don’t need it and in most of the cases… “You Aren’t Gonna Need It”.


  A step brother of KISS. Part of keeping it simple is not adding modules, frameworks and dependencies we don’t actually need.
Time to change how we do Stand-Ups
Tags: productivity, agile, culture, scrum
Published: 2019-01-10 12:40:46

---
title: Time to change how we do Stand-Ups
published: true
description: How do better communicate the 3 important questions that Stand-Up meetings are trying to answer.
tags: #productivity #agile #culture #scrum
---

We are all familiar with the Stand-Up meeting, where everyone meets on a pre-determined cadence (every day, 3 times a week, etc...) to answer the 3 important questions. 

1. What did I do yesterday that helped the development team meet the sprint goal?
2. What will I do today to help the development team meet the sprint goal?
3. Do I see any impediment that prevents me or the development team from meeting the sprint goal?

We call it the Stand-Up meeting because attendees are supposed to be standing while answering the 3 important questions. The discomfort of standing is intended to keep the meetings short. The reason we try to answer these 3 important questions is so that the project can be completed successfully in a timely matter.

However, having worked in the software industry for many years and have been on countless teams I am feeling that we are severely abusing the original intent of Stand-Ups and just doing it "just because we have always been doing it".

I have noted the following issues with the traditional in person Stand-Ups.

1. Absent attendees miss out on all the information presented.  This happens more often than you think. e.g. "I need to get my car fixed in the morning, will be missing stand up today", "Cat peed all over the carpet so I need to clean it up, will be missing stand up today", "Got a dentist appointment and will miss stand up today", etc...

2. People are frequently late to Stand-Ups which inevitably prolongs the Stand-Up meeting time.

3. People almost always go off into tangent discussions that aren't important to the rest of the team. I am beginning to think this is just human nature.

4. I've heard of other Stand-Ups lasting up to 45 minutes to an hour. That team felt quite proud of it too.

5. Forced time limit almost never works. Some people just love to describe every minute detail of their work even when the 3 minute timer is beeping.

6. Humans have terrible memory.

I want to propose we replace the face to face 15 minute Stand-Up meeting with group chat software (Microsoft Teams, Slack etc...).  This ensures the 3 important questions are documented and searchable.  No more missing information, no more he said/she said misunderstandings and threads can be replied to and referenced back.

But I've heard feedback from teammates that they want to see each other face to face and they "supposedly" get value from making the Stand-Up meetings super long. Translation: We like to waste time talking about the weekend or what we did last night.  Well, may I introduce to you the "let's go get coffee together meeting" for those social needs.
New versions of all Devart ODBC Drivers are already released! 
Tags: odbcdriver, odbcdrivers, odbcdriverdownload
Published: 2019-01-10 11:56:27

---
title: New versions of all Devart ODBC Drivers are already released! 

published: true

description: Devart released the upgraded versions of all ODBC Drivers with Changed Distribution for macOS and Linux and other great capabilities

tags: odbc driver, odbc drivers, odbc driver download 

---

Devart, Czech software provider of database connectivity solutions and tools for database management and development, has rolled out the release of upgraded versions of all ODBC drivers for Databases and Clouds, which includes changed distribution of ODBC drivers for macOS and Linux to simplify both installation and configuration processes. Now they are distributed as DEB and RPM packages for Linux and PKG packages for macOS. Our ODBC Drivers provide high-performance and feature-rich connectivity solutions for ODBC-based applications to access the most popular databases directly from Windows, macOS, Linux, both 32-bit and 64-bit.


More useful features and implemented improvements:

*In all ODBC drivers, it was added a possibility to force the ODBC 2.x behavior.

*Now ODBC driver for BigCommerce supports OAuth authentication.

*Support for System Encryption Password (SEP) is added in the InterBase driver.

*Oracle 18c is already supported in our ODBC driver.

*The latest version of PostgreSQL – 11 is supported in ODBC driver for PostgreSQL.

*In a new version of ODBC driver for SQLite, the Direct mode is based on the SQLite engine version 3.26.0.

*Zoho CRM version 2.x and OAuth authentication are supported in the current driver version.


Learn more about updated ODBC Drivers for Databases and Clouds at https://www.devart.com/odbc/.

Find out more about our drivers compatibility with third-party tools here: https://www.devart.com/odbc/third-party-tools.html.

About Devart

Devart is one of the leading developers of database tools and administration software, ALM solutions, data providers for various database servers, data integration and backup solutions. The company also implements Web and Mobile development projects.

Learn more about Devart at https://www.devart.com.
Bending TSLint to your needs
Tags: javascript, tslint, rxjs, typescript
Published: 2019-01-10 11:26:38

---
title: Bending TSLint to your needs
published: true
description: Using the power of TSLint in an unconventional way to create rxjs-operator-counter.
tags: javascript,tslint,rxjs,typescript
canonical: https://timdeschryver.dev/blog/bending-tslint-to-your-needs
canonical_url: https://timdeschryver.dev/blog/bending-tslint-to-your-needs
cover_image: https://thepracticaldev.s3.amazonaws.com/i/pnhsebafblmo78asulqh.png
---


After reading yet another twitter thread asking about the number of RxJS operators used in a project, I thought to myself that creating a small tool that does exactly this could be a fun little project.

After some time thinking about the best possible way to accomplish this task, I had split up the task into smaller ones to make it myself easier. 
I had to:

- iterate over every file
- search for RxJS operators
- keep count
- print out the result

Keeping these smaller tasks in mind I noticed TSLint could be used for the first two tasks, doing most of the heavy lifting for me. This came in handy because I also wanted to dabble with TSLint and AST, or Abstract Syntax Tree, awesome two birds with one stone!

This post recounts the process I went through to create this new utility which I call rxjs-operator-counter.



[Read More...](https://blog.angularindepth.com/bending-tslint-to-your-needs-6ae0a51e633)
Manually created user with custom roles are not available in the author list in WordPress
Tags: wordpress
Published: 2019-01-28 09:55:11

---
title: Manually created user with custom roles are not available in the author list in WordPress
published: true
tags: wordpress
canonical_url: https://daniele.tech/2019/01/manually-created-user-roles-are-not-available-in-the-author-list-in-wordpress/
---

If you found this article is probaly because you are facing that issue. When an user is created manually with custom user roles happen that is not assigned to them automatically.

The post [Manually created user with custom roles are not available in the author list in WordPress](https://daniele.tech/2019/01/manually-created-user-roles-are-not-available-in-the-author-list-in-wordpress/) appeared first on [Daniele Mte90 Scasciafratte](https://daniele.tech/eng).
Using EmailValidation in C#
Tags: csharp, emailvalidation, dotnet
Published: 2019-01-10 09:34:44

---
title: Using EmailValidation in C#
published: true
description: Using EmailValidation in C#
tags: #csharp, #emailvalidation, #dotnet
---
# Using EmailValidation in C#

The other day I was working on the email validations, and I came across this beautifully created nuget package called EmailValidation.

 

So here’s the [link](https://github.com/jstedfast/EmailValidation) to it.

Now, the [MSDN blog](https://blogs.msdn.microsoft.com/testing123/2009/02/06/email-address-test-cases/) page has a short list of a few email addresses that can be used to validate this.

I just copied those and checked. This package works great!

So in a case where someone is looking out for this, try this.

``` 
static void Main()
{

var listOfValidEmails = new List<string>
{
“email@domain.com”,
“firstname.lastname@domain.com”,
“email@subdomain.domain.com”,
“firstname+lastname@domain.com”,
“email@123.123.123.123”,
“email@[123.123.123.123]”,
“\”email\”@domain.com”,
“1234567890@domain.com”,
“email@domain-one.com”,
“_______@domain.com”,
“email@domain.name”,
“email@domain.co.jp”,
“firstname-lastname@domain.com”
};

var listOfInvalidEmails = new List<string>
{
“plainaddress”,
“#@%^%#$@#$@#.com”,
“@domain.com”,
“Joe Smith <email@domain.com>”,
“email.domain.com”,
“email@domain@domain.com”,
“.email@domain.com”,
“email.@domain.com”,
“email..email@domain.com”,
“あいうえお@domain.com”,
“email@domain.com (Joe Smith)”,
“email@domain”,
“email@-domain.com”,
“email@domain.web”,
“email@111.222.333.44444”,
“email@domain..com”,
};

foreach (var email in listOfValidEmails)
{
Console.WriteLine($”{email} is {(EmailValidator.Validate(email) ? “valid” : “invalid”)}!”);
}

Console.WriteLine(“==============================================================================”);

foreach (var email in listOfInvalidEmails)
{
Console.WriteLine($”{email} is {(EmailValidator.Validate(email) ? “valid” : “invalid”)}!”);
}

Console.ReadKey();
}
```

This is quicker to use like just import a nuget and you are good to go. In my opinion this covers most of the scenarios for email validation.

One interesting thing I wanted to try is using a regex for all these and then try using pattern matching to check two things. One that all the email scenarios are covered and two, which approach is faster.