Engineering Blog

Coding

Go 1.24 Has Arrived! A Roundup of the Key Features

Go 1.24 Has Arrived! A Roundup of the Key Features

The Go team has officially released Go 1.24, bringing exciting enhancements and optimizations that make Go development even more powerful. If you haven’t already, grab the latest version from the download page. Here’s a quick look at what’s new in Go 1.24! Key Language Updates Go 1.24 now fully supports generic type aliases. This means…

TRACTOR: Automating the Transition from C to Rust for Security

TRACTOR: Automating the Transition from C to Rust for Security

For years, programmers have wrestled with the memory safety vulnerabilities inherent in C and C++. These vulnerabilities can lead to crashes, security exploits, and unpredictable program behavior. Bug-finding tools have been a bandage solution, but the software engineering community has finally reached a turning point. The answer? Safe programming languages! These languages, like Rust, have…

Don’t Miss Out! SpringOne 2024 Takes Center Stage Online (Aug 26-28)

Don’t Miss Out! SpringOne 2024 Takes Center Stage Online (Aug 26-28)

Calling all Spring enthusiasts, beginners, and seasoned practitioners! SpringOne 2024 is back and going virtual, making it easier than ever to join the world’s biggest gathering of the Spring community. What to Expect Why Attend SpringOne 2024? Don’t miss this opportunity to be part of the virtual SpringOne experience! Register today and secure your spot….

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…

Interface on producer side

Interfaces are used to create common abstractions that multiple objects can implement. Before delving into this topic, let’s make sure the terms we use throughout this section are clear: It’s common to see developers creating interfaces on the producer side, alongside the concrete implementation. But in Go, in most cases, this is not what we…

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…

Being confused about when to use generics

Introduction The Go 1.18 release introduced a new feature called generic types (commonly known by the shorter term, generics). This allows writing code with types that can be specified later and instantiated when needed. However, it can be confusing about when to use generics and when not to. In this blog, I will try to describe the concept…

Optional Function Parameter Pattern

Go doesn’t support optional function parameters. However, the need for optional parameters will always exist. There are many ways to provide optional parameters to a function in Go, but the most graceful way is to use functional options. Do in this blog we will go through a concrete example and covers different ways to handle…

Project misorganization

Project organization is one of the most common mistake made by Go Developer. Go provides a lots of freedom for designing the packages and modules hence it is not easy task to organize the project. is The purpose of organizing the project are maintainability, readability, consistency and so on.

Any says nothing

The interface type that specifies zero methods is known as the empty interface: interface{} An empty interface may hold values of any type. (Every type implements at least zero methods.) Empty interfaces are used by code that handles values of unknown type. With Go 1.18 the predeclared type any became an alias for an empty…