{"componentChunkName":"component---src-pages-index-js","path":"/","result":{"data":{"allMdx":{"nodes":[{"id":"bbc51806-c0c0-5312-a9db-3ab773ef0311","excerpt":"So, I followed the awesome video content and blog post from Leigh\nHalliday and I now have a way to…","frontmatter":{"title":"Open Graph Images with Gatsby and Now","date":"2020 April 30th"},"tableOfContents":{},"timeToRead":1,"fields":{"slug":"/unpublished/serverless-og-images/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/unpublished/serverless-og-images/index.mdx"}},{"id":"05e9d503-dfb5-56f9-a901-279e72cf3907","excerpt":"I've spent a while today trying to bring down the size of this\nproject, I have several posts that…","frontmatter":{"title":"Moving Large Markdown Assets to a CDN","date":"2020 April 30th"},"tableOfContents":{"items":[{"url":"#markdown-file-structure","title":"Markdown file structure"},{"url":"#cool-story-bro","title":"Cool story bro"}]},"timeToRead":1,"fields":{"slug":"/2020/04/30/large-md-assets-to-cdn/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/04/30/large-md-assets-to-cdn/index.mdx"}},{"id":"2dad7b88-20e8-5fde-8d71-aeb030a63754","excerpt":"I have spent the last two days now questioning how and what I write\nafter reading a  post from…","frontmatter":{"title":"A Digital Garden","date":"2020 April 27th"},"tableOfContents":{"items":[{"url":"#publish-all-the-things","title":"Publish all the things"},{"url":"#unpublish-all-the-things","title":"Unpublish all the things"}]},"timeToRead":1,"fields":{"slug":"/2020/04/27/a-digital-garden/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/04/27/a-digital-garden/index.mdx"}},{"id":"d98b78d7-ed4e-5fa5-8942-fb91bba996e7","excerpt":"Quite a while ago now I was introduced to tools like Renovate and\nGreenkeeper, at the time I thought…","frontmatter":{"title":"Continuous Deployments on Non Essential Projects","date":"2020 April 27th"},"tableOfContents":{"items":[{"url":"#busy-work","title":"Busy work"}]},"timeToRead":1,"fields":{"slug":"/2020/04/27/continus-deployment/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/04/27/continus-deployment/index.mdx"}},{"id":"a6a0a65f-eac8-5930-99f0-fb0f3751375c","excerpt":"In this guide I'm going to cover the configuring of your custom domain\nwith Vercel's Now platform…","frontmatter":{"title":"Configure Custom Domain Email with Zoho and Now","date":"2020 April 25th"},"tableOfContents":{"items":[{"url":"#what-youll-need","title":"What you'll need"},{"url":"#set-up-an-account","title":"Set up an account"},{"url":"#create-an-admin-super-user","title":"Create an admin super user"},{"url":"#verify-you-own-the-domain","title":"Verify you own the domain"},{"url":"#add-the-mx-records","title":"Add the MX records"},{"url":"#set-the-sender-policy-framework-spf","title":"Set the Sender Policy Framework (SPF)"}]},"timeToRead":2,"fields":{"slug":"/2020/04/25/custom-email-domain-with-now/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/04/25/custom-email-domain-with-now/index.mdx"}},{"id":"94e1257c-e0a9-5a96-bbcc-ab7a74fd77a9","excerpt":"Remember services like  Bitly  and  TinyURL ? Yeah, they still exist,\nshortening your URLs for you…","frontmatter":{"title":"Make a simple, personal, URL shortener with Now.sh","date":"2020 April 19th"},"tableOfContents":{"items":[{"url":"#examples-why-would-i-use-a-short-url","title":"Examples, why would I use a short URL?"},{"url":"#do-i-have-to-use-vercel-","title":"Do I have to use Vercel? 🤔"},{"url":"#redirects","title":"Redirects"},{"url":"#get-set-up-","title":"Get set up 🛠"},{"url":"#create-the-project","title":"Create the project"},{"url":"#deploy-the-project","title":"Deploy the project"},{"url":"#add-the-project-to-github","title":"Add the Project to GitHub"},{"url":"#use-vercel-for-github","title":"Use Vercel for GitHub"},{"url":"#add-my-domain-to-vercel","title":"Add my domain to Vercel"},{"url":"#heres-a-video-detailing-the-process-","title":"Here's a video detailing the process 📺"},{"url":"#resources","title":"Resources"}]},"timeToRead":4,"fields":{"slug":"/2020/04/19/url-shortener-with-nowsh/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/04/19/url-shortener-with-nowsh/index.mdx"}},{"id":"5855519b-3070-50f2-9897-43e6547b8167","excerpt":"I'm talking Fathom Analytics again, this time about tracking link\nclicks in my Markdown. I have…","frontmatter":{"title":"Add Analytics Tracking Links to your Markdown","date":"2020 April 18th"},"tableOfContents":{"items":[{"url":"#the-problem-","title":"The problem 🤔"},{"url":"#the-solution-","title":"The solution 💡"},{"url":"#the-other-problem-for-me-anyway-","title":"The other problem (for me anyway) 😧"},{"url":"#the-other-solution-🤯","title":"The other solution 🤯"},{"url":"#heres-a-video-","title":"Here's a video 📺"},{"url":"#resources-","title":"Resources 📑"}]},"timeToRead":2,"fields":{"slug":"/2020/04/18/add-tracking-links-to-your-markdown/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/04/18/add-tracking-links-to-your-markdown/index.mdx"}},{"id":"d121f762-9302-559b-9005-9333c2f6b4b4","excerpt":"Fathom Analytics recently added a really neat feature for  custom\ndomains  with their service. What…","frontmatter":{"title":"Create a Custom Domain for Fathom Analytics","date":"2020 April 16th"},"tableOfContents":{"items":[{"url":"#create-a-custom-domain","title":"Create a custom domain"},{"url":"#add-the-custom-domain-to-my-site","title":"Add the custom domain to my site"},{"url":"#add-dns-record-in-vercels-nowsh","title":"Add DNS record in Vercel's now.sh"},{"url":"#dns-editor-for-vercel-domains","title":"DNS Editor for Vercel domains"},{"url":"#select-custom-domain-in-site-settings","title":"Select custom domain in site settings"},{"url":"#add-dns-record-in-netlify","title":"Add DNS record in Netlify"}]},"timeToRead":2,"fields":{"slug":"/2020/04/16/fathom-create-custom-domain/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/04/16/fathom-create-custom-domain/index.mdx"}},{"id":"2ab5d84d-9577-5339-883d-11274abaa698","excerpt":"The main purpose for me documenting this is to demonstrate\nimplementing a table of contents with…","frontmatter":{"title":"Add a Table of Contents with Smooth scroll using Gatsby and MDX","date":"2020 February 13th"},"tableOfContents":{"items":[{"url":"#clone-the-gatsby-default-starter-with-styled-components","title":"Clone the Gatsby Default Starter with styled-components"},{"url":"#add-some-content","title":"Add some content"},{"url":"#configure-the-project-to-use-mdx","title":"Configure the project to use MDX"},{"url":"#configure-gatsby-node-to-create-the-fields-and-pages","title":"Configure Gatsby node to create the fields and pages"},{"url":"#create-a-post-template","title":"Create a post template"},{"url":"#confirm-the-pages-were-created-with-gatsbys-built-in-404-page","title":"Confirm the pages were created with Gatsby's built in 404 page"},{"url":"#build-out-the-post-template-to-use-the-mdxrenderer","title":"Build out the post template to use the MDXRenderer"},{"url":"#add-page-elements-for-the-mdxprovider","title":"Add page elements for the MDXProvider"},{"url":"#add-gatsby-remark-autolink-headers-for-adding-ids-to-headers","title":"Add gatsby-remark-autolink-headers for adding id's to headers"},{"url":"#make-a-toc-component","title":"Make a TOC component"},{"url":"#conditionally-render-the-toc","title":"Conditionally render the TOC"},{"url":"#-heres-a-video-detailing-the-process","title":"📺 Here's a video detailing the process."},{"url":"#resources-that-helped-me","title":"Resources that helped me"},{"url":"#thanks-for-reading-","title":"Thanks for reading 🙏"}]},"timeToRead":4,"fields":{"slug":"/2020/02/13/smooth-scroll-toc-gatsby/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/02/13/smooth-scroll-toc-gatsby/index.mdx"}},{"id":"88c8a4da-3fd4-5e17-9f0d-bc3356165784","excerpt":"I'm going to go over globally styling the Gatsby Default Starter with\nstyled-components v5, I've…","frontmatter":{"title":"Globally Style the Gatsby Default Starter with styled-components v5","date":"2020 February 6th"},"tableOfContents":{"items":[{"url":"#install-styled-components-dependencies","title":"Install styled-components dependencies"},{"url":"#configure-gatsby-plugin-styled-components-and-createglobalstyle","title":"Configure gatsby-plugin-styled-components and createGlobalStyle"},{"url":"#remove-current-styling","title":"Remove current styling"},{"url":"#confirm-css-reset","title":"Confirm CSS reset"},{"url":"#create-the-new-browser-base-styles","title":"Create the new browser base styles"},{"url":"#place-globalstyle-at-the-top-of-the-react-tree-","title":"Place GlobalStyle at the top of the React tree 🌳"},{"url":"#make-a-root-wrapper-to-keep-things-dry-","title":"Make a Root Wrapper to keep things DRY 🌵"},{"url":"#global-fonts-with-gatsby-plugin-google-fonts","title":"Global fonts with gatsby-plugin-google-fonts"},{"url":"#styled-components-theme-provider","title":"styled-components Theme provider"},{"url":"#shared-page-elements","title":"Shared Page Elements"},{"url":"#export-all-your-styled-components-from-an-index-file","title":"Export all your styled-components from an index file"},{"url":"#heres-a-video-detailing-the-process-","title":"Here's a video detailing the process 📺"},{"url":"#thanks-for-reading-","title":"Thanks for reading 🙏"},{"url":"#resources","title":"Resources"}]},"timeToRead":4,"fields":{"slug":"/2020/02/06/globally-style-gatsby-styled-components/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/02/06/globally-style-gatsby-styled-components/index.mdx"}},{"id":"5a99c22e-cc2a-57f5-98a0-6a23ccd9dc33","excerpt":"In this guide I'm going to detail upgrading a Windows Subsystem Linux\n(WSL) Ubuntu install from the…","frontmatter":{"title":"Upgrade Windows Subsystem Linux - Ubuntu 18.04 to Ubuntu 19.10","date":"2020 January 28th"},"tableOfContents":{"items":[{"url":"#-heres-a-video-detailing-the-process","title":"📺 Here's a video detailing the process."},{"url":"#check-the-current-ubuntu-version","title":"Check the current Ubuntu version"},{"url":"#do-the-release-upgrade","title":"Do the release upgrade!"},{"url":"#set-release-upgrades-to-normal","title":"Set release upgrades to normal"},{"url":"#do-the-release-upgrade-for-realsies","title":"Do the release upgrade, for realsies"},{"url":"#warnings-and-configs","title":"Warnings and configs"},{"url":"#finish-up-install","title":"Finish up install"},{"url":"#wrap-up","title":"Wrap up!"},{"url":"#thanks-for-reading-","title":"Thanks for reading 🙏"}]},"timeToRead":2,"fields":{"slug":"/2020/01/28/update-wsl-ubuntu-from-18.10-to-19.10/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/01/28/update-wsl-ubuntu-from-18.10-to-19.10/index.mdx"}},{"id":"efcceefd-5c06-5bfa-bc93-711cec0275a7","excerpt":"In this guide I'm going to go through how to track custom events in a\nGatsby site using Fathom…","frontmatter":{"title":"Track Custom Events With Fathom Analytics","date":"2020 January 2nd"},"tableOfContents":{"items":[{"url":"#preamble","title":"Preamble"},{"url":"#why-fathom","title":"Why Fathom?"},{"url":"#-heres-a-video-detailing-the-process","title":"📺 Here's a video detailing the process."},{"url":"#set-up-fathom-account","title":"Set-up Fathom account"},{"url":"#addconfig-fathom-gatsby-plugin","title":"Add/Config Fathom Gatsby plugin"},{"url":"#push-to-netlify-and-test","title":"Push to Netlify and test"},{"url":"#create-goals-in-fathom-analytics","title":"Create goals in Fathom Analytics"},{"url":"#use-react-context-api-to-make-an-analytics-provider","title":"Use React Context API to make an analytics provider"},{"url":"#add-custom-event-tracking-for-fathom","title":"Add custom event tracking for Fathom"},{"url":"#wrap-up","title":"Wrap up"},{"url":"#thanks-for-reading-","title":"Thanks for reading 🙏"}]},"timeToRead":4,"fields":{"slug":"/2020/01/02/track-custom-events-with-fathom-analytics/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/01/02/track-custom-events-with-fathom-analytics/index.mdx"}},{"id":"415afab7-6c34-567b-8917-c2d7b17b9c7b","excerpt":"React Advanced London going deep! Here's my recollection of my attendance at React Advanced London…","frontmatter":{"title":"React Advanced - London 2019","date":"2019 December 31st"},"tableOfContents":{"items":[{"url":"#ken-wheeler---react-performance","title":"Ken Wheeler - React Performance","items":[{"url":"#imdope-system","title":"IMDOPE System"}]},{"url":"#sean-wang---react-with-hooks-from-scratch","title":"Sean Wang - React (with hooks) from scratch"},{"url":"#vojtech-miksu---what-a-drag","title":"Vojtech Miksu - What a Drag"},{"url":"#daniel-irvine---dont-let-your-unit-tests-slow-you-down","title":"Daniel Irvine - Don’t Let Your Unit Tests Slow You Down"},{"url":"#dave-nicholas---functions-vs-classes","title":"Dave Nicholas - Functions vs Classes"},{"url":"#jamie-barton---teaching-and-sharing-awesome-content-101","title":"Jamie Barton - Teaching and Sharing Awesome Content 101"},{"url":"#lunch","title":"Lunch"},{"url":"#siddharth-kshetrapal---design-systems-design-system","title":"Siddharth Kshetrapal - Design Systems Design System"},{"url":"#emma-brillhart---a-more-readable-react-codebase-using-typescript-graphql-and-hooks","title":"Emma Brillhart - A More Readable React Codebase Using TypeScript, GraphQL, and Hooks"}]},"timeToRead":4,"fields":{"slug":"/2019/11/06/react-advanced-london-2019/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2019/11/06/react-advanced-london-2019/index.mdx"}},{"id":"d2831da9-3fc9-53fc-8198-1e3a8ba337ed","excerpt":"I have been a Gatsby user since around  v0 May 2017 , at that time was\nusing a template called…","frontmatter":{"title":"Build a coding blog from scratch with Gatsby and MDX","date":"2019 October 31st"},"tableOfContents":{"items":[{"url":"#what-does-that-mean","title":"What does that mean?"},{"url":"#what-youre-going-to-build","title":"What you're going to build"},{"url":"#whos-this-how-to-for","title":"Who's this how-to for?"},{"url":"#requirements","title":"Requirements"},{"url":"#hello-world","title":"Hello World","items":[{"url":"#basic-hello-world","title":"basic hello world"}]},{"url":"#add-content","title":"Add content"},{"url":"#gatsby-config-api","title":"Gatsby config API"},{"url":"#plugins","title":"Plugins","items":[{"url":"#gatsby-source-filesystem","title":"Gatsby source filesystem"},{"url":"#gatsby-plugin-mdx","title":"Gatsby plugin MDX"}]},{"url":"#query-data-from-graphql","title":"Query data from GraphQL"},{"url":"#site-metadata","title":"Site Metadata"},{"url":"#site-metadata-hook","title":"Site metadata hook"},{"url":"#styling","title":"Styling","items":[{"url":"#install-styled-components","title":"install styled-components"},{"url":"#configure","title":"Configure"}]},{"url":"#layout","title":"Layout"},{"url":"#index-page-posts-query","title":"Index page posts query"},{"url":"#slugs-and-paths","title":"Slugs and Paths"},{"url":"#link-paths","title":"Link Paths"},{"url":"#adding-a-blog-post-template","title":"Adding a Blog Post Template"},{"url":"#build-out-blog-post-template","title":"Build out Blog Post Template"},{"url":"#previous-and-next","title":"Previous and Next"},{"url":"#code-blocks","title":"Code Blocks","items":[{"url":"#copy-code-to-clipboard","title":"Copy code to clipboard"}]},{"url":"#react-live","title":"React live"},{"url":"#cover-image","title":"Cover Image"},{"url":"#adding-an-seo-component-to-the-site","title":"Adding an SEO component to the site","items":[{"url":"#configure-seo-component-for-homepage","title":"Configure SEO Component for Homepage"},{"url":"#configure-seo-component-for-blog-posts","title":"Configure SEO Component for Blog Posts"},{"url":"#build-site-and-validate-meta-tags","title":"Build Site and Validate Meta Tags"}]},{"url":"#adding-the-project-to-github","title":"Adding the Project to GitHub"},{"url":"#deploy-to-netlify","title":"Deploy to Netlify"},{"url":"#validate-metadata-with-heymeta","title":"Validate Metadata with Heymeta"},{"url":"#thanks-for-reading-","title":"Thanks for reading 🙏"}]},"timeToRead":18,"fields":{"slug":"/2019/10/31/build-an-mdx-blog/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2019/10/31/build-an-mdx-blog/index.mdx"}},{"id":"8fd6865a-22da-590b-aaaa-db4a8da0abee","excerpt":"I've been wanting to go to a JAMstack conf since the first one was\nscheduled for October 2018. This…","frontmatter":{"title":"JAMstack_conf London 2019","date":"2019 July 19th"},"tableOfContents":{"items":[{"url":"#tuesday---2019-07-09","title":"Tuesday - 2019-07-09"},{"url":"#workshop","title":"Workshop","items":[{"url":"#technical-difficulties","title":"Technical difficulties"},{"url":"#graphql-schema-stitching","title":"GraphQL Schema Stitching"}]},{"url":"#lightning-talks","title":"Lightning Talks"},{"url":"#wednesday---2019-07-10","title":"Wednesday - 2019-07-10"},{"url":"#talks","title":"Talks","items":[{"url":"#state-of-the-jamstack-nation---sarah-drasner","title":"State of the JAMstack Nation - Sarah Drasner"},{"url":"#netlify-analytics---matt-biilmann","title":"Netlify Analytics - Matt Biilmann"},{"url":"#transforming-the-json---groq--sanity-cms---knut-melvær","title":"Transforming the Json - GROQ (& Sanity CMS) - Knut Melvær"},{"url":"#stackbit---ben-edwards","title":"Stackbit - Ben Edwards"},{"url":"#code-sandbox---ives-van-horne","title":"Code Sandbox. - Ives van Horne"},{"url":"#why--how-smashing-magazine-moved-to-jamstack---vitaly-friedman","title":"Why & How Smashing Magazine moved to JAMstack - Vitaly Friedman"},{"url":"#weworklabs-moves-to-jamstack---ramin-bozorgzadeh","title":"WeWorkLabs moves to JAMstack - Ramin Bozorgzadeh"},{"url":"#css-houdini-today---una-kravets","title":"CSS Houdini Today - Una Kravets"},{"url":"#serverless-functions---simona-cotin","title":"Serverless functions - Simona Cotin"},{"url":"#performance-optimizing-and-webpack-bashing---jake-archibald-and-surma","title":"Performance optimizing and Webpack bashing - Jake Archibald and Surma"},{"url":"#hot","title":"Hot!"}]},{"url":"#thats-it-folks","title":"That's it folks!"}]},"timeToRead":3,"fields":{"slug":"/2019/07/19/jamstack-london-2019/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2019/07/19/jamstack-london-2019/index.mdx"}},{"id":"eeb454c8-a7e7-5937-80b5-c30cac3ce932","excerpt":"In this guide we're going to cover converting the Gatsby default blog\nstarter to use MDX. All the…","frontmatter":{"title":"Convert the Gatsby default starter blog to use MDX","date":"2019 April 9th"},"tableOfContents":{"items":[{"url":"#versions","title":"Versions:"},{"url":"#import-to-codesandbox","title":"Import to CodeSandbox"},{"url":"#gatsby-nodejs","title":"gatsby-node.js"},{"url":"#gatsby-configjs","title":"gatsby-config.js"},{"url":"#indexjs","title":"index.js"},{"url":"#blog-postjs","title":"blog-post.js"},{"url":"#now-were-using-mdx","title":"Now we're using MDX!"},{"url":"#wrap-up","title":"Wrap up!"}]},"timeToRead":2,"fields":{"slug":"/2019/04/09/convert-gatsby-default-blog-to-mdx/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2019/04/09/convert-gatsby-default-blog-to-mdx/index.mdx"}},{"id":"0c5d4050-9f0b-5ca4-be37-0b7142ab408c","excerpt":"Already use WSL with Ubuntu? Want an Upgrade?? This is a guide that will cover upgrading Windows…","frontmatter":{"title":"Update Windows Subsystem Linux Ubuntu from 18.04 to 18.10","date":"2019 April 1st"},"tableOfContents":{"items":[{"url":"#already-use-wsl-with-ubuntu-want-an-upgrade","title":"Already use WSL with Ubuntu? Want an Upgrade??"},{"url":"#upgrade-time","title":"Upgrade time!"},{"url":"#thats-it","title":"That's it"},{"url":"#wrap-up","title":"Wrap up!"}]},"timeToRead":2,"fields":{"slug":"/2019/04/01/update-wsl-from-18.04-18.10/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2019/04/01/update-wsl-from-18.04-18.10/index.mdx"}},{"id":"7c5133ff-9e7b-5b30-9f29-a5bc3bd36955","excerpt":"Hooks ahoy! Ok, let's get it on with the new hotness in Reactland, React Hooks!\nThis is a guide…","frontmatter":{"title":"Creating a Custom React Hook for Gatsby Site Metadata","date":"2019 March 24th"},"tableOfContents":{"items":[{"url":"#hooks-ahoy","title":"Hooks ahoy!"},{"url":"#tldr","title":"tl;dr"},{"url":"#versions","title":"Versions:"},{"url":"#lets-implement-it","title":"Let's implement it!"},{"url":"#wrap-up","title":"Wrap up!"}]},"timeToRead":2,"fields":{"slug":"/2019/03/24/custom-gatsby-metadata-hook/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2019/03/24/custom-gatsby-metadata-hook/index.mdx"}},{"id":"93dd6576-de40-5a5f-8d8a-6e27cf3cbbd0","excerpt":"Moving to the new hotness!! I've now moved this blog over to Gatsby MDX. You can see all the\nchanges…","frontmatter":{"title":"Testing MDX","date":"2019 March 9th"},"tableOfContents":{"items":[{"url":"#moving-to-the-new-hotness","title":"Moving to the new hotness!!"},{"url":"#things-i-still-havent-figured-out","title":"Things I still haven't figured out","items":[{"url":"#code-blocks","title":"Code blocks"},{"url":"#mdx-is-a-bit-slow","title":"Mdx is a bit slow"},{"url":"#sometimes-renders-dont-update","title":"Sometimes renders don't update"},{"url":"#not-working-yet","title":"Not working yet"}]}]},"timeToRead":1,"fields":{"slug":"/2019/03/09/testing-mdx/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2019/03/09/testing-mdx/index.mdx"}},{"id":"fc3f2c74-3a42-5228-b467-36897d6afca1","excerpt":"Over the past couple of weeks now I have set up several development\nmachines at work and have had to…","frontmatter":{"title":"Setting up multiple Git providers","date":"2019 January 27th"},"tableOfContents":{"items":[{"url":"#multiple-users","title":"Multiple users"}]},"timeToRead":2,"fields":{"slug":"/2019/01/27/multiple-git-profiles/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2019/01/27/multiple-git-profiles/index.md"}},{"id":"92b63bb2-be2f-5456-a458-b983039cbcf2","excerpt":"From scratch to Create React App on Windows An opinionated guide on setting up a web development…","frontmatter":{"title":"Windows Web-dev bootstrap","date":"2018 December 24th"},"tableOfContents":{"items":[{"url":"#from-scratch-to-create-react-app-on-windows","title":"From scratch to Create React App on Windows"},{"url":"#objective-of-this-post","title":"Objective of this post"},{"url":"#install-wsl","title":"Install WSL"},{"url":"#enable-wsl-on-your-machine","title":"Enable WSL on your machine"},{"url":"#update-upgrade-and-autoremove","title":"update, upgrade and autoremove"},{"url":"#install-node-with-n","title":"Install Node (with n)"},{"url":"#install-visual-studio-code","title":"Install Visual Studio Code"},{"url":"#install-windows-git","title":"Install Windows Git"},{"url":"#install-a-terminal-hyper","title":"Install a Terminal (Hyper)"},{"url":"#install-fish-shell","title":"Install Fish Shell!","items":[{"url":"#install-oh-my-fish","title":"Install Oh My Fish","items":[{"url":"#fish-themes-with-omf","title":"Fish themes with OMF"}]}]},{"url":"#configure","title":"Configure"},{"url":"#git-config","title":"Git config"},{"url":"#create-react-app","title":"Create React App"},{"url":"#use-ssh-with-github","title":"Use SSH with GitHub","items":[{"url":"#wsl-ssh-config","title":"WSL SSH Config"},{"url":"#windows-git-bash-ssh-config","title":"Windows Git Bash SSH Config"}]},{"url":"#change-wsl-version","title":"Change WSL version"},{"url":"#wrap-up","title":"Wrap up!"}]},"timeToRead":13,"fields":{"slug":"/2018/12/24/wsl-bootstrap-2019/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2018/12/24/wsl-bootstrap-2019/index.md"}},{"id":"c1949feb-5e10-5fdd-ad33-3735b1adbe53","excerpt":"Cliffs/TL;DR I made a  recruiter FAQ  on my personal site for recruiters and\ncreated an  online CV…","frontmatter":{"title":"Turning a job hunt into a dev project","date":"2018 November 30th"},"tableOfContents":{"items":[{"url":"#cliffstldr","title":"Cliffs/TL;DR"},{"url":"#preamble","title":"Preamble"}]},"timeToRead":4,"fields":{"slug":"/2018/11/30/job-hunt-dev-project/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2018/11/30/job-hunt-dev-project/index.md"}},{"id":"ce2d4dd2-7f62-5a03-ad39-dacbf53db987","excerpt":"Let's go through getting styled-components working with the Gatsby\ndefault starter. In this example…","frontmatter":{"title":"Convert the Gatsby default starter to styled-components","date":"2018 November 29th"},"tableOfContents":{"items":[{"url":"#1-dependencies","title":"1. Dependencies"},{"url":"#2-config","title":"2. Config"},{"url":"#3-global-style","title":"3. Global Style"},{"url":"#4-use-styled-components","title":"4. Use styled-components"},{"url":"#5-done","title":"5. Done"}]},"timeToRead":1,"fields":{"slug":"/2018/11/29/gatsby-starter-to-styled-components/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2018/11/29/gatsby-starter-to-styled-components/index.mdx"}},{"id":"d78e296a-2177-5a87-8c87-aa7b914b66c5","excerpt":"Let's set up Gatsby to pull data from GraphCMS. This will be a walk-through of setting up some basic…","frontmatter":{"title":"Get your GraphCMS data into Gatsby","date":"2018 November 25th"},"tableOfContents":{"items":[{"url":"#1-set-up-graphcms","title":"1. Set up GraphCMS"},{"url":"#2-define-data","title":"2. Define Data"},{"url":"#3-configure-the-graphcms-public-api","title":"3. Configure the GraphCMS public API"},{"url":"#4-configure-gatsby","title":"4. Configure Gatsby"},{"url":"#5-query-the-data-in-gatsby-graphiql","title":"5. Query the data in Gatsby GraphiQL"},{"url":"#6-display-the-data","title":"6. Display the Data"}]},"timeToRead":2,"fields":{"slug":"/2018/11/25/graphcms-to-gatsby/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2018/11/25/graphcms-to-gatsby/index.mdx"}},{"id":"56becd51-9838-52b0-9034-9e9847d7cf4c","excerpt":"Let's use the React Context API to change theme in an app! But first, some  context ! 🤣 Ok terrible…","frontmatter":{"title":"Using the React Context API  -  getting started","date":"2018 September 8th"},"tableOfContents":{"items":[{"url":"#but-first-some-context-🤣","title":"But first, some context! 🤣"},{"url":"#what-were-doing","title":"What we're doing..."},{"url":"#what-well-need","title":"What we'll need...","items":[{"url":"#versions","title":"Versions:"}]},{"url":"#lets-start","title":"Let's start","items":[{"url":"#dependencies","title":"Dependencies"},{"url":"#file-structure","title":"File structure"}]},{"url":"#scaffold-out-a-basic-create-react-app","title":"Scaffold out a basic Create React App","items":[{"url":"#what-about-the-rest","title":"What about the rest?"}]},{"url":"#use-styled-components-for-styling","title":"Use styled components for styling"},{"url":"#add-themes-to-switch-between-with-the-react-context-api","title":"Add themes to switch between with the React Context API","items":[{"url":"#shared-components","title":"Shared components"}]},{"url":"#use-the-react-context-api","title":"Use the React Context API","items":[{"url":"#add-the-site-theme-context","title":"Add the site theme context"},{"url":"#so-what-is-a-context","title":"So what is a context?"},{"url":"#add-the-theme-select","title":"Add the theme select"},{"url":"#want-to-know-more","title":"Want to know more?"},{"url":"#thanks-for-reading-","title":"Thanks for reading 🙏"}]}]},"timeToRead":8,"fields":{"slug":"/2018/09/08/react-context-api/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2018/09/08/react-context-api/index.md"}},{"id":"48b64a49-83e1-53cc-9614-71398bce96b6","excerpt":"I thought I'd set up this blog with some sort of build pipeline, the\nintention was to have a good…","frontmatter":{"title":"Making a CI pipeline with Travis CI","date":"2018 May 28th"},"tableOfContents":{"items":[{"url":"#what-im-using","title":"What I'm using"},{"url":"#how-the-set-up-works","title":"How the set-up works"},{"url":"#the-set-up","title":"The set-up","items":[{"url":"#the-flow","title":"the flow"}]}]},"timeToRead":1,"fields":{"slug":"/2018/05/28/travis-ci/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2018/05/28/travis-ci/index.md"}},{"id":"3e097c8f-333b-5fcc-9c01-e812c878a04b","excerpt":"I'm a bit late to the party using the new  React Context API , I did\nget to use it the other day at…","frontmatter":{"title":"Use the React Context API with Gatsby","date":"2018 May 22nd"},"tableOfContents":{"items":[{"url":"#lets-make-a-component","title":"Let's make a component!","items":[{"items":[{"items":[{"items":[{"url":"#srclayoutscomponentsblogthemecontextjs","title":"src/layouts/components/BlogThemeContext.js"},{"url":"#srclayoutsindexjs","title":"src/layouts/index.js"}]}]}]}]},{"url":"#use-the-contextconsumer","title":"Use the Context.Consumer"},{"url":"#add-a-themeselect-component","title":"Add a ThemeSelect component","items":[{"items":[{"items":[{"items":[{"url":"#srclayoutscomponentsfooterjs","title":"src/layouts/components/Footer.js"}]}]}]}]},{"url":"#switch-hero-background-patterns","title":"Switch hero (background patterns)"},{"url":"#thanks-for-reading-","title":"Thanks for reading 🙏"}]},"timeToRead":4,"fields":{"slug":"/2018/05/22/react-context-api-with-gatsby/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2018/05/22/react-context-api-with-gatsby/index.md"}},{"id":"ed6fd5dc-a693-5010-853b-166c0ba8a30e","excerpt":"We're going to style the basic create react app with styled-components\nto look something like this…","frontmatter":{"title":"styled-components 💅 getting started","date":"2018 April 3rd"},"tableOfContents":{"items":[{"items":[{"items":[{"items":[{"url":"#me-with-css-before","title":"me with css before"}]}]}]},{"url":"#install-styled-components","title":"Install styled-components"},{"url":"#styled-components-all-the-things","title":"styled-components all the things"},{"url":"#style-the-body-with-injectglobal","title":"Style the body with injectGlobal"},{"url":"#theming","title":"Theming"},{"url":"#use-the-styled-components-themeprovider","title":"Use the styled-components ThemeProvider"},{"url":"#ok-cool-can-you-change-theme","title":"Ok cool, can you change theme?","items":[{"url":"#themeselectjs","title":"ThemeSelect.js"},{"url":"#appjs","title":"App.js"}]},{"url":"#extending-styled-components","title":"Extending styled-components"},{"url":"#want-to-know-more","title":"Want to know more?"},{"url":"#thanks-for-reading-","title":"Thanks for reading 🙏"}]},"timeToRead":7,"fields":{"slug":"/2018/04/03/styled-components/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2018/04/03/styled-components/index.md"}},{"id":"d0f5a2d4-d798-5323-9603-b359d950086d","excerpt":"Life moves pretty fast. If you don’t stop and look around once in a\nwhile, you could miss it…","frontmatter":{"title":"How to make time for 100 days of code","date":"2018 February 27th"},"tableOfContents":{"items":[{"url":"#lets-pick-up-a-new-skill-get-a-new-job-all-in-a-few-months","title":"Let’s pick up a new skill, get a new job, all in a few months."},{"url":"#patience","title":"Patience"},{"url":"#busy-work","title":"Busy work"},{"url":"#make-time","title":"Make time"},{"url":"#balance","title":"Balance"},{"url":"#tools","title":"Tools"},{"url":"#life-hacks","title":"Life hacks"},{"url":"#good-luck-","title":"Good luck 👍"}]},"timeToRead":5,"fields":{"slug":"/2018/02/27/make-time-for-100doc/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2018/02/27/make-time-for-100doc/index.md"}},{"id":"1be583c1-8d6f-58ec-98f1-f98672bb98bf","excerpt":"I'm a Windows user, I have been a Linux user as well but I have found\nthat Windows is a bit less…","frontmatter":{"title":"Windows Subsystem Linux setup","date":"2018 January 13th"},"tableOfContents":{"items":[{"url":"#build-tools","title":"Build tools"},{"url":"#install-node","title":"Install node"},{"url":"#install-node-with-n","title":"Install node with n"},{"url":"#install-fish-","title":"Install fish 🐟🐚"},{"url":"#install-oh-my-fish--omf","title":"Install Oh My Fish | OMF"},{"url":"#install-omf-theme","title":"Install OMF theme"},{"url":"#the-start-of-the-beginning","title":"The start of the beginning"},{"url":"#move-your-dotfiles","title":"Move your dotfiles"}]},"timeToRead":3,"fields":{"slug":"/2018/01/13/wsl-bootstrap/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2018/01/13/wsl-bootstrap/index.md"}},{"id":"5a750492-026e-559a-baaf-d7558b6457f0","excerpt":"How to combine two separate unrelated Git repositories into one with\nsingle history timeline. Just…","frontmatter":{"title":"Git ` — allow-unrelated-histories`","date":"2017 June 30th"},"tableOfContents":{},"timeToRead":1,"fields":{"slug":"/2017/06/30/git-allow-unrelated-histories/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2017/06/30/git-allow-unrelated-histories/index.md"}},{"id":"3ba1d21b-c34e-56a9-afd2-d9a1f5ba1119","excerpt":"Speed up your git workflow with git aliases, this is a brief\nintroduction on using aliases…","frontmatter":{"title":"Moving from beginner to (slightly more) advanced git with aliases.","date":"2017 June 1st"},"tableOfContents":{},"timeToRead":2,"fields":{"slug":"/2017/06/01/beginner-to-git-aliases/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2017/06/01/beginner-to-git-aliases/index.md"}},{"id":"6cb51a4e-efe8-5a50-a583-56af88024a24","excerpt":"No doubt you have heard of Git or GitHub for source control, but\n what is source control? “Revision…","frontmatter":{"title":"Just starting out with Git and GitHub? It gets easier, honest!","date":"2017 May 31st"},"tableOfContents":{"items":[{"url":"#concepts","title":"Concepts"}]},"timeToRead":4,"fields":{"slug":"/2017/05/31/gets-better-with-git/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2017/05/31/gets-better-with-git/index.md"}},{"id":"bcf68c2d-925e-5adf-9348-403b0f1fd54d","excerpt":"How to build and deploy a multifunctional Twitter bot! This is a reference for me and anyone else…","frontmatter":{"title":"Twitter bot playground","date":"2017 May 23rd"},"tableOfContents":{"items":[{"url":"#set-up-the-bot","title":"Set up the bot"},{"url":"#post-statuses","title":"Post Statuses"},{"url":"#work-with-users","title":"Work with users"},{"url":"#interact-with-tweets","title":"Interact with tweets"},{"url":"#use-twitter-search","title":"Use Twitter search"},{"url":"#use-twitter-stream-api","title":"Use Twitter Stream API"},{"url":"#tweet-media-files","title":"Tweet media files"},{"url":"#make-a-markov-bot","title":"Make a Markov bot"},{"url":"#retrieve-and-tweet-data-from-google-sheets","title":"Retrieve and Tweet data from Google sheets"},{"url":"#putting-it-all-together","title":"Putting it all together"},{"url":"#deploy-to-now","title":"Deploy to now"},{"url":"#contributing","title":"Contributing"},{"url":"#license","title":"License"}]},"timeToRead":13,"fields":{"slug":"/2017/05/23/twitter-bot-playground/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2017/05/23/twitter-bot-playground/index.md"}},{"id":"de5be69a-fd1d-5c6f-924b-1cf56fefaadf","excerpt":"Just some rationalisation of what I'm currently doing. Recently I have decided that I'm going to…","frontmatter":{"title":"Code life balance","date":"2017 March 15th"},"tableOfContents":{},"timeToRead":2,"fields":{"slug":"/2017/03/15/code-life-balance/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2017/03/15/code-life-balance/index.md"}},{"id":"766e9b2a-7207-5f8a-b03d-f3524b63fbe8","excerpt":"Want to get set up with your very own Twitter bot quickly and easily,\nwith this guide you can be set…","frontmatter":{"title":"Easily set up your own Twitter bot","date":"2017 January 28th"},"tableOfContents":{"items":[{"url":"#twitter-bot-bootstrap","title":"Twitter bot bootstrap","items":[{"url":"#what-youll-need","title":"What you'll need"},{"url":"#setup-twitter","title":"Setup twitter"},{"url":"#setup-development-environment","title":"Setup development environment"},{"url":"#set-up-the-bot","title":"Set up the bot"},{"url":"#project-structure","title":"Project structure"},{"url":"#node-dependencies","title":"Node dependencies"},{"url":"#heroku","title":"Heroku"},{"url":"#heroku-cli","title":"Heroku CLI"},{"url":"#heroku-variables","title":"Heroku variables"},{"url":"#heroku-deployment-via-github","title":"Heroku deployment via GitHub"},{"url":"#heroku-troubleshooting","title":"Heroku troubleshooting"},{"url":"#contributing","title":"Contributing","items":[{"url":"#links","title":"Links"}]}]}]},"timeToRead":5,"fields":{"slug":"/2017/01/28/twitter-bot-bootstrap/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2017/01/28/twitter-bot-bootstrap/index.md"}},{"id":"48ad5f29-28f8-5773-a12f-6e4ee7c3d42b","excerpt":"I know why Linus called it that now! If you're reading this there's a good chance you know at least…","frontmatter":{"title":"Git and GitHub","date":"2017 January 5th"},"tableOfContents":{"items":[{"url":"#step-1","title":"Step 1"},{"url":"#step-2","title":"Step 2:"},{"url":"#step-3","title":"Step 3","items":[{"url":"#thats-not-the-end-though","title":"That's not the end though"},{"url":"#resources","title":"Resources"},{"url":"#2fa","title":"2fa"}]}]},"timeToRead":2,"fields":{"slug":"/2017/01/05/git-and-github/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2017/01/05/git-and-github/index.md"}},{"id":"3eaa68e8-db53-5c4c-99e7-9b05b601f57f","excerpt":"I must say this was great to do and a nice little introduction to node\nand npm. I got to doing this…","frontmatter":{"title":"Twitter McTwitBot","date":"2017 January 4th"},"tableOfContents":{"items":[{"url":"#technologies-used","title":"Technologies used","items":[{"url":"#cloud-9","title":"Cloud 9"},{"url":"#nodejs","title":"Node.js"},{"url":"#heroku","title":"Heroku"},{"url":"#github","title":"GitHub"},{"url":"#twitter","title":"Twitter"}]},{"url":"#my-approach","title":"My Approach","items":[{"url":"#coming-up","title":"Coming up"}]}]},"timeToRead":3,"fields":{"slug":"/2017/01/04/twitter-mctwitbot/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2017/01/04/twitter-mctwitbot/index.md"}},{"id":"1212603e-355a-53fc-a2d3-3157ea16e334","excerpt":"Since setting up this blog I haven't really bothered with Jekyll any\nmore than just forking Barry…","frontmatter":{"title":"Starting again with Jekyll","date":"2016 December 17th"},"tableOfContents":{"items":[{"url":"#development-environment-enter-cloud-9","title":"Development environment, enter Cloud 9","items":[{"url":"#setup","title":"Setup"}]},{"url":"#css","title":"CSS","items":[{"items":[{"url":"#here-is-the-base-project","title":"here is the base project"},{"url":"#new-blog-yay","title":"new blog yay!"}]}]},{"url":"#confusing","title":"Confusing"},{"url":"#markdown","title":"Markdown"},{"url":"#preview","title":"Preview"}]},"timeToRead":3,"fields":{"slug":"/2016/12/17/starting-again-with-jekyll/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2016/12/17/starting-again-with-jekyll/index.md"}},{"id":"fd8257c7-2b33-5b64-9736-130d60c331e8","excerpt":"This is basically a rant about the job market, I was laid off back in\nAugust, this is a terrible…","frontmatter":{"title":"Job hunting, one class 'A' ballache","date":"2016 December 5th"},"tableOfContents":{"items":[{"url":"#no-one-wants-to-hire-you","title":"No one wants to hire you"},{"url":"#lessons-learned","title":"Lessons learned"},{"url":"#recruiters","title":"Recruiters","items":[{"items":[{"url":"#what-the-recruiter-says","title":"What the recruiter says:"},{"url":"#what-it-actually-means","title":"What it actually means:"}]}]}]},"timeToRead":4,"fields":{"slug":"/2016/12/05/job-hunting/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2016/12/05/job-hunting/index.md"}},{"id":"d8a8d790-9337-53ef-a9b5-ddd59c47f1ef","excerpt":"I'm a published developer!  sort of  Well that was a bit painful, well\nnot actually I mean from the…","frontmatter":{"title":"My first Microsoft Visual Studio Code [VSCode] extension","date":"2016 December 3rd"},"tableOfContents":{"items":[{"url":"#how-do-i-make-it-into-a-extension","title":"How do I make it into a extension?"}]},"timeToRead":2,"fields":{"slug":"/2016/12/03/first-vscode-extension/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2016/12/03/first-vscode-extension/index.md"}},{"id":"8c85ef03-a94a-5d46-9d76-8823bc5c72e1","excerpt":"I have seen the same situation many times now in my career as a VBA\nDeveloper about how source code…","frontmatter":{"title":"VBA Code Export for Version Control Systems","date":"2016 November 14th"},"tableOfContents":{"items":[{"url":"#what-did-you-make-better","title":"what did you make better"},{"url":"#what-did-you-mess-up","title":"what did you mess up"},{"url":"#up-next","title":"up next"}]},"timeToRead":2,"fields":{"slug":"/2016/11/14/vba-ide-export/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2016/11/14/vba-ide-export/index.md"}},{"id":"35996713-af19-538d-baa0-dd884054b3ae","excerpt":"Ok, I have recently discovered and started doing freeCodeCamp(🔥)\nwhich so far I'm really enjoying…","frontmatter":{"title":"freeCodeCamp","date":"2016 November 13th"},"tableOfContents":{},"timeToRead":1,"fields":{"slug":"/2016/11/13/freecodecamp/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2016/11/13/freecodecamp/index.md"}},{"id":"8dfdff95-0467-5037-b10c-69a7e9490511","excerpt":"My first post using Gatsby, awesome static site generator\n Gatsby  from  Kyle Mathews So not a lot…","frontmatter":{"title":"Hello World!","date":"2016 October 24th"},"tableOfContents":{},"timeToRead":1,"fields":{"slug":"/2016/10/hello-world/24/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2016/10/hello-world/24/index.md"}}]}},"pageContext":{}}}