RSSAmplifier

Blog

(untitled)

toidiu.comRSS feed ↗17 posts

Latest posts

Design document template

As engineers we are often tasked with large ambiguous tasks. This is a template for writing useful design documents. The goal of this design document is not to have the correct answer. The goal is to clearly capture the problem and solutions so that the team can make an informed decision on the next steps.

On privacy and control

"I don't need to care about privacy because I have nothing to hide." is an argument that I have heard countless times. I found this argument difficult to counter in the past, yet deep-down I knew the reasoning was flawed. The problem is that the word "privacy" is diluted and mean different things to different people. Instead of "privacy" we really should be talking about "control". Framed in this…

Defending QUIC from acknowledgement-based DDoS attacks

Cross posting Blog post : Defending QUIC against the Optimistic ACK attack.

Rust primitives

In this post I explore guarantees the Rust language provide and how language primitives help enforce those guarantees.

TLS guarantees

TLS is the protocol that secures most of the browse web traffic on the internet. The internet is more secure than it has ever been but what exactly does that mean. What are the guarantees that TLS provides and how exactly does it deliver on its promise?

Demystifying ANS.1's use in Cryptography

ASN.1, PKCS #1, PKCS #8, pem, der, Pika Pika Chuuuu! Ever feel like cryptography is just a bunch of random acronyms that someone just made up? I felt the same way and decided to change that by figuring out how these concepts are used in real world cryptography.

Making plans

Writing is thinking and can often facilitate executing tasks. It can be especially invaluable when tackling complex tasks. This is because it takes clarity of though to write well; clarity being the key to unwinding a complex issue. However, writing well can take time, requiring multiple drafts and revisions. I believe that one doesn't actually need the perfect final draft. In most cases first…

Rust's Future ecosystem

The Rust future ecosystem is quite complex and in this post I hope to explore and shed light on the different pieces.

Learning Crypto

14 steps for learning crypto.

DB testing in Rust

Writing integration tests for databases is often a cryptic art. The challenge stems from the fact that a database is stateful and instead we would like our tests to be reproducible. In this post I will share my experience writing database tests in Rust, some limitations of my current setup and thoughts on future improvements.

Understanding Lambda in Rust

Given the announcement of the Lambda runtime, there is now an officially supported story around writing lambda functions in Rust. I wanted to try for myself and see the amount of effort needed to get a lambda function working, while also diving deeper into whats involved.

VM

There are two types of Virtual Machines: system VM and process/language VM. A language VM is also called a runtime (while true for Java and JVM this is typically not the nomenclature with other languages). One abstracts out the OS while the other abstracts out a language runtime. A system VM might be good for isolation, security, portability, etc. A language VM is good for portability of a…

Announcing Reads

I am starting an ongoing project/section here called reads. The task will be to read, highlight and summarize a paper, and possibly a coded implementation. The primary goal of this project is to reference my thoughts, and also gain a better understanding of the topic in the process. Possibly other might also find this useful.

A practical guide to breakOut

In this post I will be reviewing scala.collection.breakOut from an application developer's perspective rather than a functional programming enthusiast. I will discuss why one would want to use it and how to recognize when it is applicable.

Polymorphism in Scala

Polymorphism is a word that means 'having different forms'. In terms of OOP, this mean that a class can have many different forms and behave in different manners depending on the context. Scala has 3 types of Polymorphism that we will explore further below.

Android low memory testing

Resource constraints is what separate mobile development from other types of development. This post focuses on "low memory" constraints and to test for this ephemeral state.

Learning Scala

Learning a new technology/language is difficult, and it can seem daunting when getting started. This is the third time in 3 years that I have set out to learn something new and become proficient, so I wanted to share my experience on how I learned Scala and built SubwayTunes.…