Engineering Blog

Cloud Native

Level Up Your Coding: Local Autocomplete in JetBrains 2024.1

Level Up Your Coding: Local Autocomplete in JetBrains 2024.1

JetBrains just released version 2024.1 of its popular line of  IDEs, bringing exciting new features for developers of all stripes. The biggest highlight? Local full-line autocompletion! Say Goodbye to Incomplete Code and Privacy Concerns This innovative feature leverages on-device AI models to suggest entire lines of code as you type. No more struggling to remember…

GnuCOBOL: A Rising Force in Open-Source COBOL

GnuCOBOL: A Rising Force in Open-Source COBOL

Good News for COBOL Programmers For decades, COBOL has been the workhorse of the business world, powering critical systems in finance, human resources, and more. But with its origins in 1959, some might wonder if COBOL can keep pace with modern technology. The answer is a resounding yes, thanks to the open-source project GnuCOBOL. GnuCOBOL…

GNOME 46 Released: Packed with New Features

GNOME 46 Released: Packed with New Features

GNOME, the popular desktop environment, has released its latest version, GNOME 46, codenamed “Kathmandu.” This update brings a wave of exciting new features and improvements across various applications, making your user experience smoother and more efficient. Find Anything, Fast: Enhanced File Management: Upgraded Online Accounts with OneDrive Support: Remote Login with RDP: Streamlined Settings App:…

Airbnb’s Dynamic Kubernetes Cluster Scaling Journey

Introduction At Airbnb, it’s crucial to adjust cloud spending according to demand. Their traffic varies daily, so they need their cloud resources to scale up and down as needed. To achieve this, they use Kubernetes, a system for managing containers, along with OneTouch, a tool for configuring services. In this post, we’ll discuss how they…

A “Krispr” Approach to Kubernetes Infrastructure: Keeping Pods Fresh and Rolling Out Updates Smoothly

Introduction In the demanding world of modern service-oriented architectures, maintaining fresh and up-to-date infrastructure is crucial for optimal performance and security. Airbnb, with its hundreds of services relying on Kubernetes, faced challenges in efficiently updating shared infrastructure components within their platform. Their existing approach, heavily dependent on service owner upgrades, led to version fragmentation, complexity,…

Overusing getters and setters

Overusing getters and setters

Encapsulation is used to hide the values or state of a structured data object, preventing unauthorized parties’ direct access to them. In Golang there is no by default support of getters and setters, so it is optional. There are few advantage of using getters and setters event in golang and they are mentaion below :-…

Avoid any Type in TS (anti-pattern)

Avoid any Type in TS (anti-pattern)

What are types in TS? Types in TS helps us understand what methods & properties are associated with a given value/variable in a program that can help us analyze our code for existing errors and prevent further errors. For example a value that is assigned a type of a string tells us that the value…

Variable Shadowing in Go

As a part of this blog post, I will try to explain about variable shadowing and how to avoid it. In programming, scope of variable defines to the places a variable can be referenced. In Golang, a variable name declared in a block can be redeclared in an inner block. This mechanism is called variable shadowing….

Unnecessary nested code

Readable code requires less cognitive effort to maintain a mental model; hence, it is easier to read and maintain. A critical aspect of readability is the number of nested levels. Code is qualified as readable based on multiple criteria such as naming, consistency, formatting, and so forth. While programming, we need to maintain mental models…

Not being aware of the possible problem of type embedding

Concept of embedded field A struct field without a name is known as embedded field. For example :- In the Employee struct, the Address type is declared without an associated name; hence, it’s an embedded field. But this can sometimes lead to unexpected behaviors if we don’t understand all the implications of type embedding. Note…