https://jeremyliberman.com/

Last Checked: Jul 20, 2021, 02:30 EDT

IP Address: 104.198.14.52
ASN #: AS15169 GOOGLE, US
Location: The Dalles, Oregon, US
URL Reputation:
  • Unknown This URL is not identified as malicious in the PhishTank Database.
  • Unknown PhishCheck thinks this URL is likely not a phish.
  • Unknown OpenPhish: URL not in feed.

Other submissions on 104.198.14.52:

Other submissions on jeremyliberman.com:

Previous checks:

                               
Domain Name: JEREMYLIBERMAN.COM
Registry Domain ID: 2086754932_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.1api.net
Registrar URL: http://www.1api.net
Updated Date: 2018-09-13T16:14:42Z
Creation Date: 2017-01-02T15:42:36Z
Registrar Registration Expiration Date: 2022-01-02T15:42:36Z
Registrar: 1API GmbH
Registrar IANA ID: 1387
Registrar Abuse Contact Email: abuse@1api.net
Registrar Abuse Contact Phone: +49.68949396x850
Reseller: iwantmyname http://iwantmyname.com
Domain Status: clientTransferProhibited - http://www.icann.org/epp#clientTransferProhibited
Registry Registrant ID: 
Registrant Name: c/o WHOIStrustee.com Limited
Registrant Organization: Registrant of jeremyliberman.com
Registrant Street: 6 Thornes Office Park Monckton Road
Registrant City: Wakefield
Registrant State/Province: West Yorkshire
Registrant Postal Code: WF2 7AN
Registrant Country: GB
Registrant Phone: +49.68416984300
Registrant Phone Ext: 
Registrant Fax: 
Registrant Fax Ext: 
Registrant Email: 944ad58755@jeremyliberman.com.whoistrustee.com
Registry Admin ID: 
Admin Name: c/o WHOIStrustee.com Limited
Admin Organization: Registrant of jeremyliberman.com
Admin Street: 6 Thornes Office Park Monckton Road
Admin City: Wakefield
Admin State/Province: West Yorkshire
Admin Postal Code: WF2 7AN
Admin Country: GB
Admin Phone: +49.68416984300
Admin Phone Ext: 
Admin Fax: 
Admin Fax Ext: 
Admin Email: 944ad58755@jeremyliberman.com.whoistrustee.com
Registry Tech ID: 
Tech Name: c/o WHOIStrustee.com Limited
Tech Organization: Registrant of jeremyliberman.com
Tech Street: 6 Thornes Office Park Monckton Road
Tech City: Wakefield
Tech State/Province: West Yorkshire
Tech Postal Code: WF2 7AN
Tech Country: GB
Tech Phone: +49.68416984300
Tech Phone Ext: 
Tech Fax: 
Tech Fax Ext: 
Tech Email: 944ad58755@jeremyliberman.com.whoistrustee.com
Name Server: ns1.iwantmyname.net 62.116.159.99 2001:4178:0003:a357:0062:0116:0159:0099
Name Server: ns2.iwantmyname.net 217.160.113.131 2001:08d8:0580:0401:0217:0160:0113:0131
Name Server: ns3.iwantmyname.net 89.146.248.96 2a01:0130:2000:0118:0089:0146:0248:0096
Name Server: ns4.iwantmyname.net 74.208.254.95
DNSSEC: unsigned
URL of the ICANN WHOIS Data Problem Reporting System:
http://wdprs.internic.net/
>>> Last update of WHOIS database: 2021-07-20T06:30:26Z <<<

For more information on Whois status codes, please visit https://www.icann.org/resources/pages/epp-status-codes-2014-06-16-en.

; This data is provided for information purposes, and to assist persons
; obtaining information about or related to domain name registration
; records. We do not guarantee its accuracy.
; By submitting a WHOIS query, you agree that you will use this data
; only for lawful purposes and that, under no circumstances, you will
; use this data to
; 1) allow, enable, or otherwise support the transmission of mass
;    unsolicited, commercial advertising or solicitations via E-mail
;    (spam); or
; 2) enable high volume, automated, electronic processes that apply
;    to this WHOIS server.
; These terms may be changed without prior notice.
; By submitting this query, you agree to abide by this policy.

