teleren/devto huggingface dataset:
Removed from Twitter for my actions 12 years ago (as a 12 year old) 
Tags: twitter, gdpr
Published: 2019-10-18 18:28:21

---
title: Removed from Twitter for my actions 12 years ago (as a 12 year old) 
published: true
description: Twitter's "interesting" approach to GDPR compliance 
tags: Twitter, GDPR
---

**Update: This night I got a new mail from Twitter saying that I might actually be able to get my account, including tweets, back. And I actually got a link to a reactivation page where I only needed to confirm my name and phone number. So that's great and more like how I would have expected it to work from the beginning. I'm not sure though whether their automated process for handling these issues is poorly designed and is supposed to work like this. Or if there's some kind of manual review step that needs to be done for these cases, before they tell you it might be possible to just unlock the account.**

**I'm happy that it seems like it might get resolved, but it remains an extremely poor user experience.**

Twitter is a popular platform among many web developers, myself included, which is why I want to share an important lesson I learned today: **don't try to correct past mistakes in order to be honest, and never forget anything you did before you turned 13, you WILL be punished**

What follows is a text full of self pity where I'm whining about Twitters policy to punish and never forgive in the name of GDPR. You'll most likely want to go read an other DEV post. 

I've had my @jimutt Twitter account for a pretty long time. But I didn't actually start using it actively until the last couple of years. I've been slightly annoyed by the fact that my Twitter account's date of birth has been incorrect. I'm born 1994 but on Twitter it said 1993. 

So, as a victim of my own stupidity I thought "Why not change the year to be correct and honest". And so I did, thinking that I'd probably misclicked during the account creation and selected the wrong year. I changed it and didn't get any kind of warning about what would happen next; immediately after changing my birth date my account was locked and made completely inaccessible. The reason stated was the fact that Twitter is only available for people who are 13 years or older. And that they suspect I was under 13 when I created my account. I don't know if it's true or not, because I don't remember which websites I signed up for 12 years ago, but I'll trust that they hopefully at least have got my account registration date correct. 

What I fail to see is why locking the account of a, now 24 year old, adult is to be considered the preferred choice. Wouldn't it make a little more sense to perhaps delete the tweets (if any) I made as 12 year old? Guess not.. 

Now I've read that they've started to reactivate some accounts that has been locked because of an invalid age. But if there is to be any chance at all to get my account reactivated I guess I at the very least will need to trust them with a copy of my driving license. With my small amount of followers I'll probably just create a new one though, and make sure to be very careful when touching my account settings in the future. 🙄

Rant over!
7 Great Programming Quotes
Tags: programming
Published: 2019-10-18 18:21:32

