teleren/devto huggingface dataset:
Are you too old to be a software developer? 
Published: 2021-06-08 19:59:34

Lately i have seen this question all over the internet. As someone who got to this industry in my late thirties, i think i might have something to say about the subject.

I spent over 16 years working in the energy industry around the world. Finally when i got too fed up with the constant travelling i came up with my masterplan for a career change. I was going to become a software developer. 

Actually first i only knew that i needed a change. Then by chance i stumbled to a MOOC-page with the possibility to try some Java-programming. It was actually a 5cr worthy programming course from the University of Helsinki, that is open to everybody. I was instantly hooked on it. Every day at work i was just waiting to get back home to do some more assignments. It was the only thing i was thinking about for almost 2 weeks. Then finally it hit me. This could actually be my next career. 

Two weeks from that moment i was already an open university student, and after the first year i got accepted in as a student. It is now 3,5 years from that moment, i am a fresh graduate and have been working as a Junior Full-Stack-developer for 5 months.
Oh, and i am turning 40 in two weeks. 

I started studying when i was 36 and i do understand that is not something anyone can do. The good thing though is that you don't necessarily need it. Programming is still one of those professions where you can get in without a degree. Degree surely helps and maybe gives you a better grasp of the basics and gives you a better chance for promotions, but that is a different subject, and a VERY common debate. Anyhow, there are a lot of developers who were self-taught or went through a n weeks lasting bootcamp. 

Anyways. To answer the question: No, you probably aren't too old to become a software developer. You might be too comfy though. This isn't a profession you can learn once, and then just keep doing it. You have to be willing to put in the work and keep learning new things. If you are only thinking about it because you read somewhere that it pays good, don't bother. It is going to take you years to get into that position where you can make 6-figures, and most of us will never even get there. 

Surely there are things we can be too old for. Most of the professions aren't. If you are interested in something, don't skip it because you think you are too old. Go for it.

If you have any questions on the subject, feel free to contact me.
Docker and Snort 3
Tags: docker, snort, network, security
Published: 2021-06-08 19:53:43

Hello, 
My inquiry is about a project I'm building in Docker with Snort3 and what should be the correct way to have it set it up to get in the console the alerts logs. 

The project is here: [GitHub](https://github.com/Jakub41/snort3-traefik-docker-demo) 

I tried many researchers but was unable to make the correct setup for the HOME_NET and to see the alerts when I try to ping any of the IP addresses I set up in the snort.lua 

Would be possible to get help to set it up correctly in my project? 

I would like to make it work and correctly. 

Please help me to improve my knowledge on this matter and the way I should make the set up with Docker to run Snort3 as should be. 

Thank you for yours help :)
How to troubleshoot boot-up slowness for Ubuntu
Tags: ubuntu, performance
Published: 2021-06-08 19:48:01

If you are experiencing excruciating slowness when booting up your Ubuntu powered device, you might find these tips helpful. My laptop is running Ubuntu 20.04. It takes about 4-5 minutes to boot-up the laptop. Which is quite abnormal for a laptop with 32 Gb of RAM. So I ran the following command,

`$ systemd-analyze blame`

What this gives is a list of startup applications sorted Z-A by boot-up time. 

```
1min 5.974s mysql.service                                        
    51.281s docker.service                                       
    34.783s snapd.service                                        
    32.278s systemd-journal-flush.service                        
    29.317s networkd-dispatcher.service                          
    25.496s dev-sda2.device                                      
    22.545s snapd.seeded.service                                 
    19.878s accounts-daemon.service  
```
As you can see for my laptop it was MySQL service and Docker service which was to blame for majority of the boot time. So I used the following command to stop those services from starting up at boot time. 

`sudo systemctl disable mysql`

This improved my boot-up time by about 2 mins. And if you want to manually start a service again that was disabled, you can use the following command,

`service mysql start`

It's that simple. If this doesn't work you might want to look at reinstalling your ubuntu. Specially if you updated over the internet instead of a clean install when you updated your ubuntu version. Hope this helps.
Creating a Soft Delete Archive Table with PostgreSQL
Tags: postgres, dataengineering, changedatacapture
Published: 2021-06-08 20:01:30