; Painless Domain Management
; Need help? Send us an email:
; help@support.iwantmyname.com


                             
  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/allow-flashallow-digest256/1490633678

  • GET
    200 OK

    http://detectportal.firefox.com/canonical.html

  • GET
    200 OK

    https://jeremyliberman.com/

  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/except-flashallow-digest256/1490633678

  • GET
    200 OK

    http://detectportal.firefox.com/success.txt?ipv6

  • GET
    200 OK

    http://detectportal.firefox.com/success.txt?ipv4

  • GET
    200 OK

    http://detectportal.firefox.com/canonical.html

  • GET
    200 OK

    http://detectportal.firefox.com/success.txt?ipv4

  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/block-flash-digest256/1604686195

  • GET
    200 OK

    http://detectportal.firefox.com/success.txt?ipv6

  • GET
    200 OK

    http://detectportal.firefox.com/canonical.html

  • GET
    200 OK

    http://detectportal.firefox.com/success.txt?ipv4

  • GET
    200 OK

    http://detectportal.firefox.com/success.txt?ipv6

  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/except-flash-digest256/1604686195

  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/block-flashsubdoc-digest256/1604686195

  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/except-flashsubdoc-digest256/1517935265

  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/base-fingerprinting-track-digest256/90.0/1623182661

  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/base-cryptomining-track-digest256/90.0/1622732660

  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/social-tracking-protection-facebook-digest256/90.0/1622732660

  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/social-tracking-protection-linkedin-digest256/90.0/1622732660

  • GET
    302 Found

    https://unpkg.com/tachyons@4/css/tachyons.min.css

  • GET
    200 OK

    https://jeremyliberman.com/1-20ddac19c52acf1ea902.js

  • GET
    200 OK

    https://jeremyliberman.com/component---src-pages-index-js-b7b27784f2a2a6155af0.js

  • GET
    200 OK

    https://tracking-protection.cdn.mozilla.net/social-tracking-protection-twitter-digest256/90.0/1622732660

  • GET
    200 OK

    https://jeremyliberman.com/app-c91f9bca840a110e3c0f.js

  • GET
    200 OK

    http://detectportal.firefox.com/canonical.html

  • GET
    200 OK

    https://jeremyliberman.com/static/d/173/path---index-6a9-NZuapzHg3X9TaN1iIixfv1W23E.json

  • GET
    200 OK

    https://jeremyliberman.com/styles-80439b103c8fe027ecc1.js

  • GET
    200 OK

    https://jeremyliberman.com/webpack-runtime-acce315d3e1b87d3859c.js

  • GET
    200 OK

    http://detectportal.firefox.com/success.txt?ipv4

  • GET
    200 OK

    http://detectportal.firefox.com/success.txt?ipv6

  • GET
    200 OK

    https://unpkg.com/tachyons@4.12.0/css/tachyons.min.css

  • GET
    200 OK

    https://www.google-analytics.com/analytics.js

  • GET
    200 OK

    https://jeremyliberman.com/icons/icon-512x512.png

  • GET
    200 OK

    https://jeremyliberman.com/icons/icon-48x48.png

  • GET
    200 OK

    https://jeremyliberman.com/sw.js

  • GET
    200 OK

    https://jeremyliberman.com/pages-manifest-9465a38dc6f489b8512b.js

  • POST
    200 OK

    https://www.google-analytics.com/j/collect?v=1&_v=j91&a=921420200&t=pageview&_s=1&dl=https%3A%2F%2Fjeremyliberman.com%2F&dp=%2F&ul=en-us&de=UTF-8&dt=Blog%20Index%20%7C%20Jeremy%20Liberman&sd=24-bit&sr=1366x768&vp=1908x995&je=0&_u=aEBAAEABAAAAAC~&jid=1535508802&gjid=472843908&cid=863294022.1626762624&tid=UA-39343115-1&_gid=79233821.1626762624&_r=1&_slc=1&z=276497147

  • GET
    304 Not Modified

    https://jeremyliberman.com/static/d/173/path---index-6a9-NZuapzHg3X9TaN1iIixfv1W23E.json

  • GET
    200 OK

    https://jeremyliberman.com/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png

  • GET
    304 Not Modified

    https://jeremyliberman.com/component---src-pages-index-js-b7b27784f2a2a6155af0.js

  • GET
    0 Timed out waiting for a response.

    https://jeremyliberman.com/static/d/759/path---2019-04-01-how-does-this-work-in-javascript-html-538-6ba-21zTtn1GuTl5NyVLzciDcdSRnQ.json

  • GET
    0 Timed out waiting for a response.

    https://jeremyliberman.com/component---src-templates-blog-post-js-dc112933413441b46083.js

  • GET
    0 Timed out waiting for a response.

    https://jeremyliberman.com/static/d/374/path---2019-02-14-the-pitfalls-of-enumerating-with-foreach-html-c-88-ce9-AiwBkdPbNW81j1FRpEz6N2NBP9c.json

  • GET
    0 Timed out waiting for a response.

    https://jeremyliberman.com/static/d/434/path---2017-09-11-check-out-redux-supermodel-v-0150-html-fd-3-03b-U9IGX80rygIhDcZlfM5YrBF8.json

  • GET
    0 Timed out waiting for a response.

    https://jeremyliberman.com/static/d/517/path---2019-03-03-new-site-design-html-011-671-84ZP0byjvnK5TjsYOAZQCQyCxrU.json

  • GET
    0 Timed out waiting for a response.

    https://jeremyliberman.com/static/d/282/path---2019-02-11-fetch-has-been-blocked-by-cors-policy-html-ff-3-978-wWdamZDaaHX1rwyeaB7PFfkSDMo.json

  • https://unpkg.com/tachyons@4/css/tachyons.min.css /tachyons@4.12.0/css/tachyons.min.css