---
title: 7 Great Programming Quotes
published: true
description: Here are 7 great quotes about Programming and what you can learn from them
tags: programming
cover_image: https://thepracticaldev.s3.amazonaws.com/i/x4yntrzr7r8rjucll2s3.jpeg
---
***So... which version of Linux should I install on my brand new machine? 
[Click here to vote!](http://bit.ly/WhichOSDoIChoose)***

Here are some amazing quotes about software development to inspire you, make you laugh, or make you think. 

> **"Programming isn't about what you know; it's about what you can figure out.”** - *Chris Pine*

Especially important for beginners. At first, we're so anxious about knowing everything, especially language syntax. Problem-solving is the skill we end up using most. 

>**"The only way to learn a new programming language is by writing programs in it."**  - *Dennis Ritchie*

Programmers are mostly "learn by doing" types. No amount of academic study or watching other people code can compare to breaking open an editor and start making mistakes. 

>**"Sometimes it's better to leave something alone, to pause, and that's very true of programming."** - *Joyce Wheeler*

When managing developers I would always encourage getting up and walking away from the computer when you have a problem. Some of your best solutions will come to you when you're not at the machine. 

>**"In some ways, programming is like painting. You start with a blank canvas and certain basic raw materials. You use a combination of science, art, and craft to determine what to do with them."** - *Andrew Hunt*

Outsiders question whether programming is art. Programmers don't. 

>**"Testing leads to failure, and failure leads to understanding."** - *Burt Rutan*

Some developers hate testing. However, shifting your attitude and embracing it makes you a better developer. 

>**"The best error message is the one that never shows up."** - *Thomas Fuchs* 

Remember this the next time you decide to focus on some great error reporting. 

>**“The most damaging phrase in the language is.. it's always been done this way”** - *Grace Hopper*

To be a programmer long term, you have to love change. You can't just tolerate it, you have to love it. 

##Bonus Quote

Since #6 seems somewhat vague, I'll add this one as a patch:

>**"Don't write better error messages, write code that doesn't need them."** - *[Jason C. McDonald](https://dev.to/codemouse92)*
Using the string.replace method in Javascript
Tags: javascript, algorithms, codewars, string
Published: 2019-10-18 17:41:52

Earlier today I was working on a [challenge](https://www.codewars.com/kata/convert-string-to-camel-case/javascript) on Codewars or as they're popularly called; `Kata`. While working on it I also did some research on how I could go about solving it, and I stumbled on a string method I had never used before. The replace() method.

# String.prototype.replace()
According to MDN, the replace method returns a new string after all or part of it has been replaced based on a replacement pattern/string.
The pattern could be a substring or a regular expression (I'm guessing you all know about regular expressions, if you don't you can check this out).

The replace method takes in two arguments: 
1. The pattern or substring to be matched.
2. The new String/Substring or a function that returns a new string, to replace the matched string.

Let's have a look at the replace syntax

``
const newString = string.replace(substring/pattern, newstring/function)
``

## Solving the challenge
![The challenge to Convert string to camel case - Codewars](https://thepracticaldev.s3.amazonaws.com/i/648ppa8mgsimwwbwdv4t.png)

What we want to do is find all the characters in the given string that match either the underscore( _ )  or the hyphen (-) and the alphabets after them,  transform them to uppercase letters and remove the non-alphabetic characters.

First of all, since the replace method can take a regular expression to be used for matching, we can create an expression that matches what we want to replace.
``
const regExp = /[^a-z][a-z]/gi
``

Let's break down the regular expression above

```
[^a-z] - this matches any character in the string that is not an alphabet from a-z

[a-z] - this matches any character in the string that is an alphabet from a-z

g - global, to make sure it checks the whole string

i - insensitive, to make sure it doesn't bother about the case of the string
```

Now that we've found how to match the string/characters we want to work on, we should also figure out how to replace them in the string.

Let's create a function as the second parameter that can take the matched characters in the string and convert them to the new characters we want.

``
const newWord = word => word.toUpperCase().replace(/[^a-z]/gi, '')
``
Breakdown of the function above

```
word.toUpperCase() - this transforms the matched characters to uppercase

replace(/[^a-z]/gi, '') - this replaces the transformed characters that aren't alphabets from a-z with empty strings
```

#### The full method for the solution

```
const toCamelCase = str => {
  return newWord = str.replace(/[^a-z][a-z]/gi, word => word.toUpperCase().replace(/[^a-z]/gi, ''))
}
```

I'm sure there are several ways to have solved this particular problem, but using the replace method seems very straightforward and easy to use.
You can also comment with your own solutions or questions.

I hope this helps someone out…

You can also reach me on [Twitter](https://twitter.com/The_Oluwajuwon) ✌️
Is it possible to close a window before its retention period?
Tags: help, kafka, kafkastreams
Published: 2019-10-18 17:31:48

---
title: Is it possible to close a window before its retention period?
published: true
tags: help, kafka, kafkastreams
---

First of all, I must say that I'm new to Kafka and streaming, but I'll try to explain the problem the best I can. 

My team is currently developing and application to process data using Kafka Streams. We're using windowing to perform aggregation operations and we need to emit the results only when the window is closed. 

Now here's the problem itself: our window retention period is of three days (yes, that is correct). We must keep the window open for this long period of time in case any record arrives late, but the normal course of the operations is that all the records arrive on time and we're able to identify when one batch is complete so, form most of the time, the windows don't need to stay open for so long.

So my question is: knowing that the last record of a batch has already arrived before the 3-day window retention period, is it possible to close the window and emit the aggregation results?
Intro to Web Development
Published: 2019-10-18 17:20:32

Being a student at a bootcamp for web development has been a fantastic experience.  Its as though I have this 1000 piece puzzle sitting in a box in front of me.  Teachers and mentors have been pulling pieces out of the box and telling me about it, and I look at this piece in my hand and say, “aaaahh...”  followed by a though like, “ok... what do I do with it?”  Every once in awhile I find that two of the pieces connect, and then maybe a third.  These connections are seriously exciting and fun.  So even though the idea of doing a 1000 piece puzzle feels intimidating and impossible even,  People are telling me that I’ll be able to function well in the workfield with only several groupings of 50 pieces or so.   I don’t have to have the full puzzle completed before I’ll be “good enough”.  

 I’m seeing that this is a community of people who seem to love their jobs and are interested in being mentors.  Its a community of people constantly learning and adding to their own puzzles.  Its a community of people who seem excited that I’ve started working on the puzzle, and all of that feels very exciting.
A problem to make a button visible on click
Tags: html, javascript, code
Published: 2019-10-18 16:42:23

Hi guys!
I have a little problem with my code.
https://pastebin.com/d37EZi5Y
In this code there is an invisible button, and I would like to make it visible by the "Remove the invisibility" button. But it doesn't work.
Can you explain me why?
5 Frontend Podcasts - here's what I listen to to stay up to date
Tags: podcast, jamstack, javascript, vue
Published: 2019-10-18 16:15:15

I love listening to podcasts. Whenever I've got a moment, while commuting, going to work or cooking, I'm just putting on my headphones. I would like to share with you my favorite ones.

## Syntax FM
[syntax.fm](https://syntax.fm)

An amazing podcast hosted by Wes Bos and Scott Tolinski. Topics are based mostly on frontend tools and frameworks, but also about some overall dev issues like workflows, steps to become a better developer, or apps and office setups. A few years ago (probably in 2017) one of the episodes finally encouraged me to make a switch from Sublime Editor to Visual Studio Code (best decision ever :D).

## Toolsday
[spec.fm/podcasts/toolsday](https://spec.fm/podcasts/toolsday)

Podcast hosted by Una Kravets & Chris Dhanaraj. Topics include the latest tech tools, libraries and trends. You will find also a lot of tricks and tips that will improve your workflow, make it more efficient and fun. Talking about fun, I didn't know that variable fonts are such interesting thing to play with (more you will find out in the episode [103](https://spec.fm/podcasts/toolsday/309376)).

## Full Stack Radio
[fullstackradio.com](https://podcasts.apple.com/us/podcast/full-stack-radio/id931714873)

_A podcast for developers interested in building online software products._ Adam Wathan, the host of the podcast, conducts great interviews with highly skilled developers and online creators. Oh, and if you are not convinced to the Tailwind (as I was) just listen to episodes about it, and you will fall in love (now I wanna use Tailwind in every project ;).

## Vue.js News
[news.vuejs.org](https://news.vuejs.org)

Vue.js is my Javascript framework of choice, so I had to include it on the list. This podcast is definitely worth listening to, if you would like to stay up to date with all those cool things happening in the Vue.js community.

## JAMstack Radio
[www.heavybit.com/library/podcasts/jamstack-radio/](https://www.heavybit.com/library/podcasts/jamstack-radio/)

JAMstack and Serverless technologies are starting to be a next huge thing in a web development world. If you agree - this is a podcast for you :) 


----

So yeah, this is my list. I know that it's pretty personal and narrowed down to my specific frontend workflow and interests. I would be happy to know what are your favorite podcasts - feel free to leave suggestions in comments.
Do I Really Have to Code 24/7 to Be a Good Programmer?
Published: 2019-10-18 16:08:46

I got into the idea of becoming a programmer for several reasons. But the reason that actually got me started on doing the work of becoming a programmer was the excitement other people had about being programmers. They also seemed really happy with their lives. I wanted what they had. 

Then I started to hear other things. Things like, to be a good programmer you had to sell your life and soul to the time lords. That to be a good programmer you had to program twenty-four hours a day everyday. That to be a good programmer you had to write code that would create more time in which you could then use to write more code. I panicked a little inside. I know me and I know that I don’t and would never feel that way about anything. Do I give up now or do I try and contort myself into someone else’s idea of a good programmer and just hope that I’ll like it once I’ve mutated?

Articles like, How to be TRULY Competitive for Software Jobs, by Raymond Gan started showing up in my sphere. After reading them I would get discouraged. I could see some merits in what they were saying. I could get behind and even get excited to try some of the things they would suggest a good programmer should do. But the general tone of articles like that one would leave me worrying and doubtful of my future potential as a developer. Do I really have to build my own programming language, do I really have to build my own mini-version of Rails, do I really have to build my own mini-React from scratch?! I wasn’t worried that I could never do those things, I worried because I knew I probably would never want to do those things.

Then this week our class went on some tours of businesses where real life programmers are working. And you know what happened? Not a single one of those programmers ever gave us advice that sounded like or felt like Gandalf shouting, “You shall not pass!” as he brought down his staff to block the path of the Balrog Demon in pursuit. No, they said things like, “I love my job”, “I love the people I work with,” “I love the company I work for,”  “I love the projects I get to work on,” “I don’t do a lot of coding after work,”  “I go home and hang with my friends and family after work,” and “Sometimes I do a little coding on the side but it’s for fun!” 

They encouraged us to study and study hard, to do a little coding every day so we didn’t lose the skill, to get connected and ask questions, but to also have a life and to take care of ourselves. I liked every place we visited. I liked the culture they built in their workplaces. I liked the way they never felt like their work was work. I liked the way they treated their profession and each other. I found myself once again wanting what they have.
Learn about Material-UI Grid
Tags: react, tutorial, javascript, computerscience
Published: 2019-10-18 16:00:34


Originally posted on https://youtu.be/9207OppzJU0

Code Sample from [Material-UI Grid CodeSandbox](https://codesandbox.io/s/ppqw5yyy47)

Below is the complete course to build beautiful and consistent apps using React and Material-UI.

[Check out the course trailer](https://youtu.be/hhZ6yFvCWho)
[Check out the course](http://bit.ly/2SZDYyw)

Material UI provides a Grid system so that application is responsive or to say consistent across different screen sizes.

It supports 2 types of layouts.
Containers and 
Items placed inside the container. The widths of the item are fluid and sized in accordance with the parent. Items also have padding around them.

There are 5 breakpoints supported by Material UI Grid.
xs for mobile phones
sm for tablet devices
md for medium-sized desktop screens
lg for large screens &
xl for TV screens
These breakpoints can only be applied to Grid Items and not the containers.

If you have any further questions or need help, please reach us out!
Who else is going to the AWS RE:Invent conference?
Tags: discuss, webdev, aws
Published: 2019-10-18 15:43:55

---
title: Who else is going to the AWS RE:Invent conference?
published: true
tags: discuss, webdev, aws
---

My company hooked me up this year with the ticket to the RE:Invent conference in Las Vegas. I've never been to anything even close to this. I'm curious if any of you are going or have gone in the past. 

If you did go, what was it like? Any tips? Thoughts on it?
To reestimate, or to not reestimate, that is the question!
Tags: discuss, agile, estimation, productivity
Published: 2019-10-18 15:39:44

---
title: To reestimate, or to not reestimate, that is the question!
published: true
description: 
tags: discuss, agile, estimation, productivity
---

In agile processes, like scrum, we tend to estimate our work. Not by time, but by complexity.

What does complexity mean to me?

Complexity is something, that consists out of a variety of factors: 
- The clarity on what needs to be done.
- The agreement of the team on how to tackle the task.
- The knowledge of the team that is required to get the task done. 
- Third party dependency, which can't be solved by the team itself.
- Time also plays a roll, as a very simple task can also be rather time consuming.

I'm sure that there are also other aspects on complexity. 

Sometimes, we estimate a bunch of stories, but not all of them will make it any of the next iterations. 

Here are two cases I stumble occasionally over:


#### Case 1: 
Imagine that a story has been estimated with the complexity of 8, but still sits in the backlog for some time. A few iterations later, this story will finally make it in the next iteration. Since then, the team has learned a more about the previously estimated story and it seems like it is more/less work than anticipated. 

Has the complexity of this story changed? Should it be reestimated or just left at the previous estimated complexity of 8?

#### Case 2: 
Imagine that you have a story that needs to be repeated on regular bases. Something like: Release the kraken!🦑 Before the releasing the kraken first, the story was estimated as a 3. After some time, the team has gotten more and more comfortable with releasing the kraken. 

Has the complexity of releasing the kraken decreased? Should it be reestimated every time it needs to be done again or should it always stick to its initial complexity of 3?
Twiddle-wakka (Yes, that's a real thing)
Tags: todayilearned, ruby, lolz
Published: 2019-10-18 15:35:17

You may or may not know that Ruby has a pessimistic operator:

```ruby
~>
```

It's actually a pretty cool little thing used in Gemfiles to specify a version range.

```ruby
gem 'rails', '~> 5.2.1'
gem 'devise', '~> 4.6'
gem 'puma', '~> 3'
```

is the same as specifying:

```ruby
gem 'rails', '>= 5.2.1', '< 5.3.0'
gem 'devise', '>= 4.6.0', '< 5.0'
gem 'puma', '>= 3.0', '< 4.0'
```
But what is even better about it is it's name.  `~>` is called a **twiddle-wakka**

I hope you laughed as much at this as I did.

Happy Friday!
Managing Credentials
Tags: azure, devops, csharp, security
Published: 2019-10-18 15:34:09

I guess we all can agree, that storing Credentials in Code is a really, really bad idea! Not only can you reverse engineer the assemblies, but with Azure DevOps (or GitHub, ...) you can read the credentials in the clear.
Obfuscation does not help either, so if I ever see something like 
```csharp
private static string _password = @"klksndfl";
```
I think I'll cry!

But the question stands, how to access other systems with credentials, without having them in the code.

Well you have a couple of options here:
###1. Storing the credentials somewhere else
This is the most obvious and easiest approach. Removing the credentials from code, but leaving them in the clear in another file, that is read during runtime and contains the credentials.
The application runs in a user context, therefore the file must be readable by the user, the application is running as. Forbid everyone else and you already have a very basic security. At least more than in code. 
**Make sure, to never check it in or you haven't won anything.**

###2. Encrypting it in the code
With encryption you can choose between symetric and asymetric ... or (like in S/MIME) use a combination of both.
No matter how you decide, there will be always the question, how to secure the parameters for encryption. If you save them in the code, you could have saved your credentials in the clear.

Well, if you choose asymetric, there is a way by using `X509Certificate2`.
First of all, asymetric is not cheap, that's one of the reasons S/MIME uses a combination of both. But, since we have only very small amounts of data (credentials usually are much less that 1 kb), we still can use it.
[This little class of mine takes the properties from a directly derived class and stores them into an asymetrically encrypted base64-string or a BSON encoded asymetrically encrypted Stream.](https://github.com/DerGuru/CrytpJson/blob/master/CryptoJson/CryptoJson.cs)
There is a readme, showing how to use it.

It served me very well! Rest in peace little helper. ... but now we use another option:

###3.[Azure Key Vault](https://azure.microsoft.com/en-us/services/key-vault/)
When runnig in Azure loading from an Azure Key Vault is as easy as these few lines.
```csharp
private static T LoadFromKeyVault<T>(ref T creds, string credentialName, string version) 
where T : class, new()
{
  if (creds == null)
  {
      var astp= new AzureServiceTokenProvider();
      var kvc = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(
                    astp.KeyVaultTokenCallback)
                );
      var secret = kvc.GetSecretAsync("https://<YourKeyVaultName>.vault.azure.net/", 
          credentialName, 
          version).Result;
      creds = JsonConvert.DeserializeObject<T>(secret.Value);
   }
   return creds;
}
```
You manage the access in the KeyVault itself with Managed Identites.
So only allowed and managed Principals (Users/Apps) are able to get to your precious credentials while TLS secures the transport.