Links for 2020-04-29

Python 3.9, A Nice Top in Pure Bash, Rewriting a Legacy System, Programming Tribes, Feature Factory, Python Function Overload, Clean Git Branches, Journaling for Devs, What Programming Is, Caches, GNOME Screen Recording, Requirements, VIM Password Manager, Google AdSense Ransom.

New Features in Python 3.9 You Should Know About

The great feature coming in Python 3.9 is the dictionary shortcut (|, as in new_dict = dict1 | dict2), but there are few more incoming changes.

I talked about the future of Python on PyCaxias this year, and I pointed that Python grew a lot when it entered the web development area and now that it is getting into the machine learning area, there will be changes coming into the language to support this.

And if you ignore the dict operator, there is a lot of things related to ML.

BashTop: Linux resource monitor

When I first receive the link for this, I thought "I bet it looks like any other bash script". But no, it has a well designed interface and loops interesting as heck.

Avoid rewriting a legacy system from scratch, by strangling it

So you don't know how to replace your monolith with another monolith? Here is one idea: Create the same API, put a gateway in front of the old system and slowly reroute calls to the new service.

3 tribes of programming

It's kinda funny seeing articles that try to pinpoint developers in certain categories and end up just splitting everyone.

But this one kinda makes sense, if you're willing to put a random label on yourself.

12 Signs You’re Working in a Feature Factory

Ah, the good old ways of just pushing buttons and pumping features, with no regard to process or anything else.

If you're starting your dev career, at some point you'll work in one of those, and recognizing you're in such situation may help your future.

Function overloading in Python

Ah, the joys of using decorators to add features to the language. In this case, using decorators, you can add function overloading to Python, and even if it is based on the number of arguments, one could extend this to use the type hints for figuring out the function (with some work, I reckon).

git-trim: Automatically trims your branches whose tracking remote refs are merged or gone

Keeping your GIT branches clean is good for your health. Removing those stupid "fix-this" and "fix-that" after they were merged, but not removing "develop" and "master" can be hard work.

This small app helps keeping everything nice and tidy.

Always Be Journaling

Today in "Things I Know I Should Be Doing But I Don't": Journaling.

I've seen this "pattern" a few times: Take notes of everything you're doing; take notes of problems you solve; keep notes of discussions you had. Those are all important and can save your butt in the future.

Programming is not a goal.

I was kinda expecting the "Programming is not a goal, providing value for your customers is", but this is way more direct than you can think. It's the clear suggestion for those who are starting to focus on solving their own problems instead of just coding.

Figuring out how to scrap a website is ok, but what will you do with the data. Building a neural network may be used in your CV when you're looking for that high-paying job, but you're going to train to fix what?

What is cache penetration, cache breakdown and cache avalanche?

I suck at using the "proper" words for some contexts: I used a bunch of patterns, but heck if I can remember (or even if I really know) their proper names.

This is the same thing: Just some clarification on how to call some problems/situations with caches.

GNOME has a ‘Secret’ Screen Recorder. Here’s How to Use it!

This is a cool thing: You can record your desktop if you're using GNOME. The recording will appear as a webm in your "Videos" folder.

Requirements volatility is the core problem of software engineering

This should not come as a surprise to anyone who was part any moderately large project: things change.

Yes, agile is a way to solve this, but we need to teach developers to "let go" of their code. We write code expecting it to live forever, and then the requirements change and we hung up on those little grouped words and instead of removing and starting with a fresh view, we try to twists and push things around till it works, but is barely recognizable.

This part agile doesn't teach us.

Using Vim as a password manager

A little stupid trick using VIM: VIM can encrypt files when saving them, so you can pick a file, put your passwords, and save it in encrypted form.

Pay Up, Or We’ll Make Google Ban Your Ads

Not only we have the problem with Google acting the way it wants with its products -- and as much as we don't like it, we can't deny its in their own right to do so -- now people have to worry about people tricking Google into killing your... revenue.

And I think that's one of the basis of the whole problem with privacy and the general use of Google products: revenue. Imagine how scared someone could be if they decide to pay U$ 5000 just to not kill their revenue.

There has to be a better way.

This post was built with the help of