<html data-react-helmet="lang" lang="en"><head><meta charset="utf-8"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><style data-href="/styles.d94c65e4e7739b59a7ae.css">code[class*=language-],pre[class*=language-]{color:#000;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{position:relative;margin:.5em 0;overflow:visible;padding:0}pre[class*=language-]>code{position:relative;border-left:10px solid #358ccb;box-shadow:-1px 0 0 0 #358ccb,0 0 0 1px #dfdfdf;background-color:#fdfdfd;background-image:linear-gradient(transparent 50%,rgba(69,142,209,.04) 0);background-size:3em 3em;background-origin:content-box;background-attachment:local}code[class*=language]{max-height:inherit;height:inherit;padding:0 1em;display:block;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background-color:#fdfdfd;box-sizing:border-box;margin-bottom:1em}:not(pre)>code[class*=language-]{position:relative;padding:.2em;border-radius:.3em;color:#c92c2c;border:1px solid rgba(0,0,0,.1);display:inline;white-space:normal}pre[class*=language-]:after,pre[class*=language-]:before{content:"";z-index:-2;display:block;position:absolute;bottom:.75em;left:.18em;width:40%;height:20%;max-height:13em;box-shadow:0 13px 8px #979797;-webkit-transform:rotate(-2deg);transform:rotate(-2deg)}:not(pre)>code[class*=language-]:after,pre[class*=language-]:after{right:.75em;left:auto;-webkit-transform:rotate(2deg);transform:rotate(2deg)}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59;background:hsla(0,0%,100%,.5)}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.namespace{opacity:.7}@media screen and (max-width:767px){pre[class*=language-]:after,pre[class*=language-]:before{bottom:14px;box-shadow:none}}.token.cr:before,.token.lf:before,.token.tab:not(:empty):before{color:#e0d7d1}pre[class*=language-].line-numbers.line-numbers{padding-left:0}pre[class*=language-].line-numbers.line-numbers code{padding-left:3.8em}pre[class*=language-].line-numbers.line-numbers .line-numbers-rows{left:0}pre[class*=language-][data-line]{padding-top:0;padding-bottom:0;padding-left:0}pre[data-line] code{position:relative;padding-left:4em}pre .line-highlight{margin-top:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects;opacity:1;transition:opacity .15s ease-in;color:#357edd}a:active,a:hover{outline-width:0}a:focus,a:hover{opacity:.5;transition:opacity .15s ease-in}a:active{opacity:.8;transition:opacity .15s ease-out}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}html{font:112.5%/1.45em georgia,serif;box-sizing:border-box;overflow-y:scroll}*,:after,:before{box-sizing:inherit}body{color:rgba(0,0,0,.8);font-family:georgia,serif;font-weight:400;word-wrap:break-word;-webkit-font-kerning:normal;font-kerning:normal;-ms-font-feature-settings:"kern","liga","clig","calt";-webkit-font-feature-settings:"kern","liga","clig","calt";font-feature-settings:"kern","liga","clig","calt"}img{max-width:100%;padding:0;margin:0 0 1.45rem}h1{font-size:2.25rem}h1,h2{padding:0;margin:0 0 1.45rem;color:inherit;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-weight:700;text-rendering:optimizeLegibility;line-height:1.1}h2{font-size:1.62671rem}h3{font-size:1.38316rem}h3,h4{padding:0;margin:0 0 1.45rem;color:inherit;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-weight:700;text-rendering:optimizeLegibility;line-height:1.1}h4{font-size:1rem}h5{font-size:.85028rem}h5,h6{padding:0;margin:0 0 1.45rem;color:inherit;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-weight:700;text-rendering:optimizeLegibility;line-height:1.1}h6{font-size:.78405rem}hgroup{padding:0;margin:0 0 1.45rem}ol,ul{padding:0;margin:0 0 1.45rem 1.45rem;list-style-position:outside;list-style-image:none}dd,dl,figure,p{padding:0;margin:0 0 1.45rem}pre{margin:0 0 1.45rem;font-size:.85rem;line-height:1.42;background:rgba(0,0,0,.04);border-radius:3px;overflow:auto;word-wrap:normal;padding:1.45rem}table{font-size:1rem;line-height:1.45rem;border-collapse:collapse;width:100%}fieldset,table{padding:0;margin:0 0 1.45rem}blockquote{padding:0;margin:0 1.45rem 1.45rem}form,iframe,noscript{padding:0;margin:0 0 1.45rem}hr{padding:0;margin:0 0 calc(1.45rem - 1px);background:rgba(0,0,0,.2);border:none;height:1px}address{padding:0;margin:0 0 1.45rem}b,dt,strong,th{font-weight:700}li{margin-bottom:.725rem}ol li,ul li{padding-left:0}li>ol,li>ul{margin-left:1.45rem;margin-bottom:.725rem;margin-top:.725rem}blockquote :last-child,li :last-child,p :last-child{margin-bottom:0}li>p{margin-bottom:.725rem}code,kbd,samp{font-size:.85rem;line-height:1.45rem}abbr,abbr[title],acronym{border-bottom:1px dotted rgba(0,0,0,.5);cursor:help}abbr[title]{text-decoration:none}td,th,thead{text-align:left}td,th{border-bottom:1px solid rgba(0,0,0,.12);font-feature-settings:"tnum";-moz-font-feature-settings:"tnum";-ms-font-feature-settings:"tnum";-webkit-font-feature-settings:"tnum";padding:.725rem .96667rem calc(.725rem - 1px)}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}code,tt{background-color:rgba(0,0,0,.04);border-radius:3px;font-family:SFMono-Regular,Consolas,Roboto Mono,Droid Sans Mono,Liberation Mono,Menlo,Courier,monospace;padding:.2em 0}pre code{background:none;line-height:1.42}code:after,code:before,tt:after,tt:before{letter-spacing:-.2em;content:" "}pre code:after,pre code:before,pre tt:after,pre tt:before{content:""}@media only screen and (max-width:480px){html{font-size:100%}}</style><meta name="generator" content="Gatsby 2.1.19"><title>Blog Index | Jeremy Liberman</title><link data-react-helmet="true" rel="stylesheet" href="https://unpkg.com/tachyons@4/css/tachyons.min.css"><meta data-react-helmet="true" name="description" content="Using computer technology to solve people problems"><meta data-react-helmet="true" property="og:title" content="Blog Index"><meta data-react-helmet="true" property="og:description" content="Using computer technology to solve people problems"><meta data-react-helmet="true" property="og:type" content="website"><meta data-react-helmet="true" name="twitter:card" content="summary"><meta data-react-helmet="true" name="twitter:creator" content="@MrLeebo"><meta data-react-helmet="true" name="twitter:title" content="Blog Index"><meta data-react-helmet="true" name="twitter:description" content="Using computer technology to solve people problems"><style type="text/css">
    .anchor {
      float: left;
      padding-right: 4px;
      margin-left: -20px;
    }
    h1 .anchor svg,
    h2 .anchor svg,
    h3 .anchor svg,
    h4 .anchor svg,
    h5 .anchor svg,
    h6 .anchor svg {
      visibility: hidden;
    }
    h1:hover .anchor svg,
    h2:hover .anchor svg,
    h3:hover .anchor svg,
    h4:hover .anchor svg,
    h5:hover .anchor svg,
    h6:hover .anchor svg,
    h1 .anchor:focus svg,
    h2 .anchor:focus svg,
    h3 .anchor:focus svg,
    h4 .anchor:focus svg,
    h5 .anchor:focus svg,
    h6 .anchor:focus svg {
      visibility: visible;
    }
  </style><script async="" src="https://www.google-analytics.com/analytics.js"></script><script>
    document.addEventListener("DOMContentLoaded", function(event) {
      var hash = window.decodeURI(location.hash.replace('#', ''))
      if (hash !== '') {
        var element = document.getElementById(hash)
        if (element) {
          var offset = element.offsetTop
          // Wait for the browser to finish rendering before scrolling.
          setTimeout((function() {
            window.scrollTo(0, offset - 0)
          }), 0)
        }
      }
    })
  </script><link rel="shortcut icon" href="/icons/icon-48x48.png"><link rel="manifest" href="/manifest.webmanifest"><meta name="theme-color" content="#fffceb"><link rel="apple-touch-icon" sizes="48x48" href="/icons/icon-48x48.png"><link rel="apple-touch-icon" sizes="72x72" href="/icons/icon-72x72.png"><link rel="apple-touch-icon" sizes="96x96" href="/icons/icon-96x96.png"><link rel="apple-touch-icon" sizes="144x144" href="/icons/icon-144x144.png"><link rel="apple-touch-icon" sizes="192x192" href="/icons/icon-192x192.png"><link rel="apple-touch-icon" sizes="256x256" href="/icons/icon-256x256.png"><link rel="apple-touch-icon" sizes="384x384" href="/icons/icon-384x384.png"><link rel="apple-touch-icon" sizes="512x512" href="/icons/icon-512x512.png"><link as="script" rel="preload" href="/component---src-pages-index-js-b7b27784f2a2a6155af0.js"><link as="script" rel="preload" href="/1-20ddac19c52acf1ea902.js"><link as="script" rel="preload" href="/app-c91f9bca840a110e3c0f.js"><link as="script" rel="preload" href="/styles-80439b103c8fe027ecc1.js"><link as="script" rel="preload" href="/webpack-runtime-acce315d3e1b87d3859c.js"><link as="fetch" rel="preload" href="/static/d/173/path---index-6a9-NZuapzHg3X9TaN1iIixfv1W23E.json" crossorigin="use-credentials"><script charset="utf-8" src="/pages-manifest-9465a38dc6f489b8512b.js"></script><link rel="prefetch" href="/static/d/173/path---index-6a9-NZuapzHg3X9TaN1iIixfv1W23E.json"><link rel="prefetch" href="/component---src-pages-index-js-b7b27784f2a2a6155af0.js"><link rel="prefetch" href="/static/d/759/path---2019-04-01-how-does-this-work-in-javascript-html-538-6ba-21zTtn1GuTl5NyVLzciDcdSRnQ.json"><link rel="prefetch" href="/component---src-templates-blog-post-js-dc112933413441b46083.js"><link rel="prefetch" href="/static/d/517/path---2019-03-03-new-site-design-html-011-671-84ZP0byjvnK5TjsYOAZQCQyCxrU.json"><link rel="prefetch" href="/component---src-templates-blog-post-js-dc112933413441b46083.js"><link rel="prefetch" href="/static/d/517/path---2019-03-03-new-site-design-html-011-671-84ZP0byjvnK5TjsYOAZQCQyCxrU.json"><link rel="prefetch" href="/component---src-templates-blog-post-js-dc112933413441b46083.js"><link rel="prefetch" href="/static/d/374/path---2019-02-14-the-pitfalls-of-enumerating-with-foreach-html-c-88-ce9-AiwBkdPbNW81j1FRpEz6N2NBP9c.json"><link rel="prefetch" href="/component---src-templates-blog-post-js-dc112933413441b46083.js"><link rel="prefetch" href="/static/d/434/path---2017-09-11-check-out-redux-supermodel-v-0150-html-fd-3-03b-U9IGX80rygIhDcZlfM5YrBF8.json"><link rel="prefetch" href="/component---src-templates-blog-post-js-dc112933413441b46083.js"><link rel="prefetch" href="/static/d/374/path---2019-02-14-the-pitfalls-of-enumerating-with-foreach-html-c-88-ce9-AiwBkdPbNW81j1FRpEz6N2NBP9c.json"><link rel="prefetch" href="/component---src-templates-blog-post-js-dc112933413441b46083.js"><link rel="prefetch" href="/static/d/282/path---2019-02-11-fetch-has-been-blocked-by-cors-policy-html-ff-3-978-wWdamZDaaHX1rwyeaB7PFfkSDMo.json"><link rel="prefetch" href="/component---src-templates-blog-post-js-dc112933413441b46083.js"><link rel="prefetch" href="/static/d/759/path---2019-04-01-how-does-this-work-in-javascript-html-538-6ba-21zTtn1GuTl5NyVLzciDcdSRnQ.json"><link rel="prefetch" href="/component---src-templates-blog-post-js-dc112933413441b46083.js"><link rel="prefetch" href="/static/d/864/path---2018-09-11-turn-your-react-hocs-into-providers-html-391-082-vBH4xxpmneVN7Q2UOmDsXjlZOwc.json"><link rel="prefetch" href="/component---src-templates-blog-post-js-dc112933413441b46083.js"></head><body class="bg-washed-yellow" data-react-helmet="class"><noscript id="gatsby-noscript">This app works best with JavaScript enabled.</noscript><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group"><div class="cf"><div class="fixed left-0 top-1 w-20 measure-narrow pr3 dn db-l"><header class="f3 mt4 bg-near-black white pa3 br2 br--right avenir"><a aria-current="page" class="f3 lh-title white avenir" href="/">Jeremy Liberman</a><p class="mt3 f4 light-gray">Using computer technology to solve people problems</p><ul class="ml0 list"><li class="ml2 silver">Recent Posts</li><li><a class="f5 white" href="/2019/04/01/how-does-this-work-in-javascript.html">How does "this" work in JavaScript?</a><div class="f6 silver">On <!-- -->Apr 01, 2019</div></li><li><a class="f5 white" href="/2019/03/03/new-site-design.html">New Site Design!</a><div class="f6 silver">On <!-- -->Mar 03, 2019</div></li><li><a class="f5 white" href="/2019/02/14/the-pitfalls-of-enumerating-with-foreach.html">The pitfalls of enumerating with forEach()</a><div class="f6 silver">On <!-- -->Feb 14, 2019</div></li></ul><div class="f6 tc"><a href="https://github.com/MrLeebo" target="_blank" rel="noopener noreferrer" class="white">GitHub</a> <!-- -->|<!-- --> <a href="https://twitter.com/mrleebo" target="_blank" rel="noopener noreferrer" class="white">Twitter</a></div></header></div><div class="center avenir w-60-l f3 measure-wide lh-copy"><main><ul class="list mh1 mh2-ns"><li class="mt4-ns"><a class="db" href="/2019/04/01/how-does-this-work-in-javascript.html">How does "this" work in JavaScript?</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 0; transition: opacity 0.5s ease 0.5s;"><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 1; transition: opacity 0.5s ease 0s;"></picture><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>April 01, 2019<!-- --> · <!-- -->5<!-- --> min read</em></small><div class="mt3"><div class="f5">Not sure where JavaScript's context variable "this" comes from? Let's talk about it. As a bonus, we'll also talk about closures and arrow functions.</div></div></li><li class="mt4-ns"><a class="db" href="/2019/03/03/new-site-design.html">New Site Design!</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 0; transition: opacity 0.5s ease 0.5s;"><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 1; transition: opacity 0.5s ease 0s;"></picture><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>March 03, 2019<!-- --> · <!-- -->1<!-- --> min read</em></small><div class="mt3"><div class="f5">jeremyliberman.com has been rewritten using Gatsby!</div></div></li><li class="mt4-ns"><a class="db" href="/2019/02/14/the-pitfalls-of-enumerating-with-foreach.html">The pitfalls of enumerating with forEach()</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 0; transition: opacity 0.5s ease 0.5s;"><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 1; transition: opacity 0.5s ease 0s;"></picture><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>February 14, 2019<!-- --> · <!-- -->5<!-- --> min read</em></small><div class="mt3"><div class="f5">Array's forEach() is a popular way of enumerating lists in JavaScript, but I never recommend using it due to these drawbacks.</div></div></li><li class="mt4-ns"><a class="db" href="/2019/02/11/fetch-has-been-blocked-by-cors-policy.html">Fetch has been blocked by CORS policy</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 0; transition: opacity 0.5s ease 0.5s;"><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 1; transition: opacity 0.5s ease 0s;"></picture><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>February 11, 2019<!-- --> · <!-- -->6<!-- --> min read</em></small><div class="mt3"><div class="f5">This is a high-level primer on what CORS policies are, and a FAQ answering common issues people experience related to CORS.</div></div></li><li class="mt4-ns"><a class="db" href="/2018/09/11/turn-your-react-hocs-into-providers.html">Turn your React HOCs into Providers</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 0; transition: opacity 0.5s ease 0.5s;"><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 1; transition: opacity 0.5s ease 0s;"></picture><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>September 11, 2018<!-- --> · <!-- -->3<!-- --> min read</em></small><div class="mt3"><div class="f5">Providers are an easy enhancement you can make to any existing Higher Order Component (HOC) to make it even more flexible.</div></div></li><li class="mt4-ns"><a class="db" href="/2017/09/11/check-out-redux-supermodel-v0150.html">Check out redux-supermodel v0.15.0!</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 0; transition: opacity 0.5s ease 0.5s;"><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 1; transition: opacity 0.5s ease 0s;"></picture><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>September 11, 2017<!-- --> · <!-- -->2<!-- --> min read</em></small><div class="mt3"><div class="f5">Everyone who builds React apps struggles with data fetching. A new version of my React/Redux data fetching library is out.</div></div></li><li class="mt4-ns"><a class="db" href="/2014/08/10/blissfully-reactive-bootstrap3-tooltips-with-meteor-templates.html">Blissfully Reactive Bootstrap3 Tooltips with Meteor Templates</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 0; transition: opacity 0.5s ease 0.5s;"><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center center; opacity: 1; transition: opacity 0.5s ease 0s;"></picture><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>August 10, 2014<!-- --> · <!-- -->2<!-- --> min read</em></small><div class="mt3"><div class="f5">I can teach you how to automatically update your tooltips when a label changes.</div></div></li><li class="mt4-ns"><a class="db" href="/2013/10/23/receiving-email-notifications-for-report-processing-exceptions-in-ssrs.html">Receiving Email Notifications for Report Processing Exceptions in SSRS</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 0.5s;transition-delay:0.25s"><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>October 23, 2013<!-- --> · <!-- -->2<!-- --> min read</em></small><div class="mt3"><div class="f5">SSRS reports do not make it easy for developers to detect and log runtime errors, so I wrote a PowerShell script to notify myself when they occur.</div></div></li><li class="mt4-ns"><a class="db" href="/2013/03/23/selenium-option-locators-deciphering-see-doselect-for-details-of-option-locators.html">Selenium Option Locators: Deciphering “@see #doSelect for details of option locators”</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 0.5s;transition-delay:0.25s"><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>March 23, 2013<!-- --> · <!-- -->5<!-- --> min read</em></small><div class="mt3"><div class="f5">I take a look into Selenium's source code to resolve a confusing error message and find a workaround for selecting all of the options in a multi-select dropdown control.</div></div></li><li class="mt4-ns"><a class="db" href="/2013/03/16/is-your-javascript-waiting-on-multiple-backbone-fetches.html">Is your Javascript waiting on multiple Backbone fetches?</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 0.5s;transition-delay:0.25s"><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>March 16, 2013<!-- --> · <!-- -->3<!-- --> min read</em></small><div class="mt3"><div class="f5">We talk about using the jQuery Promise implementation to simplify some callback-centric logic by converting it into Promises.</div></div></li><li class="mt4-ns"><a class="db" href="/2013/03/02/git-rebase-destroyed-your-commit-reflog-to-the-rescue.html">Git Rebase destroyed your commit? Reflog to the Rescue!</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 0.5s;transition-delay:0.25s"><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>March 02, 2013<!-- --> · <!-- -->1<!-- --> min read</em></small><div class="mt3"><div class="f5">In git, nothing is ever truly lost. You can recover dropped commits and undo botched merges using git reflog.</div></div></li><li class="mt4-ns"><a class="db" href="/2012/04/15/participating-in-the-white-houses-summer-jobs-code-sprint.html">Participating in the White House’s Summer Jobs+ Code Sprint</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 0.5s;transition-delay:0.25s"><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>April 15, 2012<!-- --> · <!-- -->4<!-- --> min read</em></small><div class="mt3"><div class="f5">This post is a story about an application I never built and why.</div></div></li><li class="mt4-ns"><a class="db" href="/2011/12/02/toying-with-dynamicobject-reading-xml.html">Toying with DynamicObject: Reading XML</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 0.5s;transition-delay:0.25s"><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>December 02, 2011<!-- --> · <!-- -->5<!-- --> min read</em></small><div class="mt3"><div class="f5">A demonstration of dynamics in C# and using them to navigate an XML structure.</div></div></li><li class="mt4-ns"><a class="db" href="/2011/10/17/using-abstract-override-to-require-a-readable-tostring-method.html">Using Abstract Override to require a readable ToString Method</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 0.5s;transition-delay:0.25s"><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>October 17, 2011<!-- --> · <!-- -->1<!-- --> min read</em></small><div class="mt3"><div class="f5">Are you tired of all of your objects being named simply "Object"? You can make ToString() an abstract override method in your abstract class in order to force implementation classes to always provider an implementation for logging purposes.</div></div></li><li class="mt4-ns"><a class="db" href="/2011/10/01/protecteddata-is-unable-to-update-the-password.html">ProtectedData is unable to update the password?</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 0.5s;transition-delay:0.25s"><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>October 01, 2011<!-- --> · <!-- -->4<!-- --> min read</em></small><div class="mt3"><div class="f5">Why does the System.Security.Cryptography library sometimes ask you to update your password when using DataProtectionScope.LocalMachine? Let's find out.</div></div></li><li class="mt4-ns"><a class="db" href="/2011/09/18/greetings.html">Greetings</a> <small class="f5 f4-ns dark-gray"><div class="w2 ba br-100 mb0 dib v-btm gatsby-image-wrapper" style="position:relative;overflow:hidden"><div style="width:100%;padding-bottom:100%"></div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAACTpAAAk6QFQJOf4AAAEa0lEQVQ4yxWT6U8aCQDF56/bZP+EPbKbfmibbreb9Eg32dVq21RtS4sioghtBVGU+2ZQERDlFgQEB7lmGOZk7mFGdL8sTV5e8j78PryXPOD2lp9M2Mktd3PDKGPq7j9RGPUW/7h//4cf53792fD00cKTB9aVudOA6dC5sW/WcBzO8TRJD/twG5hMuLs7YeqygDJkS1GpVtJ5trmAJvb5vFdtHkPRr8aFZy7jYtjywbI6X8mD5VwgETZm4xvA7R0vcv1hNwe30q36SfX8qJ0NSFVQqUZGp/ujjBfPeILL/76899Prx78b3r2IOj9AZXuz7GrVQwCJXR/4rF90i/bNhcDOx+Cernj4rRfbKq7P9R2fQzNPOtFvsGPj3aNfVmcfek1vYh7jiOqSQ4hEIcBqnDVpn39dexFxLWUPTfXzMJbztpwrefN7NuPDYjYh72v4zZtvH4O2haRbe+D4XDgJIO0i2i0DrUaMRM4FuikwbZZqsWyXhytcxskktlHXOuLQU0dmt+65ZenhiVuT9KxGdj7ljh3koAZf5wGJRwUWZunOiLwisTo5rDGjNtPP9rwfW/o312YNdmgG1/9yrzzIeJeSnuWTgOEkZELahUGnAJD4JY03aKJB45ffYbTyvdKFeRCeGR6YkeAa7NXUbM96NdNFXJcNahNubdSu6V2laoUDgERr1LBGYXUKq+FIBYfLY7neS+qa1lki/qVnnx94FpH4Q5XdktkjvBNKeJdBu+bAY4p6LQCBVIhBhUQvpmKohsSkJ5KfRdJIcpc43UXjJvhsh22/FZBPMhO8mxT7V9Ej53LMqW+WYwDaLeDIOdYvsdTl5KYhM64bIS4Q0QGUw3sNGKpScFLC1kRiW2b8qgCOcDC2pzn2rF5k/QDSziGd3KBTGg3jYy44FuLSUCd2/iS7Cax3TQ0aEmEThmtjLiCzYYnc4oYmcHfh2LVSStqBfisDQ5k+lB3hp8JwVWYCY9qqEq841EMOehzqEodamXFLtEMkHQK6rLKWwtFmZHspHTIC3Wa6D532mmmGKKliXKJs8sitjgw3YnBM6mVML+JfRNIqYGZuoGfhTxMZvCzsRXY0Ce860LlMdRsp6CJOoilFTgj4Kgs9krANAX4t9v9RRtsiaZHoXRH/xvUXme68yrk7VVvIuhTbXwEuSxGoctAoxSjyTMGDfNVM5H9j6veE7pyMGRTaPGb9Mr09JtaJ8gyam1GZfZECEz590PIeqBVDjVK0VgLxepTP+8iYHY9q6dJTCdEo+IrKORXWpXI2hbGxNTuTD/PNLZX3x306l/Et0DgH68VwJRegoAifc9DZ6Y0DfNksDzcUZk/lI6qQVOXiRL2cyA2+lhLarlth7zy1adO9Aqr5YPnM3ywHFSmhsD6FOxqz4NQVMT1lFCH9PfJRRQCna3PXRrZn4ODlUlK/9uY5UEy7S2lPIbXHoL5pPQGzcYMtfrAl4jscvMm0tVzfQF29Jmov8dpLGpqn25+Znj6wPbv49+P/Adkio6+NXF8MAAAAAElFTkSuQmCC" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition:opacity 0.5s;transition-delay:0.25s"><noscript><picture><img sizes="(max-width: 34px) 100vw, 34px" srcset="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/afd9f/avatar.png 9w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/38b60/avatar.png 17w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png 34w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/55105/avatar.png 51w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/cb864/avatar.png 68w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/a69c5/avatar.png 102w,
/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/e0143/avatar.png 170w" src="/static/489f2e7cf7df14bc2c8ac2bc8c76aa59/f8c60/avatar.png" alt="Jeremy Liberman" style="position:absolute;top:0;left:0;transition:opacity 0.5s;transition-delay:0.5s;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div> <em>September 18, 2011<!-- --> · <!-- -->1<!-- --> min read</em></small><div class="mt3"><div class="f5">First blog post, ever!</div></div></li></ul></main></div></div></div></div><script>
  
  
  if(true) {
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
  }
  if (typeof ga === "function") {
    ga('create', 'UA-39343115-1', 'auto', {});
      
      
      
      }
      </script><script id="gatsby-script-loader">/*<![CDATA[*/window.page={"componentChunkName":"component---src-pages-index-js","jsonName":"index","path":"/"};window.dataPath="173/path---index-6a9-NZuapzHg3X9TaN1iIixfv1W23E";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-c91f9bca840a110e3c0f.js"],"component---node-modules-gatsby-plugin-offline-app-shell-js":["/component---node-modules-gatsby-plugin-offline-app-shell-js-11b1f39ee30dae640c48.js"],"component---src-templates-blog-post-js":["/component---src-templates-blog-post-js-dc112933413441b46083.js"],"component---src-pages-404-js":["/component---src-pages-404-js-0efc0fe37b5cbfe6c1ff.js"],"component---src-pages-index-js":["/component---src-pages-index-js-b7b27784f2a2a6155af0.js"],"pages-manifest":["/pages-manifest-9465a38dc6f489b8512b.js"]};/*]]>*/</script><script src="/webpack-runtime-acce315d3e1b87d3859c.js" async=""></script><script src="/styles-80439b103c8fe027ecc1.js" async=""></script><script src="/app-c91f9bca840a110e3c0f.js" async=""></script><script src="/1-20ddac19c52acf1ea902.js" async=""></script><script src="/component---src-pages-index-js-b7b27784f2a2a6155af0.js" async=""></script></body></html>

                             

Screenshot: