3857 lines
189 KiB
HTML
3857 lines
189 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 4): Synchronized clocks in production databases</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/2025/01/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://draft.blogger.com/feeds/8436330762136344379/posts/default" />
|
|
|
|
<link rel="alternate" type="application/atom+xml" title="Metadata - Atom" href="https://muratbuffalo.blogspot.com/feeds/2337381178199656146/comments/default" />
|
|
<!--Can't find substitution for tag [blog.ieCssRetrofitLinks]-->
|
|
<link href='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk-Ltib3Wk3psceH8hdEdE-PUdoyhGhwZcfE6ubUf0rS9JSyZvNc19zbHp4-er73mhpBj8fhLXX3qJ4Blf6Z-ypsrPbr3Uw8NOXUXWdaWg5jMQHz5oR6EDZYbCj1-y0wHZkIQzXgJ7Ymno2Sp1BIAhEOgKjQhCNOf4zqiLUBI-kKjDvUFlMjTpomqm6A/s320/DALL%C2%B7E%202025-01-08%2012.00.03%20-%20A%20conceptual%20art%20piece%20illustrating%20distributed%20systems%20and%20causal%20consistency%20without%20slowdown%20cascades.%20Show%20interconnected%20data%20centers%20with%20multip.webp' rel='image_src'/>
|
|
<meta content='http://muratbuffalo.blogspot.com/2025/01/use-of-time-in-distributed-databases.html' property='og:url'/>
|
|
<meta content='Use of Time in Distributed Databases (part 4): Synchronized clocks in production databases' property='og:title'/>
|
|
<meta content='This is part 4 of our "Use of Time in Distributed Databases" series . In this post, we explore how synchronized physical clocks enhance prod...' property='og:description'/>
|
|
<meta content='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk-Ltib3Wk3psceH8hdEdE-PUdoyhGhwZcfE6ubUf0rS9JSyZvNc19zbHp4-er73mhpBj8fhLXX3qJ4Blf6Z-ypsrPbr3Uw8NOXUXWdaWg5jMQHz5oR6EDZYbCj1-y0wHZkIQzXgJ7Ymno2Sp1BIAhEOgKjQhCNOf4zqiLUBI-kKjDvUFlMjTpomqm6A/w1200-h630-p-k-no-nu/DALL%C2%B7E%202025-01-08%2012.00.03%20-%20A%20conceptual%20art%20piece%20illustrating%20distributed%20systems%20and%20causal%20consistency%20without%20slowdown%20cascades.%20Show%20interconnected%20data%20centers%20with%20multip.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://draft.blogger.com/dyncss/8436330762136344379/authorization.css?zx=8b51bcf5-dd79-4320-b3e4-1df045ad107d' media='none' onload='if(media!='all')media='all'' rel='stylesheet'/><noscript><link href='https://draft.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/2025/01/use-of-time-in-distributed-databases.html"
|
|
},
|
|
"headline": "Use of Time in Distributed Databases (part 4): Synchronized clocks in production databases","description": "This is part 4 of our \u0026quot;Use of Time in Distributed Databases\u0026quot; series . In this post, we explore how synchronized physical clocks en...","datePublished": "2025-01-10T12:56:00-05:00",
|
|
"dateModified": "2025-01-10T12:56:50-05:00","image": {
|
|
"@type": "ImageObject","url": "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk-Ltib3Wk3psceH8hdEdE-PUdoyhGhwZcfE6ubUf0rS9JSyZvNc19zbHp4-er73mhpBj8fhLXX3qJ4Blf6Z-ypsrPbr3Uw8NOXUXWdaWg5jMQHz5oR6EDZYbCj1-y0wHZkIQzXgJ7Ymno2Sp1BIAhEOgKjQhCNOf4zqiLUBI-kKjDvUFlMjTpomqm6A/w1200-h630-p-k-no-nu/DALL%C2%B7E%202025-01-08%2012.00.03%20-%20A%20conceptual%20art%20piece%20illustrating%20distributed%20systems%20and%20causal%20consistency%20without%20slowdown%20cascades.%20Show%20interconnected%20data%20centers%20with%20multip.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='2337381178199656146'></a>
|
|
<h3 class='post-title entry-title'>
|
|
Use of Time in Distributed Databases (part 4): Synchronized clocks in production databases
|
|
</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-2337381178199656146' class='sharing' data-title='Use of Time in Distributed Databases (part 4): Synchronized clocks in production databases'>
|
|
<button aria-controls='sharing-popup-Blog1-byline-2337381178199656146' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-Blog1-byline-2337381178199656146' 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-2337381178199656146' role='menu'>
|
|
<li>
|
|
<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://draft.blogger.com/share-post.g?blogID=8436330762136344379&postID=2337381178199656146&target=' data-url='https://muratbuffalo.blogspot.com/2025/01/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://draft.blogger.com/share-post.g?blogID=8436330762136344379&postID=2337381178199656146&target=facebook' data-url='https://muratbuffalo.blogspot.com/2025/01/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://draft.blogger.com/share-post.g?blogID=8436330762136344379&postID=2337381178199656146&target=twitter' data-url='https://muratbuffalo.blogspot.com/2025/01/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://draft.blogger.com/share-post.g?blogID=8436330762136344379&postID=2337381178199656146&target=pinterest' data-url='https://muratbuffalo.blogspot.com/2025/01/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://draft.blogger.com/share-post.g?blogID=8436330762136344379&postID=2337381178199656146&target=email' data-url='https://muratbuffalo.blogspot.com/2025/01/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/2025/01/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/2025/01/use-of-time-in-distributed-databases.html'/>
|
|
<a class='timestamp-link' href='https://muratbuffalo.blogspot.com/2025/01/use-of-time-in-distributed-databases.html' rel='bookmark' title='permanent link'>
|
|
<time class='published' datetime='2025-01-10T12:56:00-05:00' title='2025-01-10T12:56:00-05:00'>
|
|
January 10, 2025
|
|
</time>
|
|
</a>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class='post-body entry-content float-container' id='post-body-2337381178199656146'>
|
|
<p>This is part 4 of our <a href="https://muratbuffalo.blogspot.com/2024/12/use-of-time-in-distributed-databases.html">"Use of Time in Distributed Databases" series</a>. In this post, we explore how synchronized physical clocks enhance production database systems.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk-Ltib3Wk3psceH8hdEdE-PUdoyhGhwZcfE6ubUf0rS9JSyZvNc19zbHp4-er73mhpBj8fhLXX3qJ4Blf6Z-ypsrPbr3Uw8NOXUXWdaWg5jMQHz5oR6EDZYbCj1-y0wHZkIQzXgJ7Ymno2Sp1BIAhEOgKjQhCNOf4zqiLUBI-kKjDvUFlMjTpomqm6A/s1024/DALL%C2%B7E%202025-01-08%2012.00.03%20-%20A%20conceptual%20art%20piece%20illustrating%20distributed%20systems%20and%20causal%20consistency%20without%20slowdown%20cascades.%20Show%20interconnected%20data%20centers%20with%20multip.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/AVvXsEiRk-Ltib3Wk3psceH8hdEdE-PUdoyhGhwZcfE6ubUf0rS9JSyZvNc19zbHp4-er73mhpBj8fhLXX3qJ4Blf6Z-ypsrPbr3Uw8NOXUXWdaWg5jMQHz5oR6EDZYbCj1-y0wHZkIQzXgJ7Ymno2Sp1BIAhEOgKjQhCNOf4zqiLUBI-kKjDvUFlMjTpomqm6A/s320/DALL%C2%B7E%202025-01-08%2012.00.03%20-%20A%20conceptual%20art%20piece%20illustrating%20distributed%20systems%20and%20causal%20consistency%20without%20slowdown%20cascades.%20Show%20interconnected%20data%20centers%20with%20multip.webp" width="320" /></a></div><h2 style="text-align: left;">Spanner</h2><p><a href="https://muratbuffalo.blogspot.com/2013/07/spanner-googles-globally-distributed_4.html">Google's Spanner (OSDI'12)</a> implemented a novel approach to handling time in distributed database systems through its TrueTime API. TrueTime API provides time as an interval that is guaranteed to contain the actual time, maintained within about 6ms (this is 2012 published number which improved significantly since then) of uncertainty using GPS receivers and atomic clocks. This explicit handling of time uncertainty allows Spanner to provide strong consistency guarantees while operating at a global scale.</p><p>Spanner uses multi-version concurrency control (MVCC) and achieves external consistency (linearizability) for current transactions through techniques like "commit wait," where transactions wait out the uncertainty in their commit timestamps before making their writes visible. Spanner uses Paxos groups approach to shard (partition) data across up to hundreds of servers, but thanks to TrueTime clocks, the system is able to provide linearizability to transactions without having to coordinate across all shards.</p><p>The real power of TrueTime becomes apparent in its handling of lock-free snapshot reads (reads of past database states). Without TrueTime, capturing consistent snapshots across a distributed database would require extensively tracking and storing causality relationships between different versions of data across the system. By using precisely synchronized time as the basis for versioning, Spanner can easily identify globally consistent reads of the database at any point in the past simply by specifying a timestamp in a lock free manner.</p><p><br /></p><h2 style="text-align: left;">CockroachDB</h2><p><a href="https://muratbuffalo.blogspot.com/2022/03/cockroachdb-resilient-geo-distributed.html">CockroachDB</a> builds on concepts from Google's Spanner, using a distributed key-value store organized into ranges (approximately 64MB chunks)--with each range forming its own Raft consensus group.</p><p>The key innovation of CockroachDB lies in achieving strong consistency and geo-distribution without relying on tightly-synchronized atomic clocks. Instead, it uses NTP-synchronized clocks alongside <a href="https://muratbuffalo.blogspot.com/2014/07/hybrid-logical-clocks.html">hybrid logical clocks (HLCs)</a> and intent locks to handle time uncertainty. Unlike Spanner, which uses TrueTime and "commit-wait" to handle clock uncertainty, CockroachDB refrains from commit-waits due to longer NTP uncertainty intervals. CockroachDB dynamically adjusts transaction timestamps upward when conflicts occur within the uncertainty window. This approach eliminates the need for tightly-synchronized clocks, but leads to more transaction aborts/restarts under high contention.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzbcwoZMx3zXe2qEKcVzbdhWqGdpCyAlkmpKqGuebtaHU7rCODTYTgvVnzG1Gve6zwKGAPozYtm8w5wEnf6ltjZBYNyB-a__aOneOSzCICLjogoBUzoGilir97OU0XnDLLIUuqgVsbHSWWqP36f62aqtvgoQzn0cB3HIQ-dF6Epn9ct6Lpfmeb-Vwg1Go/s400/Screenshot%202024-12-16%20at%2012.38.26%E2%80%AFPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="344" data-original-width="400" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzbcwoZMx3zXe2qEKcVzbdhWqGdpCyAlkmpKqGuebtaHU7rCODTYTgvVnzG1Gve6zwKGAPozYtm8w5wEnf6ltjZBYNyB-a__aOneOSzCICLjogoBUzoGilir97OU0XnDLLIUuqgVsbHSWWqP36f62aqtvgoQzn0cB3HIQ-dF6Epn9ct6Lpfmeb-Vwg1Go/s320/Screenshot%202024-12-16%20at%2012.38.26%E2%80%AFPM.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2KF4G4dLeXBSY8P7CEaioOeai0gv_s-cGGBT_u_Kr6jpFd0GICk7fx0BPgvgE5HsZRoRG6HeK3zFKTDrC4DHWMEW28T-o_XW0nCQXG-gOBgZvOyj9UpYVJ7Aap4EzuIK_HleOUuPCoAAZFkbe7Lv7SC8190x9omErU9_GDV5SiD-9etDvCWDvrCVos74/s400/Screenshot%202024-12-16%20at%2012.38.40%E2%80%AFPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="400" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2KF4G4dLeXBSY8P7CEaioOeai0gv_s-cGGBT_u_Kr6jpFd0GICk7fx0BPgvgE5HsZRoRG6HeK3zFKTDrC4DHWMEW28T-o_XW0nCQXG-gOBgZvOyj9UpYVJ7Aap4EzuIK_HleOUuPCoAAZFkbe7Lv7SC8190x9omErU9_GDV5SiD-9etDvCWDvrCVos74/s320/Screenshot%202024-12-16%20at%2012.38.40%E2%80%AFPM.png" width="320" /></a></div><p>CockroachDB implements serializable isolation through a MVCC system. Serializable isolation guarantees transactions appear to execute in isolation, but strict serializability adds a real-time ordering constraint: if transaction T1 commits before T2 begins, T1's commit timestamp must precede T2's. <a href="https://muratbuffalo.blogspot.com/2022/08/strict-serializability-but-at-what-cost.html">With NTP-synchronized clocks, CockroachDB achieves serializability but may violate strict serializability due to clock skew between nodes.</a></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkHKKxtfqkev_QX3XiWhLiXsbiDn6mF76UTWpCfDxE8j1mIedSEQZa-QtOmeMhfqBBmLm3dYUNVZHrAXXCq1zufUqKqC1RBvRYSiJGqvcXa-yWohaBW_MrBhYREyilQrilYHxyFWtph12FUryXJLqIbYTiTVdAjUrmKuI_Q2h337uBIaInuGysBg2ZnHo/s1200/Screenshot%202025-01-10%20at%2012.46.36%E2%80%AFPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="564" data-original-width="1200" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkHKKxtfqkev_QX3XiWhLiXsbiDn6mF76UTWpCfDxE8j1mIedSEQZa-QtOmeMhfqBBmLm3dYUNVZHrAXXCq1zufUqKqC1RBvRYSiJGqvcXa-yWohaBW_MrBhYREyilQrilYHxyFWtph12FUryXJLqIbYTiTVdAjUrmKuI_Q2h337uBIaInuGysBg2ZnHo/w400-h188/Screenshot%202025-01-10%20at%2012.46.36%E2%80%AFPM.png" width="400" /></a></div><p>This limitation is illustrated through a scenario with three transactions across two keys: when transaction T1 reads both keys, it may see T3's update to y but not T2's earlier update to x, violating strict serializability. While this execution is serializable (as the transactions could be ordered T3, T1, T2), it breaks the real-time ordering guarantee that strict serializability requires. CockroachDB's reliance on looser clock synchronization makes such guarantees impossible without significant performance penalties. Spanner avoids these issues through its TrueTime API and tightly synchronized clocks, as it can afford performing commit-wait (delaying transaction commits until the timestamp's upper bound has passed).</p><p><a href="https://muratbuffalo.blogspot.com/2024/12/utilizing-highly-synchronized-clocks-in.html">A recent paper</a> investigated integrating high-precision clock synchronization into CockroachDB and the resulting impact on performance. This is a good read if you are interested in understanding CockroachDB's handling of time uncertainty in transaction processing.</p><p>YugabyteDB, which has a similar Raft-groups based shared nothing architecture, <a href="https://www.yugabyte.com/blog/aws-clock-synchronization/">recently posted a great analysis</a> of how to make AWS Time Sync Service with Precision Hardware Clock (with 50 microsecond clockbound) work with their database.</p><p><br /></p><h2 style="text-align: left;">MongoDB</h2><p><a href="https://muratbuffalo.blogspot.com/2024/04/implementation-of-cluster-wide-logical.html">MongoDB's implementation of causal consistency</a> also relies on Hybrid Logical Clocks (HLC). The system tracks ClusterTime as a tuple of Unix epoch seconds and an increment counter, allowing for fine-grained ordering within the same second.</p><p>This combines the benefits of physical and logical time, incrementing the logical clock only when operations are written to the primary node's replication log (op log). </p><p>Causal consistency is implemented through sessions, where each operation carries the highest known operationTime, and nodes wait for their operation log to catch up to this time before processing requests. This approach enables cross-session and cross-client causal consistency while maintaining system availability during network partitions.</p><p>MongoDB uses ClusterTime also for running OCC <a href="https://muratbuffalo.blogspot.com/2024/02/verifying-transactional-consistency-of.html">general purpose transactions across multiple shards</a> and provides snapshot isolation guarantee for the transactions. This takes longer to explain, so I will explain MongoDB's interactive/ACID distributed transaction protocol in another blog post. </p><p><br /></p><h2 style="text-align: left;">DynamoDB</h2><p><a href="https://muratbuffalo.blogspot.com/2023/08/distributed-transactions-at-scale-in.html">DynamoDB's implementation of transactions</a> uses a timestamp-based <a href="https://muratbuffalo.blogspot.com/2022/11/timestamp-based-algorithms-for.html">Bernstein-Goldman optimistic concurrency control (TSO) protocol from 1980</a>, where transactions are assigned timestamps at the start to define their position in the serial order. Correctness does not depend on perfect clock synchronization --the timestamps can be treated as monotonically increasing logical timestamps since the protocol rejects smaller timestamps. Synchronized clocks help improve the performance of transactions by reducing spurious conflicts.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXElNPSAeGYj0eDug8JJYo8gGqThBErfTBhMeGFlR1QdfdSETpoN3AP1vtOOehRXpDQk6RsPpCwUV2iQVX_39ugwx89YQjvwOTk7TJ3jRlDNHLreTB4WEo8Us5tXmN29yJoFEV5sZpNPD6sSOCUZTD67U4voJd4eHJdxXMTBF3xk0hKwj-jlBQitOycvE/s640/Screenshot%202023-08-17%20at%202.35.48%20PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="326" data-original-width="640" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXElNPSAeGYj0eDug8JJYo8gGqThBErfTBhMeGFlR1QdfdSETpoN3AP1vtOOehRXpDQk6RsPpCwUV2iQVX_39ugwx89YQjvwOTk7TJ3jRlDNHLreTB4WEo8Us5tXmN29yJoFEV5sZpNPD6sSOCUZTD67U4voJd4eHJdxXMTBF3xk0hKwj-jlBQitOycvE/w400-h204/Screenshot%202023-08-17%20at%202.35.48%20PM.png" width="400" /></a></div><p>To maintain its promise of predictable performance at scale, DynamoDB implements one-shot transactions rather than interactive transactions, allowing it to avoid the complexities of lock management and recovery. For write transactions, the system uses a two-phase protocol where the transaction coordinator checks timestamps against item timestamps before committing. While better synchronized clocks result in more successful transactions (as real-time ordering aligns better with serialization order), the system includes safeguards against clocks that are too far ahead and isolates transaction managers with faulty clocks.</p><p>For read-only transactions, DynamoDB employs a two-phase protocol that avoids maintaining read timestamps on items, which would turn every read into a costly write operation. Instead, it uses log sequence numbers (LSNs) to detect concurrent modifications between the two phases.</p><p><br /></p><h2 style="text-align: left;">Accord</h2><p><a href="https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-15%3A+General+Purpose+Transactions">Accord protocol (2023)</a> aims to implement general-purpose transactions in Cassandra. The key innovation is the use of synchronized clocks and hybrid logical clocks (HLCs) to achieve fast, consistent transactions across distributed systems.</p><p>Accord is a leaderless consensus protocol aims to achieve optimal latency (one WAN round-trip) under normal conditions while maintaining strict-serializable isolation. It comes from the same family of solutions like EPaxos, Caesar, and Tempo. Improving on Tempo (<a href="https://muratbuffalo.blogspot.com/2022/02/efficient-replication-via-timestamp.html">which we had reviewed in detail here</a>), Accord handles timestamp conflicts more efficiently by allowing for inconsistent but valid sets of dependencies between transactions, requiring only that all dependency sets include those that may be committed with a lower timestamp.</p><p>This time-based approach, combined with the Reorder Buffer and Fast Path Electorate concepts, helps achieve improve performance. Accord's reorder buffer uses knowledge of maximum clock skew between nodes and point-to-point latencies to ensure messages are processed in the correct timestamp order. The system buffers timestamp proposals for a period equal to the clock skew plus the longest point-to-point latency, ensuring that potentially conflicting messages have time to arrive before processing begins. Accord uses HLCs that augments timestamps with unique replica IDs to achive both temporal ordering and global uniqueness of transactions.</p><p>If you just want to focus on the abstract idea, <a href="https://muratbuffalo.blogspot.com/2023/07/detock-high-performance-multi-region.html">Detock (SIGMOD 2023) presents a similar idea for serializing transactions using time</a>. So yeah there is a hint of deterministic databases here. </p><p><br /></p><h2 style="text-align: left;">TIDB: snapshot isolation (Timestamp Oracle)</h2><p>TiDB employs a centralized timestamp management system through its Placement Driver (PD), which hosts the timestamp oracle (TSO). The TSO generates globally unique timestamps that combine physical time (with millisecond accuracy) and logical time (using 18 bits), serving as transaction IDs. This hybrid logical clock approach ensures strict ordering of transactions while maintaining a close relationship with real time.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTQafttL2Rge9BXG2eyowMSlIXXnFT2fyDPDHE7bFUKQsfrK-Mf5FTgvhpGG9nsRsuOhWPQh5wlWglILO4wry5V9Ppfq-2TScr7Q4DYEUtzX0-LsyCi1u3tLfS0eYTBxpovWIJf3EqQIrCRzqAzyAap4fis-uIcssj9bqcu_5J8f1db4K19jk6Tk9uLhI/s3000/tidb-architecture.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="3000" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTQafttL2Rge9BXG2eyowMSlIXXnFT2fyDPDHE7bFUKQsfrK-Mf5FTgvhpGG9nsRsuOhWPQh5wlWglILO4wry5V9Ppfq-2TScr7Q4DYEUtzX0-LsyCi1u3tLfS0eYTBxpovWIJf3EqQIrCRzqAzyAap4fis-uIcssj9bqcu_5J8f1db4K19jk6Tk9uLhI/w400-h214/tidb-architecture.png" width="400" /></a></div><p>TiDB uses these timestamps to implement snapshot isolation (SI) through multi-version concurrency control (MVCC). Unlike CockroachDB which provides serializability, TiDB focuses on snapshot isolation and read committed isolation levels. The timestamps play a crucial role in transaction management, allowing the system to maintain consistent views of the data and protect against write-write conflicts. The system supports both optimistic and pessimistic concurrency control methods, with the optimistic approach providing better throughput in low-conflict situations.</p><p>An important limitation of TiDB's time-based approach is that its centralized TSO makes multi-region deployment challenging. While the system uses Raft for replication within a single region (organizing data into 96MB range shards they call "regions"), geo-distribution would require modifications to both the TSO and Placement Driver to handle cross-region timestamp coordination effectively.</p><p><br /></p><h2 style="text-align: left;">Aurora Limitless</h2><p>Aurora Limitless is not a different engine, but rather a managed sharding option built on top of Aurora (<a href="https://muratbuffalo.blogspot.com/2022/03/amazon-aurora-design-considerations-and.html">which we reviewed here</a>). Instead of a single writer it allows for multiple writers by leveraging precise time synchronization to achieve scalable transactions. The system uses Amazon TimeSync, which provides microsecond-accurate time synchronization with bounded uncertainty (under 50 microseconds), combined with Hybrid Logical Clocks (HLC) to ensure consistent ordering of events across the distributed system.</p><p>Aurora Limitless modifies PostgreSQL's traditional snapshot isolation mechanism to work in a distributed environment by implementing snapshots "as of then" rather than "as of now." To handle potential issues with transaction visibility and commit timing, Aurora Limitless uses clever techniques like predicting commit completion times and setting commit timestamps slightly in the future. This approach helps maintain read performance by ensuring reads are never blocked by writes while still preserving consistency guarantees.</p><p>The architecture employs a two-phase commit (2PC) protocol with an interesting twist: transaction routers initially coordinate commits but hand off supervision to local shard coordinators for high availability. This is because we don't want to require high-availability at the router, and keep it soft-state. Shards already have high availability built-in, so the router hands off the supervision 2PC completion to a shard leader, which is already replicated and highly available. The system also addresses the challenge of "zombie shards" (nodes that don't know they've been failed over) through consistency leases that expire after a few seconds to prevent stale reads. </p><p><br /></p><h2 style="text-align: left;">Aurora DSQL</h2><p><a href="https://brooker.co.za/blog/2024/12/03/aurora-dsql.html">Aurora DSQL (2024)</a> uses time as a fundamental mechanism for managing transaction consistency and isolation. Unlike previous Aurora databases, it employs a different, truly serverless architecture with two key services: an adjudicator service for concurrency control and a journal service for update durability.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghD7OwZuvy8vhluzD7W5R7UNdLX7ea31FqUO0k7ICHFOZSfnl_sNCFwdaJWqsobs0jL7GKsadbsEbiYpUoJSsGmyaPnvlfEqY5MqfytRs42Kmjcag22IM11KjLfh355_7vfgnZb7huf4Ygp-I0Fj_jjNd4LuZIzo4PVaiU0Fu8rrN15B8dlurtcQ7N7tE/s855/1206_mr_arch.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="553" data-original-width="855" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghD7OwZuvy8vhluzD7W5R7UNdLX7ea31FqUO0k7ICHFOZSfnl_sNCFwdaJWqsobs0jL7GKsadbsEbiYpUoJSsGmyaPnvlfEqY5MqfytRs42Kmjcag22IM11KjLfh355_7vfgnZb7huf4Ygp-I0Fj_jjNd4LuZIzo4PVaiU0Fu8rrN15B8dlurtcQ7N7tE/w400-h259/1206_mr_arch.jpg" width="400" /></a></div><p>The system uses timestamps in two crucial ways: first, when a transaction starts, it chooses a start time (Ts) for performing all reads against the multiversion concurrency control (MVCC) storage system. Second, when committing, it selects a commit time (Tc). These timestamps help maintain snapshot isolation by ensuring that conflicts are properly detected between transactions that overlap in time.</p><p>DSQL's commit process is built around temporal coordination. When a transaction wants to commit, it must verify that no other transaction has written to the same keys between its start time (Ts) and commit time (Tc). This verification is handled by the adjudicator service, which makes guarantees about transaction ordering based on timestamps. The adjudicator promises to never commit a transaction with an earlier timestamp once it has allowed a transaction to commit at a given time, establishing a temporal ordering of transactions. Each adjudicator has jurisdiction over specific key-ranges. Adjudicators don't use Paxos for leader-election/fault-tolerance, but rather they again leverage time/fencing during handovers of key-range responsibility.</p><p>The storage system uses timestamps to determine when it has a complete view of the data at a given point in time. To handle cases where the write rate might be low, the system implements a heartbeat protocol where adjudicators commit to moving their commit points forward in sync with the physical clock. This ensures that storage nodes can confidently serve reads as of a particular timestamp by knowing they have seen all transactions up to that point.</p><p>This time-based approach allows Aurora DSQL to achieve strong consistency reads and snapshot isolated transactions while maintaining high performance through optimistic concurrency control (OCC). By moving all coordination to commit time and using timestamps for ordering, the system minimizes the necessary coordination between machines, availability zones, and regions.</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://draft.blogger.com/email-post/8436330762136344379/2337381178199656146' 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-2337381178199656146' class='sharing' data-title='Use of Time in Distributed Databases (part 4): Synchronized clocks in production databases'>
|
|
<button aria-controls='sharing-popup-Blog1-byline-2337381178199656146' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-Blog1-byline-2337381178199656146' 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-2337381178199656146' role='menu'>
|
|
<li>
|
|
<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://draft.blogger.com/share-post.g?blogID=8436330762136344379&postID=2337381178199656146&target=' data-url='https://muratbuffalo.blogspot.com/2025/01/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://draft.blogger.com/share-post.g?blogID=8436330762136344379&postID=2337381178199656146&target=facebook' data-url='https://muratbuffalo.blogspot.com/2025/01/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://draft.blogger.com/share-post.g?blogID=8436330762136344379&postID=2337381178199656146&target=twitter' data-url='https://muratbuffalo.blogspot.com/2025/01/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://draft.blogger.com/share-post.g?blogID=8436330762136344379&postID=2337381178199656146&target=pinterest' data-url='https://muratbuffalo.blogspot.com/2025/01/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://draft.blogger.com/share-post.g?blogID=8436330762136344379&postID=2337381178199656146&target=email' data-url='https://muratbuffalo.blogspot.com/2025/01/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/2025/01/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='0' id='comments'>
|
|
<a name='comments'></a>
|
|
<h3 class='title'>Comments</h3>
|
|
<div id='Blog1_comments-block-wrapper'>
|
|
</div>
|
|
<div class='footer'>
|
|
<a href='https://draft.blogger.com/comment/fullpage/post/8436330762136344379/2337381178199656146' 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 "coders". While the programmer'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 >>
|
|
</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 "abstraction" 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't CS people already supposed to be good at abstraction? Isn'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 "abstraction" 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 >>
|
|
</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 "talk" and demanded that it "act". 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 … 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 "Advice to a Beginning Graduate Student", he wrote: "Without writing, you are reduced to a finite automaton. With writing you have the extraordinary power of a Turing machine." 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 >>
|
|
</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 "learn distributed systems in 21 days" 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, "Shouldn'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." 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.  --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 >>
|
|
</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 " Hints for computer system design " paper 40 years ago in SOSP'83. I don'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  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.  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 >>
|
|
</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.)  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,  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.  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 >>
|
|
</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'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't unusual. To hide that latency, the database separates "commit" from "apply". 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 >>
|
|
</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'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'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 >>
|
|
</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 "Quickly detecting relevant program invariants" 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 >>
|
|
</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 "nobody has to learn how to program."   I argue the opposite . And I double down.  Being supported by AI tools is not a substitute for mastery . You can’t borrow skills. You have to earn them.   Computer science builds vital skills : hacking, debugging, abstract thinking, and quick adaptation. These don’t go out of style.   Do STEM. It’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've mastered the foundations. We're heading into the age of π-shaped people: depth in two areas, and generalist across . Building depth first, and then ranging is good strategy .   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'd do as a College Freshman in 2025'>
|
|
Read more >>
|
|
</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://draft.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://draft.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://draft.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://draft.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/608349471-indie_compiled.js" async="true"></script>
|
|
|
|
<script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/851759228-widgets.js"></script>
|
|
<script type='text/javascript'>
|
|
window['__wavt'] = 'AAPvtVlZhAOxvSfMgSQQnn_yNvQf:1789194921259';_WidgetManager._Init('//draft.blogger.com/rearrange?blogID\x3d8436330762136344379','//muratbuffalo.blogspot.com/2025/01/use-of-time-in-distributed-databases.html','8436330762136344379');
|
|
_WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '8436330762136344379', 'title': 'Metadata', 'url': 'https://muratbuffalo.blogspot.com/2025/01/use-of-time-in-distributed-databases.html', 'canonicalUrl': 'http://muratbuffalo.blogspot.com/2025/01/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://draft.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://draft.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/2337381178199656146/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/31d4351e075118ef', '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': '2337381178199656146', 'postImageThumbnailUrl': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk-Ltib3Wk3psceH8hdEdE-PUdoyhGhwZcfE6ubUf0rS9JSyZvNc19zbHp4-er73mhpBj8fhLXX3qJ4Blf6Z-ypsrPbr3Uw8NOXUXWdaWg5jMQHz5oR6EDZYbCj1-y0wHZkIQzXgJ7Ymno2Sp1BIAhEOgKjQhCNOf4zqiLUBI-kKjDvUFlMjTpomqm6A/s72-c/DALL%C2%B7E%202025-01-08%2012.00.03%20-%20A%20conceptual%20art%20piece%20illustrating%20distributed%20systems%20and%20causal%20consistency%20without%20slowdown%20cascades.%20Show%20interconnected%20data%20centers%20with%20multip.webp', 'postImageUrl': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk-Ltib3Wk3psceH8hdEdE-PUdoyhGhwZcfE6ubUf0rS9JSyZvNc19zbHp4-er73mhpBj8fhLXX3qJ4Blf6Z-ypsrPbr3Uw8NOXUXWdaWg5jMQHz5oR6EDZYbCj1-y0wHZkIQzXgJ7Ymno2Sp1BIAhEOgKjQhCNOf4zqiLUBI-kKjDvUFlMjTpomqm6A/s320/DALL%C2%B7E%202025-01-08%2012.00.03%20-%20A%20conceptual%20art%20piece%20illustrating%20distributed%20systems%20and%20causal%20consistency%20without%20slowdown%20cascades.%20Show%20interconnected%20data%20centers%20with%20multip.webp', 'pageName': 'Use of Time in Distributed Databases (part 4): Synchronized clocks in production databases', 'pageTitle': 'Metadata: Use of Time in Distributed Databases (part 4): Synchronized clocks in production databases'}}, {'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 4): Synchronized clocks in production databases', 'description': 'This is part 4 of our \x22Use of Time in Distributed Databases\x22 series . In this post, we explore how synchronized physical clocks enhance prod...', 'featuredImage': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk-Ltib3Wk3psceH8hdEdE-PUdoyhGhwZcfE6ubUf0rS9JSyZvNc19zbHp4-er73mhpBj8fhLXX3qJ4Blf6Z-ypsrPbr3Uw8NOXUXWdaWg5jMQHz5oR6EDZYbCj1-y0wHZkIQzXgJ7Ymno2Sp1BIAhEOgKjQhCNOf4zqiLUBI-kKjDvUFlMjTpomqm6A/s320/DALL%C2%B7E%202025-01-08%2012.00.03%20-%20A%20conceptual%20art%20piece%20illustrating%20distributed%20systems%20and%20causal%20consistency%20without%20slowdown%20cascades.%20Show%20interconnected%20data%20centers%20with%20multip.webp', 'url': 'https://muratbuffalo.blogspot.com/2025/01/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': 2337381178199656146}}, {'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': '2337381178199656146', 'title': 'Use of Time in Distributed Databases (part 4): Synchronized clocks in production databases', 'featuredImage': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRk-Ltib3Wk3psceH8hdEdE-PUdoyhGhwZcfE6ubUf0rS9JSyZvNc19zbHp4-er73mhpBj8fhLXX3qJ4Blf6Z-ypsrPbr3Uw8NOXUXWdaWg5jMQHz5oR6EDZYbCj1-y0wHZkIQzXgJ7Ymno2Sp1BIAhEOgKjQhCNOf4zqiLUBI-kKjDvUFlMjTpomqm6A/s320/DALL%C2%B7E%202025-01-08%2012.00.03%20-%20A%20conceptual%20art%20piece%20illustrating%20distributed%20systems%20and%20causal%20consistency%20without%20slowdown%20cascades.%20Show%20interconnected%20data%20centers%20with%20multip.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/120969204-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_qU_2j4kb0ooLyn4WATCOFq1ww3LNRgFZB8-TRw1VuLuXz6gab37rgPz0j9KdkXD70oidGQJLeLuqU2uGKFw'}, '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> |