HN user

mad44

1,907 karma
Posts167
Comments169
View on HN
muratbuffalo.blogspot.com 2mo ago

Book Review: The Thinking Machine

mad44
3pts0
muratbuffalo.blogspot.com 3mo ago

PolitePaxos: A New Consensus Variant Where the Proposer Just Asks Nicely

mad44
6pts0
john.regehr.org 3mo ago

Taming LLMs: Using Executable Oracles to Prevent Bad Code

mad44
47pts20
muratbuffalo.blogspot.com 4mo ago

Claude Code Experiment: Visualizing Hybrid Logical Clocks

mad44
6pts0
muratbuffalo.blogspot.com 7mo ago

LeaseGuard: Raft Leases Done Right

mad44
4pts0
buttondown.com 1y ago

TLA from First Principles

mad44
4pts0
muratbuffalo.blogspot.com 2y ago

Best of 2023 in MuratBuffalo Distributed/Database Systems Blog

mad44
3pts0
muratbuffalo.blogspot.com 2y ago

Epoxy: Acid Transactions Across Diverse Data Stores (VLDB'23)

mad44
3pts0
muratbuffalo.blogspot.com 2y ago

Hints for Distributed Systems Design (2023)

mad44
9pts0
muratbuffalo.blogspot.com 2y ago

How I Learn a Technical Subject

mad44
1pts0
muratbuffalo.blogspot.com 3y ago

Detock: High Performance Multi-Region Transactions at Scale (Sigmod 2023)

mad44
4pts0
muratbuffalo.blogspot.com 3y ago

New Directions in Cloud Computing

mad44
2pts0
muratbuffalo.blogspot.com 3y ago

Aries: A Transaction Recovery Method W Fine-Granularity Locking and Rollbacks

mad44
4pts0
muratbuffalo.blogspot.com 3y ago

Characterizing Microservice Dependency and Performance: Alibaba Trace Analysis

mad44
3pts0
muratbuffalo.blogspot.com 3y ago

Is Scalable OLTP in the Cloud a Solved Problem? (CIDR 2023)

mad44
2pts0
muratbuffalo.blogspot.com 3y ago

Best of Metadata Blog in 2022

mad44
1pts0
muratbuffalo.blogspot.com 3y ago

Noria: Dynamic, partially-stateful Rust dataflow for high-performance web apps

mad44
2pts0
mvdirona.com 3y ago

Silicon innovation and custom ASICs at Amazon [pdf]

mad44
97pts36
muratbuffalo.blogspot.com 3y ago

Fast Serializable Multi-Version Concurrency Control for Database Systems

mad44
3pts0
cacm.acm.org 3y ago

The Seattle report on database research (2022)

mad44
4pts0
muratbuffalo.blogspot.com 4y ago

A Client-Centric Specification of Database Isolation

mad44
3pts0
muratbuffalo.blogspot.com 4y ago

Antifragility from an Engineering Perspective

mad44
2pts0
muratbuffalo.blogspot.com 4y ago

Amazon Aurora: Design Considerations and on Avoiding Distributed Consensus

mad44
4pts0
muratbuffalo.blogspot.com 4y ago

Efficient state-machine-replication via timestamp stability

mad44
3pts0
muratbuffalo.blogspot.com 4y ago

Layering Atomic Transactions on Facebook’s Online Tao Data Store (VLDB'21)

mad44
4pts0
muratbuffalo.blogspot.com 4y ago

Clear Communication

mad44
1pts0
en.wikipedia.org 6y ago

Fivefold Synaesthesia, Solomon Shereshevsky (1886-1958)

mad44
1pts0
muratbuffalo.blogspot.com 6y ago

Enlightenment Now (2019) by Steven Pinker

mad44
3pts0
muratbuffalo.blogspot.com 6y ago

The FuzzyLog: A partially ordered shared log

mad44
7pts0
muratbuffalo.blogspot.com 6y ago

Research, Writing, and Work Advice

mad44
1pts0

Public Service Announcement. Reading research papers is so important for your growth and career, please put in a process to do it at least once in a month or two. (I will try to write a blog post about why it is important, and how to go about it, since I see there is a big need for this.)

Papers We Love is a great resource, https://paperswelove.org/, if you like to get involved in a community to dip your feet into reading papers first.

At https://muratbuffalo.blogspot.com/ I distill and summarize distributed systems and database systems research paper. I recently got over 600 posts.

The main benefit of the blog for me was to crystallize my understanding. Having forced myself to post in public, I try to write a simple and accessible summary. This leads me to realize the gaps in my understanding, and fill them. This also strengthens my understanding, because by explaining the work in my own words, I internalize the concepts better. When I revisit a paper I have read before, the difference between a paper I wrote a post about and one I just read for myself is clear as day and night. I have a much better recall about the paper I posted. For a paper I wrote a summary, I just go to my summary and am able to cache back in all my understanding of the paper to my brain with a quick re-read of my summary.

This being said, I also benefited in terms of networking and collaboration. Through the blog post discussions on Twitter, I made many friends who work on distributed systems and databases. I think the blog was also useful for getting me a sabbatical at Microsoft Azure CosmosDB in 2018.

Finally, it feels really good to share my learnings, and put my rough ideas in the open. I learn from other blogs, and it feels good to give back. Every couple months I would get an email, thanking me for my blog, and that means the world to me.

Thank you for the explanation.

I get it now. It is all thanks to separating the operation as 1. agreeing on WAL, 2. executing after waiting all WAL agreements stabilizing.

There is a separation between the two. This can introduce waits (which could be theoretically unbounded for EPaxos but Tempo and Accord bounds this).

Maybe in some sense this is in the same spirit of Calvin's serializing WAL first and executing it later. But Accord avoids a single entity doing the serialization and achieves it via a leaderless Paxos approach which uses dependency graphs for WAL serialization, and later using another protocol for WAL execution after settlement.

Why is it not possible for r to take a dependency on w2 and no dependency on w1?

w2 may hit different nodes than w1 in a sharded database?

Or is the leader-Paxos approach in Accord operate over all nodes in the database regardless of the shards the keys fall into? (I guess that is the only explanation.) But then scalability of these global transactions would be limited, no?

Thank you for your detailed explanations.

Fine, here you go, with the line breaks

;; one sentence per line

(defun wrap-at-sentences ()

  "Fills the current paragraph, but starts each sentence on a new line."

  (interactive)

  (save-excursion

    ;; Select the entire paragraph.

    (mark-paragraph)

    ;; Move to the start of the paragraph.

    (goto-char (region-beginning))

    ;; Record the location of the end of the paragraph.

    (setq end-of-paragraph (region-end))

    ;; Wrap lines with 'hard' newlines (i.e., real line breaks).

    (let ((use-hard-newlines 't))

      ;; Loop over each sentence in the paragraph.

      (while (< (point) end-of-paragraph)

        ;; Determine the region spanned by the sentence.

        (setq start-of-sentence (point))

        (forward-sentence)

        ;; Wrap the sentence with hard newlines.

        (fill-region start-of-sentence (point))

        ;; Delete the whitespace following the period, if any.

        (while (char-equal (char-syntax (preceding-char)) ?\s)

          (delete-char -1))

        ;; Insert a newline before the next sentence.

        (insert "\n")))))

(global-set-key (kbd "M-j") 'wrap-at-sentences)

I had copied this Emacs macro just for doing that.

;; one sentence per line (defun wrap-at-sentences () "Fills the current paragraph, but starts each sentence on a new line." (interactive) (save-excursion ;; Select the entire paragraph. (mark-paragraph) ;; Move to the start of the paragraph. (goto-char (region-beginning)) ;; Record the location of the end of the paragraph. (setq end-of-paragraph (region-end)) ;; Wrap lines with 'hard' newlines (i.e., real line breaks). (let ((use-hard-newlines 't)) ;; Loop over each sentence in the paragraph. (while (< (point) end-of-paragraph) ;; Determine the region spanned by the sentence. (setq start-of-sentence (point)) (forward-sentence) ;; Wrap the sentence with hard newlines. (fill-region start-of-sentence (point)) ;; Delete the whitespace following the period, if any. (while (char-equal (char-syntax (preceding-char)) ?\s) (delete-char -1)) ;; Insert a newline before the next sentence. (insert "\n")))))

(global-set-key (kbd "M-j") 'wrap-at-sentences)