<!DOCTYPE html>
<html lang="en">

  <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <title>
    Phil Nash
  </title>

  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
  <meta name="description" content="Phil Nash is a developer, speaker, blogger, developer advocate, sausage dog owner and beer lover.
">
  <meta name="author" content="Phil Nash">

  <!-- favicon -->
  <link href='/favicon.png' rel='icon' type='image/png'>

  <!-- preload fonts -->
  <link rel="preload" href="/assets/raleway-v11-latin-900-14127780573f882562c896db948eb0a8b6ba1e4abc3d1055e7294134bc562eb4.woff2" as="font" type="font/woff2" crossorigin>
  <link rel="preload" href="/assets/merriweather-v13-latin-regular-433b7890abd98e0beeec9d5da44a1bbeb5b7e8f3d7aa50442a74289496da2b84.woff2" as="font" type="font/woff2"
    crossorigin>
  <!-- preconnect to analytics and ads -->
  <link rel="preconnect" href="https://www.google-analytics.com" crossorigin>
  <link rel="preconnect" href="https://cdn.carbonads.com" crossorigin>
  <link rel="preconnect" href="https://srv.carbonads.net" crossorigin>
  <link rel="preconnect" href="https://ad.doubleclick.net" crossorigin>

  <link rel="manifest" href="/manifest.json">
  <link rel="apple-touch-icon" href="/assets/apple-touch-icon-3f5e0de9665377565184bdf67eff74a35a2a4023fc21beeacc2fcb9bd0915c99.png">
  <meta name="mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="application-name" content="Phil Nash">
  <meta name="apple-mobile-web-app-title" content="Phil Nash">
  <meta name="theme-color" content="#ea0011">
  <meta name="msapplication-navbutton-color" content="#ea0011">
  <meta name="apple-mobile-web-app-status-bar-style" content="default">
  <meta name="msapplication-starturl" content="/?utm_source=homescreen">

  <style rel="stylesheet" type="text/css" integrity="sha256-z6gWCCoTkq44EbRFmIHSfqKJOXCPDX9u2iLOHW0dloY=" crossorigin="anonymous">@font-face{font-family:'Raleway';font-style:normal;font-weight:900;font-display:swap;src:local("Raleway Black"),local("Raleway-Black"),url(/assets/raleway-v11-latin-900-14127780573f882562c896db948eb0a8b6ba1e4abc3d1055e7294134bc562eb4.woff2) format("woff2"),url(/assets/raleway-v11-latin-900-ba0ec9ce82e72a44e859f6e06a26f60f72b0879bc4719d1e0d4ea1916bd82715.woff) format("woff")}@font-face{font-family:'Merriweather';font-style:normal;font-weight:400;font-display:swap;src:local("Merriweather"),local("Merriweather-Regular"),url(/assets/merriweather-v13-latin-regular-433b7890abd98e0beeec9d5da44a1bbeb5b7e8f3d7aa50442a74289496da2b84.woff2) format("woff2"),url(/assets/merriweather-v13-latin-regular-2dbf371def9066710ae2f00781b987835f8542db573b34c8dfcc953702e8ea20.woff) format("woff")}@font-face{font-family:'Merriweather';font-style:italic;font-weight:400;font-display:swap;src:local("Merriweather Italic"),local("Merriweather-Italic"),url(/assets/merriweather-v13-latin-italic-a5853c3da4e8dba9646fe1f9843eb10ceb0c342dcf372d38fe7e59b730c86592.woff2) format("woff2"),url(/assets/merriweather-v13-latin-italic-1b80f43982f82e2721ac165285fd7472cbfc6e8cfd3e40fa2f7a419eb5a0cd4d.woff) format("woff")}@font-face{font-family:'Merriweather';font-style:normal;font-weight:700;font-display:swap;src:local("Merriweather Bold"),local("Merriweather-Bold"),url(/assets/merriweather-v13-latin-700-07e334eddf236ee2f6be8fa32322665ae78e19b3eee4717acba565ec5fab6a9d.woff2) format("woff2"),url(/assets/merriweather-v13-latin-700-8b1b2c18dc15883e013284060d1091bd7dc89f123aef0fe5b1a0caac15ca11e5.woff) format("woff")}@font-face{font-family:'Merriweather';font-style:italic;font-weight:700;font-display:swap;src:local("Merriweather Bold Italic"),local("Merriweather-BoldItalic"),url(/assets/merriweather-v13-latin-700italic-5f0456b27273906cc688fbabbfdf54e468693e984aa2ac742b6609e09d33b9c9.woff2) format("woff2"),url(/assets/merriweather-v13-latin-700italic-cd9572e2981d31d591a0092832dd4a2707f59f215c4c2db7b5a81b1642e5966e.woff) format("woff")}body,h1,h2,h3,h4,h5,h6,p,blockquote,pre,hr,dl,dd,ol,ul,figure{margin:0;padding:0}*{box-sizing:border-box}body{font:400 18px/1.6 "Merriweather", Georgia, serif;color:#454545;background-color:#fcfcfc;-webkit-text-size-adjust:100%;-webkit-font-feature-settings:'kern' 1;-moz-font-feature-settings:'kern' 1;-o-font-feature-settings:'kern' 1;font-feature-settings:'kern' 1;font-kerning:normal}h1,h2,h3,h4,h5,h6,p,blockquote,pre,ul,ol,dl,figure{margin-bottom:30px}img{max-width:100%;height:auto;vertical-align:middle}figure>img{display:block}figcaption{font-size:15.75px;font-style:italic}ul,ol{margin-left:30px}li ul,li ol{margin-bottom:0}h1,h2,h3,h4,h5,h6{font-family:"Raleway", Arial, sans-serif;font-weight:900}h2,h3,h4,h5,h6{margin-bottom:0}h1,h2,h3{text-transform:uppercase}h2{font-size:2em;line-height:1;padding-top:0.5em;padding-bottom:0.5em}h3{font-size:1.5em;line-height:1.25}h2 code,h3 code{font-size:inherit;text-transform:none}a{color:#ea0011;text-decoration:none}a:hover,a:focus{color:#ff3846;border-bottom:2px solid #ff3846}blockquote{color:#828282;border-left:4px solid #e8e8e8;padding-left:30px;padding-top:15px;padding-bottom:15px;font-size:24px;letter-spacing:-1px;font-style:italic}blockquote>:last-child{margin-bottom:0}blockquote em{font-style:normal}pre,code{font-size:18px}code{padding:1px 5px;background:#ddd;border-radius:3px}pre{padding:8px 12px;overflow-x:auto}pre>code{border:0;padding-right:0;padding-left:0;background:transparent}.row:after{content:'';display:table;clear:both}.icon>svg{display:inline-block;width:16px;height:16px;vertical-align:middle}.icon>svg path{fill:#828282}abbr,abbr[title]{text-decoration:none;border-bottom:0.1em dotted}small{font-size:15.75px;color:#828282;font-style:italic}html{background:#ea0011;border-top:5px solid #79b2c8;border-bottom:5px solid #79b2c8}html,body{min-height:100%}body{border-top:5px solid #ea0011;border-bottom:5px solid #ea0011;padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)}.wrapper{width:100%;max-width:990px;padding:0 15px;margin:0 auto}.page{min-height:100%;padding-bottom:60px}.page:after{content:"";display:block}.row{width:100%;clear:both}.cell{padding:0 15px;float:left;display:block;margin:0}.cell .cell{padding:0}.cell-centre{margin-left:auto;margin-right:auto;float:none}.cell-1{width:8.3333333333%}.cell-offset-1{margin-left:8.3333333333%}.cell-2{width:16.6666666667%}.cell-offset-2{margin-left:16.6666666667%}.cell-3{width:25%}.cell-offset-3{margin-left:25%}.cell-4{width:33.3333333333%}.cell-offset-4{margin-left:33.3333333333%}.cell-5{width:41.6666666667%}.cell-offset-5{margin-left:41.6666666667%}.cell-6{width:50%}.cell-offset-6{margin-left:50%}.cell-7{width:58.3333333333%}.cell-offset-7{margin-left:58.3333333333%}.cell-8{width:66.6666666667%}.cell-offset-8{margin-left:66.6666666667%}.cell-9{width:75%}.cell-offset-9{margin-left:75%}.cell-10{width:83.3333333333%}.cell-offset-10{margin-left:83.3333333333%}.cell-11{width:91.6666666667%}.cell-offset-11{margin-left:91.6666666667%}.cell-12{width:100%}.cell-offset-12{margin-left:100%}@media screen and (min-width: 700px){.cell-med-1{width:8.3333333333%}.cell-med-offset-1{margin-left:8.3333333333%}.cell-med-2{width:16.6666666667%}.cell-med-offset-2{margin-left:16.6666666667%}.cell-med-3{width:25%}.cell-med-offset-3{margin-left:25%}.cell-med-4{width:33.3333333333%}.cell-med-offset-4{margin-left:33.3333333333%}.cell-med-5{width:41.6666666667%}.cell-med-offset-5{margin-left:41.6666666667%}.cell-med-6{width:50%}.cell-med-offset-6{margin-left:50%}.cell-med-7{width:58.3333333333%}.cell-med-offset-7{margin-left:58.3333333333%}.cell-med-8{width:66.6666666667%}.cell-med-offset-8{margin-left:66.6666666667%}.cell-med-9{width:75%}.cell-med-offset-9{margin-left:75%}.cell-med-10{width:83.3333333333%}.cell-med-offset-10{margin-left:83.3333333333%}.cell-med-11{width:91.6666666667%}.cell-med-offset-11{margin-left:91.6666666667%}.cell-med-12{width:100%}.cell-med-offset-12{margin-left:100%}}.highlight{background-color:#002b36;color:#93a1a1}.highlight .c{color:#759299}.highlight .err{color:#93a1a1}.highlight .g{color:#93a1a1}.highlight .k{color:#859900}.highlight .l{color:#93a1a1}.highlight .n{color:#93a1a1}.highlight .o{color:#859900}.highlight .x{color:#e9662f}.highlight .p{color:#93a1a1}.highlight .cm{color:#759299}.highlight .cp{color:#859900}.highlight .c1{color:#759299}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#93a1a1;font-style:italic}.highlight .gr{color:#e8625f}.highlight .gh{color:#e9662f}.highlight .gi{color:#859900}.highlight .go{color:#93a1a1}.highlight .gp{color:#93a1a1}.highlight .gs{color:#93a1a1;font-weight:bold}.highlight .gu{color:#e9662f}.highlight .gt{color:#93a1a1}.highlight .kc{color:#e9662f}.highlight .kd{color:#3294da}.highlight .kn{color:#859900}.highlight .kp{color:#859900}.highlight .kr{color:#3294da}.highlight .kt{color:#e8625f}.highlight .ld{color:#93a1a1}.highlight .m{color:#2aa198}.highlight .s{color:#2aa198}.highlight .na{color:#93a1a1}.highlight .nb{color:#B58900}.highlight .nc{color:#3294da}.highlight .no{color:#e9662f}.highlight .nd{color:#3294da}.highlight .ni{color:#e9662f}.highlight .ne{color:#e9662f}.highlight .nf{color:#3294da}.highlight .nl{color:#93a1a1}.highlight .nn{color:#93a1a1}.highlight .nx{color:#93a1a1}.highlight .py{color:#93a1a1}.highlight .nt{color:#3294da}.highlight .nv{color:#3294da}.highlight .ow{color:#859900}.highlight .w{color:#93a1a1}.highlight .mf{color:#2aa198}.highlight .mh{color:#2aa198}.highlight .mi{color:#2aa198}.highlight .mo{color:#2aa198}.highlight .sb{color:#759299}.highlight .sc{color:#2aa198}.highlight .sd{color:#93a1a1}.highlight .s2{color:#2aa198}.highlight .se{color:#e9662f}.highlight .sh{color:#93a1a1}.highlight .si{color:#2aa198}.highlight .sx{color:#2aa198}.highlight .sr{color:#e8625f}.highlight .s1{color:#2aa198}.highlight .ss{color:#2aa198}.highlight .bp{color:#3294da}.highlight .vc{color:#3294da}.highlight .vg{color:#3294da}.highlight .vi{color:#3294da}.highlight .il{color:#2aa198}.home-header{margin-bottom:30px}.home-header img{margin:0 auto 15px;clear:both;padding:0;display:block;width:70px;height:70px}.home-header h1,.home-header p{text-align:center;font-family:"Raleway", Arial, sans-serif;font-weight:900;letter-spacing:-2px;text-transform:uppercase;line-height:1;color:#454545}.home-header h1{font-size:48px}.home-header p{font-size:24px;margin-bottom:60px}.blog-header,.home-nav{padding-top:15px;padding-bottom:15px}.home-nav{max-width:930px;width:100%;margin:0 auto 60px;overflow:hidden}.home-nav nav{flex-grow:1;text-align:left}.blog-header a.title{font-family:"Raleway", Arial, sans-serif;font-weight:900;letter-spacing:-2px;text-transform:uppercase;line-height:1;color:#454545;font-size:24px;flex-grow:1}.blog-header a.title:hover{text-decoration:none;box-shadow:none;border:none}.header>div{display:flex;flex-direction:column}.header nav{display:flex}.header nav a{font-family:"Raleway", Arial, sans-serif;font-weight:900;text-transform:uppercase;line-height:24px;margin-left:15px;display:inline-block}.header nav a:hover{border:none}.header nav a:first-child{margin-left:0}@media screen and (min-width: 600px){.home-header img{width:120px;height:120px}.home-header h1{font-size:96px}.home-header p{font-size:48px;margin-bottom:120px}.home-nav{margin-bottom:120px}.header>div{flex-direction:row}.header nav{justify-content:end}}.site-footer{padding:30px 0;font-size:16px}.site-footer h2{font-size:18px;line-height:1.6}.site-footer p{line-height:1.6;margin-bottom:0;padding-top:0;padding-bottom:0}.pagination{text-align:center;padding:30px 0}.pagination *{display:inline-block;padding:0 15px;border-bottom:2px solid transparent}.pagination .numbers{padding:0;display:none}.pagination .start-ellipsis,.pagination .end-ellipsis{padding:0;display:none}.pagination .start-ellipsis::before,.pagination .end-ellipsis::before{content:'\2026'}@media screen and (min-width: 600px){.pagination .numbers,.pagination .start-ellipsis,.pagination .end-ellipsis{display:inline-block}}.pagination em{font-style:normal;background-color:#ea0011;color:#fcfcfc;border-radius:3px}.pagination a{background-color:#fcfcfc;color:#ea0011;border-radius:3px}.pagination a:hover{color:#ff3846}.intro{margin-bottom:60px}.the-rest{padding-top:60px;margin-bottom:60px;border-top:1px solid #ccc}@media screen and (min-width: 600px){.intro{font-size:21px}}.social{list-style-type:none;margin:0 0 30px;padding:0;overflow:hidden}.social li.cell{margin-bottom:7.5px}.social svg{display:inline-block;height:27px;width:27px;vertical-align:bottom}.social a{border-bottom:2px solid transparent}.social .twitter{color:#007abc;fill:#007abc}.social .twitter:hover{border-color:#007abc}.social .github{color:#171515;fill:#171515}.social .github:hover{border-color:#171515}.social .facebook{color:#3b5998;fill:#3b5998}.social .facebook:hover{border-color:#3b5998}.social .linkedin{color:#0077b5;fill:#0077b5}.social .linkedin:hover{border-color:#0077b5}.social .instagram{color:#b900b3;fill:#b900b3}.social .instagram:hover{border-color:#b900b3}.social .stackoverflow{color:#b75c00;fill:#b75c00}.social .stackoverflow:hover{border-color:#b75c00}.social .dev{color:#000;fill:#000}.social .dev:hover{border-color:#000}.social .hashnode{color:#296CF2;fill:#296CF2}.social .hashnode:hover{border-color:#296CF2}.social .twitch{color:#9146FF;fill:#9146FF}.social .twitch:hover{border-color:#9146FF}.social .mastodon{color:#6364FF;fill:#6364FF}.social .mastodon:hover{border-color:#6364FF}.post-title,.page-title{text-align:center;font-size:36px;line-height:1;margin:60px 0}@media screen and (min-width: 700px){.post-title,.page-title{font-size:54px}}.post-header-image{display:block;width:100%;height:auto;margin-top:-30px;margin-bottom:30px}.post-meta{border-top:5px solid #e8e8e8;border-bottom:5px solid #e8e8e8;margin-bottom:30px;padding-top:15px;overflow:hidden}.post-list .post-meta{border:none;padding:0;margin-bottom:30px}.post-meta p{font-style:italic;font-size:15.75px;font-family:"Merriweather", Georgia, serif;font-weight:400;text-transform:none;margin-bottom:15px}@media screen and (min-width: 700px){.post-meta .meta{float:left}.post-meta .subscribe{float:right}}.subscribe svg{display:inline-block;height:16px;width:16px;fill:#ea0011}.post footer{margin-top:60px}.blog-meta{clear:both;border-top:5px solid #e8e8e8;border-bottom:5px solid #e8e8e8;margin-bottom:30px}.blog-meta p{padding-top:15px;margin-bottom:15px}.post-list{list-style-type:none;padding:0;margin:0}.post-list h2{font-size:27px;line-height:1.25;padding-top:0;padding-bottom:0}.post-list .post-header-image{margin-top:30px}.post-list .post{margin-bottom:30px;padding-bottom:30px;border-bottom:1px solid #ccc}.post-list .post:last-child{border-bottom:none}.post-list .post p:last-child{margin-bottom:0}.twitter-tweet-rendered{margin-left:auto;margin-right:auto}.post-video{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-bottom:30px}.post-video iframe{position:absolute;top:0;left:0;width:100%;height:100%}.post-image{display:block;text-align:center}.post-image img{max-width:100%;height:auto;margin-left:auto;margin-right:auto}.post-image-outside{margin-left:0;margin-right:0}@media screen and (min-width: 600px){.post-image-left{float:left;margin-left:0;margin-right:1em;margin-bottom:1em}}@media screen and (min-width: 700px){.post-image-outside{margin-left:-100px;margin-right:-100px}}.post-promo{margin-top:60px;padding-top:60px;margin-bottom:30px;border-top:5px solid #e8e8e8;border-radius:3px}.post-promo h2{font-size:1.5em}.post-promo web-share-wrapper button{color:#ea0011;text-decoration:none;border:none;background:transparent;display:inline;font-size:18px;padding:0;cursor:pointer;font-family:"Merriweather", Georgia, serif}.post-promo web-share-wrapper button:hover{color:#ff3846;border-bottom:2px solid #ff3846}.info{background-color:#e8e8e8;padding:30px;margin-bottom:15px}.info p:last-child{margin-bottom:0}.offline-pages{list-style-type:none;padding:0;margin:0}.offline-pages li{margin-bottom:0.5em;padding-bottom:0.5em;border-bottom:1px solid #ccc}.offline-pages li:last-child{border-bottom:none}.notice{position:fixed;bottom:0;left:0;right:0;background:#ea0011;color:#fcfcfc;opacity:1;transition:opacity 1s ease-in-out}.notice.hidden{opacity:0}.notice p{text-align:center;margin:0;padding-top:15px;padding-bottom:15px}.notice a{color:#fcfcfc}.section-title{text-align:center}.speaking-header-image{display:block;width:100%;margin-bottom:30px}.speaking-list{list-style-type:none;margin-bottom:60px;padding:0}.speaking-list .talk{padding-bottom:15px;padding-top:15px;border-bottom:1px solid #ccc}.speaking-list .talk:first-child{padding-top:0}.speaking-list .talk:last-child{border-bottom:none}.speaking-list .talk-meta{font-style:italic;font-size:15.75px;font-family:"Merriweather", Georgia, serif;font-weight:400;text-transform:none;margin-bottom:0}.speaking-list .talk-event{margin-bottom:0}.speaking-list .talk .talk-title ~ .talk-title{margin-top:15px}.speaking-list .talk-title{margin-top:0;margin-bottom:0}.speaking-list .talk-materials{margin-bottom:0;list-style-type:none;margin:0;padding:0}.speaking-list .talk-materials li{display:inline}.speaking-list .talk-materials li::after{content:' \2022 '}.speaking-list .talk-materials li:last-child::after{content:''}.speaker-info dt{font-weight:bold;float:left;clear:left;display:block}.speaker-info dd{display:block;margin-left:150px}#carbonads{border-radius:3px;display:block;padding:15px 15px 15px 160px;margin-left:-15px;margin-right:-15px;overflow:hidden;font-size:12px;line-height:1.4;text-align:left;background-color:#e8e8e8;float:right}#carbonads .carbon-img{display:block;margin-left:-145px;float:left}#carbonads .carbon-img img{display:block}@media screen and (min-width: 700px){#carbonads{max-width:160px;margin:0 0 15px 0;padding:15px}#carbonads .carbon-img{margin-left:0;margin-bottom:15px;float:none}}#carbonads a{color:#454545;border:none}#carbonads .carbon-wrap{margin-bottom:7.5px;display:block}#carbonads .carbon-poweredby{font-size:10px;display:block;text-align:right;border:none;color:#787878}.twitch{position:relative}.twitch .twitch-video{padding-top:56.25%;position:relative;height:0}.twitch .twitch-video iframe{position:absolute;width:100%;height:100%;top:0}.twitch .twitch-chat{height:400px}.twitch .twitch-chat iframe{width:100%;height:100%}@media screen and (min-width: 850px){.twitch .twitch-video{width:75%;padding-top:42.1875%}.twitch .twitch-chat{width:25%;height:auto;position:absolute;top:0;right:0;bottom:0}}
</style>

  <link rel="canonical" href="https://philna.sh/">
  <link rel="alternate" type="application/rss+xml" title="Phil Nash" href="https://philna.sh/feed.xml">
  

  <!-- Web monetization: https://webmonetization.org/ -->
  <meta name='monetization' content='$ilp.uphold.com/jWYNH2JiKFRB'>

  
    <meta name="google-site-verification" content="93Z5mNzB7ZrYHXyw893aKZxJ2G-3rr719BjpttTmn4g" />
<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-144643-7', 'auto');
ga('set', 'transport', 'beacon');
ga('send', 'pageview');
</script>

<script async src='https://www.google-analytics.com/analytics.js'></script>


  
</head>

  <body class="home">

    <div class="home-page h-card">
      <header class="home-header header row">
  <div class="home-nav cell cell-centre cell-12">
    <nav>
  <a href="/blog/">Blog</a>
  <a href="/speaking/">Speaking</a>
  <a href="/live/">Live</a>
</nav>

  </div>
  <img src="/assets/philnash120x120-7674cb3dbe22a7363aad33a16f745198429f2591d52270064b936f6806c6dd4d.jpg" srcset="/assets/philnash70x70-1ec5a305c51c00ef68556deca95f90a36194cb8675b5c4228a5921a1aa4a8828.jpg 70w, /assets/philnash70x70@2x-ecac2c2af95cc313ce766be0ebb89aba0014f0eeea27ef3e18db9682a3b95c7d.jpg 140w, /assets/philnash70x70@3x-3470d094cc7378f2b9c208e3950184c5fdd56631f7ff4129be2f49692234420d.jpg 210w, /assets/philnash120x120-7674cb3dbe22a7363aad33a16f745198429f2591d52270064b936f6806c6dd4d.jpg 120w, /assets/philnash120x120@2x-8d91eec7d3e27feab944acdb0c8b8c69147356393dd04512098fbd0c73202779.jpg 240w, /assets/philnash120x120@3x-b990c6e63e287b54fd222c367d7175c9acb9b93d11c24a78710a64a92e5ba5f0.jpg 360w"
    sizes="(min-width: 600px) 120px, 70px" alt="A picture of Phil. He's smiling." class="u-photo">
  <h1 class="p-name">Phil Nash</h1>
  <p>is a developer</p>
</header>

      <main class="page-content page wrapper">
        <div class="row">
  <div class="intro cell cell-12 cell-med-10 cell-centre">
    <h2>About</h2>
    <p class="p-note">
      <a rel="me" class="p-name u-url" href="https://philna.sh/">Phil Nash</a>
      is a <span class="p-job-title">developer advocate</span> for
      <a class="p-org h-card" href="https://www.sonarsource.com/">Sonar</a>.
      Sometimes he <a href="/speaking/">writes code on stage</a> in front of a
      crowd, hoping everything just works. Sometimes
      <a rel="me" href="https://github.com/philnash/"
        >he writes open source code</a
      >, which is much less stressful because if it is wrong someone else can
      correct it. He writes code in
      <a rel="me" href="https://twitter.com/philnash">tweets</a> or
      <a rel="me" href="https://mastodon.social/@philnash">toots</a> sometimes,
      but not much fits. He has been known to
      <a href="https://twitch.tv/phil_nash" rel="me">live code on Twitch</a>
      and if you're looking for code here,
      <a href="/blog/">check out the blog</a>.
    </p>
  </div>
</div>

<div class="row the-rest">
  <div class="cell cell-12 cell-med-6">
    <h2>Blog</h2>
    <p>The latest post from <a href="/blog/">Phil's blog</a>.</p>
    
    <h3>
      <a class="post-link" href="/blog/2023/03/13/create-a-cli-chatbot-with-chatgpt-api-and-node-js/"
        >Create a CLI Chatbot with the ChatGPT API and Node.js</a
      >
    </h3>
    <p>ChatGPT has taken the world by storm and this week <a href="https://openai.com/blog/introducing-chatgpt-and-whisper-apis">OpenAI released the ChatGPT API</a>. I’ve spent some time playing with <a href="https://chat.openai.com/chat">ChatGPT in the browser</a>, but the best way to really get on board with these new capabilities is to try building something with it. With the API available, now is that time.</p>


    <p>See all <a href="/blog/">blog posts</a>.</p>
  </div>

  <div class="cell cell-12 cell-med-6">
    <h2>Speaking</h2>
     
    <p>Phil's <a href="/speaking/">upcoming talks</a>.</p>
    <ol class="speaking-list cell cell-12">
       <li class="talk">
  <p class="talk-meta">
    
      Mar 28, 2023
    
    - Melbourne, Australia
  </p>
  <h3 class="talk-event">
    
      <a href="https://www.programmable.tech/speaker-profiles/phil-nash">Programmable Melbourne</a>
    
  </h3>
  
    
      <h4>Presenting</h4>
    
  
  
  <p class="talk-title"> <em>"The state of passwordless auth on the web"</em></p>
    
  
</li>  <li class="talk">
  <p class="talk-meta">
    
      Mar 30, 2023
    
    - Sydney, Australia
  </p>
  <h3 class="talk-event">
    
      <a href="https://www.programmable.tech/speaker-profiles/phil-nash">Programmable Sydney</a>
    
  </h3>
  
    
      <h4>Presenting</h4>
    
  
  
  <p class="talk-title"> <em>"The state of passwordless auth on the web"</em></p>
    
  
</li>  <li class="talk">
  <p class="talk-meta">
    
      Apr 13 - 14, 2023
    
    - Verona, Italy
  </p>
  <h3 class="talk-event">
    
      <a href="https://2023.jsday.it/talks_speakers/#Phil%20Nash">jsDay</a>
    
  </h3>
  
    
      <h4>Presenting</h4>
    
  
  
  <p class="talk-title"> <em>"The top 5 JavaScript issues in all our codebases"</em></p>
    
  
</li> 
    </ol>
    
    <p>See <a href="/speaking/">all upcoming and past talks</a>.</p>
  </div>
</div>

      </main>
    </div>

    <footer class="site-footer">
  <div class="wrapper">
    <div class="row">
      <div class="cell cell-12 cell-med-8">
        <h2>Find Phil on the Internet</h2>
        <ul class="social">
          <li class="cell cell-6">
            <a href="https://twitter.com/philnash" class="twitter" rel="me">
              <svg viewBox="0 0 512 512" role="img">
  <title>Twitter</title>
  <path d="M419.6 168.6c-11.7 5.2-24.2 8.7-37.4 10.2 13.4-8.1 23.8-20.8 28.6-36 -12.6 7.5-26.5 12.9-41.3 15.8 -11.9-12.6-28.8-20.6-47.5-20.6 -42 0-72.9 39.2-63.4 79.9 -54.1-2.7-102.1-28.6-134.2-68 -17 29.2-8.8 67.5 20.1 86.9 -10.7-0.3-20.7-3.3-29.5-8.1 -0.7 30.2 20.9 58.4 52.2 64.6 -9.2 2.5-19.2 3.1-29.4 1.1 8.3 25.9 32.3 44.7 60.8 45.2 -27.4 21.4-61.8 31-96.4 27 28.8 18.5 63 29.2 99.8 29.2 120.8 0 189.1-102.1 185-193.6C399.9 193.1 410.9 181.7 419.6 168.6z"
  />
</svg> Twitter
            </a>
          </li>
          <li class="cell cell-6">
            <a href="https://github.com/philnash" class="github" rel="me">
              <svg role="img" viewBox="0 0 512 512">
  <title>GitHub</title>
  <path d="M256 70.7c-102.6 0-185.9 83.2-185.9 185.9 0 82.1 53.3 151.8 127.1 176.4 9.3 1.7 12.3-4 12.3-8.9V389.4c-51.7 11.3-62.5-21.9-62.5-21.9 -8.4-21.5-20.6-27.2-20.6-27.2 -16.9-11.5 1.3-11.3 1.3-11.3 18.7 1.3 28.5 19.2 28.5 19.2 16.6 28.4 43.5 20.2 54.1 15.4 1.7-12 6.5-20.2 11.8-24.9 -41.3-4.7-84.7-20.6-84.7-91.9 0-20.3 7.3-36.9 19.2-49.9 -1.9-4.7-8.3-23.6 1.8-49.2 0 0 15.6-5 51.1 19.1 14.8-4.1 30.7-6.2 46.5-6.3 15.8 0.1 31.7 2.1 46.6 6.3 35.5-24 51.1-19.1 51.1-19.1 10.1 25.6 3.8 44.5 1.8 49.2 11.9 13 19.1 29.6 19.1 49.9 0 71.4-43.5 87.1-84.9 91.7 6.7 5.8 12.8 17.1 12.8 34.4 0 24.9 0 44.9 0 51 0 4.9 3 10.7 12.4 8.9 73.8-24.6 127-94.3 127-176.4C441.9 153.9 358.6 70.7 256 70.7z"
  />
</svg> GitHub
            </a>
          </li>
          <li class="cell cell-6">
            <a
              href="https://www.facebook.com/philnash"
              class="facebook"
              rel="me"
            >
              <svg viewBox="0 0 512 512" role="img">
  <title>Facebook</title>
  <path d="M211.9 197.4h-36.7v59.9h36.7V433.1h70.5V256.5h49.2l5.2-59.1h-54.4c0 0 0-22.1 0-33.7 0-13.9 2.8-19.5 16.3-19.5 10.9 0 38.2 0 38.2 0V82.9c0 0-40.2 0-48.8 0 -52.5 0-76.1 23.1-76.1 67.3C211.9 188.8 211.9 197.4 211.9 197.4z"
  />
</svg> Facebook
            </a>
          </li>
          <li class="cell cell-6">
            <a
              href="https://www.linkedin.com/in/philnash/"
              class="linkedin"
              rel="me"
            >
              <svg viewBox="0 0 512 512" role="img">
  <title>LinkedIn</title>
  <path d="M186.4 142.4c0 19-15.3 34.5-34.2 34.5 -18.9 0-34.2-15.4-34.2-34.5 0-19 15.3-34.5 34.2-34.5C171.1 107.9 186.4 123.4 186.4 142.4zM181.4 201.3h-57.8V388.1h57.8V201.3zM273.8 201.3h-55.4V388.1h55.4c0 0 0-69.3 0-98 0-26.3 12.1-41.9 35.2-41.9 21.3 0 31.5 15 31.5 41.9 0 26.9 0 98 0 98h57.5c0 0 0-68.2 0-118.3 0-50-28.3-74.2-68-74.2 -39.6 0-56.3 30.9-56.3 30.9v-25.2H273.8z"
  />
</svg> LinkedIn
            </a>
          </li>
          <li class="cell cell-6">
            <a
              href="https://www.instagram.com/philnash/"
              class="instagram"
              rel="me"
            >
              <svg viewBox="0 0 512 512" role="img">
  <title>Instagram</title>
  <g>
    <path d="M256 109.3c47.8 0 53.4 0.2 72.3 1 17.4 0.8 26.9 3.7 33.2 6.2 8.4 3.2 14.3 7.1 20.6 13.4 6.3 6.3 10.1 12.2 13.4 20.6 2.5 6.3 5.4 15.8 6.2 33.2 0.9 18.9 1 24.5 1 72.3s-0.2 53.4-1 72.3c-0.8 17.4-3.7 26.9-6.2 33.2 -3.2 8.4-7.1 14.3-13.4 20.6 -6.3 6.3-12.2 10.1-20.6 13.4 -6.3 2.5-15.8 5.4-33.2 6.2 -18.9 0.9-24.5 1-72.3 1s-53.4-0.2-72.3-1c-17.4-0.8-26.9-3.7-33.2-6.2 -8.4-3.2-14.3-7.1-20.6-13.4 -6.3-6.3-10.1-12.2-13.4-20.6 -2.5-6.3-5.4-15.8-6.2-33.2 -0.9-18.9-1-24.5-1-72.3s0.2-53.4 1-72.3c0.8-17.4 3.7-26.9 6.2-33.2 3.2-8.4 7.1-14.3 13.4-20.6 6.3-6.3 12.2-10.1 20.6-13.4 6.3-2.5 15.8-5.4 33.2-6.2C202.6 109.5 208.2 109.3 256 109.3M256 77.1c-48.6 0-54.7 0.2-73.8 1.1 -19 0.9-32.1 3.9-43.4 8.3 -11.8 4.6-21.7 10.7-31.7 20.6 -9.9 9.9-16.1 19.9-20.6 31.7 -4.4 11.4-7.4 24.4-8.3 43.4 -0.9 19.1-1.1 25.2-1.1 73.8 0 48.6 0.2 54.7 1.1 73.8 0.9 19 3.9 32.1 8.3 43.4 4.6 11.8 10.7 21.7 20.6 31.7 9.9 9.9 19.9 16.1 31.7 20.6 11.4 4.4 24.4 7.4 43.4 8.3 19.1 0.9 25.2 1.1 73.8 1.1s54.7-0.2 73.8-1.1c19-0.9 32.1-3.9 43.4-8.3 11.8-4.6 21.7-10.7 31.7-20.6 9.9-9.9 16.1-19.9 20.6-31.7 4.4-11.4 7.4-24.4 8.3-43.4 0.9-19.1 1.1-25.2 1.1-73.8s-0.2-54.7-1.1-73.8c-0.9-19-3.9-32.1-8.3-43.4 -4.6-11.8-10.7-21.7-20.6-31.7 -9.9-9.9-19.9-16.1-31.7-20.6 -11.4-4.4-24.4-7.4-43.4-8.3C310.7 77.3 304.6 77.1 256 77.1L256 77.1z"
    />
    <path d="M256 164.1c-50.7 0-91.9 41.1-91.9 91.9s41.1 91.9 91.9 91.9 91.9-41.1 91.9-91.9S306.7 164.1 256 164.1zM256 315.6c-32.9 0-59.6-26.7-59.6-59.6s26.7-59.6 59.6-59.6 59.6 26.7 59.6 59.6S288.9 315.6 256 315.6z"
    />
    <circle cx="351.5" cy="160.5" r="21.5" />
  </g>
</svg> Instagram
            </a>
          </li>
          <li class="cell cell-6">
            <a
              href="https://stackoverflow.com/users/28376/philnash"
              class="stackoverflow"
              rel="me"
            >
              <svg viewBox="0 0 512 512" role="img">
  <title>Stack Overflow</title>
  <path d="M294.8 361.2l-122 0.1 0-26 122-0.1L294.8 361.2zM377.2 213.7L356.4 93.5l-25.7 4.5 20.9 120.2L377.2 213.7zM297.8 301.8l-121.4-11.2 -2.4 25.9 121.4 11.2L297.8 301.8zM305.8 267.8l-117.8-31.7 -6.8 25.2 117.8 31.7L305.8 267.8zM321.2 238l-105-62 -13.2 22.4 105 62L321.2 238zM346.9 219.7l-68.7-100.8 -21.5 14.7 68.7 100.8L346.9 219.7zM315.5 275.5v106.5H155.6V275.5h-20.8v126.9h201.5V275.5H315.5z"
  />
</svg> StackOverflow
            </a>
          </li>
          <li class="cell cell-6">
            <a href="https://dev.to/philnash" class="dev" rel="me">
              <svg role="img" viewBox="0 0 448 512">
  <title>DEV</title>
  <path fill="#000000" d="M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z"></path>
</svg> DEV
            </a>
          </li>
          <li class="cell cell-6">
            <a href="https://hashnode.com/@philnash" class="hashnode" rel="me">
              <svg role="img" viewBox="0 0 500 500">
  <title>Hashnode</title>
  <g fill-rule="nonzero" fill="none">
    <path d="M81 1h340c44.183 0 80 35.817 80 80v340c0 44.183-35.817 80-80 80H81c-44.183 0-80-35.817-80-80V81C1 36.817 36.817 1 81 1z" fill="#2962FF"/>
    <path d="M376.311 451.797l-.082-.016c28.44-.472 51.572-23.054 52.726-51.475 1.154-28.42-20.07-52.804-48.378-55.58L278.134 163.852c-14.988-26.912-43.926-25.742-54.351 12.452-8.96 36.168-6.654 70.244-9.256 111.42a.626.626 0 01-1.153.296l-91.458-182.323a31.013 31.013 0 0011.858-24.31C133.774 64.605 120.17 51 103.387 51S73 64.605 73 81.387s13.605 30.387 30.387 30.387c1.433 0 2.602-.296 3.755-.296 38.49 98.968 81.33 214.439 96.663 241.07 10.425 25.464 46.017 17.36 46.89-10.128l3.755-144.409c0-.873 1.153-.873 1.45-.296l73.455 174.78a52.523 52.523 0 00-6.588 25.758c.037 29.557 23.988 53.508 53.544 53.544z" fill="#FFF"/>
  </g>
</svg> Hashnode
            </a>
          </li>
          <li class="cell cell-6">
            <a href="https://twitch.tv/phil_nash" class="twitch" rel="me">
              <svg id="Layer_1" role="img" viewBox="0 0 2400 2800">
  <style>
    .st1{fill:#9146ff}
  </style>
  <title>Twitch</title>
  <path fill="#fff" d="M2200 1300l-400 400h-400l-350 350v-350H600V200h1600z"/>
  <g id="Layer_1-2">
    <path class="st1" d="M500 0L0 500v1800h600v500l500-500h400l900-900V0H500zm1700 1300l-400 400h-400l-350 350v-350H600V200h1600v1100z"/>
    <path class="st1" d="M1700 550h200v600h-200zM1150 550h200v600h-200z"/>
  </g>
</svg> Twitch
            </a>
          </li>
          <li class="cell cell-6">
            <a
              href="https://mastodon.social/@philnash"
              class="mastodon"
              rel="me"
            >
              <svg
  xmlns="http://www.w3.org/2000/svg"
  width="65"
  height="65"
  fill="none"
  viewBox="0 0 61 65"
>
  <path
    fill="url(#a)"
    d="M60.754 14.39C59.814 7.406 53.727 1.903 46.512.836 45.294.656 40.682 0 29.997 0h-.08C19.23 0 16.938.656 15.72.836 8.705 1.873 2.299 6.82.745 13.886c-.748 3.48-.828 7.338-.689 10.877.198 5.075.237 10.142.697 15.197a71.482 71.482 0 0 0 1.664 9.968c1.477 6.056 7.458 11.096 13.317 13.152a35.718 35.718 0 0 0 19.484 1.028 28.365 28.365 0 0 0 2.107-.576c1.572-.5 3.413-1.057 4.766-2.038a.154.154 0 0 0 .062-.118v-4.899a.146.146 0 0 0-.055-.111.145.145 0 0 0-.122-.028 54 54 0 0 1-12.644 1.478c-7.328 0-9.298-3.478-9.863-4.925a15.258 15.258 0 0 1-.857-3.882.142.142 0 0 1 .178-.145 52.976 52.976 0 0 0 12.437 1.477c1.007 0 2.012 0 3.02-.026 4.213-.119 8.654-.334 12.8-1.144.103-.02.206-.038.295-.065 6.539-1.255 12.762-5.196 13.394-15.176.024-.393.083-4.115.083-4.523.003-1.386.446-9.829-.065-15.017Z"
  />
  <path
    fill="#fff"
    d="M50.394 22.237v17.35H43.52V22.749c0-3.545-1.478-5.353-4.483-5.353-3.303 0-4.958 2.139-4.958 6.364v9.217h-6.835v-9.217c0-4.225-1.657-6.364-4.96-6.364-2.988 0-4.48 1.808-4.48 5.353v16.84H10.93V22.237c0-3.545.905-6.362 2.715-8.45 1.868-2.082 4.317-3.152 7.358-3.152 3.519 0 6.178 1.354 7.951 4.057l1.711 2.871 1.714-2.871c1.773-2.704 4.432-4.056 7.945-4.056 3.038 0 5.487 1.069 7.36 3.152 1.81 2.085 2.712 4.902 2.71 8.449Z"
  />
  <defs>
    <linearGradient
      id="a"
      x1="30.5"
      x2="30.5"
      y1="0"
      y2="65"
      gradientUnits="userSpaceOnUse"
    >
      <stop stop-color="#6364FF" />
      <stop offset="1" stop-color="#563ACC" />
    </linearGradient>
  </defs>
</svg>
 Mastodon
            </a>
          </li>
        </ul>
      </div>

      <div class="cell cell-12 cell-med-4">
        <p>
          &copy; 2023
          <a href="/">philnash</a>
        </p>
        <p>
          <a href="/">home</a> &bull; <a href="/blog/">blog</a> &bull;
          <a href="/speaking/">speaking</a> &bull;
          <a href="/live/">live</a>
        </p>
      </div>
    </div>
  </div>
</footer>

<template id="fresh-notice">
  <div class="notice hidden">
    <p>
      <a href="/"
        >The content on this page has updated, refresh for the latest.</a
      >
    </p>
  </div>
</template>

<script async="" integrity="sha256-8zicDBLvnj0Uf2+qR1Tw5olYS0Tka+KQefDUkKW7Rtc=" crossorigin="anonymous" src="/assets/main-f3389c0c12ef9e3d147f6faa4754f0e689584b44e46be29079f0d490a5bb46d7.js" type="text/javascript"></script> 

  </body>

</html>
