{
    "componentChunkName": "component---src-components-post-js",
    "path": "/blog/2014/12/22/how-i-set-up-my-personal-website-part-2",
    "result": {"data":{"mdx":{"id":"1a15b381-3215-560e-a7de-215f2edfeeb0","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"How I set up my personal website, Part 2\",\n  \"date\": \"2014-12-22T00:00:00.000Z\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"[\", mdx(\"strong\", {\n    parentName: \"em\"\n  }, \"Ed. Note:\"), \" This post is from 2014 and is not about how (in 2020) I built the Gatsby-based site you are currently looking at.]\")), mdx(\"p\", null, \"This is a continuation of my post on getting your personal space on the web set up. \"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/blog/2014/12/22/how-i-set-up-my-personal-website/\"\n  }, \"Part 1: Setting up a Github Project Page\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Part 2: Setting up an Octopress site for you blog and portfolio\")), mdx(\"p\", null, \"So at this point, you should be able to visit \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"{yourname}.github.io/HelloWeb\"), \" or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"{yourname}.github.io/2048\"), \" and see the pages you made. But what if you visit plain old \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"{yourname}.github.io\"), \"? You get a 404 error. We need to get you set up with a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"github.io\"), \" repository and a Jekyll static site.\"), mdx(\"p\", null, \"This is going to get a bit more in depth, but stick around and you'll have a really solid personal portfolio.\"), mdx(\"h2\", {\n    \"id\": \"a-refresher-on-github-pages\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"aria-hidden\": \"true\",\n    \"tabIndex\": -1,\n    \"href\": \"#a-refresher-on-github-pages\"\n  }, mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"icon icon-link\"\n  })), \"A refresher on Github Pages\"), mdx(\"p\", null, \"So, Github Pages lets you upload static pages that get served up from your \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"github.io\"), \" subdomain. One thing I didn't cover, is that if you make a repository called \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"{yourname}.github.io\"), \" and push it to Github, they will magically take whatever is in there and serve it up at your site.\"), mdx(\"p\", null, \"If you have a file in this repository called \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"index.html\"), \" that file now be displayed if you go to \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"{yourname}.github.io\"), \" (it has to be in the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"master\"), \" branch, which is the default one, NOT the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"gh-pages\"), \" branch). If you have a file called \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"about.html\"), \", it will be visible at \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"{yourname}.github.io/about.html\"), \". If you have folder called \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"contact\"), \" that contains a file called \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"index.html\"), \", it will be visible at \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"{yourname}.github.io/contact/\"), \".\"), mdx(\"p\", null, \"But we can do a bit better than just plain old HTML, and that's where Jekyll comes in.\"), mdx(\"h2\", {\n    \"id\": \"lets-talk-about-jekyll\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"aria-hidden\": \"true\",\n    \"tabIndex\": -1,\n    \"href\": \"#lets-talk-about-jekyll\"\n  }, mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"icon icon-link\"\n  })), \"Let's talk about Jekyll\"), mdx(\"p\", null, \"Static pages sound cool, until you start to miss a lot of the cool things you get with dynamic websites:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"What if you want the same header on every page?\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"What if you want to tag and categorize your blog posts, or have their URLs be in /year/month/day format?\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"What if you want the ability to swap out themes?\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"What if you want to write your posts in easy to read/write Markdown, instead of verbose, annoying HTML?\")), mdx(\"p\", null, \"Fortunately, there's Jekyll, a static site generator that gives you a lot of this stuff. You can read about it \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://jekyllrb.com/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"here\"), \".\"), mdx(\"p\", null, \"I was really confused when I first heard of Jekyll, so here's a quick rundown of how it works:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"You download some ruby tools\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"You make a directory full of templates\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"You make some pages (using either html or markdown)\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Jekyll \\\"compiles\\\" everything together, slotting all your pages into the templates (so they all have the same header, or whatever) and arranging the posts in your \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"_posts\"), \" directory so that their URLs will correspond to the dates when they were posted.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"It puts this compiled site into the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"_site\"), \" directory\")), mdx(\"p\", null, \"Even better, when you do a git push, Github will handle steps 4-5 on their own and will serve up the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"_site\"), \" directory automatically.\"), mdx(\"p\", null, \"But before you go racing after Jekyll, I want to stop you (for better or worse) from making the same mistake I did.\"), mdx(\"h2\", {\n    \"id\": \"octopress\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"aria-hidden\": \"true\",\n    \"tabIndex\": -1,\n    \"href\": \"#octopress\"\n  }, mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"icon icon-link\"\n  })), \"Octopress\"), mdx(\"p\", null, \"So as you start learning about a lot of cool web technologies, your Jekyll configuration will get more and more complicated.\"), mdx(\"p\", null, \"Let's say you want to use \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://sass-lang.com/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Sass\"), \" instead of plain old CSS, or you want to use \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://haml.info/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Haml\"), \" instead of HTML? What if you have a \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://gruntjs.com/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Grunt\"), \" workflow that does all kinds of crazy stuff to your javascript every time you save?\"), mdx(\"p\", null, \"Well, Jekyll has tons of plugins to accomodate for a lot of this stuff, but unfortunatel Github will only run \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://help.github.com/articles/using-jekyll-plugins-with-github-pages/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"a few certain plugins\"), \" with their automatic Jekyll thing. They've gotten better about supporting Sass and Coffeescript, but there's no guaruntee they'll ever have all the things you need.\"), mdx(\"p\", null, \"But wait... what if you wrote your site in one branch, compiled it with Jekyll using all the plugins you want, switched back to the master branch and selectively copied over the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"_site\"), \" directory to the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"master\"), \" root directory then pushed to Github?\"), mdx(\"p\", null, \"If you were as confused and revolted by that last sentence as I was, you'll be glad that the Octopress guys have figured this all out for us. The truth is, if you stick with Jekyll and don't use Octopress, you'll end up making it yourself (and if you're like me, it won't be nearly as well thought out).\"), mdx(\"p\", null, \"Alright, we've covered a lot of ground without coding anything. That bugs me. Let's get to work.\"), mdx(\"h2\", {\n    \"id\": \"setting-up-your-environment\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"aria-hidden\": \"true\",\n    \"tabIndex\": -1,\n    \"href\": \"#setting-up-your-environment\"\n  }, mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"icon icon-link\"\n  })), \"Setting up your environment\"), mdx(\"p\", null, \"You may have done some of this stuff before, this is just to make sure you're on track.\"), mdx(\"p\", null, \"So I'm working on a Retina MacBook Pro; these instructions will be tailored to Mac OS X users.\"), mdx(\"p\", null, \"First, get \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"homebrew\"), \" up and running. \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"homebrew\"), \" is basically the package manager that contains all the other package managers. It allows you to keep all your programming related stuff organized and up to date. Getting it set up is a bit of a task, \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://brew.sh/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"so I'll let the homebrew guys themselves explain it\"), \".\"), mdx(\"p\", null, \"Once you have \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"homebrew\"), \", use it to grab a bunch of important things:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"brew install git\\nbrew install ruby\\nbrew install rbenv\\nbrew install node\\n\")), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"git\"), \" is a version control system that helps you organize your code. \"), mdx(\"p\", null, \"Ruby is a programming language that has a bunch of useful tools we're going to use. We won't actually be writing any Ruby code today. Ruby comes with \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"gem\"), \", a package manager for stuff that's made using ruby. \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"rbenv\"), \" is a tool that let's you keep track of which version of Ruby you want to use in which folder (this may seem overkill, but we need \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"rbenv\"), \" in order to install Octopress).\"), mdx(\"p\", null, \"Node.js is a framework for making things with javascript. The Node package manager is called \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"npm\"), \", and has lots of good javascript related stuff.\"), mdx(\"p\", null, \"Now that you have \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ruby\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"gem\"), \", let's grab a bunch of other things we'll need:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"gem install bundler\\ngem install jekyll\\n\")), mdx(\"p\", null, \"Bundler is a special ruby package installer (I'm not sure why ruby needs a package manager AND an installer... there's a joke about ruby packages and lightbulbs in here somewhere) and Jekyll is needed so you can compile Jekyll sites locally on your computer.\"), mdx(\"h2\", {\n    \"id\": \"setting-up-your-githubio-project\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"aria-hidden\": \"true\",\n    \"tabIndex\": -1,\n    \"href\": \"#setting-up-your-githubio-project\"\n  }, mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"icon icon-link\"\n  })), \"Setting up your github.io project\"), mdx(\"p\", null, \"So I'd reccomend starting with the Octopress documentation, this is a little complicated.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://octopress.org/docs/setup/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Getting Started\"), \" will show you how to download octopress\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://octopress.org/docs/deploying/github/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Deploying Octopress\"), \" is about hooking up Octopress to your \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"github.io\"), \" repository. They also cover setting up a custom domain (like chrisuehlinger.com).\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://octopress.org/docs/configuring/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Configuring your blog\"), \" describes different ways you can configure your blog. You should get around to this at some point.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://octopress.org/docs/blogging/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Blogging Basics\"), \" covers how to create new posts or new stand-alone pages. For reference, what you're reading right now is a \\\"post\\\". If you click the \\\"About\\\" link in my header, it will take you to a \\\"page\\\".\")), mdx(\"p\", null, \"Once you're all set up, check out some of the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/imathis/octopress/wiki/3rd-Party-Octopress-Themes\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Octopress themes\"), \" available. In my opinion, too many people stick with the default theme. Right now I'm using a modified version of the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/tcnksm/mnmlpress\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"mnmlpress theme\"), \", although that may change by the time you read this.\"), mdx(\"h2\", {\n    \"id\": \"prepare-for-being-famous\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"aria-hidden\": \"true\",\n    \"tabIndex\": -1,\n    \"href\": \"#prepare-for-being-famous\"\n  }, mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"icon icon-link\"\n  })), \"Prepare for being famous\"), mdx(\"p\", null, \"Chances are good you won't become famous. Sorry.\"), mdx(\"p\", null, \"However, once you share something on the web, you never know when someone might randomly see it, post it on social media site, and drive thousands of people to your site over the course of a day or so. If you haven't done your preparation, you won't even know that this happened. If you've properly prepared, this opportunity could net you a new job, a bajillion twitter followers or even just a bunch of people saying \\\"Thanks\\\".\"), mdx(\"p\", null, \"You want people to be able to easily contact you if they like your stuff. Easily is an understatement. The very INSTANT their brain chemicals form into \\\"like\\\" configuration, they should be able to contact you with 0 effort. You don't need a floating \\\"social media iceberg\\\" on the side of your page, but you should definitely have:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"A \\\"Contact\\\" page that can be accessed from your header, with your email, Twitter handle and Github account\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"A \\\"You can follow me on Twitter\\\" link at the bottom of every post. (Even if you aren't hugely into Twitter, a lot of people will be sharing your stuff through it, so I'd advise you to get one)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Disqus comments enabled so people can give feedback.\")), mdx(\"p\", null, \"Set up \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://disqus.com/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Disqus\"), \" and put your Disqus ID in your \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"_config.yml\"), \" file. Octopress will add Disqus comments to the bottom of your posts. It's super easy, and often the  most direct way you can receive feedback.\"), mdx(\"p\", null, \"Since you'll no doubt have tons of projects accessible on your site, organizing them into a \\\"portfolio\\\" page and linking to that page in your header is also SO WISE.\"), mdx(\"p\", null, \"Octopress comes with Google Analytics bundled in. You should set up a \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://www.google.com/analytics/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Google Analytics\"), \" account, and put your Google Analytics ID in your \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"_config.yml\"), \" file. You should also make sure you include the Google Analytics \\\"magic javascript snippet\\\" in EVERY HTML file in every project you post.\"), mdx(\"p\", null, \"Do all this stuff NOW. Making stuff people like is hard enough, turning those likes into meningful connections doesn't have to be.\"), mdx(\"h2\", {\n    \"id\": \"happy-trails\"\n  }, mdx(\"a\", {\n    parentName: \"h2\",\n    \"aria-hidden\": \"true\",\n    \"tabIndex\": -1,\n    \"href\": \"#happy-trails\"\n  }, mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"icon icon-link\"\n  })), \"Happy Trails!\"), mdx(\"p\", null, \"Hopefully you now have a personal space on the web where you can post anything. You still have to make cool things, there's no getting around that. But now:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Random things you make on a lazy afternoon can instantly become part of your portfolio\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Simply by existing, this page is \\\"passively promoting\\\" you on the internet. Anyone who googles your name will hopefully end up here.\")), mdx(\"p\", null, \"If you're feeling uninspired, here are a bunch of the outlandish things you can do with just HTML, CSS and Javascript:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://www.html5rocks.com/en/tutorials/webaudio/intro/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Web Audio API\"), \" lets you make \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://webaudiodemos.appspot.com/midi-synth/index.html\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"synthesizers\"), \", \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://webaudiodemos.appspot.com/Vocoder/index.html\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"vocoders\"), \" and \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://webaudiodemos.appspot.com/wubwubwub/index.html\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"DJ equipment\"), \" using JS\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://www.html5rocks.com/en/tutorials/webrtc/basics/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"WebRTC\"), \" is an amazing piece of technology that lets you make a video or audio chat client in the browser using just javascript\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://bl.ocks.org/mbostock\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Mike Bostock\"), \" has tons of crazy visualizations he made using his \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://d3js.org/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"D3.js\"), \" library. All of these are on Github for you to play with.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://hakim.se/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow\"\n  }, \"Hakim El Hattab\"), \" always has tons of cool stuff to check out, a lot of it using CSS 3D transforms and WebGL.\")), mdx(\"p\", null, \"I hope these articles have helped, good luck!\"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"How I set up my personal website, Part 2","date":"2014-12-22T00:00:00.000Z"}}},"pageContext":{"id":"1a15b381-3215-560e-a7de-215f2edfeeb0"}},
    "staticQueryHashes": ["1831480344","3649515864"]}