<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tangled Bytes</title><link>https://tangledbytes.com/</link><description>Recent content on Tangled Bytes</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 31 Aug 2023 16:46:37 +0530</lastBuildDate><atom:link href="https://tangledbytes.com/feed.xml" rel="self" type="application/rss+xml"/><item><title>USC CSE 138 Distributed Systems</title><link>https://tangledbytes.com/notes/usc-cse-138-distributed-systems/</link><pubDate>Thu, 31 Aug 2023 16:46:37 +0530</pubDate><guid>https://tangledbytes.com/notes/usc-cse-138-distributed-systems/</guid><description>Notes A distributed system is running on several nodes connected by network and characterized by partial failure. Partial failure means that some parts of the systems are working while some are not. Cloud Computing Philosophy: Treat partial failures as expected and work around them. HPC Philosophy: Treat partial failure as total failure. Use checkpointing to save results. If a node sends a request and doesn&amp;rsquo;t receives a response (when expected), there is no way for the node to reliably know what went wrong.</description></item><item><title>MIT 6.172 Performance Engineering</title><link>https://tangledbytes.com/notes/mit-6172-performance-engineering/</link><pubDate>Fri, 25 Aug 2023 15:13:11 +0530</pubDate><guid>https://tangledbytes.com/notes/mit-6172-performance-engineering/</guid><description>Notes Rule of Thumb: Parallelize outer loops instead of inner loops. Floating points aren&amp;rsquo;t associative this restricts the compilers from changing the order of evaluation which might potentially improve the speed. -ffast-math flag allows the compilers to reorder which will result in improved performance but might result in unexpected results. // This is performance engineering for { think(); code(); test(); } Bentley&amp;rsquo;s Rules for Optimizing Work Given by Jon Bentley (mostly).</description></item><item><title>Etcd</title><link>https://tangledbytes.com/notes/etcd/</link><pubDate>Thu, 01 Jun 2023 23:34:33 +0530</pubDate><guid>https://tangledbytes.com/notes/etcd/</guid><description>Notes Uses Raft consensus algorithm Client don’t have to know the leader or send their queries to the leader either. If a request is received by a follower node it will be forwarded to the leader if it is required. Some queries can be processed by the follower without the intereference of the leader in which case the requests are not actually forwarded. Recommends not running more than 7 nodes citing Google’s chubby lock service used internally at google also just runs on 5 nodes.</description></item><item><title>Fsync Failures</title><link>https://tangledbytes.com/notes/fsync-failures/</link><pubDate>Sun, 30 Apr 2023 11:03:04 +0000</pubDate><guid>https://tangledbytes.com/notes/fsync-failures/</guid><description>Original Paper: Can applications recover from fsync failures?
Introduction Paper examines the bahaviour of several filesystems and several popular data-intensive applications in the event of an fsync failure.
Following filesystems are analysed:
ext4 (data=ordered and data=journal) Btrfs XFS Following data-intensive applications were analysed:
PostgreSQL (with and without DIRECT_IO) LMDB Redis Sqlite LevelDB File Systems Behaviour NOTE: Only examines the cases when fsync signals an EIO error.
2 kinds of &amp;ldquo;workloads&amp;rdquo; are examined:</description></item><item><title>Bloom Filter and Friends: Part 1</title><link>https://tangledbytes.com/blogs/bloom-filter-and-friends-part-1/</link><pubDate>Mon, 07 Nov 2022 14:25:01 +0000</pubDate><guid>https://tangledbytes.com/blogs/bloom-filter-and-friends-part-1/</guid><description>I recently started exploring databases and storage engines more seriously. As a result of my exploration, I started working on a side project called USE. USE&amp;rsquo;s one of the storage engine uses very basic append only log for storing the data on the disk. This means that the Read(key) queries are excruciatingly slow as they have to iterate over the entire log to find the value for the given key. I wanted to minimise the number of disk reads for the Read(key) queries especially for the cases when the key is not even present.</description></item><item><title>Getting Unsafe with Typecasting in Go</title><link>https://tangledbytes.com/blogs/casting-and-conversion/</link><pubDate>Wed, 12 Jan 2022 20:37:18 +0000</pubDate><guid>https://tangledbytes.com/blogs/casting-and-conversion/</guid><description>It may appear to some that golang supports casting however in reality it does not! Golang only has conversions, in fact type casting is not even part of the golang specification.
So what happens when you do something like a := int64(b)? Of course, the answer is conversion.
Checkout source code to dig deeper into how golang compiler handles the type conversions
Casting vs Conversion Let’s see what is the difference between casting and conversion</description></item></channel></rss>