---
title: Creating a Soft Delete Archive Table with PostgreSQL
published: true
date: 2021-06-08 19:38:49 UTC
tags: postgres,dataengineering,changedatacapture
canonical_url: https://medium.com/meroxa/creating-a-soft-delete-archive-table-with-postgresql-70ba2eb6baf3
---

Streaming from Postgres’ Logical replication log is the most efficient means of capturing changes with the least amount of overhead to your database. However, in some environments (i.e., unsupported versions, Heroku Postgres), you’re left with polling the database to monitor changes.

Typically when [polling PostgreSQL](https://docs.meroxa.com/docs/sources/postgres/connection-types/polling) to capture data changes, you can track the max value of a primary key (id) to know when an INSERT operation occurred. Additionally, if your database has an updateAt column, you can look at timestamp changes to capture UPDATE operations, but it’s much harder to capture DELETE operations.

Postgres [Triggers](https://www.postgresql.org/docs/9.1/sql-createtrigger.html) and [Functions](https://www.postgresql.org/docs/9.1/sql-createfunction.html) are powerful features of Postgres that allow you to listen for DELETE operations that occur within a table and insert the deleted row in a separate archive table. You can consider this a method of performing [soft deletes](https://en.wiktionary.org/wiki/soft_deletion), and this model is helpful to maintain the records for historical or analytical purposes or data recovery purposes.

![](https://cdn-images-1.medium.com/max/920/1*4E8HnHt7jmYlIBq16Jij1A.png)

In the commands below, we capture deletes from a table called User, and the trigger will insert the deleted row into a table called Deleted\_User.

#### **Step One: Create a new table**

If you don’t have a table yet, you’ll need to create one. To help, you can easily copy an origin table:

```sql
CREATE TABLE “Deleted_User” AS TABLE “User” WITH NO DATA;
```

**Note** : WITH NO DATA allows you to copy a table’s structure without data.

#### **Step Two: Create a new Postgres Function**

Next, we can create a new function named moveDeleted():

```sql
CREATE FUNCTION moveDeleted() RETURNS trigger AS $$

  BEGIN

    INSERT INTO "Deleted_User" VALUES((OLD).*);

    RETURN OLD;

  END;

$$ LANGUAGE plpgsql;
```

Here we are using VALUES((OLD).\*) to send every column to the archive table, but you may update this to omit or even add new columns.

#### **Step Three: Create a new Postgres Trigger**

Lastly, we can create a Postgres Trigger named moveDeleted that calls the moveDeleted() function:

```sql
CREATE TRIGGER moveDeleted

BEFORE DELETE ON "User"

FOR EACH ROW

EXECUTE PROCEDURE moveDeleted();
```

That’s it.

If you perform a DELETE operation on the User table, a new row with the deleted data will move to theDeleted\_User table.

Now your archive table will begin to populate, data won’t be lost, and you can now monitor the archive table to capture DELETE operations within your application.

* * *
100 algos in 100 days (Day 7)
Published: 2021-06-08 19:24:08

##Egg Question:

A building has 100 floors. One of the floors is the highest floor an egg can be dropped from without breaking.
You have 2 eggs. Find the least amount of drops.

##My thought process:

The o(n) solution just iterating through

How to cut it down:

Go to the 50th one... but then worst case would be 49th. Surely better?

What about cutting it up in 10s.. 99th would be 19 drops.

##Solution:

We need to decrease the number by 1 each time. So it is a triangulation problem.

We drop from the 14th floor since the quadratic of n^2 + n -200 = 0 solves to 13.651 so we round up.

This gives the worst case of 14 drops for the last floor or cool
Empleos en Data y Analytics LATAM — Junio 2021
Published: 2021-06-08 19:17:52

Te compartimos las ofertas laborales del mes para áreas de Data, Analytics y Cloud 👨‍💻👩‍💻

[✅ Data Engineer - Experis (Argentina)](https://www.linkedin.com/jobs/view/2581653831/?alternateChannel=search&refId=Rokp5out%2ByuzseWLwTvtEg%3D%3D&trackingId=x8h%2BYagHiVfW7hYZJcniPQ%3D%3D&trk=d_flagship3_search_srp_jobs)

[✅ Big Data Engineer - Bonzzu (México)](https://www.linkedin.com/jobs/view/2576190083/?alternateChannel=search&refId=Rokp5out%2ByuzseWLwTvtEg%3D%3D&trackingId=cJMFiKL0%2BPn8xe8PoqAi7A%3D%3D&trk=d_flagship3_search_srp_jobs)

[✅ Data Engineer - Chilexpress (Chile)](https://www.linkedin.com/jobs/view/2576844056/?alternateChannel=search&refId=2Z8o%2BXFGQ2wPaRAshS7GIw%3D%3D&trackingId=lTT1Y1OiG67A842RNmLb9g%3D%3D&trk=d_flagship3_job_details)

[✅ Data Engineer - ValueLabs (Costa Rica)](https://www.linkedin.com/jobs/view/2491671622/?alternateChannel=search&refId=2Z8o%2BXFGQ2wPaRAshS7GIw%3D%3D&trackingId=gT1a4IT5kdGUOle%2BeR%2F3%2FQ%3D%3D&trk=d_flagship3_search_srp_jobs)

Aprende, aplica y crece en proyectos de Data y Analytics en Cloud.
Learning
Tags: personaldevelopment
Published: 2021-06-08 18:49:21

---
title: Learning
published: true
description: What I learnt about me whilst learning a new technology, and a new (spoken) language
tags: personaldevelopment
cover_image: https://raw.githubusercontent.com/StacyCash/blog-posts/main/general/learning/coverimage.jpg
---

For the last year or so I've been playing with Static Web Apps, writing talks based on it, and making my own website using them.

Earlier this year there was a new tool which also came into preview: Static Web App CLI.

An NPM package that allows you to run your application locally, making it look like it's hosted in an Azure Static Web App.

And so... I thought that I would try this out and write a talk around it. Gulp.

This is a new one for me. I generally write my talks around tools which are already in use, and help introduce a new audience to it.

Here I am having to think how I use the tool, and do that with limited availability of the experience of others.

So... I've been playing with the CLI and seeing what it does. When things didn't work as I expected I've dived into the issues on the GitHub repo.

For one thing I was trying to get working I even dived into the code! (Yay for open source!)

And the result... A talk that I am proud of and get to give for the first time in about 4 days.

The other thing that I have been doing for the last 32 days is learning a new language. Swedish.

Why...? Because my best friend is Swedish. Because my favorite conference is held in Sweden. Because... Why not 😁

In those 32 days I have learnt enough to actually read someone's (simple) Swedish tweet. That was such a euphoric moment!

Why am I telling you this?

Because a few weeks ago I mentioned my issues with imposter syndrome. It was the post that kicked me into starting afresh with writing regular blog posts.

And, well, both of the things I mentioned are not what I consider my strong points.

In school, many moons ago, I studied French. For three years. I speak no French. Almost not a word.<br />
I lived in Nederland for 6 years before I got proficient at the language, and I'm still no expert! (Even if I can laugh at Dutch jokes and watch Dutch cabaretiers)

I don't do languages. And yet... This is going well. I'm sending (simple) Swedish WhatsApp messages to my friend.

And, as I said, I don't do talks for preview technology where I don't have a wealth of knowledge to call upon. I'm not good enough.

Well, you know what, maybe I am good enough 😁

Good enough to learn a language, and good enough to jump in, both feet, into some cool, new technology and figure out how to use it!

And so learning both of these over the last month or so has really helped my imposter syndrome 😁

Go out and try learning something new!

Photo by <a href="https://unsplash.com/@timmossholder?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Tim Mossholder</a> on <a href="https://unsplash.com/s/photos/learning?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
Deceptive dark patterns
Tags: deceptive, deception, darkpatterns, ux
Published: 2021-06-29 10:59:06

---
title: Deceptive dark patterns
published: true
date: 2021-06-08 18:31:35 UTC
tags: deceptive,deception,darkpatterns,ux
canonical_url: https://adactio.com/journal/18192
---

When I was braindumping [my thoughts prompted by last week’s UX Fest conference](https://adactio.com/journal/18186), I wrote about [dark patterns](https://www.darkpatterns.org/).

Well, actually I wrote about _deceptive_ dark patterns. That was a deliberate choice.

The phrase “dark pattern” is …problematic. We really don’t need to be associating darkness with negativity any more than we already do in our language and culture.

This is something I discussed with [Melissa Smith](https://www.mabsmith.com/) after her talk on this topic. The consensus in general seems to be that the terminology is far from ideal, but it’s a bit late to change it now (I’m sure if [Harry](https://www.brignull.com/) were coining the term today, he would choose a different phrase).

The defining characteristic of a “dark” pattern is that intentionally deceptive. How about we shift the terminology to talk about deceptive patterns?

Now, I get that inertia is a powerful force and it would be confusing to try do to a find-and-replace on all the resources that already exist on documenting “dark” patterns. So here’s a compromise:

From here on out, let’s start using the adjective “deceptive” _in addition to_ the existing adjective “dark.” That’s what I did in [my blog post](https://adactio.com/journal/18186). I only used the phrase “deceptive dark patterns.”

If we do that consistently, then after a while we’ll be able to drop one of those adjectives—“dark”—and refer to “deceptive patterns.”

Personally I’d love it if we could change the terminology overnight—and I’m quite heartened by the speed at which we changed our Github branches from “master” to “main”—but being pragmatic, I think this approach stands a greater chance of success.

Who’s with me?
Nav-link's to active as you scroll through sections, in 10 Lines of JavaScript;
Tags: javascript, showdev, coding, webdev
Published: 2021-06-08 18:29:32

<a href="https://www.buymeacoffee.com/areeburrub" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>

You must have seen single page websites which have different sections displaying different information, and when you scroll down to every section the navbar active link changes.
![Nav-bar Demo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p6rojk2otmz51m7v2w6p.png)
 
You might know that you can add links to each section in a navbar for single page websites by just simply using `<a href="#sectionID">Section Name</a>` but this doesn't change the style of the _nav-links_ to active.

{% codepen https://codepen.io/areeburrub/pen/mdWjRYb %}

to change the link style we can simply add a `active` to the classList of link.

So first we have to check in which section we are in for that we are simple taking every section top offset and when the pages y offset is equal to it we are then taking it's id attribute and adding the active class to it's link

All this is done every time the page is scrolled.

<pre>

window.onscroll = () => {
  var current = "";

  sections.forEach((section) => {
    const sectionTop = section.offsetTop;
    if (pageYOffset >= sectionTop ) {
      current = section.getAttribute("id"); }
  });

  navLi.forEach((li) => {
    li.classList.remove("active");
    if (li.classList.contains(current)) {
      li.classList.add("active");
    }
  });
};

</pre>

### More things,
if we do it in this way then it will keep the upper section link active until the lower one reach the top so to avoid this we can subtract some numbers so that it don't behave like that.

more things we can do is take the height of Section and use some subtract some of its part from the section top like this `pageYOffset >= sectionTop - (sectionHeight /2)`

> <a href="https://www.buymeacoffee.com/areeburrub" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>
Follow Me for more:
{% user areeburrub %}
Mental health-first
Tags: mentalhealth, kindness, mentalhealthawareness, fridaythoughts
Published: 2021-06-08 18:12:32

We tend to design and build

Businesses, cultures, workplaces and systems which are…

Privacy-first
Security-first
Customer-first

I think it's about time we start to design and build things which are:

**Mental health-first**

The other things are important, but nothing is more important than mental health.

If your mental health wears down, your physical health can also be affected and then nothing else is achievable.

Do you agree or disagree? I would love to know your thoughts.

*Photo credits by [Jared Rice](https://unsplash.com/@jareddrice?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on Unsplash*
top products zone
Tags: topproductszone, topproducts, productszone
Published: 2021-06-08 18:10:11

Shopping is one of the ways that the internet has transformed the lives of many of us. Not only is it extremely convenient, in almost every instance, you can save money using it to purchase different items. However, if you have not used a product before, or you are making a major acquisition, it is a good idea to read a few product reviews before you make your final decision.

Each and every manufacturer of a product will always try to make their item look like it is the very best one, at any given price point. However, as we all know, there are certain items that are just made better than other ones. It could be because one company uses high quality raw materials, or maybe they have a more experienced workforce, or it could be because the item is simply designed better.

Whatever the reason is, the fact of the matter is that some products just function better than their competitors do. When it comes to buying something on the internet without being able to hold it in your hand and test it out, how are you supposed to know which product you are considering will provide you the best bang for the money that you are spending on it?

Thankfully today, there are many websites that provide top product reviews. Some of these sites will specialize in areas like TV's, smart phones, or other electronic gadgets. Whereas other ones provide a wide array of major product reviews, which cover almost every product that has ever been sold.

To find a site that has one of the best product reviews about an item that you are considering acquiring, all you have to do is to use a major search engine like Bing, Yahoo, or Google. Then what you want to do is to type something like this into the search engine "XXX product review".

When you do that, unless it is a very obscure item, you should be presented with a very large number of websites to choose from. You can just start at the top of the list, and work your way down to the bottom. As you do that, it will quickly become evident which product reviews are worth reading, and which ones will just be a waste of time.

Just like the products that these sites are reviewing, not all product reviews are the same. Some sites thoroughly research each and every item that they are writing about, and some barely supply little more information than the manufacturer of the item gave them.

So, before you make a mistake and spend your hard earned money on something that is not going to make you happy, please make sure that you read as many product reviews on the item as you can find. After all, this is your money we are talking about, and the economy is not the best it has ever been, so it is a buyer's market and you should take advantage of it.

Are you looking to purchase products online? Why not do research before purchasing to get exactly what you need. See our website for Major Product Reviews you can be sure you are purchasing quality when you read our Top Product Reviews.

For More Info: https://topproductszone.com/
Build Twitter Bot Without Code
Tags: react, javascript
Published: 2021-06-08 17:58:36

Build a Twitter Bot with ZERO lines of code completely using nocode tools 🎉


We will learn how to bookmark Tweet in Public and Push the same content in Airtable so that you can use it for further reference whenever needed.


What benefits do I get?
1. Share all your bookmarked Tweets in Public

2. Your followers can also follow your bookmark handle to follow your awesome collections

3. Bookmarked Tweets also get posted in Airtable data for further and easy reference

4. You can email yourself these bookmarked Tweets via Automation once a week/month. It is fact that we never get time to ready bookmarked tweets, this automation will make sure you get weekly emails to read them.

Link: 
https://gumroad.com/l/twitter-bot
Reverse An Array - 3 Methods
Tags: java, javascript, oop, webdev
Published: 2021-06-08 17:54:47

- Method 1 - Revere with For Loop and print

```java
public class ReverseArray {
public static void main(String[] args) {
// Array with some element
int[] myArray = {10,22,33,11,88,9,2};
	// reverse loop and printing
	for(int i = myArray.length-1;i>=0;i--) {
		System.out.print(myArray[i]+ " ");
		}
	}
}
```

- Method 2 - Using Array List

```java
// Method 2 Reverse an array using array list
	public class ReverseArray {
	public static void main(String[] args) {
		// Array List
		ArrayList<Integer> myArray = new ArrayList<Integer>();
		myArray.add(10);
		myArray.add(21);
		myArray.add(13);
		myArray.add(14);
		myArray.add(51);
		
		// reverse array and method
		Collections.reverse(myArray);
		System.out.println(myArray);
	}
}
```

- Method 3 - Two Pointers and Swap

```java
// Method 3 Reverse with swap
public class ReverseArray {
public static void main(String[] args) {

	// Array with some element
	int[] myArray = {10,22,33,11,88,9,2};

	int start = 0;
	int end = myArray.length-1;
	int temp = 0;

	// looping and swapping
	while(end>start) {
		temp = myArray[start];
		myArray[start] = myArray[end];
		myArray[end] = temp;
		end--;
		start++;
	}

	for(int i:myArray) {
		System.out.print(i+" ");
	}
}
}
```