Files
nexus/sreweekly/articles/459/03-use-of-time-in-distributed-databases-part-1.html
2026-09-12 17:23:01 +08:00

3934 lines
190 KiB
HTML

<!DOCTYPE html>
<html dir='ltr' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
<head>
<meta content='width=device-width, initial-scale=1' name='viewport'/>
<title>Use of Time in Distributed Databases (part 1)</title>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
<!-- Chrome, Firefox OS and Opera -->
<meta content='#eeeeee' name='theme-color'/>
<!-- Windows Phone -->
<meta content='#eeeeee' name='msapplication-navbutton-color'/>
<meta content='blogger' name='generator'/>
<link href='https://muratbuffalo.blogspot.com/favicon.ico' rel='icon' type='image/x-icon'/>
<link href='http://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' rel='canonical'/>
<link rel="alternate" type="application/atom+xml" title="Metadata - Atom" href="https://muratbuffalo.blogspot.com/feeds/posts/default" />
<link rel="alternate" type="application/rss+xml" title="Metadata - RSS" href="https://muratbuffalo.blogspot.com/feeds/posts/default?alt=rss" />
<link rel="service.post" type="application/atom+xml" title="Metadata - Atom" href="https://www.blogger.com/feeds/8436330762136344379/posts/default" />
<link rel="alternate" type="application/atom+xml" title="Metadata - Atom" href="https://muratbuffalo.blogspot.com/feeds/8080256387331719320/comments/default" />
<!--Can't find substitution for tag [blog.ieCssRetrofitLinks]-->
<link href='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw-UTn0lD4FZG9hucp6EIUb66fdMJ4tfv45rPS0GAYBUWmxhZ_nF9lAGjjXzASF3FoaY23tVrfV6guLkWHUAMnZtE7HpzZwMD_0z3cmdnhkusQqin25s0m_PBZ6avx7jIWUCb1GC7HkqdECEUTmSmdoY5Iz-EckFQUji-rrWtNFYoL1mIpl_hrnTvSkXE/s320/DALL%C2%B7E%202024-12-13%2010.45.03%20-%20A%20conceptual%20digital%20art%20piece%20illustrating%20the%20concept%20of%20time%20in%20distributed%20databases.%20The%20image%20features%20a%20network%20of%20interconnected%20clocks,%20each%20.webp' rel='image_src'/>
<meta content='http://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' property='og:url'/>
<meta content='Use of Time in Distributed Databases (part 1)' property='og:title'/>
<meta content='Distributed systems are characterized by nodes executing concurrently with no shared state and no common clock. Coordination between nodes a...' property='og:description'/>
<meta content='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw-UTn0lD4FZG9hucp6EIUb66fdMJ4tfv45rPS0GAYBUWmxhZ_nF9lAGjjXzASF3FoaY23tVrfV6guLkWHUAMnZtE7HpzZwMD_0z3cmdnhkusQqin25s0m_PBZ6avx7jIWUCb1GC7HkqdECEUTmSmdoY5Iz-EckFQUji-rrWtNFYoL1mIpl_hrnTvSkXE/w1200-h630-p-k-no-nu/DALL%C2%B7E%202024-12-13%2010.45.03%20-%20A%20conceptual%20digital%20art%20piece%20illustrating%20the%20concept%20of%20time%20in%20distributed%20databases.%20The%20image%20features%20a%20network%20of%20interconnected%20clocks,%20each%20.webp' property='og:image'/>
<style type='text/css'>@font-face{font-family:'Damion';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/damion/v15/hv-XlzJ3KEUe_YZkZGw2EzJwV9J-.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Damion';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/damion/v15/hv-XlzJ3KEUe_YZkamw2EzJwVw.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}@font-face{font-family:'Playfair Display';font-style:normal;font-weight:900;font-display:swap;src:url(//fonts.gstatic.com/s/playfairdisplay/v40/nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKfsunDTbtPK-F2qC0usEw.woff2)format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}@font-face{font-family:'Playfair Display';font-style:normal;font-weight:900;font-display:swap;src:url(//fonts.gstatic.com/s/playfairdisplay/v40/nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKfsunDYbtPK-F2qC0usEw.woff2)format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}@font-face{font-family:'Playfair Display';font-style:normal;font-weight:900;font-display:swap;src:url(//fonts.gstatic.com/s/playfairdisplay/v40/nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKfsunDZbtPK-F2qC0usEw.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Playfair Display';font-style:normal;font-weight:900;font-display:swap;src:url(//fonts.gstatic.com/s/playfairdisplay/v40/nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKfsunDXbtPK-F2qC0s.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAX-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAz-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAT-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAv-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuHT-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuGb-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAf-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAb-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAj-k3Yi128m0g.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBHMdazTgWw.woff2)format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBHMdazTgWw.woff2)format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBHMdazTgWw.woff2)format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBHMdazTgWw.woff2)format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBHMdazTgWw.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}</style>
<style id='page-skin-1' type='text/css'><!--
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}
/*!************************************************
* Blogger Template Style
* Name: Contempo
**************************************************/
body{
overflow-wrap:break-word;
word-break:break-word;
word-wrap:break-word
}
.hidden{
display:none
}
.invisible{
visibility:hidden
}
.container::after,.float-container::after{
clear:both;
content:'';
display:table
}
.clearboth{
clear:both
}
#comments .comment .comment-actions,.subscribe-popup .FollowByEmail .follow-by-email-submit,.widget.Profile .profile-link,.widget.Profile .profile-link.visit-profile{
background:0 0;
border:0;
box-shadow:none;
color:#2196f3;
cursor:pointer;
font-size:14px;
font-weight:700;
outline:0;
text-decoration:none;
text-transform:uppercase;
width:auto
}
.dim-overlay{
background-color:rgba(0,0,0,.54);
height:100vh;
left:0;
position:fixed;
top:0;
width:100%
}
#sharing-dim-overlay{
background-color:transparent
}
input::-ms-clear{
display:none
}
.blogger-logo,.svg-icon-24.blogger-logo{
fill:#ff9800;
opacity:1
}
.loading-spinner-large{
-webkit-animation:mspin-rotate 1.568s infinite linear;
animation:mspin-rotate 1.568s infinite linear;
height:48px;
overflow:hidden;
position:absolute;
width:48px;
z-index:200
}
.loading-spinner-large>div{
-webkit-animation:mspin-revrot 5332ms infinite steps(4);
animation:mspin-revrot 5332ms infinite steps(4)
}
.loading-spinner-large>div>div{
-webkit-animation:mspin-singlecolor-large-film 1333ms infinite steps(81);
animation:mspin-singlecolor-large-film 1333ms infinite steps(81);
background-size:100%;
height:48px;
width:3888px
}
.mspin-black-large>div>div,.mspin-grey_54-large>div>div{
background-image:url(https://www.blogblog.com/indie/mspin_black_large.svg)
}
.mspin-white-large>div>div{
background-image:url(https://www.blogblog.com/indie/mspin_white_large.svg)
}
.mspin-grey_54-large{
opacity:.54
}
@-webkit-keyframes mspin-singlecolor-large-film{
from{
-webkit-transform:translateX(0);
transform:translateX(0)
}
to{
-webkit-transform:translateX(-3888px);
transform:translateX(-3888px)
}
}
@keyframes mspin-singlecolor-large-film{
from{
-webkit-transform:translateX(0);
transform:translateX(0)
}
to{
-webkit-transform:translateX(-3888px);
transform:translateX(-3888px)
}
}
@-webkit-keyframes mspin-rotate{
from{
-webkit-transform:rotate(0);
transform:rotate(0)
}
to{
-webkit-transform:rotate(360deg);
transform:rotate(360deg)
}
}
@keyframes mspin-rotate{
from{
-webkit-transform:rotate(0);
transform:rotate(0)
}
to{
-webkit-transform:rotate(360deg);
transform:rotate(360deg)
}
}
@-webkit-keyframes mspin-revrot{
from{
-webkit-transform:rotate(0);
transform:rotate(0)
}
to{
-webkit-transform:rotate(-360deg);
transform:rotate(-360deg)
}
}
@keyframes mspin-revrot{
from{
-webkit-transform:rotate(0);
transform:rotate(0)
}
to{
-webkit-transform:rotate(-360deg);
transform:rotate(-360deg)
}
}
.skip-navigation{
background-color:#fff;
box-sizing:border-box;
color:#000;
display:block;
height:0;
left:0;
line-height:50px;
overflow:hidden;
padding-top:0;
position:fixed;
text-align:center;
top:0;
-webkit-transition:box-shadow .3s,height .3s,padding-top .3s;
transition:box-shadow .3s,height .3s,padding-top .3s;
width:100%;
z-index:900
}
.skip-navigation:focus{
box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);
height:50px
}
#main{
outline:0
}
.main-heading{
position:absolute;
clip:rect(1px,1px,1px,1px);
padding:0;
border:0;
height:1px;
width:1px;
overflow:hidden
}
.Attribution{
margin-top:1em;
text-align:center
}
.Attribution .blogger img,.Attribution .blogger svg{
vertical-align:bottom
}
.Attribution .blogger img{
margin-right:.5em
}
.Attribution div{
line-height:24px;
margin-top:.5em
}
.Attribution .copyright,.Attribution .image-attribution{
font-size:.7em;
margin-top:1.5em
}
.BLOG_mobile_video_class{
display:none
}
.bg-photo{
background-attachment:scroll!important
}
body .CSS_LIGHTBOX{
z-index:900
}
.extendable .show-less,.extendable .show-more{
border-color:#2196f3;
color:#2196f3;
margin-top:8px
}
.extendable .show-less.hidden,.extendable .show-more.hidden{
display:none
}
.inline-ad{
display:none;
max-width:100%;
overflow:hidden
}
.adsbygoogle{
display:block
}
#cookieChoiceInfo{
bottom:0;
top:auto
}
iframe.b-hbp-video{
border:0
}
.post-body img{
max-width:100%
}
.post-body iframe{
max-width:100%
}
.post-body a[imageanchor="1"]{
display:inline-block
}
.byline{
margin-right:1em
}
.byline:last-child{
margin-right:0
}
.link-copied-dialog{
max-width:520px;
outline:0
}
.link-copied-dialog .modal-dialog-buttons{
margin-top:8px
}
.link-copied-dialog .goog-buttonset-default{
background:0 0;
border:0
}
.link-copied-dialog .goog-buttonset-default:focus{
outline:0
}
.paging-control-container{
margin-bottom:16px
}
.paging-control-container .paging-control{
display:inline-block
}
.paging-control-container .comment-range-text::after,.paging-control-container .paging-control{
color:#2196f3
}
.paging-control-container .comment-range-text,.paging-control-container .paging-control{
margin-right:8px
}
.paging-control-container .comment-range-text::after,.paging-control-container .paging-control::after{
content:'\00B7';
cursor:default;
padding-left:8px;
pointer-events:none
}
.paging-control-container .comment-range-text:last-child::after,.paging-control-container .paging-control:last-child::after{
content:none
}
.byline.reactions iframe{
height:20px
}
.b-notification{
color:#000;
background-color:#fff;
border-bottom:solid 1px #000;
box-sizing:border-box;
padding:16px 32px;
text-align:center
}
.b-notification.visible{
-webkit-transition:margin-top .3s cubic-bezier(.4,0,.2,1);
transition:margin-top .3s cubic-bezier(.4,0,.2,1)
}
.b-notification.invisible{
position:absolute
}
.b-notification-close{
position:absolute;
right:8px;
top:8px
}
.no-posts-message{
line-height:40px;
text-align:center
}
@media screen and (max-width:800px){
body.item-view .post-body a[imageanchor="1"][style*="float: left;"],body.item-view .post-body a[imageanchor="1"][style*="float: right;"]{
float:none!important;
clear:none!important
}
body.item-view .post-body a[imageanchor="1"] img{
display:block;
height:auto;
margin:0 auto
}
body.item-view .post-body>.separator:first-child>a[imageanchor="1"]:first-child{
margin-top:20px
}
.post-body a[imageanchor]{
display:block
}
body.item-view .post-body a[imageanchor="1"]{
margin-left:0!important;
margin-right:0!important
}
body.item-view .post-body a[imageanchor="1"]+a[imageanchor="1"]{
margin-top:16px
}
}
.item-control{
display:none
}
#comments{
border-top:1px dashed rgba(0,0,0,.54);
margin-top:20px;
padding:20px
}
#comments .comment-thread ol{
margin:0;
padding-left:0;
padding-left:0
}
#comments .comment .comment-replybox-single,#comments .comment-thread .comment-replies{
margin-left:60px
}
#comments .comment-thread .thread-count{
display:none
}
#comments .comment{
list-style-type:none;
padding:0 0 30px;
position:relative
}
#comments .comment .comment{
padding-bottom:8px
}
.comment .avatar-image-container{
position:absolute
}
.comment .avatar-image-container img{
border-radius:50%
}
.avatar-image-container svg,.comment .avatar-image-container .avatar-icon{
border-radius:50%;
border:solid 1px #707070;
box-sizing:border-box;
fill:#707070;
height:35px;
margin:0;
padding:7px;
width:35px
}
.comment .comment-block{
margin-top:10px;
margin-left:60px;
padding-bottom:0
}
#comments .comment-author-header-wrapper{
margin-left:40px
}
#comments .comment .thread-expanded .comment-block{
padding-bottom:20px
}
#comments .comment .comment-header .user,#comments .comment .comment-header .user a{
color:#212121;
font-style:normal;
font-weight:700
}
#comments .comment .comment-actions{
bottom:0;
margin-bottom:15px;
position:absolute
}
#comments .comment .comment-actions>*{
margin-right:8px
}
#comments .comment .comment-header .datetime{
bottom:0;
color:rgba(33,33,33,.54);
display:inline-block;
font-size:13px;
font-style:italic;
margin-left:8px
}
#comments .comment .comment-footer .comment-timestamp a,#comments .comment .comment-header .datetime a{
color:rgba(33,33,33,.54)
}
#comments .comment .comment-content,.comment .comment-body{
margin-top:12px;
word-break:break-word
}
.comment-body{
margin-bottom:12px
}
#comments.embed[data-num-comments="0"]{
border:0;
margin-top:0;
padding-top:0
}
#comments.embed[data-num-comments="0"] #comment-post-message,#comments.embed[data-num-comments="0"] div.comment-form>p,#comments.embed[data-num-comments="0"] p.comment-footer{
display:none
}
#comment-editor-src{
display:none
}
.comments .comments-content .loadmore.loaded{
max-height:0;
opacity:0;
overflow:hidden
}
.extendable .remaining-items{
height:0;
overflow:hidden;
-webkit-transition:height .3s cubic-bezier(.4,0,.2,1);
transition:height .3s cubic-bezier(.4,0,.2,1)
}
.extendable .remaining-items.expanded{
height:auto
}
.svg-icon-24,.svg-icon-24-button{
cursor:pointer;
height:24px;
width:24px;
min-width:24px
}
.touch-icon{
margin:-12px;
padding:12px
}
.touch-icon:active,.touch-icon:focus{
background-color:rgba(153,153,153,.4);
border-radius:50%
}
svg:not(:root).touch-icon{
overflow:visible
}
html[dir=rtl] .rtl-reversible-icon{
-webkit-transform:scaleX(-1);
-ms-transform:scaleX(-1);
transform:scaleX(-1)
}
.svg-icon-24-button,.touch-icon-button{
background:0 0;
border:0;
margin:0;
outline:0;
padding:0
}
.touch-icon-button .touch-icon:active,.touch-icon-button .touch-icon:focus{
background-color:transparent
}
.touch-icon-button:active .touch-icon,.touch-icon-button:focus .touch-icon{
background-color:rgba(153,153,153,.4);
border-radius:50%
}
.Profile .default-avatar-wrapper .avatar-icon{
border-radius:50%;
border:solid 1px #707070;
box-sizing:border-box;
fill:#707070;
margin:0
}
.Profile .individual .default-avatar-wrapper .avatar-icon{
padding:25px
}
.Profile .individual .avatar-icon,.Profile .individual .profile-img{
height:120px;
width:120px
}
.Profile .team .default-avatar-wrapper .avatar-icon{
padding:8px
}
.Profile .team .avatar-icon,.Profile .team .default-avatar-wrapper,.Profile .team .profile-img{
height:40px;
width:40px
}
.snippet-container{
margin:0;
position:relative;
overflow:hidden
}
.snippet-fade{
bottom:0;
box-sizing:border-box;
position:absolute;
width:96px
}
.snippet-fade{
right:0
}
.snippet-fade:after{
content:'\2026'
}
.snippet-fade:after{
float:right
}
.post-bottom{
-webkit-box-align:center;
-webkit-align-items:center;
-ms-flex-align:center;
align-items:center;
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex;
-webkit-flex-wrap:wrap;
-ms-flex-wrap:wrap;
flex-wrap:wrap
}
.post-footer{
-webkit-box-flex:1;
-webkit-flex:1 1 auto;
-ms-flex:1 1 auto;
flex:1 1 auto;
-webkit-flex-wrap:wrap;
-ms-flex-wrap:wrap;
flex-wrap:wrap;
-webkit-box-ordinal-group:2;
-webkit-order:1;
-ms-flex-order:1;
order:1
}
.post-footer>*{
-webkit-box-flex:0;
-webkit-flex:0 1 auto;
-ms-flex:0 1 auto;
flex:0 1 auto
}
.post-footer .byline:last-child{
margin-right:1em
}
.jump-link{
-webkit-box-flex:0;
-webkit-flex:0 0 auto;
-ms-flex:0 0 auto;
flex:0 0 auto;
-webkit-box-ordinal-group:3;
-webkit-order:2;
-ms-flex-order:2;
order:2
}
.centered-top-container.sticky{
left:0;
position:fixed;
right:0;
top:0;
width:auto;
z-index:50;
-webkit-transition-property:opacity,-webkit-transform;
transition-property:opacity,-webkit-transform;
transition-property:transform,opacity;
transition-property:transform,opacity,-webkit-transform;
-webkit-transition-duration:.2s;
transition-duration:.2s;
-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);
transition-timing-function:cubic-bezier(.4,0,.2,1)
}
.centered-top-placeholder{
display:none
}
.collapsed-header .centered-top-placeholder{
display:block
}
.centered-top-container .Header .replaced h1,.centered-top-placeholder .Header .replaced h1{
display:none
}
.centered-top-container.sticky .Header .replaced h1{
display:block
}
.centered-top-container.sticky .Header .header-widget{
background:0 0
}
.centered-top-container.sticky .Header .header-image-wrapper{
display:none
}
.centered-top-container img,.centered-top-placeholder img{
max-width:100%
}
.collapsible{
-webkit-transition:height .3s cubic-bezier(.4,0,.2,1);
transition:height .3s cubic-bezier(.4,0,.2,1)
}
.collapsible,.collapsible>summary{
display:block;
overflow:hidden
}
.collapsible>:not(summary){
display:none
}
.collapsible[open]>:not(summary){
display:block
}
.collapsible:focus,.collapsible>summary:focus{
outline:0
}
.collapsible>summary{
cursor:pointer;
display:block;
padding:0
}
.collapsible:focus>summary,.collapsible>summary:focus{
background-color:transparent
}
.collapsible>summary::-webkit-details-marker{
display:none
}
.collapsible-title{
-webkit-box-align:center;
-webkit-align-items:center;
-ms-flex-align:center;
align-items:center;
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex
}
.collapsible-title .title{
-webkit-box-flex:1;
-webkit-flex:1 1 auto;
-ms-flex:1 1 auto;
flex:1 1 auto;
-webkit-box-ordinal-group:1;
-webkit-order:0;
-ms-flex-order:0;
order:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap
}
.collapsible-title .chevron-down,.collapsible[open] .collapsible-title .chevron-up{
display:block
}
.collapsible-title .chevron-up,.collapsible[open] .collapsible-title .chevron-down{
display:none
}
.flat-button{
cursor:pointer;
display:inline-block;
font-weight:700;
text-transform:uppercase;
border-radius:2px;
padding:8px;
margin:-8px
}
.flat-icon-button{
background:0 0;
border:0;
margin:0;
outline:0;
padding:0;
margin:-12px;
padding:12px;
cursor:pointer;
box-sizing:content-box;
display:inline-block;
line-height:0
}
.flat-icon-button,.flat-icon-button .splash-wrapper{
border-radius:50%
}
.flat-icon-button .splash.animate{
-webkit-animation-duration:.3s;
animation-duration:.3s
}
.overflowable-container{
max-height:46px;
overflow:hidden;
position:relative
}
.overflow-button{
cursor:pointer
}
#overflowable-dim-overlay{
background:0 0
}
.overflow-popup{
box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);
background-color:#ffffff;
left:0;
max-width:calc(100% - 32px);
position:absolute;
top:0;
visibility:hidden;
z-index:101
}
.overflow-popup ul{
list-style:none
}
.overflow-popup .tabs li,.overflow-popup li{
display:block;
height:auto
}
.overflow-popup .tabs li{
padding-left:0;
padding-right:0
}
.overflow-button.hidden,.overflow-popup .tabs li.hidden,.overflow-popup li.hidden{
display:none
}
.pill-button{
background:0 0;
border:1px solid;
border-radius:12px;
cursor:pointer;
display:inline-block;
padding:4px 16px;
text-transform:uppercase
}
.ripple{
position:relative
}
.ripple>*{
z-index:1
}
.splash-wrapper{
bottom:0;
left:0;
overflow:hidden;
pointer-events:none;
position:absolute;
right:0;
top:0;
z-index:0
}
.splash{
background:#ccc;
border-radius:100%;
display:block;
opacity:.6;
position:absolute;
-webkit-transform:scale(0);
-ms-transform:scale(0);
transform:scale(0)
}
.splash.animate{
-webkit-animation:ripple-effect .4s linear;
animation:ripple-effect .4s linear
}
@-webkit-keyframes ripple-effect{
100%{
opacity:0;
-webkit-transform:scale(2.5);
transform:scale(2.5)
}
}
@keyframes ripple-effect{
100%{
opacity:0;
-webkit-transform:scale(2.5);
transform:scale(2.5)
}
}
.search{
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex;
line-height:24px;
width:24px
}
.search.focused{
width:100%
}
.search.focused .section{
width:100%
}
.search form{
z-index:101
}
.search h3{
display:none
}
.search form{
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex;
-webkit-box-flex:1;
-webkit-flex:1 0 0;
-ms-flex:1 0 0px;
flex:1 0 0;
border-bottom:solid 1px transparent;
padding-bottom:8px
}
.search form>*{
display:none
}
.search.focused form>*{
display:block
}
.search .search-input label{
display:none
}
.centered-top-placeholder.cloned .search form{
z-index:30
}
.search.focused form{
border-color:#ffffff;
position:relative;
width:auto
}
.collapsed-header .centered-top-container .search.focused form{
border-bottom-color:transparent
}
.search-expand{
-webkit-box-flex:0;
-webkit-flex:0 0 auto;
-ms-flex:0 0 auto;
flex:0 0 auto
}
.search-expand-text{
display:none
}
.search-close{
display:inline;
vertical-align:middle
}
.search-input{
-webkit-box-flex:1;
-webkit-flex:1 0 1px;
-ms-flex:1 0 1px;
flex:1 0 1px
}
.search-input input{
background:0 0;
border:0;
box-sizing:border-box;
color:#ffffff;
display:inline-block;
outline:0;
width:calc(100% - 48px)
}
.search-input input.no-cursor{
color:transparent;
text-shadow:0 0 0 #ffffff
}
.collapsed-header .centered-top-container .search-action,.collapsed-header .centered-top-container .search-input input{
color:#212121
}
.collapsed-header .centered-top-container .search-input input.no-cursor{
color:transparent;
text-shadow:0 0 0 #212121
}
.collapsed-header .centered-top-container .search-input input.no-cursor:focus,.search-input input.no-cursor:focus{
outline:0
}
.search-focused>*{
visibility:hidden
}
.search-focused .search,.search-focused .search-icon{
visibility:visible
}
.search.focused .search-action{
display:block
}
.search.focused .search-action:disabled{
opacity:.3
}
.widget.Sharing .sharing-button{
display:none
}
.widget.Sharing .sharing-buttons li{
padding:0
}
.widget.Sharing .sharing-buttons li span{
display:none
}
.post-share-buttons{
position:relative
}
.centered-bottom .share-buttons .svg-icon-24,.share-buttons .svg-icon-24{
fill:#212121
}
.sharing-open.touch-icon-button:active .touch-icon,.sharing-open.touch-icon-button:focus .touch-icon{
background-color:transparent
}
.share-buttons{
background-color:#ffffff;
border-radius:2px;
box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);
color:#212121;
list-style:none;
margin:0;
padding:8px 0;
position:absolute;
top:-11px;
min-width:200px;
z-index:101
}
.share-buttons.hidden{
display:none
}
.sharing-button{
background:0 0;
border:0;
margin:0;
outline:0;
padding:0;
cursor:pointer
}
.share-buttons li{
margin:0;
height:48px
}
.share-buttons li:last-child{
margin-bottom:0
}
.share-buttons li .sharing-platform-button{
box-sizing:border-box;
cursor:pointer;
display:block;
height:100%;
margin-bottom:0;
padding:0 16px;
position:relative;
width:100%
}
.share-buttons li .sharing-platform-button:focus,.share-buttons li .sharing-platform-button:hover{
background-color:rgba(128,128,128,.1);
outline:0
}
.share-buttons li svg[class*=" sharing-"],.share-buttons li svg[class^=sharing-]{
position:absolute;
top:10px
}
.share-buttons li span.sharing-platform-button{
position:relative;
top:0
}
.share-buttons li .platform-sharing-text{
display:block;
font-size:16px;
line-height:48px;
white-space:nowrap
}
.share-buttons li .platform-sharing-text{
margin-left:56px
}
.sidebar-container{
background-color:#ffffff;
max-width:284px;
overflow-y:auto;
-webkit-transition-property:-webkit-transform;
transition-property:-webkit-transform;
transition-property:transform;
transition-property:transform,-webkit-transform;
-webkit-transition-duration:.3s;
transition-duration:.3s;
-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);
transition-timing-function:cubic-bezier(0,0,.2,1);
width:284px;
z-index:101;
-webkit-overflow-scrolling:touch
}
.sidebar-container .navigation{
line-height:0;
padding:16px
}
.sidebar-container .sidebar-back{
cursor:pointer
}
.sidebar-container .widget{
background:0 0;
margin:0 16px;
padding:16px 0
}
.sidebar-container .widget .title{
color:#212121;
margin:0
}
.sidebar-container .widget ul{
list-style:none;
margin:0;
padding:0
}
.sidebar-container .widget ul ul{
margin-left:1em
}
.sidebar-container .widget li{
font-size:16px;
line-height:normal
}
.sidebar-container .widget+.widget{
border-top:1px dashed #cccccc
}
.BlogArchive li{
margin:16px 0
}
.BlogArchive li:last-child{
margin-bottom:0
}
.Label li a{
display:inline-block
}
.BlogArchive .post-count,.Label .label-count{
float:right;
margin-left:.25em
}
.BlogArchive .post-count::before,.Label .label-count::before{
content:'('
}
.BlogArchive .post-count::after,.Label .label-count::after{
content:')'
}
.widget.Translate .skiptranslate>div{
display:block!important
}
.widget.Profile .profile-link{
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex
}
.widget.Profile .team-member .default-avatar-wrapper,.widget.Profile .team-member .profile-img{
-webkit-box-flex:0;
-webkit-flex:0 0 auto;
-ms-flex:0 0 auto;
flex:0 0 auto;
margin-right:1em
}
.widget.Profile .individual .profile-link{
-webkit-box-orient:vertical;
-webkit-box-direction:normal;
-webkit-flex-direction:column;
-ms-flex-direction:column;
flex-direction:column
}
.widget.Profile .team .profile-link .profile-name{
-webkit-align-self:center;
-ms-flex-item-align:center;
-ms-grid-row-align:center;
align-self:center;
display:block;
-webkit-box-flex:1;
-webkit-flex:1 1 auto;
-ms-flex:1 1 auto;
flex:1 1 auto
}
.dim-overlay{
background-color:rgba(0,0,0,.54);
z-index:100
}
body.sidebar-visible{
overflow-y:hidden
}
@media screen and (max-width:1439px){
.sidebar-container{
bottom:0;
position:fixed;
top:0;
left:0;
right:auto
}
.sidebar-container.sidebar-invisible{
-webkit-transition-timing-function:cubic-bezier(.4,0,.6,1);
transition-timing-function:cubic-bezier(.4,0,.6,1);
-webkit-transform:translateX(-284px);
-ms-transform:translateX(-284px);
transform:translateX(-284px)
}
}
@media screen and (min-width:1440px){
.sidebar-container{
position:absolute;
top:0;
left:0;
right:auto
}
.sidebar-container .navigation{
display:none
}
}
.dialog{
box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);
background:#ffffff;
box-sizing:border-box;
color:#757575;
padding:30px;
position:fixed;
text-align:center;
width:calc(100% - 24px);
z-index:101
}
.dialog input[type=email],.dialog input[type=text]{
background-color:transparent;
border:0;
border-bottom:solid 1px rgba(117,117,117,.12);
color:#757575;
display:block;
font-family:Roboto, sans-serif;
font-size:16px;
line-height:24px;
margin:auto;
padding-bottom:7px;
outline:0;
text-align:center;
width:100%
}
.dialog input[type=email]::-webkit-input-placeholder,.dialog input[type=text]::-webkit-input-placeholder{
color:#757575
}
.dialog input[type=email]::-moz-placeholder,.dialog input[type=text]::-moz-placeholder{
color:#757575
}
.dialog input[type=email]:-ms-input-placeholder,.dialog input[type=text]:-ms-input-placeholder{
color:#757575
}
.dialog input[type=email]::placeholder,.dialog input[type=text]::placeholder{
color:#757575
}
.dialog input[type=email]:focus,.dialog input[type=text]:focus{
border-bottom:solid 2px #2196f3;
padding-bottom:6px
}
.dialog input.no-cursor{
color:transparent;
text-shadow:0 0 0 #757575
}
.dialog input.no-cursor:focus{
outline:0
}
.dialog input.no-cursor:focus{
outline:0
}
.dialog input[type=submit]{
font-family:Roboto, sans-serif
}
.dialog .goog-buttonset-default{
color:#2196f3
}
.subscribe-popup{
max-width:364px
}
.subscribe-popup h3{
color:#212121;
font-size:1.8em;
margin-top:0
}
.subscribe-popup .FollowByEmail h3{
display:none
}
.subscribe-popup .FollowByEmail .follow-by-email-submit{
color:#2196f3;
display:inline-block;
margin:0 auto;
margin-top:24px;
width:auto;
white-space:normal
}
.subscribe-popup .FollowByEmail .follow-by-email-submit:disabled{
cursor:default;
opacity:.3
}
@media (max-width:800px){
.blog-name div.widget.Subscribe{
margin-bottom:16px
}
body.item-view .blog-name div.widget.Subscribe{
margin:8px auto 16px auto;
width:100%
}
}
.tabs{
list-style:none
}
.tabs li{
display:inline-block
}
.tabs li a{
cursor:pointer;
display:inline-block;
font-weight:700;
text-transform:uppercase;
padding:12px 8px
}
.tabs .selected{
border-bottom:4px solid #ffffff
}
.tabs .selected a{
color:#ffffff
}
body#layout .bg-photo,body#layout .bg-photo-overlay{
display:none
}
body#layout .page_body{
padding:0;
position:relative;
top:0
}
body#layout .page{
display:inline-block;
left:inherit;
position:relative;
vertical-align:top;
width:540px
}
body#layout .centered{
max-width:954px
}
body#layout .navigation{
display:none
}
body#layout .sidebar-container{
display:inline-block;
width:40%
}
body#layout .hamburger-menu,body#layout .search{
display:none
}
.centered-top-container .svg-icon-24,body.collapsed-header .centered-top-placeholder .svg-icon-24{
fill:#ffffff
}
.sidebar-container .svg-icon-24{
fill:#707070
}
.centered-bottom .svg-icon-24,body.collapsed-header .centered-top-container .svg-icon-24{
fill:#707070
}
.centered-bottom .share-buttons .svg-icon-24,.share-buttons .svg-icon-24{
fill:#212121
}
body{
background-color:#eeeeee;
color:#757575;
font:15px Roboto, sans-serif;
margin:0;
min-height:100vh
}
img{
max-width:100%
}
h3{
color:#757575;
font-size:16px
}
a{
text-decoration:none;
color:#2196f3
}
a:visited{
color:#2196f3
}
a:hover{
color:#2196f3
}
blockquote{
color:#444444;
font:italic normal 12px 'Times New Roman', Times, FreeSerif, serif;
font-size:x-large;
text-align:center
}
.pill-button{
font-size:12px
}
.bg-photo-container{
height:480px;
overflow:hidden;
position:absolute;
width:100%;
z-index:1
}
.bg-photo{
background:#eeeeee url(https://themes.googleusercontent.com/image?id=L1lcAxxz0CLgsDzixEprHJ2F38TyEjCyE3RSAjynQDks0lT1BDc1OxXKaTEdLc89HPvdB11X9FDw) no-repeat scroll top center /* Credit: Michael Elkan (http://www.offset.com/photos/394244) */;;
background-attachment:scroll;
background-size:cover;
-webkit-filter:blur(0px);
filter:blur(0px);
height:calc(100% + 2 * 0px);
left:0px;
position:absolute;
top:0px;
width:calc(100% + 2 * 0px)
}
.bg-photo-overlay{
background:rgba(0,0,0,.26);
background-size:cover;
height:480px;
position:absolute;
width:100%;
z-index:2
}
.hamburger-menu{
float:left;
margin-top:0
}
.sticky .hamburger-menu{
float:none;
position:absolute
}
.search{
border-bottom:solid 1px rgba(255, 255, 255, 0);
float:right;
position:relative;
-webkit-transition-property:width;
transition-property:width;
-webkit-transition-duration:.5s;
transition-duration:.5s;
-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);
transition-timing-function:cubic-bezier(.4,0,.2,1);
z-index:101
}
.search .dim-overlay{
background-color:transparent
}
.search form{
height:36px;
-webkit-transition-property:border-color;
transition-property:border-color;
-webkit-transition-delay:.5s;
transition-delay:.5s;
-webkit-transition-duration:.2s;
transition-duration:.2s;
-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);
transition-timing-function:cubic-bezier(.4,0,.2,1)
}
.search.focused{
width:calc(100% - 48px)
}
.search.focused form{
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex;
-webkit-box-flex:1;
-webkit-flex:1 0 1px;
-ms-flex:1 0 1px;
flex:1 0 1px;
border-color:#ffffff;
margin-left:-24px;
padding-left:36px;
position:relative;
width:auto
}
.item-view .search,.sticky .search{
right:0;
float:none;
margin-left:0;
position:absolute
}
.item-view .search.focused,.sticky .search.focused{
width:calc(100% - 50px)
}
.item-view .search.focused form,.sticky .search.focused form{
border-bottom-color:#757575
}
.centered-top-placeholder.cloned .search form{
z-index:30
}
.search_button{
-webkit-box-flex:0;
-webkit-flex:0 0 24px;
-ms-flex:0 0 24px;
flex:0 0 24px;
-webkit-box-orient:vertical;
-webkit-box-direction:normal;
-webkit-flex-direction:column;
-ms-flex-direction:column;
flex-direction:column
}
.search_button svg{
margin-top:0
}
.search-input{
height:48px
}
.search-input input{
display:block;
color:#ffffff;
font:16px Roboto, sans-serif;
height:48px;
line-height:48px;
padding:0;
width:100%
}
.search-input input::-webkit-input-placeholder{
color:#ffffff;
opacity:.3
}
.search-input input::-moz-placeholder{
color:#ffffff;
opacity:.3
}
.search-input input:-ms-input-placeholder{
color:#ffffff;
opacity:.3
}
.search-input input::placeholder{
color:#ffffff;
opacity:.3
}
.search-action{
background:0 0;
border:0;
color:#ffffff;
cursor:pointer;
display:none;
height:48px;
margin-top:0
}
.sticky .search-action{
color:#757575
}
.search.focused .search-action{
display:block
}
.search.focused .search-action:disabled{
opacity:.3
}
.page_body{
position:relative;
z-index:20
}
.page_body .widget{
margin-bottom:16px
}
.page_body .centered{
box-sizing:border-box;
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex;
-webkit-box-orient:vertical;
-webkit-box-direction:normal;
-webkit-flex-direction:column;
-ms-flex-direction:column;
flex-direction:column;
margin:0 auto;
max-width:922px;
min-height:100vh;
padding:24px 0
}
.page_body .centered>*{
-webkit-box-flex:0;
-webkit-flex:0 0 auto;
-ms-flex:0 0 auto;
flex:0 0 auto
}
.page_body .centered>#footer{
margin-top:auto
}
.blog-name{
margin:24px 0 16px 0
}
.item-view .blog-name,.sticky .blog-name{
box-sizing:border-box;
margin-left:36px;
min-height:48px;
opacity:1;
padding-top:12px
}
.blog-name .subscribe-section-container{
margin-bottom:32px;
text-align:center;
-webkit-transition-property:opacity;
transition-property:opacity;
-webkit-transition-duration:.5s;
transition-duration:.5s
}
.item-view .blog-name .subscribe-section-container,.sticky .blog-name .subscribe-section-container{
margin:0 0 8px 0
}
.blog-name .PageList{
margin-top:16px;
padding-top:8px;
text-align:center
}
.blog-name .PageList .overflowable-contents{
width:100%
}
.blog-name .PageList h3.title{
color:#ffffff;
margin:8px auto;
text-align:center;
width:100%
}
.centered-top-container .blog-name{
-webkit-transition-property:opacity;
transition-property:opacity;
-webkit-transition-duration:.5s;
transition-duration:.5s
}
.item-view .return_link{
margin-bottom:12px;
margin-top:12px;
position:absolute
}
.item-view .blog-name{
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex;
-webkit-flex-wrap:wrap;
-ms-flex-wrap:wrap;
flex-wrap:wrap;
margin:0 48px 27px 48px
}
.item-view .subscribe-section-container{
-webkit-box-flex:0;
-webkit-flex:0 0 auto;
-ms-flex:0 0 auto;
flex:0 0 auto
}
.item-view #header,.item-view .Header{
margin-bottom:5px;
margin-right:15px
}
.item-view .sticky .Header{
margin-bottom:0
}
.item-view .Header p{
margin:10px 0 0 0;
text-align:left
}
.item-view .post-share-buttons-bottom{
margin-right:16px
}
.sticky{
background:#ffffff;
box-shadow:0 0 20px 0 rgba(0,0,0,.7);
box-sizing:border-box;
margin-left:0
}
.sticky #header{
margin-bottom:8px;
margin-right:8px
}
.sticky .centered-top{
margin:4px auto;
max-width:890px;
min-height:48px
}
.sticky .blog-name{
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex;
margin:0 48px
}
.sticky .blog-name #header{
-webkit-box-flex:0;
-webkit-flex:0 1 auto;
-ms-flex:0 1 auto;
flex:0 1 auto;
-webkit-box-ordinal-group:2;
-webkit-order:1;
-ms-flex-order:1;
order:1;
overflow:hidden
}
.sticky .blog-name .subscribe-section-container{
-webkit-box-flex:0;
-webkit-flex:0 0 auto;
-ms-flex:0 0 auto;
flex:0 0 auto;
-webkit-box-ordinal-group:3;
-webkit-order:2;
-ms-flex-order:2;
order:2
}
.sticky .Header h1{
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
margin-right:-10px;
margin-bottom:-10px;
padding-right:10px;
padding-bottom:10px
}
.sticky .Header p{
display:none
}
.sticky .PageList{
display:none
}
.search-focused>*{
visibility:visible
}
.search-focused .hamburger-menu{
visibility:visible
}
.item-view .search-focused .blog-name,.sticky .search-focused .blog-name{
opacity:0
}
.centered-bottom,.centered-top-container,.centered-top-placeholder{
padding:0 16px
}
.centered-top{
position:relative
}
.item-view .centered-top.search-focused .subscribe-section-container,.sticky .centered-top.search-focused .subscribe-section-container{
opacity:0
}
.page_body.has-vertical-ads .centered .centered-bottom{
display:inline-block;
width:calc(100% - 176px)
}
.Header h1{
color:#ffffff;
font:bold 45px Roboto, sans-serif;
line-height:normal;
margin:0 0 13px 0;
text-align:center;
width:100%
}
.Header h1 a,.Header h1 a:hover,.Header h1 a:visited{
color:#ffffff
}
.item-view .Header h1,.sticky .Header h1{
font-size:24px;
line-height:24px;
margin:0;
text-align:left
}
.sticky .Header h1{
color:#757575
}
.sticky .Header h1 a,.sticky .Header h1 a:hover,.sticky .Header h1 a:visited{
color:#757575
}
.Header p{
color:#ffffff;
margin:0 0 13px 0;
opacity:.8;
text-align:center
}
.widget .title{
line-height:28px
}
.BlogArchive li{
font-size:16px
}
.BlogArchive .post-count{
color:#757575
}
#page_body .FeaturedPost,.Blog .blog-posts .post-outer-container{
background:#ffffff;
min-height:40px;
padding:30px 40px;
width:auto
}
.Blog .blog-posts .post-outer-container:last-child{
margin-bottom:0
}
.Blog .blog-posts .post-outer-container .post-outer{
border:0;
position:relative;
padding-bottom:.25em
}
.post-outer-container{
margin-bottom:16px
}
.post:first-child{
margin-top:0
}
.post .thumb{
float:left;
height:20%;
width:20%
}
.post-share-buttons-bottom,.post-share-buttons-top{
float:right
}
.post-share-buttons-bottom{
margin-right:24px
}
.post-footer,.post-header{
clear:left;
color:rgba(0, 0, 0, 0.54);
margin:0;
width:inherit
}
.blog-pager{
text-align:center
}
.blog-pager a{
color:#2196f3
}
.blog-pager a:visited{
color:#2196f3
}
.blog-pager a:hover{
color:#2196f3
}
.post-title{
font:normal bold 30px Roboto, sans-serif;
float:left;
margin:0 0 8px 0;
max-width:calc(100% - 48px)
}
.post-title a{
font:bold 30px Roboto, sans-serif
}
.post-title,.post-title a,.post-title a:hover,.post-title a:visited{
color:#212121
}
.post-body{
color:#757575;
font:normal normal 17px Roboto, sans-serif;
line-height:1.6em;
margin:1.5em 0 2em 0;
display:block
}
.post-body img{
height:inherit
}
.post-body .snippet-thumbnail{
float:left;
margin:0;
margin-right:2em;
max-height:128px;
max-width:128px
}
.post-body .snippet-thumbnail img{
max-width:100%
}
.main .FeaturedPost .widget-content{
border:0;
position:relative;
padding-bottom:.25em
}
.FeaturedPost img{
margin-top:2em
}
.FeaturedPost .snippet-container{
margin:2em 0
}
.FeaturedPost .snippet-container p{
margin:0
}
.FeaturedPost .snippet-thumbnail{
float:none;
height:auto;
margin-bottom:2em;
margin-right:0;
overflow:hidden;
max-height:calc(600px + 2em);
max-width:100%;
text-align:center;
width:100%
}
.FeaturedPost .snippet-thumbnail img{
max-width:100%;
width:100%
}
.byline{
color:rgba(0, 0, 0, 0.54);
display:inline-block;
line-height:24px;
margin-top:8px;
vertical-align:top
}
.byline.post-author:first-child{
margin-right:0
}
.byline.reactions .reactions-label{
line-height:22px;
vertical-align:top
}
.byline.post-share-buttons{
position:relative;
display:inline-block;
margin-top:0;
width:100%
}
.byline.post-share-buttons .sharing{
float:right
}
.flat-button.ripple:hover{
background-color:rgba(33,150,243,.12)
}
.flat-button.ripple .splash{
background-color:rgba(33,150,243,.4)
}
a.timestamp-link,a:active.timestamp-link,a:visited.timestamp-link{
color:inherit;
font:inherit;
text-decoration:inherit
}
.post-share-buttons{
margin-left:0
}
.clear-sharing{
min-height:24px
}
.comment-link{
color:#2196f3;
position:relative
}
.comment-link .num_comments{
margin-left:8px;
vertical-align:top
}
#comment-holder .continue{
display:none
}
#comment-editor{
margin-bottom:20px;
margin-top:20px
}
#comments .comment-form h4,#comments h3.title{
position:absolute;
clip:rect(1px,1px,1px,1px);
padding:0;
border:0;
height:1px;
width:1px;
overflow:hidden
}
.post-filter-message{
background-color:rgba(0,0,0,.7);
color:#fff;
display:table;
margin-bottom:16px;
width:100%
}
.post-filter-message div{
display:table-cell;
padding:15px 28px
}
.post-filter-message div:last-child{
padding-left:0;
text-align:right
}
.post-filter-message a{
white-space:nowrap
}
.post-filter-message .search-label,.post-filter-message .search-query{
font-weight:700;
color:#2196f3
}
#blog-pager{
margin:2em 0
}
#blog-pager a{
color:#2196f3;
font-size:14px
}
.subscribe-button{
border-color:#ffffff;
color:#ffffff
}
.sticky .subscribe-button{
border-color:#757575;
color:#757575
}
.tabs{
margin:0 auto;
padding:0
}
.tabs li{
margin:0 8px;
vertical-align:top
}
.tabs .overflow-button a,.tabs li a{
color:#cccccc;
font:700 normal 15px Roboto, sans-serif;
line-height:18px
}
.tabs .overflow-button a{
padding:12px 8px
}
.overflow-popup .tabs li{
text-align:left
}
.overflow-popup li a{
color:#757575;
display:block;
padding:8px 20px
}
.overflow-popup li.selected a{
color:#212121
}
a.report_abuse{
font-weight:400
}
.Label li,.Label span.label-size,.byline.post-labels a{
background-color:#f7f7f7;
border:1px solid #f7f7f7;
border-radius:15px;
display:inline-block;
margin:4px 4px 4px 0;
padding:3px 8px
}
.Label a,.byline.post-labels a{
color:rgba(0,0,0,0.54)
}
.Label ul{
list-style:none;
padding:0
}
.PopularPosts{
background-color:#eeeeee;
padding:30px 40px
}
.PopularPosts .item-content{
color:#757575;
margin-top:24px
}
.PopularPosts a,.PopularPosts a:hover,.PopularPosts a:visited{
color:#2196f3
}
.PopularPosts .post-title,.PopularPosts .post-title a,.PopularPosts .post-title a:hover,.PopularPosts .post-title a:visited{
color:#212121;
font-size:18px;
font-weight:700;
line-height:24px
}
.PopularPosts,.PopularPosts h3.title a{
color:#757575;
font:normal normal 17px Roboto, sans-serif
}
.main .PopularPosts{
padding:16px 40px
}
.PopularPosts h3.title{
font-size:14px;
margin:0
}
.PopularPosts h3.post-title{
margin-bottom:0
}
.PopularPosts .byline{
color:rgba(0, 0, 0, 0.54)
}
.PopularPosts .jump-link{
float:right;
margin-top:16px
}
.PopularPosts .post-header .byline{
font-size:.9em;
font-style:italic;
margin-top:6px
}
.PopularPosts ul{
list-style:none;
padding:0;
margin:0
}
.PopularPosts .post{
padding:20px 0
}
.PopularPosts .post+.post{
border-top:1px dashed #cccccc
}
.PopularPosts .item-thumbnail{
float:left;
margin-right:32px
}
.PopularPosts .item-thumbnail img{
height:88px;
padding:0;
width:88px
}
.inline-ad{
margin-bottom:16px
}
.desktop-ad .inline-ad{
display:block
}
.adsbygoogle{
overflow:hidden
}
.vertical-ad-container{
float:right;
margin-right:16px;
width:128px
}
.vertical-ad-container .AdSense+.AdSense{
margin-top:16px
}
.inline-ad-placeholder,.vertical-ad-placeholder{
background:#ffffff;
border:1px solid #000;
opacity:.9;
vertical-align:middle;
text-align:center
}
.inline-ad-placeholder span,.vertical-ad-placeholder span{
margin-top:290px;
display:block;
text-transform:uppercase;
font-weight:700;
color:#212121
}
.vertical-ad-placeholder{
height:600px
}
.vertical-ad-placeholder span{
margin-top:290px;
padding:0 40px
}
.inline-ad-placeholder{
height:90px
}
.inline-ad-placeholder span{
margin-top:36px
}
.Attribution{
color:#757575
}
.Attribution a,.Attribution a:hover,.Attribution a:visited{
color:#2196f3
}
.Attribution svg{
fill:#707070
}
.sidebar-container{
box-shadow:1px 1px 3px rgba(0,0,0,.1)
}
.sidebar-container,.sidebar-container .sidebar_bottom{
background-color:#ffffff
}
.sidebar-container .navigation,.sidebar-container .sidebar_top_wrapper{
background-color:#ffffff
}
.sidebar-container .sidebar_top{
overflow:auto
}
.sidebar-container .sidebar_bottom{
width:100%;
padding-top:16px
}
.sidebar-container .widget:first-child{
padding-top:0
}
.sidebar_top .widget.Profile{
padding-bottom:16px
}
.widget.Profile{
margin:0;
width:100%
}
.widget.Profile h2{
display:none
}
.widget.Profile h3.title{
color:rgba(0,0,0,0.52);
margin:16px 32px
}
.widget.Profile .individual{
text-align:center
}
.widget.Profile .individual .profile-link{
padding:1em
}
.widget.Profile .individual .default-avatar-wrapper .avatar-icon{
margin:auto
}
.widget.Profile .team{
margin-bottom:32px;
margin-left:32px;
margin-right:32px
}
.widget.Profile ul{
list-style:none;
padding:0
}
.widget.Profile li{
margin:10px 0
}
.widget.Profile .profile-img{
border-radius:50%;
float:none
}
.widget.Profile .profile-link{
color:#212121;
font-size:.9em;
margin-bottom:1em;
opacity:.87;
overflow:hidden
}
.widget.Profile .profile-link.visit-profile{
border-style:solid;
border-width:1px;
border-radius:12px;
cursor:pointer;
font-size:12px;
font-weight:400;
padding:5px 20px;
display:inline-block;
line-height:normal
}
.widget.Profile dd{
color:rgba(0, 0, 0, 0.54);
margin:0 16px
}
.widget.Profile location{
margin-bottom:1em
}
.widget.Profile .profile-textblock{
font-size:14px;
line-height:24px;
position:relative
}
body.sidebar-visible .page_body{
overflow-y:scroll
}
body.sidebar-visible .bg-photo-container{
overflow-y:scroll
}
@media screen and (min-width:1440px){
.sidebar-container{
margin-top:480px;
min-height:calc(100% - 480px);
overflow:visible;
z-index:32
}
.sidebar-container .sidebar_top_wrapper{
background-color:#f7f7f7;
height:480px;
margin-top:-480px
}
.sidebar-container .sidebar_top{
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex;
height:480px;
-webkit-box-orient:horizontal;
-webkit-box-direction:normal;
-webkit-flex-direction:row;
-ms-flex-direction:row;
flex-direction:row;
max-height:480px
}
.sidebar-container .sidebar_bottom{
max-width:284px;
width:284px
}
body.collapsed-header .sidebar-container{
z-index:15
}
.sidebar-container .sidebar_top:empty{
display:none
}
.sidebar-container .sidebar_top>:only-child{
-webkit-box-flex:0;
-webkit-flex:0 0 auto;
-ms-flex:0 0 auto;
flex:0 0 auto;
-webkit-align-self:center;
-ms-flex-item-align:center;
-ms-grid-row-align:center;
align-self:center;
width:100%
}
.sidebar_top_wrapper.no-items{
display:none
}
}
.post-snippet.snippet-container{
max-height:120px
}
.post-snippet .snippet-item{
line-height:24px
}
.post-snippet .snippet-fade{
background:-webkit-linear-gradient(left,#ffffff 0,#ffffff 20%,rgba(255, 255, 255, 0) 100%);
background:linear-gradient(to left,#ffffff 0,#ffffff 20%,rgba(255, 255, 255, 0) 100%);
color:#757575;
height:24px
}
.popular-posts-snippet.snippet-container{
max-height:72px
}
.popular-posts-snippet .snippet-item{
line-height:24px
}
.PopularPosts .popular-posts-snippet .snippet-fade{
color:#757575;
height:24px
}
.main .popular-posts-snippet .snippet-fade{
background:-webkit-linear-gradient(left,#eeeeee 0,#eeeeee 20%,rgba(238, 238, 238, 0) 100%);
background:linear-gradient(to left,#eeeeee 0,#eeeeee 20%,rgba(238, 238, 238, 0) 100%)
}
.sidebar_bottom .popular-posts-snippet .snippet-fade{
background:-webkit-linear-gradient(left,#ffffff 0,#ffffff 20%,rgba(255, 255, 255, 0) 100%);
background:linear-gradient(to left,#ffffff 0,#ffffff 20%,rgba(255, 255, 255, 0) 100%)
}
.profile-snippet.snippet-container{
max-height:192px
}
.has-location .profile-snippet.snippet-container{
max-height:144px
}
.profile-snippet .snippet-item{
line-height:24px
}
.profile-snippet .snippet-fade{
background:-webkit-linear-gradient(left,#ffffff 0,#ffffff 20%,rgba(255, 255, 255, 0) 100%);
background:linear-gradient(to left,#ffffff 0,#ffffff 20%,rgba(255, 255, 255, 0) 100%);
color:rgba(0, 0, 0, 0.54);
height:24px
}
@media screen and (min-width:1440px){
.profile-snippet .snippet-fade{
background:-webkit-linear-gradient(left,#f7f7f7 0,#f7f7f7 20%,rgba(247, 247, 247, 0) 100%);
background:linear-gradient(to left,#f7f7f7 0,#f7f7f7 20%,rgba(247, 247, 247, 0) 100%)
}
}
@media screen and (max-width:800px){
.blog-name{
margin-top:0
}
body.item-view .blog-name{
margin:0 48px
}
.centered-bottom{
padding:8px
}
body.item-view .centered-bottom{
padding:0
}
.page_body .centered{
padding:10px 0
}
body.item-view #header,body.item-view .widget.Header{
margin-right:0
}
body.collapsed-header .centered-top-container .blog-name{
display:block
}
body.collapsed-header .centered-top-container .widget.Header h1{
text-align:center
}
.widget.Header header{
padding:0
}
.widget.Header h1{
font-size:24px;
line-height:24px;
margin-bottom:13px
}
body.item-view .widget.Header h1{
text-align:center
}
body.item-view .widget.Header p{
text-align:center
}
.blog-name .widget.PageList{
padding:0
}
body.item-view .centered-top{
margin-bottom:5px
}
.search-action,.search-input{
margin-bottom:-8px
}
.search form{
margin-bottom:8px
}
body.item-view .subscribe-section-container{
margin:5px 0 0 0;
width:100%
}
#page_body.section div.widget.FeaturedPost,div.widget.PopularPosts{
padding:16px
}
div.widget.Blog .blog-posts .post-outer-container{
padding:16px
}
div.widget.Blog .blog-posts .post-outer-container .post-outer{
padding:0
}
.post:first-child{
margin:0
}
.post-body .snippet-thumbnail{
margin:0 3vw 3vw 0
}
.post-body .snippet-thumbnail img{
height:20vw;
width:20vw;
max-height:128px;
max-width:128px
}
div.widget.PopularPosts div.item-thumbnail{
margin:0 3vw 3vw 0
}
div.widget.PopularPosts div.item-thumbnail img{
height:20vw;
width:20vw;
max-height:88px;
max-width:88px
}
.post-title{
line-height:1
}
.post-title,.post-title a{
font-size:20px
}
#page_body.section div.widget.FeaturedPost h3 a{
font-size:22px
}
.mobile-ad .inline-ad{
display:block
}
.page_body.has-vertical-ads .vertical-ad-container,.page_body.has-vertical-ads .vertical-ad-container ins{
display:none
}
.page_body.has-vertical-ads .centered .centered-bottom,.page_body.has-vertical-ads .centered .centered-top{
display:block;
width:auto
}
div.post-filter-message div{
padding:8px 16px
}
}
@media screen and (min-width:1440px){
body{
position:relative
}
body.item-view .blog-name{
margin-left:48px
}
.page_body{
margin-left:284px
}
.search{
margin-left:0
}
.search.focused{
width:100%
}
.sticky{
padding-left:284px
}
.hamburger-menu{
display:none
}
body.collapsed-header .page_body .centered-top-container{
padding-left:284px;
padding-right:0;
width:100%
}
body.collapsed-header .centered-top-container .search.focused{
width:100%
}
body.collapsed-header .centered-top-container .blog-name{
margin-left:0
}
body.collapsed-header.item-view .centered-top-container .search.focused{
width:calc(100% - 50px)
}
body.collapsed-header.item-view .centered-top-container .blog-name{
margin-left:40px
}
}
--></style>
<style id='template-skin-1' type='text/css'><!--
body#layout .hidden,
body#layout .invisible {
display: inherit;
}
body#layout .navigation {
display: none;
}
body#layout .page,
body#layout .sidebar_top,
body#layout .sidebar_bottom {
display: inline-block;
left: inherit;
position: relative;
vertical-align: top;
}
body#layout .page {
float: right;
margin-left: 20px;
width: 55%;
}
body#layout .sidebar-container {
float: right;
width: 40%;
}
body#layout .hamburger-menu {
display: none;
}
--></style>
<style>
.bg-photo {background-image:url(https\:\/\/themes.googleusercontent.com\/image?id=L1lcAxxz0CLgsDzixEprHJ2F38TyEjCyE3RSAjynQDks0lT1BDc1OxXKaTEdLc89HPvdB11X9FDw);}
@media (max-width: 480px) { .bg-photo {background-image:url(https\:\/\/themes.googleusercontent.com\/image?id=L1lcAxxz0CLgsDzixEprHJ2F38TyEjCyE3RSAjynQDks0lT1BDc1OxXKaTEdLc89HPvdB11X9FDw&options=w480);}}
@media (max-width: 640px) and (min-width: 481px) { .bg-photo {background-image:url(https\:\/\/themes.googleusercontent.com\/image?id=L1lcAxxz0CLgsDzixEprHJ2F38TyEjCyE3RSAjynQDks0lT1BDc1OxXKaTEdLc89HPvdB11X9FDw&options=w640);}}
@media (max-width: 800px) and (min-width: 641px) { .bg-photo {background-image:url(https\:\/\/themes.googleusercontent.com\/image?id=L1lcAxxz0CLgsDzixEprHJ2F38TyEjCyE3RSAjynQDks0lT1BDc1OxXKaTEdLc89HPvdB11X9FDw&options=w800);}}
@media (max-width: 1200px) and (min-width: 801px) { .bg-photo {background-image:url(https\:\/\/themes.googleusercontent.com\/image?id=L1lcAxxz0CLgsDzixEprHJ2F38TyEjCyE3RSAjynQDks0lT1BDc1OxXKaTEdLc89HPvdB11X9FDw&options=w1200);}}
/* Last tag covers anything over one higher than the previous max-size cap. */
@media (min-width: 1201px) { .bg-photo {background-image:url(https\:\/\/themes.googleusercontent.com\/image?id=L1lcAxxz0CLgsDzixEprHJ2F38TyEjCyE3RSAjynQDks0lT1BDc1OxXKaTEdLc89HPvdB11X9FDw&options=w1600);}}
</style>
<!-- Google tag (gtag.js) -->
<script async='true' src='https://www.googletagmanager.com/gtag/js?id=G-8187JXPXZK'></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8187JXPXZK');
</script>
<script async='async' src='https://www.gstatic.com/external_hosted/clipboardjs/clipboard.min.js'></script>
<script type='text/x-mathjax-config'> MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); </script>
<script src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"> </script>
<!-- Google tag (gtag.js) -->
<script async='async' src='https://www.googletagmanager.com/gtag/js?id=G-8187JXPXZK'></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8187JXPXZK');
</script>
<link href='https://www.blogger.com/dyncss/8436330762136344379/authorization.css?zx=8b51bcf5-dd79-4320-b3e4-1df045ad107d' media='none' onload='if(media!=&#39;all&#39;)media=&#39;all&#39;' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyncss/8436330762136344379/authorization.css?zx=8b51bcf5-dd79-4320-b3e4-1df045ad107d' rel='stylesheet'/></noscript>
<meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/>
<meta name='google-adsense-platform-domain' content='blogspot.com'/>
</head>
<body class='item-view version-1-3-0'>
<a class='skip-navigation' href='#main' tabindex='0'>
Skip to main content
</a>
<div class='page'>
<div class='bg-photo-overlay'></div>
<div class='bg-photo-container'>
<div class='bg-photo'></div>
</div>
<div class='page_body'>
<div class='centered'>
<div class='centered-top-placeholder'></div>
<header class='centered-top-container' role='banner'>
<div class='centered-top'>
<a class='return_link' href='https://muratbuffalo.blogspot.com/'>
<button class='svg-icon-24-button back-button rtl-reversible-icon flat-icon-button ripple'>
<svg class='svg-icon-24'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_arrow_back_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
</button>
</a>
<div class='search'>
<button aria-label='Search' class='search-expand touch-icon-button'>
<div class='flat-icon-button ripple'>
<svg class='svg-icon-24 search-expand-icon'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_search_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
</div>
</button>
<div class='section' id='search_top' name='Search (Top)'><div class='widget BlogSearch' data-version='2' id='BlogSearch1'>
<h3 class='title'>
Search This Blog
</h3>
<div class='widget-content' role='search'>
<form action='https://muratbuffalo.blogspot.com/search' target='_top'>
<div class='search-input'>
<input aria-label='Search this blog' autocomplete='off' name='q' placeholder='Search this blog' value=''/>
</div>
<input class='search-action flat-button' type='submit' value='Search'/>
</form>
</div>
</div></div>
</div>
<div class='clearboth'></div>
<div class='blog-name container'>
<div class='container section' id='header' name='Header'><div class='widget Header' data-version='2' id='Header1'>
<div class='header-widget'>
<div>
<h1>
<a href='https://muratbuffalo.blogspot.com/'>
Metadata
</a>
</h1>
</div>
<p>
On distributed systems broadly defined and other curiosities. The opinions on this site are my own.
</p>
</div>
</div></div>
<nav role='navigation'>
<div class='clearboth no-items section' id='page_list_top' name='Page List (Top)'>
</div>
</nav>
</div>
</div>
</header>
<div>
<div class='vertical-ad-container no-items section' id='ads' name='Ads'>
</div>
<main class='centered-bottom' id='main' role='main' tabindex='-1'>
<div class='main section' id='page_body' name='Page Body'>
<div class='widget Blog' data-version='2' id='Blog1'>
<div class='blog-posts hfeed container'>
<article class='post-outer-container'>
<div class='post-outer'>
<div class='post'>
<script type='application/ld+json'>{
"@context": "http://schema.org",
"@type": "BlogPosting",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html"
},
"headline": "Use of Time in Distributed Databases (part 1)","description": "Distributed systems are characterized by nodes executing concurrently with no shared state and no common clock. Coordination between nodes a...","datePublished": "2024-12-23T11:30:00-05:00",
"dateModified": "2025-01-14T14:13:59-05:00","image": {
"@type": "ImageObject","url": "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw-UTn0lD4FZG9hucp6EIUb66fdMJ4tfv45rPS0GAYBUWmxhZ_nF9lAGjjXzASF3FoaY23tVrfV6guLkWHUAMnZtE7HpzZwMD_0z3cmdnhkusQqin25s0m_PBZ6avx7jIWUCb1GC7HkqdECEUTmSmdoY5Iz-EckFQUji-rrWtNFYoL1mIpl_hrnTvSkXE/w1200-h630-p-k-no-nu/DALL%C2%B7E%202024-12-13%2010.45.03%20-%20A%20conceptual%20digital%20art%20piece%20illustrating%20the%20concept%20of%20time%20in%20distributed%20databases.%20The%20image%20features%20a%20network%20of%20interconnected%20clocks,%20each%20.webp",
"height": 630,
"width": 1200},"publisher": {
"@type": "Organization",
"name": "Blogger",
"logo": {
"@type": "ImageObject",
"url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/h60/",
"width": 206,
"height": 60
}
},"author": {
"@type": "Person",
"name": "Murat"
}
}</script>
<a name='8080256387331719320'></a>
<h3 class='post-title entry-title'>
Use of Time in Distributed Databases (part 1)
</h3>
<div class='post-share-buttons post-share-buttons-top'>
<div class='byline post-share-buttons goog-inline-block'>
<div aria-owns='sharing-popup-Blog1-byline-8080256387331719320' class='sharing' data-title='Use of Time in Distributed Databases (part 1)'>
<button aria-controls='sharing-popup-Blog1-byline-8080256387331719320' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-Blog1-byline-8080256387331719320' role='button'>
<div class='flat-icon-button ripple'>
<svg class='svg-icon-24'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_share_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
</div>
</button>
<div class='share-buttons-container'>
<ul aria-hidden='true' aria-label='Share' class='share-buttons hidden' id='sharing-popup-Blog1-byline-8080256387331719320' role='menu'>
<li>
<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://www.blogger.com/share-post.g?blogID=8436330762136344379&postID=8080256387331719320&target=' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Get link'>
<svg class='svg-icon-24 touch-icon sharing-link'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_link_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>Get link</span>
</span>
</li>
<li>
<span aria-label='Share to Facebook' class='sharing-platform-button sharing-element-facebook' data-href='https://www.blogger.com/share-post.g?blogID=8436330762136344379&postID=8080256387331719320&target=facebook' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Share to Facebook'>
<svg class='svg-icon-24 touch-icon sharing-facebook'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_facebook_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>Facebook</span>
</span>
</li>
<li>
<span aria-label='Share to X' class='sharing-platform-button sharing-element-twitter' data-href='https://www.blogger.com/share-post.g?blogID=8436330762136344379&postID=8080256387331719320&target=twitter' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Share to X'>
<svg class='svg-icon-24 touch-icon sharing-twitter'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_twitter_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>X</span>
</span>
</li>
<li>
<span aria-label='Share to Pinterest' class='sharing-platform-button sharing-element-pinterest' data-href='https://www.blogger.com/share-post.g?blogID=8436330762136344379&postID=8080256387331719320&target=pinterest' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Share to Pinterest'>
<svg class='svg-icon-24 touch-icon sharing-pinterest'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_pinterest_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>Pinterest</span>
</span>
</li>
<li>
<span aria-label='Email' class='sharing-platform-button sharing-element-email' data-href='https://www.blogger.com/share-post.g?blogID=8436330762136344379&postID=8080256387331719320&target=email' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Email'>
<svg class='svg-icon-24 touch-icon sharing-email'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_email_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>Email</span>
</span>
</li>
<li aria-hidden='true' class='hidden'>
<span aria-label='Share to other apps' class='sharing-platform-button sharing-element-other' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Share to other apps'>
<svg class='svg-icon-24 touch-icon sharing-sharingOther'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_more_horiz_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>Other Apps</span>
</span>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2024-12-23T11:30:00-05:00' title='2024-12-23T11:30:00-05:00'>
December 23, 2024
</time>
</a>
</span>
</div>
</div>
<div class='post-body entry-content float-container' id='post-body-8080256387331719320'>
<p>Distributed systems are characterized by nodes executing concurrently with no shared state and no common clock. Coordination between nodes are needed to satisfy some correctness properties, but since coordination requires message communication there is a performance tradeoff preventing nodes from frequently communicating/coordinating.</p><p><br /></p><h2 style="text-align: left;">Timestamping and ordering</h2><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw-UTn0lD4FZG9hucp6EIUb66fdMJ4tfv45rPS0GAYBUWmxhZ_nF9lAGjjXzASF3FoaY23tVrfV6guLkWHUAMnZtE7HpzZwMD_0z3cmdnhkusQqin25s0m_PBZ6avx7jIWUCb1GC7HkqdECEUTmSmdoY5Iz-EckFQUji-rrWtNFYoL1mIpl_hrnTvSkXE/s1024/DALL%C2%B7E%202024-12-13%2010.45.03%20-%20A%20conceptual%20digital%20art%20piece%20illustrating%20the%20concept%20of%20time%20in%20distributed%20databases.%20The%20image%20features%20a%20network%20of%20interconnected%20clocks,%20each%20.webp" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw-UTn0lD4FZG9hucp6EIUb66fdMJ4tfv45rPS0GAYBUWmxhZ_nF9lAGjjXzASF3FoaY23tVrfV6guLkWHUAMnZtE7HpzZwMD_0z3cmdnhkusQqin25s0m_PBZ6avx7jIWUCb1GC7HkqdECEUTmSmdoY5Iz-EckFQUji-rrWtNFYoL1mIpl_hrnTvSkXE/s320/DALL%C2%B7E%202024-12-13%2010.45.03%20-%20A%20conceptual%20digital%20art%20piece%20illustrating%20the%20concept%20of%20time%20in%20distributed%20databases.%20The%20image%20features%20a%20network%20of%20interconnected%20clocks,%20each%20.webp" width="320" /></a></div><p>Why do the nodes, in particular database nodes, need coordinating anyway? The goal of coordination among nodes is to perform event ordering and align independent timelines of nodes with respect to each other. This is why timestamping events and ordering them is very important. Nodes run concurrently without knowing what the other nodes are doing at the moment. They learn about each other's states/events only by sending and receiving messages and this information by definition come from the past state of the nodes. Each node needs to compose a coherent view of the system from these messages and all the while the system is moving along advancing and changing state. This is like trying to compose a panaromic snapshot of a parade moving down the street only by using small 4x6 photos shot by the participants at arbitrary times.</p><p>In 1978, Leslie Lamport captured the ordering relationship between events in a distributed system by introducing a neat abstraction called logical clocks. <a href="https://muratbuffalo.blogspot.com/2018/01/logical-clocks-and-vector-clocks.html">Logical clocks</a> timestamp events based on causality (happened-before) which comes from either precedence within the same thread of execution at the node or via message communication received from another node.</p><p>Unfortunately logical clocks are disconnected from real time (wall clocks). Logical clocks would not be able to establish an ordering to event2 at node2 that is occurring a full 24 hours later than event1 at node1, if there had not been a chain of communication linking event1 to event2 with a causal precedence relationship in that period. Logical clocks ignore all back-channel, and require strict enforcement of all communication to be logical-clock timestamped. Moreover, they don't allow you to query physical time an event took place.</p><p>Their cousin <a href="https://muratbuffalo.blogspot.com/2018/01/logical-clocks-and-vector-clocks.html">vector clocks</a> can get you consistent snapshots across nodes (well, with O(n) vector clock overhead), but vector clocks are also vulnerable to the same drawbacks above. To address these drawbacks, we need physical clocks and real-time affinity. To drive this point home, and learn about even more benefits synchronized clocks can give us, here is another round of motivation for the importance of time in distributed systems and databases.</p><p><br /></p><h2 style="text-align: left;">What is synchronized clocks good for?&nbsp;</h2><p>Asymmetry of information is the curse on distributed system. The coordinated attack problem provides a great demonstration of this. The two generals in that problem are stuck in a Zeno's paradox of "You may not know that I know that you know that I know" kind of information chaining. A classic paper to checkout on this topic is <a href="https://arxiv.org/abs/cs/0006009">"Knowledge and common knowledge in a distributed environment"</a>.</p><p>Synchronized clocks create a consistent global time reference, seeding the build up of common knowledge. Having a globally consistent time reference (i.e., synchronized clocks/time) is a big boon for common knowledge. Without a common reference time, even by using same rate local clock at each node you lose considerable information about the other party.&nbsp;</p><p>Consider this example where node2 is trying to learn for how long more node1's lease would be valid. &nbsp;Without synchronized time, unilateral communication from node1 to node2 does not suffice to convey this information, because the message from node1 to node2 could have been arbitrarily delayed in the channel. This makes the timer on node2 obsolete for coordinating between the two nodes since by the time the message arrives the lease might have long expired. With unilateral communication node2 would only know when for sure node1's lease is invalidated, but cannot know when node1 is still holding a lease. It can only reason about the absence of lease by node1, but not about its presence.</p><p>Without synchronization, node2 requires two-way communication to estimate lease validity. In this scheme, node2 initializes the communication, and starts its timer when it sends the message. When it receives a response back from node1 which contains the remaining time on the lease for node1, it needs to subtract the delta time passed for the round-trip-time (RTT) to get a lowerbound on the validity of node1's lease. It cannot subtract delta/2 from the lease timer, because communication delay may be asymmetrical.&nbsp;</p><p>But, if we have synchronized clocks, this information can be conveyed just with a unilateral communication from node1 to node2. Node1's message would say "I have the lease till T_end", and when node2 receives the message, this T_end information is instantly usable by Node2 without sufffering the RTT delay rounding above, because of the synchronized clocks. Synchronized clocks simplifies coordination and reduces uncertainty in distributed systems.</p><p><br /></p><h2 style="text-align: left;">Loosely synchronized clocks</h2><p>Ok, let's discuss physical clocks, and clock synchronization at last! Each node has a local clock, which is just a crystal/quartz oscillator. A circuit counts the number of times a crystal oscillates and declares that a millisecond has passed because it counted say 1000 oscillations. This is not precise of course. Atomic clocks use rubidium, which has an oscillation/clock error of one microsecond a day. But quartz is not like that. It is dirt cheap and small, but also inaccurate so it drifts too much. No two quartz crystals are identical. They have big variations. Another thing about quartz crystal is they are very temperature sensitive: when the temperature gets colder they oscillate more when it gets hotter they oscillate less. &nbsp;Therefore frequent time synchronization is needed when using crystal oscillator based clocks. Otherwise each node's clock would drift apart from each other.</p><p>In 1985, <a href="https://en.wikipedia.org/wiki/Network_Time_Protocol">Network Time Protocol (NTP)</a> entered the game. NTP is a networking protocol for clock synchronization between computer systems over packet-switched, variable-latency data networks. NTP is by far the most popular time sync distribution protocol on the Internet. However, NTP clock sync errors can be amount to tens of milliseconds. The biggest source of problem for NTP non-deterministic errors come in for synchronization? It comes from the network. The switches and routers are the source of nondeterministic errors for NTP. Asymmetry in the links is a big error source. Consider 100 mbps link feeding into 1 Gbps link. One way there is no delay, but coming back the other way there is queuing delay.&nbsp;</p><p>Unfortunately, using loosely synchronized clocks via NTP, with several tens of millisecond uncertainty, violates causality and monotonicity under errors. This is problematic for ordering events and our consistent snapshots across nodes. <a href="https://muratbuffalo.blogspot.com/2014/07/hybrid-logical-clocks.html">Hybrid Logical Clocks (HLC)</a> provides a remedy, by integrating Lamport's logical time with loosely synchronized physical clocks. This makes them resilient to synchronization errors and enables progress in degraded conditions.</p><p>Of course <a href="https://muratbuffalo.blogspot.com/2024/12/utilizing-highly-synchronized-clocks-in.html">using tightly synchronized clocks is even better,</a> and gets you better performance with more certainty about other node's states/events/orderings. Luckily we had great progress in this area in the last decade.</p><p><br /></p><h2 style="text-align: left;">The advent of tightly synchronized clocks</h2><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwLbmTCM-cPgapn2BCoECuNSdUg8PHEzu_pR0hUq2MXuNzFvMgBzGyTL6fJ4M4S3PE3Q7pHxbrYgE-LxFfpjoupMi2Oqnw1p-fH0mVPx-tMe2ZhevndNj__hAVXNe9xsuNNnpQ8687OzqAXreGqCkcdp0PwuogZzgjlxjC_DY5yrSCxWYpHmUQioXII7I/s1024/DALL%C2%B7E%202024-12-22%2023.06.47%20-%20An%20artistic%20representation%20of%20distributed%20databases%20using%20synchronized%20time%20and%20event%20ordering.%20The%20image%20features%20a%20network%20of%20interconnected%20nodes%20(.webp" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwLbmTCM-cPgapn2BCoECuNSdUg8PHEzu_pR0hUq2MXuNzFvMgBzGyTL6fJ4M4S3PE3Q7pHxbrYgE-LxFfpjoupMi2Oqnw1p-fH0mVPx-tMe2ZhevndNj__hAVXNe9xsuNNnpQ8687OzqAXreGqCkcdp0PwuogZzgjlxjC_DY5yrSCxWYpHmUQioXII7I/s320/DALL%C2%B7E%202024-12-22%2023.06.47%20-%20An%20artistic%20representation%20of%20distributed%20databases%20using%20synchronized%20time%20and%20event%20ordering.%20The%20image%20features%20a%20network%20of%20interconnected%20nodes%20(.webp" width="320" /></a></div><p>In 2018, <a href="https://www.eacombs.com/wp-content/uploads/The_Advent_of_Tightly_Synchronized_Clocks_in_Distributed_Systems.pdf">I wrote this short survey on the advent of tightly synchronized clocks</a>.</p><p>One big development has been <a href="https://muratbuffalo.blogspot.com/2016/10/it-is-about-time.html">the availability of cheaper (but almost as precise clocks) than atomic clocks.</a> Atomic clocks use Rubidium and has 1 µs/day. This is so small that relativistic effect considerations kick in here. OCXO ovenized oscillators provide the next best way to have precise clocks in a box in a much cheaper manner. They achieve a drift of ~25 µs/day. Pair these bad boys with a GPS antenna and they get less than 100 nanosecond of true time. &nbsp;&nbsp;</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoyIOsB9TtVeIVu4sz49xFyQ-k1Ixbm5Xscn01o1Qk8GndNhGoG2VySHA4PqD8H2k6wiMftX5PYzYq3hnl_9Pyq2takA-sutqiV36UqX_vbNHTy1A3yzj9JSoKh60FsxrMZrmPOFPMJe3EiATDUKIXZCSw-4L4NZaUAc8bwmTRgnSoBkDRbIi4idF3UY0/s1024/spactrocomClock.jpeg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="1024" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoyIOsB9TtVeIVu4sz49xFyQ-k1Ixbm5Xscn01o1Qk8GndNhGoG2VySHA4PqD8H2k6wiMftX5PYzYq3hnl_9Pyq2takA-sutqiV36UqX_vbNHTy1A3yzj9JSoKh60FsxrMZrmPOFPMJe3EiATDUKIXZCSw-4L4NZaUAc8bwmTRgnSoBkDRbIi4idF3UY0/s320/spactrocomClock.jpeg" width="320" /></a></div><p>The rest is <a href="https://muratbuffalo.blogspot.com/2021/03/sundial-fault-tolerant-clock.html">ensuring high quality distribution of time information and avoiding the sources of nondeterminism creeping in.</a> Precision Time Protocol (PTP) with hardware timestamping helps a lot here and gets you to have ~50 µs clock uncertainty as <a href="https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-time-sync-service-microsecond-accurate-time/">the AWS Timesync</a> provides for public access.&nbsp;</p><p>I would be amiss if I don't talk about the clockbound API here. <a href="https://muratbuffalo.blogspot.com/2013/07/spanner-googles-globally-distributed_4.html">Google TrueTime (TT)</a> introduced these bounded uncertainty intervals. A call to TT.now() API returns earliest and latest bounds that the true clock could in the worst case fall into. This is awesome because if you ensure non-overlapping intervals on events, you achieve definite event ordering. This allows you to wait out the latest bound on time to strictly order/serialize your commit event. This also provides another level of safety for correctness of timestamp based ordering. For ordering to go awry, both clock synchronization, and clock-bound around it need to go bad concurrently. If your clock synchronization goes bad, the bounds around it would grow, and you would know something is going wrong.&nbsp;</p><p><br /></p><h2 style="text-align: left;">Timestamp-based Algorithms for Concurrency Control in Distributed Database Systems (VLDB'80)</h2><p>Ok, this introduction already got long. Let's finish this Part 1 with a banger! <a href="https://muratbuffalo.blogspot.com/2022/11/timestamp-based-algorithms-for.html">This paper is from VLDB 1980</a>, and predates even NTP. It is written with a typewriter for God's sake. But Bernstein &amp; Goldman's vision is ahead of its time for many decades. They assume synchronized clocks and propose Timestamp Ordering (TSO) algorithms for concurrency control in distributed database systems. The banger is that after more than three decades, <a href="https://muratbuffalo.blogspot.com/2023/08/distributed-transactions-at-scale-in.html">Amazon DynamoDB (ATC'23)</a> uses TSO based algorithm for its one-shot transactions.</p><p>Here is how the TSO-based optimistic concurrency control algorithm works. Transactions are serialized by the start-time T_si. Transactions don't hold any locks, and resort to optimistic validation. Instead, every object x is tagged with the timestamp of the last transaction[s] that successfully read/write x. So, object x has two metadata associated with it: read_ts(x) and write_ts(x). To guarantee the serializability of transactions, it is crucial that these timestamps should be monotonically increasing (hence the need for synchronized clocks!). The update protocol checks and ensures this for each access. If a transaction tries to access (read/write) an object from its future it is aborted. For example, if ti finds that it is reading x, which has write_ts(x)&gt;ts_ti, then this would be a future read, and x aborts itself. It may later be retried with a new/higher ts, and hopefully it will succeed then. That is it. That is the whole protocol.</p><p>After 1980, the next splash on the use of synchronized clocks arrive at PODC 1991, with Barbara Liskov's <a href="https://muratbuffalo.blogspot.com/2022/11/practical-uses-of-synchronized-clocks.html">"Practical Uses of Synchronized Clocks in Distributed Systems" paper.</a> Interestingly this paper does not cite the Bernstein-Goldman's banger groundbreaking paper. It proposed several distributed algorithms that use synchronized clocks:</p><p></p><ul style="text-align: left;"><li>Leases for cache consistency and leader-local reads. Technically, these are realized only via same-rate local timers and don't need synchronized clocks.&nbsp;</li><li>SCMP protocol for at-most-once message delivery</li><li>Kerberos authentication tickets</li></ul><p></p><p>A noteworthy principle the paper advocated was to use clocks for performance, and not correctness. Notice that in the Bernstein-Goldman paper a decade earlier the correctness of serialization of OCC transactions did not rely on the time synchronization, but the performance would be improved with better time synchronization.</p><p>Then comes two decades of silence. The next big update on the practical use of synchronized clocks came 21 years later in 2012 with <a href="https://muratbuffalo.blogspot.com/2013/07/spanner-googles-globally-distributed_4.html">Google Spanner</a>.</p><p><br /></p><h2 style="text-align: left;">Outline of Use of Time in Distributed Databases</h2><p>So, this is what I am thinking of covering in the next posts on this series. I already had summaries of these work in my blog over the last several years. It will be nice to organize this information and draw some trends/conclusions from these work. One thing is clear: We see an accelerating trend of adoption of synchronized clocks in distributed databases.</p><p><b>Part 2: </b><a href="https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases_26.html">Use of logical clocks in database design</a>: Discusses use of vector clocks (e.g.,&nbsp;<a href="https://muratbuffalo.blogspot.com/2010/11/dynamo-amazons-highly-available-key.html">Dynamo (SOSP'07)</a>,&nbsp;<a href="https://dl.acm.org/doi/10.1145/2523616.2523628">ORBE (SOCC'13)</a>, <a href="https://muratbuffalo.blogspot.com/2023/04/the-end-of-myth-distributed.html">NAM-DB (VLDB'17)</a>), dependency graph maintenance (<a href="https://muratbuffalo.blogspot.com/2012/09/dont-settle-for-eventual-scalable.html">COPS (SOSP'11)</a>, <a href="http://ayushdubey.com/pdf/kronos-eurosys14.pdf">Kronos(EuroSys'14)</a>), and epoch server (e.g., <a href="https://muratbuffalo.blogspot.com/2024/04/chardonnay-fast-and-general-datacenter.html">Chardonnay (OSDI'23)</a>, <a href="https://www.asafcidon.com/uploads/5/9/7/0/59701649/chablis.pdf">Chablis (CIDR'24)</a>).</p><p><b>Part 3: </b><a href="https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases_30.html">Use of synchronized physical clocks in database design</a>: <a href="https://muratbuffalo.blogspot.com/2014/11/granola-low-overhead-distributed.html">Granola (ATC'12)</a>, <a href="https://muratbuffalo.blogspot.com/2014/10/clock-si-snapshot-isolation-for.html">Clock-SI (SRDS'13)</a>, <a href="https://muratbuffalo.blogspot.com/2015/04/on-use-of-clocks-to-enforce-consistency.html">GentleRain (SOCC'14)</a>, <a href="https://muratbuffalo.blogspot.com/2025/01/i-cant-believe-its-not-causal-scalable.html">Occult (NSDI'17)</a>, <a href="https://muratbuffalo.blogspot.com/2023/12/nezha-deployable-and-high-performance.html">Nezha (VLDB'23)</a></p><p><b>Part 4:</b> <a href="https://muratbuffalo.blogspot.com/2025/01/use-of-time-in-distributed-databases.html">Use of clocks in production databases</a>: <a href="https://muratbuffalo.blogspot.com/2013/07/spanner-googles-globally-distributed_4.html">Spanner (OSDI'12)</a>, <a href="https://muratbuffalo.blogspot.com/2024/04/implementation-of-cluster-wide-logical.html">MongoDB (SIGMOD'19)</a>, <a href="https://muratbuffalo.blogspot.com/2022/03/cockroachdb-resilient-geo-distributed.html">CockroachDB (SIGMOD'20)</a>, <a href="https://muratbuffalo.blogspot.com/2023/08/distributed-transactions-at-scale-in.html">DynamoDB (ATC'23)</a>, <a href="https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions">Cassandra/Accord (2023)</a>, <a href="https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-aurora-limitless-database/">Aurora Limitless (2023)</a>, <a href="https://aws.amazon.com/about-aws/whats-new/2024/12/amazon-aurora-dsql-preview/">Aurora DSQL (2024)&nbsp;</a></p><p><b>Part 5:</b>&nbsp;<a href="https://muratbuffalo.blogspot.com/2025/01/use-of-time-in-distributed-databases_14.html">Lessons learned</a>: Takeaways, correctness of synchronized clock-based algorithms, tradeoffs, and trends</p>
</div>
<div class='post-bottom'>
<div class='post-footer float-container'>
<div class='post-footer-line post-footer-line-1'>
<span class='byline post-icons'>
<span class='item-action'>
<a href='https://www.blogger.com/email-post/8436330762136344379/8080256387331719320' title='Email Post'>
<svg class='svg-icon-24 touch-icon sharing-icon'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_email_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
</a>
</span>
</span>
</div>
<div class='post-footer-line post-footer-line-2'>
<span class='byline post-labels'>
<span class='byline-label'>
</span>
<a href='https://muratbuffalo.blogspot.com/search/label/time' rel='tag'>time</a>
<a href='https://muratbuffalo.blogspot.com/search/label/timeDB' rel='tag'>timeDB</a>
</span>
</div>
<div class='post-footer-line post-footer-line-3'>
</div>
</div>
<div class='post-share-buttons post-share-buttons-bottom invisible'>
<div class='byline post-share-buttons goog-inline-block'>
<div aria-owns='sharing-popup-Blog1-byline-8080256387331719320' class='sharing' data-title='Use of Time in Distributed Databases (part 1)'>
<button aria-controls='sharing-popup-Blog1-byline-8080256387331719320' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-Blog1-byline-8080256387331719320' role='button'>
<div class='flat-icon-button ripple'>
<svg class='svg-icon-24'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_share_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
</div>
</button>
<div class='share-buttons-container'>
<ul aria-hidden='true' aria-label='Share' class='share-buttons hidden' id='sharing-popup-Blog1-byline-8080256387331719320' role='menu'>
<li>
<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://www.blogger.com/share-post.g?blogID=8436330762136344379&postID=8080256387331719320&target=' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Get link'>
<svg class='svg-icon-24 touch-icon sharing-link'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_link_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>Get link</span>
</span>
</li>
<li>
<span aria-label='Share to Facebook' class='sharing-platform-button sharing-element-facebook' data-href='https://www.blogger.com/share-post.g?blogID=8436330762136344379&postID=8080256387331719320&target=facebook' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Share to Facebook'>
<svg class='svg-icon-24 touch-icon sharing-facebook'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_facebook_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>Facebook</span>
</span>
</li>
<li>
<span aria-label='Share to X' class='sharing-platform-button sharing-element-twitter' data-href='https://www.blogger.com/share-post.g?blogID=8436330762136344379&postID=8080256387331719320&target=twitter' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Share to X'>
<svg class='svg-icon-24 touch-icon sharing-twitter'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_twitter_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>X</span>
</span>
</li>
<li>
<span aria-label='Share to Pinterest' class='sharing-platform-button sharing-element-pinterest' data-href='https://www.blogger.com/share-post.g?blogID=8436330762136344379&postID=8080256387331719320&target=pinterest' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Share to Pinterest'>
<svg class='svg-icon-24 touch-icon sharing-pinterest'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_pinterest_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>Pinterest</span>
</span>
</li>
<li>
<span aria-label='Email' class='sharing-platform-button sharing-element-email' data-href='https://www.blogger.com/share-post.g?blogID=8436330762136344379&postID=8080256387331719320&target=email' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Email'>
<svg class='svg-icon-24 touch-icon sharing-email'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_email_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>Email</span>
</span>
</li>
<li aria-hidden='true' class='hidden'>
<span aria-label='Share to other apps' class='sharing-platform-button sharing-element-other' data-url='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html' role='menuitem' tabindex='-1' title='Share to other apps'>
<svg class='svg-icon-24 touch-icon sharing-sharingOther'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_more_horiz_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<span class='platform-sharing-text'>Other Apps</span>
</span>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<section class='comments' data-num-comments='3' id='comments'>
<a name='comments'></a>
<h3 class='title'>Comments</h3>
<div id='Blog1_comments-block-wrapper'>
<div id='comments-block'>
<div class='comment' id='c2387023555170845946'>
<div class='avatar-image-container'>
<img class='author-avatar' height='35' src='//resources.blogblog.com/img/blank.gif' width='35'/>
</div>
<div class='comment-block'>
<div class='comment-author'>
Kevin Fries said&hellip;
</div>
<div class='comment-body'>
&quot;Another thing about quartz crystal is they are very temperature sensitive: when the temperature gets colder they oscillate more when it gets hotter they oscillate less. &quot;<br /><br />That seems backward but I&#39;d love to know how that is possible.
</div>
<div class='comment-footer'>
<span class='comment-timestamp'>
<a href='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html?showComment=1735001093686#c2387023555170845946' title='comment permalink'>
December 23, 2024 at 7:44&#8239;PM
</a>
<span class='item-control blog-admin pid-1030764755'>
<a class='comment-delete' href='https://www.blogger.com/comment/delete/8436330762136344379/2387023555170845946' title='Delete Comment'>
<img src='https://resources.blogblog.com/img/icon_delete13.gif'/>
</a>
</span>
</span>
</div>
</div>
</div>
<div class='comment' id='c4377839538235304200'>
<div class='avatar-image-container'>
<img class='author-avatar' height='35' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXlMEQx9THTN7WSG1fVU2GRv7E5wkIh1O2A4DiHbnewhZL2VbaCMz_uvrd5T5jiD56R4dzcMb3j_sZN9D03wMq1MQeipbD2Z67YWyXzpjY_8IjtmAYCxD3Y5hg4Ko752nh2egNrmjT6oWcBsBoCedZK1Ahc_cjNaB7xmUsKn7eshu5_ZU/s45/MuratBuffalo.png' width='35'/>
</div>
<div class='comment-block'>
<div class='comment-author'>
<a href="https://www.blogger.com/profile/07842046940394980130" rel="nofollow">Murat</a> said&hellip;
</div>
<div class='comment-body'>
Nope that is the correct way. https://en.wikipedia.org/wiki/Quartz_clock#:~:text=A%20higher%20or%20lower%20temperature,to%20%E2%88%921.1%20seconds%20per%20year.
</div>
<div class='comment-footer'>
<span class='comment-timestamp'>
<a href='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html?showComment=1735001713580#c4377839538235304200' title='comment permalink'>
December 23, 2024 at 7:55&#8239;PM
</a>
<span class='item-control blog-admin pid-146504449'>
<a class='comment-delete' href='https://www.blogger.com/comment/delete/8436330762136344379/4377839538235304200' title='Delete Comment'>
<img src='https://resources.blogblog.com/img/icon_delete13.gif'/>
</a>
</span>
</span>
</div>
</div>
</div>
<div class='comment' id='c8482843335264407560'>
<div class='avatar-image-container'>
<img class='author-avatar' height='35' src='//www.blogger.com/img/blogger_logo_round_35.png' width='35'/>
</div>
<div class='comment-block'>
<div class='comment-author'>
<a href="https://www.blogger.com/profile/15556971018075861839" rel="nofollow">Sachin Kale</a> said&hellip;
</div>
<div class='comment-body'>
Love this! Going to Part 2. Thanks for providing all the references as well
</div>
<div class='comment-footer'>
<span class='comment-timestamp'>
<a href='https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html?showComment=1736247362142#c8482843335264407560' title='comment permalink'>
January 7, 2025 at 5:56&#8239;AM
</a>
<span class='item-control blog-admin pid-1327220222'>
<a class='comment-delete' href='https://www.blogger.com/comment/delete/8436330762136344379/8482843335264407560' title='Delete Comment'>
<img src='https://resources.blogblog.com/img/icon_delete13.gif'/>
</a>
</span>
</span>
</div>
</div>
</div>
</div>
</div>
<div class='footer'>
<a href='https://www.blogger.com/comment/fullpage/post/8436330762136344379/8080256387331719320' onclick=''>
Post a Comment
</a>
</div>
</section>
</article>
</div>
</div><div class='widget PopularPosts' data-version='2' id='PopularPosts1'>
<h3 class='title'>
Popular posts from this blog
</h3>
<div class='widget-content'>
<div role='feed'>
<article class='post' role='article'>
<h3 class='post-title'><a href='https://muratbuffalo.blogspot.com/2026/08/the-safest-job-from-ai-may-be-writing.html'>The Safest Job from AI may be Writing</a></h3>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2026/08/the-safest-job-from-ai-may-be-writing.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2026/08/the-safest-job-from-ai-may-be-writing.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2026-08-31T14:01:00-04:00' title='2026-08-31T14:01:00-04:00'>
August 31, 2026
</time>
</a>
</span>
</div>
</div>
<div class='item-content float-container'>
<div class='popular-posts-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
Today, tech folk are scrambling to change their workflows to meet newly inflated 5X productivity quotas, while getting pummeled under the cognitive debt of agent-generated code. With every new model release, the gap is widening and humans are becoming more of a bottleneck in the loop, approaching closer to obsolescence as &quot;coders&quot;. While the programmer&#39;s job description is getting completely refactored, writing remains surprisingly unaffected. LLMs have gotten very good at generating code, but I am appalled at the absolute shit they spew as prose. They always follow the same robotic cadence and cliches, and sprinkle the same tired vocabulary all around. They take my broken yet soulful writing and transform it into a plastic soulless word slop in the name of improving prose. Their writing communicates no actual understanding and insight. I think we are all developing a visceral ick reaction to AI writing. It is trapped in the uncanny valley, and it may be stuck there for ...
</div>
<a class='snippet-fade r-snippet-fade hidden' href='https://muratbuffalo.blogspot.com/2026/08/the-safest-job-from-ai-may-be-writing.html'></a>
</div>
<div class='jump-link flat-button ripple'>
<a href='https://muratbuffalo.blogspot.com/2026/08/the-safest-job-from-ai-may-be-writing.html' title='The Safest Job from AI may be Writing'>
Read more &gt;&gt;
</a>
</div>
</div>
</article>
<article class='post' role='article'>
<h3 class='post-title'><a href='https://muratbuffalo.blogspot.com/2026/05/the-two-abstractions-of-system-design.html'>The Two Abstractions of System Design: Hide or Reduce</a></h3>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2026/05/the-two-abstractions-of-system-design.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2026/05/the-two-abstractions-of-system-design.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2026-05-08T19:27:00-04:00' title='2026-05-08T19:27:00-04:00'>
May 08, 2026
</time>
</a>
</span>
</div>
</div>
<div class='item-content float-container'>
<div class='popular-posts-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
When talking about TLA+, I keep referring to &quot;abstraction&quot; as the most important thing to learn . And it is about the hardest to learn as well. But a contradiction has been bugging me. Aren&#39;t CS people already supposed to be good at abstraction? Isn&#39;t abstraction supposed to be at the root of OS, networking, software engineering? Abstract Data Types (ADTs) are a staple of every in CS curriculum. So why do I (and every other formal methods/modeling person) see such a large skill gap in abstraction, and flag it as the core, make-or-break skill for modeling? I think I finally get to the root of this cognitive disonance. There are two kinds of &quot;abstraction&quot; conflated under the same umbrella term. Modularity abstraction: This is the traditional abstraction taught in CS curricula as ADTs, APIs, layered design, etc. It is all about encapsulation, drawing boundaries, and hiding internals. Modeling abstraction: This is what I talk about when I talk about abstracti...
</div>
<a class='snippet-fade r-snippet-fade hidden' href='https://muratbuffalo.blogspot.com/2026/05/the-two-abstractions-of-system-design.html'></a>
</div>
<div class='jump-link flat-button ripple'>
<a href='https://muratbuffalo.blogspot.com/2026/05/the-two-abstractions-of-system-design.html' title='The Two Abstractions of System Design: Hide or Reduce'>
Read more &gt;&gt;
</a>
</div>
</div>
</article>
<article class='post' role='article'>
<h3 class='post-title'><a href='https://muratbuffalo.blogspot.com/2026/01/the-agentic-self-parallels-between-ai.html'>The Agentic Self: Parallels Between AI and Self-Improvement</a></h3>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2026/01/the-agentic-self-parallels-between-ai.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2026/01/the-agentic-self-parallels-between-ai.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2026-01-02T18:12:00-05:00' title='2026-01-02T18:12:00-05:00'>
January 02, 2026
</time>
</a>
</span>
</div>
</div>
<div class='item-content float-container'>
<div class='popular-posts-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
2025 was the year of the agent. The goalposts for AGI shifted; we stopped asking AI to merely &quot;talk&quot; and demanded that it &quot;act&quot;. As an outsider looking at the architecture of these new agents and agentic system, I noticed something strange. The engineering tricks used to make AI smarter felt oddly familiar. They read less like computer science and more like &#8230; self-help advice . The secret to agentic intelligence seems to lie in three very human habits: writing things down, talking to yourself, and pretending to be someone else. They are almost too simple. The Unreasonable Effectiveness of Writing One of the most profound pieces of advice I ever read as a PhD student came from Prof. Manuel Blum, a Turing Award winner. In his essay &quot;Advice to a Beginning Graduate Student&quot;, he wrote: &quot;Without writing, you are reduced to a finite automaton. With writing you have the extraordinary power of a Turing machine.&quot; If you try to hold a complex argument enti...
</div>
<a class='snippet-fade r-snippet-fade hidden' href='https://muratbuffalo.blogspot.com/2026/01/the-agentic-self-parallels-between-ai.html'></a>
</div>
<div class='jump-link flat-button ripple'>
<a href='https://muratbuffalo.blogspot.com/2026/01/the-agentic-self-parallels-between-ai.html' title='The Agentic Self: Parallels Between AI and Self-Improvement'>
Read more &gt;&gt;
</a>
</div>
</div>
</article>
<article class='post' role='article'>
<h3 class='post-title'><a href='https://muratbuffalo.blogspot.com/2020/06/learning-about-distributed-systems.html'> Learning about distributed systems: where to start?</a></h3>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2020/06/learning-about-distributed-systems.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2020/06/learning-about-distributed-systems.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2020-06-10T00:08:00-04:00' title='2020-06-10T00:08:00-04:00'>
June 10, 2020
</time>
</a>
</span>
</div>
</div>
<div class='item-content float-container'>
<div class='popular-posts-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
This is definitely not a &quot;learn distributed systems in 21 days&quot; post. I recommend a principled, from the foundations-up, studying of distributed systems, which will take a good three months in the first pass, and many more months to build competence after that. If you are practical and coding oriented you may not like my advice much. You may object saying, &quot;Shouldn&#39;t I learn distributed systems with coding and hands on? Why can I not get started by deploying a Hadoop cluster, or studying the Raft code.&quot; I think that is the wrong way to go about learning distributed systems, because seeing similar code and programming language constructs will make you think this is familiar territory, and will give you a false sense of security. But, nothing can be further from the truth. Distributed systems need radically different software than centralized systems do.&#160; --A. Tannenbaum This quotation is literally the first sentence in my distributed systems syllabus. Inst...
</div>
<a class='snippet-fade r-snippet-fade hidden' href='https://muratbuffalo.blogspot.com/2020/06/learning-about-distributed-systems.html'></a>
</div>
<div class='jump-link flat-button ripple'>
<a href='https://muratbuffalo.blogspot.com/2020/06/learning-about-distributed-systems.html' title=' Learning about distributed systems: where to start?'>
Read more &gt;&gt;
</a>
</div>
</div>
</article>
<article class='post' role='article'>
<h3 class='post-title'><a href='https://muratbuffalo.blogspot.com/2023/10/hints-for-distributed-systems-design.html'>Hints for Distributed Systems Design</a></h3>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2023/10/hints-for-distributed-systems-design.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2023/10/hints-for-distributed-systems-design.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2023-10-02T09:44:00-04:00' title='2023-10-02T09:44:00-04:00'>
October 02, 2023
</time>
</a>
</span>
</div>
</div>
<div class='item-content float-container'>
<div class='popular-posts-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
This is with apologies to Butler Lampson, who published the &quot; Hints for computer system design &quot; paper 40 years ago in SOSP&#39;83. I don&#39;t claim to match that work of course. I just thought I could draft this post to organize my thinking about designing distributed systems and get feedback from others. I start with the same&#160; disclaimer Lampson gave. These hints are not novel, not foolproof recipes, not laws of design, not precisely formulated, and not always appropriate. They are just hints.&#160; They are context dependent, and some of them may be controversial. That being said, I have seen these hints successfully applied in distributed systems design throughout my 25 years in the field, starting from the theory of distributed systems (98-01), immersing into the practice of wireless sensor networks (01-11), and working on cloud computing systems both in the academia and industry ever since. These heuristic principles have been applied knowingly or unknowingly and has proven...
</div>
<a class='snippet-fade r-snippet-fade hidden' href='https://muratbuffalo.blogspot.com/2023/10/hints-for-distributed-systems-design.html'></a>
</div>
<div class='jump-link flat-button ripple'>
<a href='https://muratbuffalo.blogspot.com/2023/10/hints-for-distributed-systems-design.html' title='Hints for Distributed Systems Design'>
Read more &gt;&gt;
</a>
</div>
</div>
</article>
<article class='post' role='article'>
<h3 class='post-title'><a href='https://muratbuffalo.blogspot.com/2021/02/foundational-distributed-systems-papers.html'> Foundational distributed systems papers</a></h3>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2021/02/foundational-distributed-systems-papers.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2021/02/foundational-distributed-systems-papers.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2021-02-27T13:26:00-05:00' title='2021-02-27T13:26:00-05:00'>
February 27, 2021
</time>
</a>
</span>
</div>
</div>
<div class='item-content float-container'>
<div class='popular-posts-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
I talked about the importance of reading foundational papers last week. To followup, here is my compilation of foundational papers in the distributed systems area. (I focused on the core distributed systems area, and did not cover networking, security, distributed ledgers, verification work etc. I even left out distributed transactions, I hope to cover them at a later date.)&#160; I classified the papers by subject, and listed them in chronological order. I also listed expository papers and blog posts at the end of each section. Time and State in Distributed Systems Time, Clocks, and the Ordering of Events in a Distributed System. Leslie Lamport, Commn. of the ACM,&#160; 1978. Distributed Snapshots: Determining Global States of a Distributed System. K. Mani Chandy Leslie Lamport, ACM Transactions on Computer Systems, 1985. Virtual Time and Global States of Distributed Systems. &#160;Mattern, F. 1988. Practical uses of synchronized clocks in distributed systems. B. Liskov, 1991. Exp...
</div>
<a class='snippet-fade r-snippet-fade hidden' href='https://muratbuffalo.blogspot.com/2021/02/foundational-distributed-systems-papers.html'></a>
</div>
<div class='jump-link flat-button ripple'>
<a href='https://muratbuffalo.blogspot.com/2021/02/foundational-distributed-systems-papers.html' title=' Foundational distributed systems papers'>
Read more &gt;&gt;
</a>
</div>
</div>
</article>
<article class='post' role='article'>
<h3 class='post-title'><a href='https://muratbuffalo.blogspot.com/2026/03/building-database-on-s3.html'>Building a Database on S3</a></h3>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2026/03/building-database-on-s3.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2026/03/building-database-on-s3.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2026-03-04T22:06:00-05:00' title='2026-03-04T22:06:00-05:00'>
March 04, 2026
</time>
</a>
</span>
</div>
</div>
<div class='item-content float-container'>
<div class='item-thumbnail'>
<a href='https://muratbuffalo.blogspot.com/2026/03/building-database-on-s3.html'>
<img alt='Image' sizes='72px' src='https://blogger.googleusercontent.com/img/a/AVvXsEgUV8paJsfBDCdaizCxyZLf_tgGZc_L1c6HYhST-bupV3snzItwcj-3TzIJnc20dDeTmoFeMaEHxyZpxrqsgI80le-78m0BN7QqcMGPBkhwTLTu-BaWTc0DQ9rpXsag-tonr1n-TYZXz2sRYCk7HQaB94VGFboZ8sPvIL9_mIPGhBpOqL3B_42ueVNyq9o=w393-h400' srcset='https://blogger.googleusercontent.com/img/a/AVvXsEgUV8paJsfBDCdaizCxyZLf_tgGZc_L1c6HYhST-bupV3snzItwcj-3TzIJnc20dDeTmoFeMaEHxyZpxrqsgI80le-78m0BN7QqcMGPBkhwTLTu-BaWTc0DQ9rpXsag-tonr1n-TYZXz2sRYCk7HQaB94VGFboZ8sPvIL9_mIPGhBpOqL3B_42ueVNyq9o=w72-h72-p-k-no-nu 72w, https://blogger.googleusercontent.com/img/a/AVvXsEgUV8paJsfBDCdaizCxyZLf_tgGZc_L1c6HYhST-bupV3snzItwcj-3TzIJnc20dDeTmoFeMaEHxyZpxrqsgI80le-78m0BN7QqcMGPBkhwTLTu-BaWTc0DQ9rpXsag-tonr1n-TYZXz2sRYCk7HQaB94VGFboZ8sPvIL9_mIPGhBpOqL3B_42ueVNyq9o=w144-h144-p-k-no-nu 144w'/>
</a>
</div>
<div class='popular-posts-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
Hold your horses, though. I&#39;m not unveiling a new S3-native database. This paper is from 2008. Many of its protocols feel clunky today. Yet it nails the core idea that defines modern cloud-native databases: separate storage from compute. The authors propose a shared-disk design over Amazon S3, with stateless clients executing transactions. The paper provides a blueprint for serverless before the term existed. SQS as WAL and S3 as Pagestore The 2008 S3 was painfully slow, and 100 ms reads weren&#39;t unusual. To hide that latency, the database separates &quot;commit&quot; from &quot;apply&quot;. Clients write small, idempotent redo logs to Amazon Simple Queue Service (SQS) instead of touching S3 directly. An asynchronous checkpoint by a client applies those logs to B-tree pages on S3 later. This design shows strong parallels to modern disaggregated architectures . SQS becomes the write-ahead log (WAL) and logstore. S3 becomes the pagestore. Modern Aurora follows a similar logic : t...
</div>
<a class='snippet-fade r-snippet-fade hidden' href='https://muratbuffalo.blogspot.com/2026/03/building-database-on-s3.html'></a>
</div>
<div class='jump-link flat-button ripple'>
<a href='https://muratbuffalo.blogspot.com/2026/03/building-database-on-s3.html' title='Building a Database on S3'>
Read more &gt;&gt;
</a>
</div>
</div>
</article>
<article class='post' role='article'>
<h3 class='post-title'><a href='https://muratbuffalo.blogspot.com/2026/01/cloudspecs-cloud-hardware-evolution.html'>Cloudspecs: Cloud Hardware Evolution Through the Looking Glass</a></h3>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2026/01/cloudspecs-cloud-hardware-evolution.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2026/01/cloudspecs-cloud-hardware-evolution.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2026-01-09T10:56:00-05:00' title='2026-01-09T10:56:00-05:00'>
January 09, 2026
</time>
</a>
</span>
</div>
</div>
<div class='item-content float-container'>
<div class='item-thumbnail'>
<a href='https://muratbuffalo.blogspot.com/2026/01/cloudspecs-cloud-hardware-evolution.html'>
<img alt='Image' sizes='72px' src='https://blogger.googleusercontent.com/img/a/AVvXsEhjspXxlUb6cWW1Co2aJyK-hX67_A10kqDPYggxhFSxpW3sncZ1SgKYlJtECVe1Ys1jC6igt4Zs7S9oUFMTRE8755mdxGFVnxoie-Wq8EfUFAT3PMF4hvHXfX_jhLYj-mqmdf0hFxzw-PSstHp0rWfUgY1tJ5sapo6VZAR5Y-yLeOoQMydIKEm2qMO6fC4=w640-h156' srcset='https://blogger.googleusercontent.com/img/a/AVvXsEhjspXxlUb6cWW1Co2aJyK-hX67_A10kqDPYggxhFSxpW3sncZ1SgKYlJtECVe1Ys1jC6igt4Zs7S9oUFMTRE8755mdxGFVnxoie-Wq8EfUFAT3PMF4hvHXfX_jhLYj-mqmdf0hFxzw-PSstHp0rWfUgY1tJ5sapo6VZAR5Y-yLeOoQMydIKEm2qMO6fC4=w72-h72-p-k-no-nu 72w, https://blogger.googleusercontent.com/img/a/AVvXsEhjspXxlUb6cWW1Co2aJyK-hX67_A10kqDPYggxhFSxpW3sncZ1SgKYlJtECVe1Ys1jC6igt4Zs7S9oUFMTRE8755mdxGFVnxoie-Wq8EfUFAT3PMF4hvHXfX_jhLYj-mqmdf0hFxzw-PSstHp0rWfUgY1tJ5sapo6VZAR5Y-yLeOoQMydIKEm2qMO6fC4=w144-h144-p-k-no-nu 144w'/>
</a>
</div>
<div class='popular-posts-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
This paper (CIDR&#39;26) presents a comprehensive analysis of cloud hardware trends from 2015 to 2025, focusing on AWS and comparing it with other clouds and on-premise hardware. TL;DR: While network bandwidth per dollar improved by one order of magnitude (10x), CPU and DRAM gains (again in performance per dollar terms) have been much more modest. Most surprisingly, NVMe storage performance in the cloud has stagnated since 2016. Check out the NVMe SSD discussion below for data on this anomaly. CPU Trends Multi-core parallelism has skyrocketed in the cloud. Maximum core counts have increased by an order of magnitude over the last decade. The largest AWS instance u7in now boasts 448 cores. However, simply adding cores hasn&#39;t translated linearly into value. To measure real evolution, the authors normalized benchmarks (SPECint, TPC-H, TPC-C) by instance cost. SPECint benchmarking shows that cost-performance improved roughly 3x over ten years. A huge chunk of that gain comes from AWS G...
</div>
<a class='snippet-fade r-snippet-fade hidden' href='https://muratbuffalo.blogspot.com/2026/01/cloudspecs-cloud-hardware-evolution.html'></a>
</div>
<div class='jump-link flat-button ripple'>
<a href='https://muratbuffalo.blogspot.com/2026/01/cloudspecs-cloud-hardware-evolution.html' title='Cloudspecs: Cloud Hardware Evolution Through the Looking Glass'>
Read more &gt;&gt;
</a>
</div>
</div>
</article>
<article class='post' role='article'>
<h3 class='post-title'><a href='https://muratbuffalo.blogspot.com/2026/08/specula-scaling-formal-specifications.html'>Specula: Scaling formal specifications for autonomous model checking of system code</a></h3>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2026/08/specula-scaling-formal-specifications.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2026/08/specula-scaling-formal-specifications.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2026-08-12T17:33:00-04:00' title='2026-08-12T17:33:00-04:00'>
August 12, 2026
</time>
</a>
</span>
</div>
</div>
<div class='item-content float-container'>
<div class='item-thumbnail'>
<a href='https://muratbuffalo.blogspot.com/2026/08/specula-scaling-formal-specifications.html'>
<img alt='Image' sizes='72px' src='https://blogger.googleusercontent.com/img/a/AVvXsEh8aSdTkjBNIDBP7p8fvUKbmoGBafOb-jBxnAeyJnM1OPzZLOuYV59r42fROakJTkS_EmvpW__nobsHTsPuk_6vWdby_-FMXC81O0NtV0LxsjD2koZQRNJDVix09WaBoj3LvIldsLOmO_a0eSX3Pe4sgLmvlPcFj4rPw3eHZBzyB3IuczPIDt1Rra882no=w277-h640' srcset='https://blogger.googleusercontent.com/img/a/AVvXsEh8aSdTkjBNIDBP7p8fvUKbmoGBafOb-jBxnAeyJnM1OPzZLOuYV59r42fROakJTkS_EmvpW__nobsHTsPuk_6vWdby_-FMXC81O0NtV0LxsjD2koZQRNJDVix09WaBoj3LvIldsLOmO_a0eSX3Pe4sgLmvlPcFj4rPw3eHZBzyB3IuczPIDt1Rra882no=w72-h72-p-k-no-nu 72w, https://blogger.googleusercontent.com/img/a/AVvXsEh8aSdTkjBNIDBP7p8fvUKbmoGBafOb-jBxnAeyJnM1OPzZLOuYV59r42fROakJTkS_EmvpW__nobsHTsPuk_6vWdby_-FMXC81O0NtV0LxsjD2koZQRNJDVix09WaBoj3LvIldsLOmO_a0eSX3Pe4sgLmvlPcFj4rPw3eHZBzyB3IuczPIDt1Rra882no=w144-h144-p-k-no-nu 144w'/>
</a>
</div>
<div class='popular-posts-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
Specula is an agentic system that automates the process of software bug finding through authoring and model-checking a spec for the code. It derives TLA+ specifications automatically from the code, checks code-spec conformance through trace validation, model checks the spec to find concurrency bugs, and reproduces the bug at the code layer by writing integration tests with precise timing. I remember reading the Daikon paper &quot;Quickly detecting relevant program invariants&quot; in 2000 and getting impressed by it, and here we are after 26 years, solving the end-to-end problem much better than I ever thought would be possible in a push-button manner in the year of our lord 2026. But somehow, I am still somewhat unsatisfied with the paper. This may be me being hypercritical and trying to get more out of the paper by arguing with it . So bear with me until I resolve (or learn to accept) these problems over time. I know many of the authors of the Specula work, and respect them, and I...
</div>
<a class='snippet-fade r-snippet-fade hidden' href='https://muratbuffalo.blogspot.com/2026/08/specula-scaling-formal-specifications.html'></a>
</div>
<div class='jump-link flat-button ripple'>
<a href='https://muratbuffalo.blogspot.com/2026/08/specula-scaling-formal-specifications.html' title='Specula: Scaling formal specifications for autonomous model checking of system code'>
Read more &gt;&gt;
</a>
</div>
</div>
</article>
<article class='post' role='article'>
<h3 class='post-title'><a href='https://muratbuffalo.blogspot.com/2025/04/what-id-do-as-college-freshman.html'>What I'd do as a College Freshman in 2025</a></h3>
<div class='post-header'>
<div class='post-header-line-1'>
<span class='byline post-timestamp'>
-
<meta content='http://muratbuffalo.blogspot.com/2025/04/what-id-do-as-college-freshman.html'/>
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2025/04/what-id-do-as-college-freshman.html' rel='bookmark' title='permanent link'>
<time class='published' datetime='2025-04-10T10:26:00-04:00' title='2025-04-10T10:26:00-04:00'>
April 10, 2025
</time>
</a>
</span>
</div>
</div>
<div class='item-content float-container'>
<div class='popular-posts-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
Do Computer Science Absolutely. Still would. Many are spooked by LLMs. Some, like Jensen Huang, argue that &quot;nobody has to learn how to program.&quot; &#160; I argue the opposite . And I double down.&#160; Being supported by AI tools is not a substitute for mastery . You can&#8217;t borrow skills. You have to earn them. &#160; Computer science builds vital skills : hacking, debugging, abstract thinking, and quick adaptation. These don&#8217;t go out of style. &#160; Do STEM. It&#8217;s LLM-resistant. LLMs can retrieve and remix information, but do you know what to do with them? Like the dog chasing the car, what now? STEM teaches you that. It teaches you to think, to reason, to act. It gets you from information to wisdom. But only after you&#39;ve mastered the foundations. We&#39;re heading into the age of π-shaped people: depth in two areas, and generalist across . Building depth first, and then ranging is good strategy . &#160; So yes, I would learn the foundations of both CS and AI. And then do AI + X, where X is s...
</div>
<a class='snippet-fade r-snippet-fade hidden' href='https://muratbuffalo.blogspot.com/2025/04/what-id-do-as-college-freshman.html'></a>
</div>
<div class='jump-link flat-button ripple'>
<a href='https://muratbuffalo.blogspot.com/2025/04/what-id-do-as-college-freshman.html' title='What I&#39;d do as a College Freshman in 2025'>
Read more &gt;&gt;
</a>
</div>
</div>
</article>
</div>
</div>
</div></div>
</main>
</div>
<footer class='footer section' id='footer' name='Footer'><div class='widget Attribution' data-version='2' id='Attribution1'>
<div class='widget-content'>
<div class='blogger'>
<a href='https://www.blogger.com' rel='nofollow'>
<svg class='svg-icon-24'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_post_blogger_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
Powered by Blogger
</a>
</div>
<div class='image-attribution'>
Theme images by <a href="http://www.offset.com/photos/394244">Michael Elkan</a>
</div>
<div class='copyright'>Murat Demirbas</div>
</div>
</div></footer>
</div>
</div>
</div>
<aside class='sidebar-container container sidebar-invisible' role='complementary'>
<div class='navigation'>
<button class='svg-icon-24-button flat-icon-button ripple sidebar-back'>
<svg class='svg-icon-24'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_arrow_back_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
</button>
</div>
<div class='sidebar_top_wrapper'>
<div class='sidebar_top section' id='sidebar_top' name='Sidebar (Top)'><div class='widget Profile' data-version='2' id='Profile1'>
<div class='wrapper solo'>
<div class='widget-content individual'>
<a href='https://www.blogger.com/profile/07842046940394980130' rel='nofollow'>
<img alt='My photo' class='profile-img' height='120' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXlMEQx9THTN7WSG1fVU2GRv7E5wkIh1O2A4DiHbnewhZL2VbaCMz_uvrd5T5jiD56R4dzcMb3j_sZN9D03wMq1MQeipbD2Z67YWyXzpjY_8IjtmAYCxD3Y5hg4Ko752nh2egNrmjT6oWcBsBoCedZK1Ahc_cjNaB7xmUsKn7eshu5_ZU/s1600/MuratBuffalo.png' width='120'/>
</a>
<div class='profile-info'>
<dl class='profile-datablock'>
<dt class='profile-data'>
<a class='profile-link g-profile' href='https://www.blogger.com/profile/07842046940394980130' rel='author nofollow'>
Murat
</a>
</dt>
<dd class='profile-textblock profile-snippet snippet-container r-snippet-container'>
<div class='snippet-item r-snippetized'>
I am a principal research scientist at MongoDB Research. Ex-AWS. Ex-professor at SUNY Buffalo. I work on distributed systems, databases, cloud computing, formal methods, and neurosymbolic AI. You can follow me on <a href="https://fediscience.org/@muratdemirbas"> Mastodon</a> or <a href="http://twitter.com/muratdemirbas"> Twitter. </a>
</div>
<div class='snippet-fade r-snippet-fade hidden'></div>
</dd>
</dl>
<a class='profile-link visit-profile pill-button' href='https://www.blogger.com/profile/07842046940394980130' rel='author'>
Visit profile
</a>
</div>
</div>
</div>
</div></div>
</div>
<div class='sidebar_bottom section' id='sidebar_bottom' name='Sidebar (Bottom)'><div class='widget HTML' data-version='2' id='HTML1'>
<h3 class='title'>
Subscribe via email
</h3>
<div class='widget-content'>
<iframe src="https://muratdemirbas.substack.com/embed" width="100%" height="120" style="border: 1px solid #EEE; background: white" frameborder="0" scrolling="no"></iframe>
</div>
</div><div class='widget Stats' data-version='2' id='Stats1'>
<h3 class='title'>
Pageviews
</h3>
<div class='widget-content'>
<div id='Stats1_content' style='display: none;'>
<script src='https://www.gstatic.com/charts/loader.js' type='text/javascript'></script>
<span id='Stats1_sparklinespan' style='display:inline-block; width:75px; height:30px'></span>
<span class='counter-wrapper graph-counter-wrapper' id='Stats1_totalCount'>
</span>
</div>
</div>
</div><div class='widget BlogArchive' data-version='2' id='BlogArchive1'>
<details class='collapsible extendable'>
<summary>
<div class='collapsible-title'>
<h3 class='title'>
Recent Posts
</h3>
<svg class='svg-icon-24 chevron-down'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_expand_more_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<svg class='svg-icon-24 chevron-up'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_expand_less_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
</div>
</summary>
<div class='widget-content'>
<div id='ArchiveList'>
<div id='BlogArchive1_ArchiveList'>
<div class='first-items'>
<ul class='flat'>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2026/09/'>September<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2026/08/'>August<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2026/07/'>July<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2026/06/'>June<span class='post-count'>7</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2026/05/'>May<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2026/04/'>April<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2026/03/'>March<span class='post-count'>13</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2026/02/'>February<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2026/01/'>January<span class='post-count'>10</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/12/'>December<span class='post-count'>7</span></a>
</li>
</ul>
</div>
<div class='remaining-items'>
<ul class='flat'>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/11/'>November<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/10/'>October<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/09/'>September<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/08/'>August<span class='post-count'>8</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/07/'>July<span class='post-count'>7</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/06/'>June<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/05/'>May<span class='post-count'>8</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/04/'>April<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/03/'>March<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/02/'>February<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2025/01/'>January<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/12/'>December<span class='post-count'>8</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/11/'>November<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/10/'>October<span class='post-count'>8</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/09/'>September<span class='post-count'>10</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/08/'>August<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/07/'>July<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/06/'>June<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/05/'>May<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/04/'>April<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/03/'>March<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/02/'>February<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2024/01/'>January<span class='post-count'>7</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/12/'>December<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/11/'>November<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/10/'>October<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/09/'>September<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/08/'>August<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/07/'>July<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/06/'>June<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/05/'>May<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/04/'>April<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/03/'>March<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/02/'>February<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2023/01/'>January<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/12/'>December<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/11/'>November<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/10/'>October<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/09/'>September<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/08/'>August<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/07/'>July<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/06/'>June<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/05/'>May<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/04/'>April<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/03/'>March<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/02/'>February<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2022/01/'>January<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/12/'>December<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/11/'>November<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/10/'>October<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/09/'>September<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/08/'>August<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/07/'>July<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/06/'>June<span class='post-count'>12</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/05/'>May<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/04/'>April<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/03/'>March<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/02/'>February<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2021/01/'>January<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/12/'>December<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/11/'>November<span class='post-count'>7</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/10/'>October<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/09/'>September<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/08/'>August<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/07/'>July<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/06/'>June<span class='post-count'>11</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/05/'>May<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/04/'>April<span class='post-count'>8</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/03/'>March<span class='post-count'>8</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/02/'>February<span class='post-count'>7</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2020/01/'>January<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/12/'>December<span class='post-count'>10</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/11/'>November<span class='post-count'>14</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/10/'>October<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/09/'>September<span class='post-count'>13</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/07/'>July<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/06/'>June<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/05/'>May<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/04/'>April<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/03/'>March<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/02/'>February<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2019/01/'>January<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/12/'>December<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/11/'>November<span class='post-count'>7</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/10/'>October<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/09/'>September<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/08/'>August<span class='post-count'>8</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/07/'>July<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/06/'>June<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/05/'>May<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/04/'>April<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/03/'>March<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/02/'>February<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2018/01/'>January<span class='post-count'>13</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/12/'>December<span class='post-count'>15</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/11/'>November<span class='post-count'>15</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/10/'>October<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/09/'>September<span class='post-count'>8</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/08/'>August<span class='post-count'>10</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/07/'>July<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/06/'>June<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/05/'>May<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/04/'>April<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/02/'>February<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2017/01/'>January<span class='post-count'>7</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/12/'>December<span class='post-count'>7</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/11/'>November<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/10/'>October<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/09/'>September<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/07/'>July<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/06/'>June<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/05/'>May<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/04/'>April<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/03/'>March<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/02/'>February<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2016/01/'>January<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/12/'>December<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/11/'>November<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/10/'>October<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/09/'>September<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/08/'>August<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/06/'>June<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/05/'>May<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/04/'>April<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/03/'>March<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/02/'>February<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2015/01/'>January<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2014/11/'>November<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2014/10/'>October<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2014/09/'>September<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2014/08/'>August<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2014/07/'>July<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2014/06/'>June<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2014/03/'>March<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2014/02/'>February<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2014/01/'>January<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2013/12/'>December<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2013/11/'>November<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2013/08/'>August<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2013/07/'>July<span class='post-count'>4</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2013/06/'>June<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2013/05/'>May<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2013/04/'>April<span class='post-count'>8</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2013/01/'>January<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2012/12/'>December<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2012/11/'>November<span class='post-count'>7</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2012/10/'>October<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2012/09/'>September<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2012/08/'>August<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2012/05/'>May<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2012/03/'>March<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2012/02/'>February<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2012/01/'>January<span class='post-count'>2</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2011/12/'>December<span class='post-count'>3</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2011/09/'>September<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2011/06/'>June<span class='post-count'>1</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2011/05/'>May<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2011/04/'>April<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2011/03/'>March<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2011/02/'>February<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2011/01/'>January<span class='post-count'>5</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2010/12/'>December<span class='post-count'>6</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2010/11/'>November<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2010/10/'>October<span class='post-count'>9</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2010/09/'>September<span class='post-count'>7</span></a>
</li>
<li class='archivedate'>
<a href='https://muratbuffalo.blogspot.com/2007/08/'>August<span class='post-count'>1</span></a>
</li>
</ul>
</div>
<span class='show-more pill-button'>Show more</span>
<span class='show-less hidden pill-button'>Show less</span>
</div>
</div>
</div>
</details>
</div><div class='widget Label' data-version='2' id='Label1'>
<details class='collapsible extendable'>
<summary>
<div class='collapsible-title'>
<h3 class='title'>
Topics
</h3>
<svg class='svg-icon-24 chevron-down'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_expand_more_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
<svg class='svg-icon-24 chevron-up'>
<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_expand_less_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use>
</svg>
</div>
</summary>
<div class='widget-content cloud-label-widget-content'>
<div class='first-items'>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/2PC'>2PC<span class='label-count'>2</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/abstraction'>abstraction<span class='label-count'>11</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/agentic'>agentic<span class='label-count'>19</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/AI'>AI<span class='label-count'>29</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/analytics'>analytics<span class='label-count'>3</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/atomic%20storage'>atomic storage<span class='label-count'>2</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/auditability'>auditability<span class='label-count'>5</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/automated%20reasoning'>automated reasoning<span class='label-count'>19</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/aws'>aws<span class='label-count'>5</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/Azure'>Azure<span class='label-count'>11</span></a></span>
</div>
<div class='remaining-items'>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/benchmarks'>benchmarks<span class='label-count'>4</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/bestof'>bestof<span class='label-count'>9</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/big-data'>big-data<span class='label-count'>32</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/Blockchain'>Blockchain<span class='label-count'>39</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/book-review'>book-review<span class='label-count'>56</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/bugs'>bugs<span class='label-count'>1</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/calm'>calm<span class='label-count'>5</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/chaos'>chaos<span class='label-count'>2</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/claude'>claude<span class='label-count'>2</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/cloud%20computing'>cloud computing<span class='label-count'>21</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/ConcurrencyControlBook'>ConcurrencyControlBook<span class='label-count'>7</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/consistency'>consistency<span class='label-count'>34</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/Cosmos%20DB'>Cosmos DB<span class='label-count'>11</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/CosmosDB'>CosmosDB<span class='label-count'>12</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/crdts'>crdts<span class='label-count'>2</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/data%20warehouse'>data warehouse<span class='label-count'>2</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/databases'>databases<span class='label-count'>70</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/datacenter%20networking'>datacenter networking<span class='label-count'>3</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/dataflow'>dataflow<span class='label-count'>11</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/dbos'>dbos<span class='label-count'>1</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/DDIA'>DDIA<span class='label-count'>15</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/disaggregation'>disaggregation<span class='label-count'>9</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/distributed%20consensus'>distributed consensus<span class='label-count'>54</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/distributed%20transactions'>distributed transactions<span class='label-count'>44</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/distSQL'>distSQL<span class='label-count'>10</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/facebook'>facebook<span class='label-count'>16</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/failures'>failures<span class='label-count'>18</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/fault-tolerance'>fault-tolerance<span class='label-count'>49</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/formal%20methods'>formal methods<span class='label-count'>25</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/graph-processing'>graph-processing<span class='label-count'>1</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/hpts'>hpts<span class='label-count'>3</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/htap'>htap<span class='label-count'>3</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/humans'>humans<span class='label-count'>10</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/indexing'>indexing<span class='label-count'>4</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/isolation%20levels'>isolation levels<span class='label-count'>5</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/joke'>joke<span class='label-count'>1</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/linearizability'>linearizability<span class='label-count'>1</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/links'>links<span class='label-count'>2</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/liveDiscussion'>liveDiscussion<span class='label-count'>9</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/mad-questions'>mad-questions<span class='label-count'>42</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/main-memory'>main-memory<span class='label-count'>2</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/measuring'>measuring<span class='label-count'>1</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/metastability'>metastability<span class='label-count'>8</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/microservices'>microservices<span class='label-count'>2</span></a></span>
<span class='label-size label-size-5'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/misc'>misc<span class='label-count'>131</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/ML'>ML<span class='label-count'>1</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/mlbegin'>mlbegin<span class='label-count'>7</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/mldl'>mldl<span class='label-count'>26</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/mobile'>mobile<span class='label-count'>2</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/mongodb'>mongodb<span class='label-count'>10</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/MVCC'>MVCC<span class='label-count'>4</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/my%20advice'>my advice<span class='label-count'>27</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/my-paper'>my-paper<span class='label-count'>12</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/networking'>networking<span class='label-count'>1</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/newsql'>newsql<span class='label-count'>3</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/NoSQL'>NoSQL<span class='label-count'>3</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/OLAP'>OLAP<span class='label-count'>2</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/OLTP'>OLTP<span class='label-count'>7</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/ostep'>ostep<span class='label-count'>8</span></a></span>
<span class='label-size label-size-5'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/paper-review'>paper-review<span class='label-count'>154</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/paxos'>paxos<span class='label-count'>55</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/postgres'>postgres<span class='label-count'>1</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/presenting'>presenting<span class='label-count'>4</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/privacy'>privacy<span class='label-count'>1</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/programming'>programming<span class='label-count'>7</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/query-processing'>query-processing<span class='label-count'>2</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/raft'>raft<span class='label-count'>4</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/RDMA'>RDMA<span class='label-count'>3</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/reading-group'>reading-group<span class='label-count'>27</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/recent-reads'>recent-reads<span class='label-count'>2</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/reconfiguration'>reconfiguration<span class='label-count'>4</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/research-advice'>research-advice<span class='label-count'>58</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/research-question'>research-question<span class='label-count'>45</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/Rust'>Rust<span class='label-count'>3</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/scheduling'>scheduling<span class='label-count'>5</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/security'>security<span class='label-count'>1</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/seminar'>seminar<span class='label-count'>9</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/serializability'>serializability<span class='label-count'>4</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/serverless'>serverless<span class='label-count'>2</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/smartphones'>smartphones<span class='label-count'>2</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/snapshot%20isolation'>snapshot isolation<span class='label-count'>9</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/sonification'>sonification<span class='label-count'>1</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/SQL'>SQL<span class='label-count'>6</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/stabilization'>stabilization<span class='label-count'>7</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/statistics'>statistics<span class='label-count'>3</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/stream-processing'>stream-processing<span class='label-count'>12</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/teaching'>teaching<span class='label-count'>33</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/tensorflow'>tensorflow<span class='label-count'>11</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/testing'>testing<span class='label-count'>5</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/time'>time<span class='label-count'>23</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/time%20synchronization'>time synchronization<span class='label-count'>8</span></a></span>
<span class='label-size label-size-3'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/timeDB'>timeDB<span class='label-count'>8</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/tla'>tla<span class='label-count'>68</span></a></span>
<span class='label-size label-size-1'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/tpbook'>tpbook<span class='label-count'>1</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/transactions'>transactions<span class='label-count'>42</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/trip-report'>trip-report<span class='label-count'>43</span></a></span>
<span class='label-size label-size-2'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/wpaxos'>wpaxos<span class='label-count'>6</span></a></span>
<span class='label-size label-size-4'><a class='label-name' href='https://muratbuffalo.blogspot.com/search/label/writing'>writing<span class='label-count'>32</span></a></span>
</div>
<span class='show-more pill-button'>Show more</span>
<span class='show-less hidden pill-button'>Show less</span>
</div>
</details>
</div>
</div>
</aside>
<script type="text/javascript" src="https://resources.blogblog.com/blogblog/data/res/3904463084-indie_compiled.js" async="true"></script>
<script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/1363620594-widgets.js"></script>
<script type='text/javascript'>
window['__wavt'] = 'AAPvtVk4dr-HSwKF2P7sjDuolbuL:1789194898408';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d8436330762136344379','//muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html','8436330762136344379');
_WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '8436330762136344379', 'title': 'Metadata', 'url': 'https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html', 'canonicalUrl': 'http://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html', 'homepageUrl': 'https://muratbuffalo.blogspot.com/', 'searchUrl': 'https://muratbuffalo.blogspot.com/search', 'canonicalHomepageUrl': 'http://muratbuffalo.blogspot.com/', 'blogspotFaviconUrl': 'https://muratbuffalo.blogspot.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': false, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'G-8187JXPXZK', 'analytics4': true, 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Metadata - Atom\x22 href\x3d\x22https://muratbuffalo.blogspot.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Metadata - RSS\x22 href\x3d\x22https://muratbuffalo.blogspot.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Metadata - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/8436330762136344379/posts/default\x22 /\x3e\n\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Metadata - Atom\x22 href\x3d\x22https://muratbuffalo.blogspot.com/feeds/8080256387331719320/comments/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/1890a9484e710b1c', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': true, 'jumpLinkMessage': 'Read more \x26gt;\x26gt;', 'pageType': 'item', 'postId': '8080256387331719320', 'postImageThumbnailUrl': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw-UTn0lD4FZG9hucp6EIUb66fdMJ4tfv45rPS0GAYBUWmxhZ_nF9lAGjjXzASF3FoaY23tVrfV6guLkWHUAMnZtE7HpzZwMD_0z3cmdnhkusQqin25s0m_PBZ6avx7jIWUCb1GC7HkqdECEUTmSmdoY5Iz-EckFQUji-rrWtNFYoL1mIpl_hrnTvSkXE/s72-c/DALL%C2%B7E%202024-12-13%2010.45.03%20-%20A%20conceptual%20digital%20art%20piece%20illustrating%20the%20concept%20of%20time%20in%20distributed%20databases.%20The%20image%20features%20a%20network%20of%20interconnected%20clocks,%20each%20.webp', 'postImageUrl': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw-UTn0lD4FZG9hucp6EIUb66fdMJ4tfv45rPS0GAYBUWmxhZ_nF9lAGjjXzASF3FoaY23tVrfV6guLkWHUAMnZtE7HpzZwMD_0z3cmdnhkusQqin25s0m_PBZ6avx7jIWUCb1GC7HkqdECEUTmSmdoY5Iz-EckFQUji-rrWtNFYoL1mIpl_hrnTvSkXE/s320/DALL%C2%B7E%202024-12-13%2010.45.03%20-%20A%20conceptual%20digital%20art%20piece%20illustrating%20the%20concept%20of%20time%20in%20distributed%20databases.%20The%20image%20features%20a%20network%20of%20interconnected%20clocks,%20each%20.webp', 'pageName': 'Use of Time in Distributed Databases (part 1)', 'pageTitle': 'Metadata: Use of Time in Distributed Databases (part 1)'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': true, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Use of Time in Distributed Databases (part 1)', 'description': 'Distributed systems are characterized by nodes executing concurrently with no shared state and no common clock. Coordination between nodes a...', 'featuredImage': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw-UTn0lD4FZG9hucp6EIUb66fdMJ4tfv45rPS0GAYBUWmxhZ_nF9lAGjjXzASF3FoaY23tVrfV6guLkWHUAMnZtE7HpzZwMD_0z3cmdnhkusQqin25s0m_PBZ6avx7jIWUCb1GC7HkqdECEUTmSmdoY5Iz-EckFQUji-rrWtNFYoL1mIpl_hrnTvSkXE/s320/DALL%C2%B7E%202024-12-13%2010.45.03%20-%20A%20conceptual%20digital%20art%20piece%20illustrating%20the%20concept%20of%20time%20in%20distributed%20databases.%20The%20image%20features%20a%20network%20of%20interconnected%20clocks,%20each%20.webp', 'url': 'https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html', 'type': 'item', 'isSingleItem': true, 'isMultipleItems': false, 'isError': false, 'isPage': false, 'isPost': true, 'isHomepage': false, 'isArchive': false, 'isLabelSearch': false, 'postId': 8080256387331719320}}, {'name': 'widgets', 'data': [{'title': 'Search This Blog', 'type': 'BlogSearch', 'sectionId': 'search_top', 'id': 'BlogSearch1'}, {'title': 'Metadata (Header)', 'type': 'Header', 'sectionId': 'header', 'id': 'Header1'}, {'title': 'Blog Posts', 'type': 'Blog', 'sectionId': 'page_body', 'id': 'Blog1', 'posts': [{'id': '8080256387331719320', 'title': 'Use of Time in Distributed Databases (part 1)', 'featuredImage': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw-UTn0lD4FZG9hucp6EIUb66fdMJ4tfv45rPS0GAYBUWmxhZ_nF9lAGjjXzASF3FoaY23tVrfV6guLkWHUAMnZtE7HpzZwMD_0z3cmdnhkusQqin25s0m_PBZ6avx7jIWUCb1GC7HkqdECEUTmSmdoY5Iz-EckFQUji-rrWtNFYoL1mIpl_hrnTvSkXE/s320/DALL%C2%B7E%202024-12-13%2010.45.03%20-%20A%20conceptual%20digital%20art%20piece%20illustrating%20the%20concept%20of%20time%20in%20distributed%20databases.%20The%20image%20features%20a%20network%20of%20interconnected%20clocks,%20each%20.webp', 'showInlineAds': false}], 'headerByline': {'regionName': 'header1', 'items': [{'name': 'share', 'label': ''}, {'name': 'timestamp', 'label': '-'}]}, 'footerBylines': [{'regionName': 'footer1', 'items': [{'name': 'comments', 'label': 'comments'}, {'name': 'icons', 'label': ''}]}, {'regionName': 'footer2', 'items': [{'name': 'labels', 'label': ''}]}, {'regionName': 'footer3', 'items': [{'name': 'location', 'label': 'Location:'}]}], 'allBylineItems': [{'name': 'share', 'label': ''}, {'name': 'timestamp', 'label': '-'}, {'name': 'comments', 'label': 'comments'}, {'name': 'icons', 'label': ''}, {'name': 'labels', 'label': ''}, {'name': 'location', 'label': 'Location:'}]}, {'title': '', 'type': 'PopularPosts', 'sectionId': 'page_body', 'id': 'PopularPosts1', 'posts': [{'title': 'The Safest Job from AI may be Writing', 'id': 3474170472248755218}, {'title': 'The Two Abstractions of System Design: Hide or Reduce', 'id': 3031374066882365427}, {'title': 'The Agentic Self: Parallels Between AI and Self-Improvement', 'id': 7002344051705218447}, {'title': ' Learning about distributed systems: where to start?', 'id': 1265255918931660489}, {'title': 'Hints for Distributed Systems Design', 'id': 541578283189852885}, {'title': ' Foundational distributed systems papers', 'id': 9195727313486447941}, {'title': 'Building a Database on S3', 'id': 6882654946668462778}, {'title': 'Cloudspecs: Cloud Hardware Evolution Through the Looking Glass', 'id': 9104187276584034736}, {'title': 'Specula: Scaling formal specifications for autonomous model checking of system code', 'id': 6722390316485163334}, {'title': 'What I\x27d do as a College Freshman in 2025', 'id': 6461457030698793296}]}, {'type': 'Attribution', 'sectionId': 'footer', 'id': 'Attribution1'}, {'title': 'About Me', 'type': 'Profile', 'sectionId': 'sidebar_top', 'id': 'Profile1'}, {'title': 'Subscribe via email', 'type': 'HTML', 'sectionId': 'sidebar_bottom', 'id': 'HTML1'}, {'title': 'Pageviews', 'type': 'Stats', 'sectionId': 'sidebar_bottom', 'id': 'Stats1'}, {'title': 'Recent Posts', 'type': 'BlogArchive', 'sectionId': 'sidebar_bottom', 'id': 'BlogArchive1'}, {'title': 'Topics', 'type': 'Label', 'sectionId': 'sidebar_bottom', 'id': 'Label1'}]}]);
_WidgetManager._RegisterWidget('_BlogSearchView', new _WidgetInfo('BlogSearch1', 'search_top', document.getElementById('BlogSearch1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'page_body', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/700075392-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/828616780-lightbox_bundle.css'}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_PopularPostsView', new _WidgetInfo('PopularPosts1', 'page_body', document.getElementById('PopularPosts1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer', document.getElementById('Attribution1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_ProfileView', new _WidgetInfo('Profile1', 'sidebar_top', document.getElementById('Profile1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML1', 'sidebar_bottom', document.getElementById('HTML1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_StatsView', new _WidgetInfo('Stats1', 'sidebar_bottom', document.getElementById('Stats1'), {'title': 'Pageviews', 'showGraphicalCounter': true, 'showAnimatedCounter': true, 'showSparkline': true, 'statsUrl': '//muratbuffalo.blogspot.com/b/stats?style\x3dBLACK_TRANSPARENT\x26timeRange\x3dALL_TIME\x26token\x3dAEz_qU8UiS-u1GsSdfGgy-vXaZ81L4S499P9XGJAzWVDOf-dx1I_uVwy3A_N3NwoJD4odWmCe1v1U77UIlDOfe8'}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar_bottom', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar_bottom', document.getElementById('Label1'), {}, 'displayModeFull'));
</script>
</body>
</html>