Newsletter 36 – 02/2023

Featured

BIG DATA IS DEAD – Fabulous post, with many truths about the myth of “big data”, for most companies the big data era never arrived, and most of the existent datasets are over 1 TB of storage.

Is software getting worse? – IMO yes! And we need more posts like this, more people reasoning about the way and quality we’re building software today.

The technology behind GitHub’s new code search – Index and search on 115TB of code is not an easy task, the previous solution with ElasticSearch wasn’t working anymore, so they needed to create something new, this post describes how they did it.

MISC

The Case Against Monkey Patching, From a Rails Core Team Member – Monkey Patching is one of the most notable features of Ruby, but it’s dangerous when used without caution, and your code lives for years.

Whatever happened to Ruby? – Languages don’t die, can Ruby is an example. This post talks specifically about Ruby but can be with any not “hot” language.

A thorough team guide to RFCs – It’s important to define a decision-making process, RFC with its variations is the most used and known process for It. IMO it’s important to companies adopt It, to start registering and taking feedback on tech decisions.

Coding 102: Writing code other people can read – Many new people are starting to code, unfortunately, beginner courses never care about code quality. This post brings useful tips.

Three layers to secure a software development organization – Software needs to be secure, and applying simple concepts in the three layers of an organization can drastically reduce the chances of being attacked.

The Pragmatic Programmer, a timeless book

This year I reread the legendary The pragmatic Programmer by Dave Thomas and Andy Hunt. I personally believe that rereading technical books after some years of experience is worth it, you’ll always understand something more, or learn. With this book, it was no different, everything happened.

The first time I read it, I was a young developer starting my professional journey as a software engineer, I remember reading some chapters and doesn’t understand not at all, but the final feeling was that I was reading something nice and great, especially the first chapter, this part of the book helped me a lot to understand the software engineers life, and how to manage my work and future.

Overall, the feeling was even better, now with many years of professional experience writing software, all the wisdom of this book was more worthwhile and impact. Every sentence makes you think about it, and every chapter makes hours of reflection on our work.

A must-read book for every people working with software, with any experience, this book will be worth it and make you a better professional. This book is soft and doesn’t have many codes, but it will make you learn more than in any book with many pages of code.

Pragmatic Programmer is timeless, it will keep being read by many generations of developers, as is being by more than 20 years from the time this post is written. Even more worthwhile than reading it one time, is to keep visiting it for your entire career.

The following text as taken from the Pragmatic Programmer second edition Postface, it made me reflect on the importance of what we do and certainly gives a preview of the wisdom contained in this fantastic book.

In The Mythical Man-Month: Essays on Software Engineering, Fred Brooks said “The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from the air, creating by exertion of the imagination.” We start with a blank page, and we can create pretty much anything we can imagine. And the things we create can change the world.

From Twitter helping people plan revolutions, to the processor in your car working to stop you skidding, to the smartphone which means we no longer have to remember pesky daily details, our programs are everywhere. Our imagination is everywhere.

We developers are incredibly privileged. We are truly building the future. It’s an extraordinary amount of power. And with that power comes extraordinary responsibility.

How often do we stop to think about that? How often do we discuss, both among ourselves and with a more general audience, what this means?

Embedded devices use an order of magnitude more computers than those used in laptops, desktops, and data centers. These embedded computers often control life-critical systems, from power plants to cars to medical equipment. Even a simple central heating control system or home appliance can kill someone if it is poorly designed or implemented. When you develop for these devices, you take on a staggering responsibility.

Many nonembedded systems can also do both great good and great harm. Social media can promote peaceful revolution or foment ugly hate. Big data can make shopping easier, and it can destroy any vestige of privacy you might think you have. Banking systems make loan decisions that change people’s lives. And just about any system can be used to snoop on its users.

We’ve seen hints of the possibilities of a utopian future, and examples of unintended consequences leading to nightmare dystopias. The difference between the two outcomes might be more subtle than you think. And it’s all in your hands.

Dave Thomas and Andy Hunt, Pragmatic Programmer second edition Postface

Newsletter 35 – 02/2023

Featured

We invested 10% to pay back tech debt; Here’s what happened – How to solve tech debts is a big discussion, and sometimes leads to conflicts between engineers and stakeholders, invest part of the team time to work only on tech debts is the most common way.

8 Hard Truths I learned when I got laid off from my SWE job – As we saw in the news in recent days, many tech-based companies are laying off, this is a very sensitive moment for every people who are suffering from this (Not only SWE), this post talks about 8 hard truths that the author learned when got laid off.

PEP 703 – Making the Global Interpreter Lock Optional in CPython – This PEP proposes adding a compile flag to remove GIL from python, its a draft but if approved can help Python developers in many ways, especially those involved with deep learning, and high processing applications.

Examples of problems with integers – Integers have their problems just like floats, but many engineers care only about floats’ problems, in this post, some real and cool examples of problems with integers.

MISC

PLATFORM ENGINEERING AS A STARTUP – The platform engineering teams need to be treated and behave like a company, with the product, leadership, customer success, and everything needed to maintain a company with a solid project.

Conversation Skills Essentials – Conversation skills are the most important skills for every developer, this post gives some essential techniques that you can apply to have good conversations, these tips are valuable and can help you talk with anyone.

26 programming languages in 25 days, Part 1: Strategy, tactics, and logistics – The author has solved each 2022 Advent of code exercise in one different programming language (solving one in two!), this is awesome, and in this post, he shares its strategies, thoughts, and logistics.

A Guide to the Terminal, Console, and Shell – A deep historical post about the first computers and how some aspects of the past still reflect in our operations systems design and how we call some things. For people who like history, a great post.

Managing Your Career Without a Manager – Many people have problems managing their careers without a manager, this post gives some tips that may help.

My First Code Commit in Ruby – Posts about first contributions to open source are always fascinating.

Ruby 3.2’s YJIT is Production-Ready – Some interesting news coming from Ruby’s YJIT (one of Ruby’s JIT), they successfully deployed it to production in one service and noticed ~10% of speedups, while other benchmarks noticed even more!

What Happens When A CPU Starts – What happens when your CPU receives energy?