Software

23 Mar 2024

Career advice

Career advice from Principal Engineer at Amazon.

22 Mar 2024

Leveraging type systems to your advantage

Video explaining how you can use Rust’s type system to describe your business logic. Many of the ideas can be transferred to other languages.

30 Oct 2023

Rules of thumb for Go

In English, the phrase “rule of thumb” refers to an approximate method for doing something, based on practical experience rather than theory. Github link. This project’s aim is simple. To provide some rough baseline measurements for common decisions you have to do every day as a software engineer: Do I use map or a slice here? TL;DR: use map when len(haystack) > 100 && len(needles) > 100 I need to deduplicate this, do I use map[T]struct{} or just deduplicate the slice?

25 Apr 2020

Careful with io.TeeReader and json.Decoder

Some time ago, I was investigating very strange bug in our codebase: http: ContentLength=513 with Body length 512 It was inside our Go reverse proxy, and what was very suspicious was the exact 1 byte discrepancy. My suspicion was on gzip middleware, which is often the cause when you forget to set request.ContentLength after compressing the payload. However it turns out it was not the case. Do you see anything problematic here?

22 Apr 2020

As

As is a library to convert numeric types with overflow check in Go. Why? Other languages like Rust have overflow checks on type casts (if you use TryFrom and not just as), but for Go there is nothing like that. My need came from a simple bug, where external integer type was being type casted multiple times across multiple API boundaries. Because the original integer size was hidden across several API hops, the affected code expected too small integer size, and overflowed.

2 Dec 2019

How I manage passwords without loosing sanity

A lot has been said about passwords being bane of our society. And it is true. However, with some not-so-hard setup of software, it can be made bearable. The setup starts with *KeePass2 password safe. This is a program that allows you to store arbitrary data, but also specifically usernames, passwords and URLs that can be matched to find your saved password. It can also generate safe random passwords, set expiration, and a lot more.

24 Nov 2019

Shoumik Palkar - Rust for Weld, a High Performance Parallel JIT Compiler

Speeding up data processing pipelines in different languages by using Weld - a JIT compiler in Rust.

24 Nov 2019

Aditya Siram - A (Not So Gentle) Introduction To Systems Programming In ATS

Have you ever wondered if there is a functional programming language without garbage collector? I have. ATS is very interesting (prototype?) language which compiles to C with great guarantees about resources safety, like Rust.

14 Nov 2019

Mike Acton - Data-Oriented Design and C++

A must watch for anyone who is interested performant software.

4 Nov 2019

State of software in 2019

It is now year 2019. Last year has seen some large strides in our technological prowess. All the big companies have AI personal asistants that nobody uses, smartphones in our pockets are more powerful than ever, you can shoot videos in 4k resolution with 120 frames per second, you can see all your friends having fun all over Instagram and Facebook and be jealous, you are evermore connected to the internet (well, a subset of internet, really), all the “news” is even more accessible so you know what to think, it is surely great time to be alive.