Newsletter 39 – 05/2023

Featured

The seven programming ur-languages – We know that all programming languages take concepts and nice ideas from other languages, some of these “origin” languages are very old and unpopular today, but they are the beginning of some concepts that all programmers use all day. If you try to learn these languages or some language that implements its concepts, it will be much easier to learn a new language at any time.

What Happens When You Type a URL Into Your Browser? – A masterpiece guide about what happens when you type a URL in your browser. If you didn’t know how DNS and HTTP work, this post may help you. One of the best that I’ve read about this topic.

Investigating the impact of HTTP3 on network latency for search – HTTP3 has immense potential to make applications faster and provide a better experience for users.

Memory Allocation – One of the best posts that I’ve ever seen about this subject. If you want to learn more (or remember) about malloc/free, this is the right place.

MISC

How RocksDB works – RocksDB is a key-value embeddable database, this post carefully explains how it works.

Scaling up the Prime Video audio/video monitoring service and reducing costs by 90% – Many engineers are reporting problems with serverless costs on a large scale, and are difficult to operate. This post is no exception and brings interesting insights from Amazon Prime Video engineering.

How do we get a tech team to make a big technical change? – Making big technical changes is always hard, and sometimes selling ideas to it is even harder. Context is the key, and knowledge sharing is the answer to get your team to do it.

How Much Memory Do You Need to Run 1 Million Concurrent Tasks? – Interesting benchmark about how much memory is needed to run 1 million concurrent tasks, like all benchmarks it doesn’t show 100% the reality, but it’s nice to think and learn from various comments around the internet.

What is Technical Debt? – If you ask 10 engineers what is technical debt, I think you’ll get different answers. The most well-known is to explain and make reference to bank debit. The first step to defining what a technical debt is is to understand that its definition may vary depending on your team, so the first step is always to talk to them and define it.

Stories from our survey: Salary in the time of pandemic – Some interesting salaries trends over the world, nice post to visualize how salaries are changing especially in emergent countries.

Monoliths are not dinosaurs – “Here is not one architectural pattern to rule them all. How you choose to develop, deploy, and manage services will always be driven by the product you’re designing, the skillset of the team building it, and the experience you want to deliver to customers“

Finding The Best Go Project Structure – Part 1 – Finding the best Go project structure is always a challenge when your company is starting to use it. This post may help you if you’re dealing with this task.

Newsletter 38 – 04/2023

Featured

Load Balancing – Load Balancing and especially its routing algorithms can be hard to understand when you’re a beginner in the IT world, this post explains easily and with beautiful drawings and animations how it works, and all its options.

Adventures in Garbage Collection: Improving GC Performance in our Massive Monolith – Garbage Collection is always a field that can improve your performance if you have time to go deep. This post shows how Shopify improved its well-known monolith performance with GC tuning.

Building GitHub with Ruby and Rails – Great post by GitHub. As we already know, GitHub has a massive Rails monolith, and in this post, they introduce the strategy to keep always updated with the latest version of Rails and Ruby. They bump it every week! This is awesome because keeps the company always using the latest version, avoiding patches, improving the development experience, and improving collaboration on open source. This is amazing.

916 days of Emacs – I love these posts relating experience with software/tools, every programmer must have its own toolbox, with favorite editors, tools, and software. This post talks about the first 916 days of Emacs (as the name says), with good insights, and data!

MISC

Becoming a more self-directing Staff+ individual contributor – Some nice tips and directions to become more Staff+ IC.

Uptime Guarantees — A Pragmatic Perspective – When talking about startups and small companies, 99.5% of uptime it’s usually enough, try to reach more than it will be expensive in a lot of ways, and not completely necessary. This post brings a pragmatic approach against uptime guarantees.

Building a collaborative asynchronous work environment – Asynchronous work environment is not about only home office, its about making most of the conversations using async tools, and having a work environment that allows people from multiple timezones to work, without the need to be online on an exact time to make meetings our tasks.

Mindset shifts for Functional Programming (with Clojure) – Shift mindset to start programming in a functional language is hard, and if you don’t shift correctly, you’ll make functional code that looks like imperative code.

Simply explained: how does GPT work? – Posts explaining how GPT works are a trading topic in the blogging community, I’ll bring only one on this issue, but if you like this subject, you’ll find a lot of it around the internet.

What complex systems can teach us about building software – “systems, we can instead embrace and use this complexity to model the behavior of the system

Mike Perham, Creator of Sidekiq: From Employment to Independence – Mike Perham will always be a successful example of a developer that lives from open source. This short interview with him gives a nice overview of how it works and can help many people that want to live maintaining its own OSS.

Why is OAuth still hard in 2023? – If you have already tried to do something with OAuth you know what this post means. Why is it still so hard?

Newsletter 37 – 03/2023

Featured

GPT-4 – The new OpenAI model is released, better than GPT-3.5 in many tasks.

The age of cargo cult Agile must end. – Cargo cult agile is very common, and with this, many misconceptions about what is agile, and how an “agile company” must work comes. This age must end.

What Being a Staff Developer Means at Shopify – If you ask 10 people what Staff Developers do or should do, you’ll have 10 answers. Staff engineers are not only about coding but also about showing leadership, this post shows 4 things that this engineer should do.

Improving the Developer Experience with the Ruby LSP – This post is handy for understanding how LSP (Language server protocol) works, and how it is simple but challenging! The post also talks about Ruby’s new LSP, developed by Shopify.

De-cloud and de-k8s — bringing our apps back home – During the last few years the standard way to handle a tech company is to be cloud-first and use k8s, this post brings a different approach and vision. De-cloud and de-k8s, make things simpler and bring them home.

The age of average – This is offtopic, and not related to tech, but keeps interesting and worth read. This post makes me think a lot about all the things around me, have you noticed that everything is starting to look the same?

MISC

Twitter’s Recommendation AlgorithmTwitter open sourced its recommendation algorithm, and this post explains briefly it.

Managing high availability at Intercom – Intercom manages its high availability by embedding many different things into its culture.

The power of single-method interfaces in Go – Single-method interfaces (SMIs) can be more general and powerful than high-order functions to Go developers.

Opting In to Transparent Telemetry – In the last weeks it was happening a lot of discussions around putting simple telemetry around the Golang toolchain, this post talks about the final decision, to make it opt-in.

Introducing Service Weaver: A Framework for Writing Distributed Applications – Google released a new Go framework that allows you to write your Golang application as a monolith and deploy it as a microservice.

Tracking the Fake GitHub Star Black Market with Dagster, dbt and BigQuery – Github fake stars market is real (and I’m the last to know about it?) and in this post with some help, we can find repositories buying it.

Proposal: Structured Logging – The proposal to add structured logging to Go’s standard library was accepted and this post simple explains how it will be used when released.

The adapter pattern in Go – The adapter pattern in Go and dependency injection, will make your code more flexible and simple, and your test will become easier too. This concept can be applied in any language but is especially useful in Golang.

What’s different about these layoffs – What’s different about all these layoffs that the tech industry is facing?

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