From 45c12ea4193ed51953396233d130096bfd23865e Mon Sep 17 00:00:00 2001 From: Ken Collins Date: Wed, 8 Mar 2023 18:34:27 +0000 Subject: [PATCH] Clone repo change --- ...est-c68c968f8c87c9bf183d4c097b4d151f.json} | 2 +- ...ea53686719dcb5cd4f02fd622e260c315b395f.png | Bin 0 -> 47129 bytes ...ed80d0cf6d1813651a27d7bf0af6c8706dbeb.webp | Bin 0 -> 16944 bytes ...86ab05a88b1c0cc4e7d41ac7acb46082776c0.webp | Bin 0 -> 6058 bytes ...a6b591c7e8b2ce2f2ff5fc49b4ccc3aead784f.png | Bin 0 -> 18151 bytes ...292a2bfdf816b2dc54d7bbe36e6c3381d93688.png | Bin 0 -> 18196 bytes ...34e1e9f740a838d6669902c1697653dcc90e21.png | Bin 0 -> 5385 bytes ...cbd76dd98704db3f7c11a072f68e81ee9674bf.png | Bin 0 -> 25040 bytes ...c3c0385e9ef8efc8975162773ce28c3c27be1.webp | Bin 0 -> 10898 bytes ...24e779ec55adb20efd4c026464d48d1e01dfa.webp | Bin 0 -> 16618 bytes ...2c2e275ac0e77d5ee183f90f3f7faa78afbe1.webp | Bin 0 -> 8890 bytes authors/alex-egan/index.html | 10 +- authors/andrea-bailey/index.html | 10 +- authors/anthony-corletti/index.html | 10 +- authors/arild-shirazi/index.html | 10 +- authors/arne-de-herdt/index.html | 10 +- authors/austin-moore/index.html | 10 +- authors/chris-mar/index.html | 10 +- authors/dan-drinkard/index.html | 10 +- authors/dan-hensgen/index.html | 10 +- authors/daniel-wheeler/index.html | 10 +- authors/don-mclamb/index.html | 10 +- authors/gerald-hevener/index.html | 10 +- authors/guillermo-saavedra/index.html | 10 +- authors/hunter-madison/index.html | 10 +- authors/jake-vanderdray/index.html | 10 +- authors/john-peterson/index.html | 10 +- authors/jonathan-lehman/index.html | 10 +- authors/kalimar-maia/index.html | 10 +- authors/karle-durante/index.html | 10 +- authors/katherine-cisneros/index.html | 10 +- authors/ke-cheng/index.html | 10 +- authors/ken-collins/index.html | 86 +++- authors/logan-beougher/index.html | 10 +- authors/mark-johnson/index.html | 10 +- authors/martin-bonica/index.html | 10 +- authors/max-tedford/index.html | 10 +- authors/miranda-wang/index.html | 10 +- authors/nathan-hessler/index.html | 10 +- authors/nathen-harvery/index.html | 10 +- authors/rj-pittman/index.html | 10 +- authors/ryan-billings/index.html | 10 +- authors/seth-vargo/index.html | 10 +- authors/tien-nguyen/index.html | 10 +- .../index.html | 2 +- .../index.html | 2 +- blog/2012/01/02/green-screen/index.html | 2 +- blog/2012/01/31/pagerduty/index.html | 2 +- .../organizing-your-rails-models/index.html | 2 +- blog/2012/03/02/simple-data-mapper/index.html | 2 +- .../index.html | 2 +- blog/2012/03/26/rubynation-2012/index.html | 2 +- .../27/critical-oversight-indexes/index.html | 2 +- blog/2012/05/14/welcome-josh-born/index.html | 2 +- .../05/16/coderetreat-floyd-2012/index.html | 2 +- blog/2012/05/24/welcome-interns/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../mvt-foodcritic-and-travis-ci/index.html | 2 +- .../index.html | 2 +- .../06/15/welcome-jason-gilbertson/index.html | 2 +- .../index.html | 2 +- .../2012/06/27/welcome-dan-hensgen/index.html | 2 +- .../06/mvt-knife-test-and-travisci/index.html | 2 +- blog/2012/07/10/stay-cool/index.html | 2 +- .../index.html | 2 +- .../07/31/easily-test-your-dns/index.html | 2 +- .../etc-hosts-management-with-chef/index.html | 2 +- .../08/03/testing-chef-cookbooks/index.html | 2 +- .../2012/09/14/welcome-ken-collins/index.html | 2 +- .../index.html | 2 +- .../06/05/welcome-sukhada-kulkarni/index.html | 2 +- .../06/24/welcome-lisa-pourkhomami/index.html | 2 +- .../10/01/chris-mar-is-an-inker/index.html | 2 +- .../10/15/welcome-ryan-billings/index.html | 2 +- .../31/halloween-costume-winners/index.html | 2 +- .../10/31/welcome-jonathan-lehman/index.html | 2 +- blog/2013/11/30/upper-lipsters/index.html | 2 +- .../12/01/welcome-michael-peteuil/index.html | 2 +- .../index.html | 2 +- .../05/19/welcome-anthony-corletti/index.html | 2 +- .../index.html | 2 +- .../07/08/welcome-hunter-madison/index.html | 2 +- .../25/anthcor-summer-internship/index.html | 2 +- .../08/12/learning-ruby-on-rails/index.html | 2 +- blog/2014/08/15/tapas-time/index.html | 2 +- blog/2014/08/22/welcome-john-dyer/index.html | 2 +- .../08/26/modular-css-with-suit/index.html | 2 +- .../index.html | 2 +- .../09/01/a-new-living-style-guide/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../09/12/open-sourcing-a-gem-pt-1/index.html | 2 +- .../09/16/from-rails-3.2-to-4.2/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../09/26/ruby-meta-method-madness/index.html | 2 +- .../unit-testing-sass-frameworks/index.html | 2 +- .../07/rails-association-proxies/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../10/20/open-sourcing-a-gem-pt-2/index.html | 2 +- .../index.html | 2 +- .../10/23/welcome-arild-shirazi/index.html | 2 +- blog/2014/10/31/ecomic-con-2014/index.html | 2 +- blog/2014/11/19/rubyconf5k-2014/index.html | 2 +- .../activerecord-42s-type-casting/index.html | 2 +- .../index.html | 2 +- blog/2015/02/13/to-the-cloud/index.html | 2 +- blog/2015/06/08/ruby-pretzels/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- blog/2015/07/07/i-have-the-pr/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- blog/2015/08/05/ruby-for-good/index.html | 2 +- .../how-to-dismantle-a-data-center/index.html | 2 +- .../inkovate-2015-lightning-talks/index.html | 2 +- .../index.html | 2 +- blog/2015/11/16/rubyconf-5k-2015/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../14/rolling-builds-on-travisci/index.html | 2 +- .../03/16/outrunning-a-hurricane/index.html | 2 +- .../index.html | 2 +- blog/2016/05/23/configuring_atom/index.html | 2 +- blog/2016/06/23/ruby-for-good-2016/index.html | 2 +- .../11/contributing-to-open-source/index.html | 2 +- .../18/how-to-add-badges-to-iterm2/index.html | 2 +- .../index.html | 2 +- .../2016/11/01/a-spooky-ink-o-ween/index.html | 2 +- .../index.html | 2 +- blog/2016/12/11/timmy-award-winner/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../09/19/clipart-on-aws-lambda/index.html | 2 +- .../01/06/spawnfest-retrospective/index.html | 2 +- .../index.html | 2 +- .../learning-es6-loops-&-iterators/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../03/12/aws-lambda-with-ruby/index.html | 2 +- .../rails-on-aws-lambda-with-sam/index.html | 2 +- .../04/12/day-zero-deployments/index.html | 2 +- .../index.html | 2 +- .../2019/06/28/chaos-at-custom-ink/index.html | 2 +- .../07/08/sidekiq-rundown-part-1/index.html | 2 +- blog/2019/07/15/inkycop/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../09/04/internship-experience/index.html | 2 +- blog/2019/09/09/imaginate/index.html | 2 +- .../09/17/working-at-custom-ink/index.html | 2 +- .../index.html | 2 +- .../09/26/codecommitment-issues/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- blog/2019/11/01/tapping-into-logs/index.html | 2 +- .../index.html | 2 +- .../21/rebase-into-ops-engineering/index.html | 2 +- blog/2019/12/13/nationjs/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../03/05/ken-collins-our-aws-hero/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 346 ++++++++++++++ .../index.html | 232 +++++++++ .../index.html | 196 ++++++++ .../index.html | 184 ++++++++ careers/index.html | 2 +- feed.xml | 446 ++++++++++++++++++ foo.bar | 0 index.html | 100 ++-- page10/index.html | 94 ++-- page11/index.html | 95 ++-- page12/index.html | 81 ++-- page13/index.html | 93 ++-- page14/index.html | 86 ++-- page15/index.html | 98 ++-- page16/index.html | 91 ++-- page17/index.html | 78 +-- page18/index.html | 89 ++-- page19/index.html | 83 ++-- page2/index.html | 89 ++-- page20/index.html | 82 +++- page3/index.html | 100 ++-- page4/index.html | 90 ++-- page5/index.html | 95 ++-- page6/index.html | 98 ++-- page7/index.html | 85 ++-- page8/index.html | 93 ++-- page9/index.html | 92 ++-- sitemap.xml | 16 + team/index.html | 52 +- 206 files changed, 2897 insertions(+), 1063 deletions(-) rename assets/{.sprockets-manifest-53fe6ef212ca286833f06f4f5f5a4173.json => .sprockets-manifest-c68c968f8c87c9bf183d4c097b4d151f.json} (51%) create mode 100644 assets/content/circleci-deploy/circleci-deploy-trigger-4a79c8b1657909ed2de9965ad6ea53686719dcb5cd4f02fd622e260c315b395f.png create mode 100644 assets/content/lambda-rust/cloud-watch-322b77dd8f0cb4fc0d07896ab76ed80d0cf6d1813651a27d7bf0af6c8706dbeb.webp create mode 100644 assets/content/lambda-rust/env-vars-2a128bc2c4fdc80a35244468c7386ab05a88b1c0cc4e7d41ac7acb46082776c0.webp create mode 100644 assets/content/linux-devcontainers/aws-lambda-after-devcontainers-94e148ef0601a15c55848eecd0a6b591c7e8b2ce2f2ff5fc49b4ccc3aead784f.png create mode 100644 assets/content/linux-devcontainers/aws-lambda-before-devcontainers-7d9ad2ac5ffc39cf08115bcc97292a2bfdf816b2dc54d7bbe36e6c3381d93688.png create mode 100644 assets/content/linux-devcontainers/container-areas-268f50de2e3e354f9dd3e226de34e1e9f740a838d6669902c1697653dcc90e21.png create mode 100644 assets/content/linux-devcontainers/devcontainers-in-k8s-projects-e13c2f8cce935c9378054b32becbd76dd98704db3f7c11a072f68e81ee9674bf.png create mode 100644 assets/content/serverless-devcontainers/devcontainers-c50583eea3e4ef72a8cd7045d04c3c0385e9ef8efc8975162773ce28c3c27be1.webp create mode 100644 assets/content/serverless-devcontainers/vscode-codespaces-7f9106d37751482d16fb413125224e779ec55adb20efd4c026464d48d1e01dfa.webp create mode 100644 assets/content/serverless-devcontainers/vscode-preferences-998a7e5f016288cac7578c594ac2c2e275ac0e77d5ee183f90f3f7faa78afbe1.webp create mode 100644 blog/2022/02/06/getting-started-with-github-codespaces-from-a-serverless-perspective/index.html create mode 100644 blog/2022/06/29/lambda-rust-extension-for-any-runtime-to-preload-ssm-parameters-as-secure-environment-variables/index.html create mode 100644 blog/2022/10/30/new-amazon-linux-dev-container-features/index.html create mode 100644 blog/2023/03/03/trigger-circleci-workflow-aka-simple-deploy-button/index.html create mode 100644 foo.bar diff --git a/assets/.sprockets-manifest-53fe6ef212ca286833f06f4f5f5a4173.json b/assets/.sprockets-manifest-c68c968f8c87c9bf183d4c097b4d151f.json similarity index 51% rename from assets/.sprockets-manifest-53fe6ef212ca286833f06f4f5f5a4173.json rename to assets/.sprockets-manifest-c68c968f8c87c9bf183d4c097b4d151f.json index d857c6ad..8fa001e5 100644 --- a/assets/.sprockets-manifest-53fe6ef212ca286833f06f4f5f5a4173.json +++ b/assets/.sprockets-manifest-c68c968f8c87c9bf183d4c097b4d151f.json @@ -1 +1 @@ -{"files":{"fontello-5c6d5a4b860bc986924a1ec510dcddbc10a425672dc0e3ba37e3bd4020e9d84f.eot":{"logical_path":"fontello.eot","mtime":"2022-10-05T06:50:13-04:00","size":5496,"digest":"5c6d5a4b860bc986924a1ec510dcddbc10a425672dc0e3ba37e3bd4020e9d84f","integrity":"sha256-XG1aS4YLyYaSSh7FENzdvBCkJWctwOO6N+O9QCDp2E8="},"fontello-a11118120d4b90a4c4f937c40ed47f13b4ae131b1c6371fd85ec2843d7bc7b12.woff":{"logical_path":"fontello.woff","mtime":"2022-10-05T06:50:13-04:00","size":3176,"digest":"a11118120d4b90a4c4f937c40ed47f13b4ae131b1c6371fd85ec2843d7bc7b12","integrity":"sha256-oREYEg1LkKTE+TfEDtR/E7SuExscY3H9hewoQ9e8exI="},"fontello-813519383401ebf865d03b706d20d1624b232501f0accdfa1bff4d28265d3f74.ttf":{"logical_path":"fontello.ttf","mtime":"2022-10-05T06:50:13-04:00","size":5328,"digest":"813519383401ebf865d03b706d20d1624b232501f0accdfa1bff4d28265d3f74","integrity":"sha256-gTUZODQB6/hl0DtwbSDRYksjJQHwrM36G/9NKCZdP3Q="},"fontello-f25b435813c4882a6189f926bc10b0fc872c358e3071d21d8386765518bc4278.svg":{"logical_path":"fontello.svg","mtime":"2022-10-05T06:50:13-04:00","size":2038,"digest":"f25b435813c4882a6189f926bc10b0fc872c358e3071d21d8386765518bc4278","integrity":"sha256-8ltDWBPEiCphifkmvBCw/IcsNY4wcdIdg4Z2VRi8Qng="},"tbicons-096fa3970ce3a3595debd167e1cd11422745885e43987130c7ad2b9fd020a910.eot":{"logical_path":"tbicons.eot","mtime":"2022-10-05T06:50:13-04:00","size":5416,"digest":"096fa3970ce3a3595debd167e1cd11422745885e43987130c7ad2b9fd020a910","integrity":"sha256-CW+jlwzjo1ld69Fn4c0RQidFiF5DmHEwx60rn9AgqRA="},"tbicons-a255c4d7531756c350cd3cb8ac924a3a70dba66357bc6f53cdcce66be69e1ca4.woff":{"logical_path":"tbicons.woff","mtime":"2022-10-05T06:50:13-04:00","size":3124,"digest":"a255c4d7531756c350cd3cb8ac924a3a70dba66357bc6f53cdcce66be69e1ca4","integrity":"sha256-olXE11MXVsNQzTy4rJJKOnDbpmNXvG9Tzczma+aeHKQ="},"tbicons-04c88863a35923e4156691375c162cd8b6fb44104e3cecbc17972c89da722d17.ttf":{"logical_path":"tbicons.ttf","mtime":"2022-10-05T06:50:13-04:00","size":5252,"digest":"04c88863a35923e4156691375c162cd8b6fb44104e3cecbc17972c89da722d17","integrity":"sha256-BMiIY6NZI+QVZpE3XBYs2Lb7RBBOPOy8F5csidpyLRc="},"tbicons-737a98cc543fbd45788943a259ba88d32a06bdd4e57cf10d9631866dce5df09e.svg":{"logical_path":"tbicons.svg","mtime":"2022-10-05T06:50:13-04:00","size":1903,"digest":"737a98cc543fbd45788943a259ba88d32a06bdd4e57cf10d9631866dce5df09e","integrity":"sha256-c3qYzFQ/vUV4iUOiWbqI0yoGvdTlfPENljGGbc5d8J4="},"app-7364e5d923858a09e03d1594b7afe5a66431387a5a0623957af903baceb3208d.css":{"logical_path":"app.css","mtime":"2022-10-05T06:54:33-04:00","size":31415,"digest":"7364e5d923858a09e03d1594b7afe5a66431387a5a0623957af903baceb3208d","integrity":"sha256-c2Tl2SOFigngPRWUt6/lpmQxOHpaBiOVevkDus6zII0="},"CustomInk_Tech_Color-1460f9e847670e2626e66143266004749ab6c7204a8d5a2ae394613f986c473d.png":{"logical_path":"CustomInk_Tech_Color.png","mtime":"2022-10-05T06:50:13-04:00","size":7190,"digest":"1460f9e847670e2626e66143266004749ab6c7204a8d5a2ae394613f986c473d","integrity":"sha256-FGD56EdnDiYm5mFDJmAEdJq2xyBKjVoq45RhP5hsRz0="},"content/john-dyer-first-deploy-f45c9bf89c3960034590cda4d06aa7ad225e0bf82864c2d3100e8cab7c85bef2.jpg":{"logical_path":"content/john-dyer-first-deploy.jpg","mtime":"2022-10-05T06:50:13-04:00","size":132491,"digest":"f45c9bf89c3960034590cda4d06aa7ad225e0bf82864c2d3100e8cab7c85bef2","integrity":"sha256-9Fyb+Jw5YANFkM2k0GqnrSJeC/goZMLTEA6Mq3yFvvI="},"content/lambda-file-systems/masthead-867a17f618e0c2f6b04260b68de597850d7c98b0d9872478f4317988abacce1e.jpg":{"logical_path":"content/lambda-file-systems/masthead.jpg","mtime":"2022-10-05T06:50:13-04:00","size":39229,"digest":"867a17f618e0c2f6b04260b68de597850d7c98b0d9872478f4317988abacce1e","integrity":"sha256-hnoX9hjgwvawQmC2jeWXhQ18mLDZhyR49DF5iKuszh4="},"content/lambda-file-systems/efs-logo-07c46dafb5ab211876311a1f125a35d320d781052fb0bc128e3fd17b73390357.png":{"logical_path":"content/lambda-file-systems/efs-logo.png","mtime":"2022-10-05T06:50:13-04:00","size":2763,"digest":"07c46dafb5ab211876311a1f125a35d320d781052fb0bc128e3fd17b73390357","integrity":"sha256-B8Rtr7WrIRh2MRofElo10yDXgQUvsLwSjj/Re3M5A1c="},"content/cookiecutter/masthead-81ebef04dce2278e5c5776780e1b9bca8ca9b23e1a0a05aa3edf80594d3b62fd.jpg":{"logical_path":"content/cookiecutter/masthead.jpg","mtime":"2022-10-05T06:50:13-04:00","size":36236,"digest":"81ebef04dce2278e5c5776780e1b9bca8ca9b23e1a0a05aa3edf80594d3b62fd","integrity":"sha256-gevvBNziJ45cV3Z4Dhubyoypsj4aCgWqPt+AWU07Yv0="},"content/aurora-serverless/lambda-rails-360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e.png":{"logical_path":"content/aurora-serverless/lambda-rails.png","mtime":"2022-10-05T06:50:13-04:00","size":44521,"digest":"360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e","integrity":"sha256-Ng+Q1m+OqHOcv3M0082pGDk+IYRpZT3grg4Oh7ELrC4="},"content/aurora-serverless/masthead-5a56cf63e72393d6abff92c8b05178363bbd07d444e19ed6dca99435403f5b5b.jpg":{"logical_path":"content/aurora-serverless/masthead.jpg","mtime":"2022-10-05T06:50:13-04:00","size":152402,"digest":"5a56cf63e72393d6abff92c8b05178363bbd07d444e19ed6dca99435403f5b5b","integrity":"sha256-WlbPY+cjk9ar/5LIsFF4Nju9B9RE4Z7W3KmUNUA/W1s="},"content/cloud-cookies/masthead-2a39e4b23fb8985178be8224a591a9485990c8e9d1b6eea4dd5c74c88b5799b2.jpg":{"logical_path":"content/cloud-cookies/masthead.jpg","mtime":"2022-10-05T06:50:13-04:00","size":41633,"digest":"2a39e4b23fb8985178be8224a591a9485990c8e9d1b6eea4dd5c74c88b5799b2","integrity":"sha256-Kjnksj+4mFF4voIkpZGpSFmQyOnRtu6k3Vx0yItXmbI="},"content/githubactions-part1/masthead-c3229ebf2a4d7c6398435d69eecb25c0fb35179c9d610c844a3f4404a5c6cba8.png":{"logical_path":"content/githubactions-part1/masthead.png","mtime":"2022-10-05T06:50:13-04:00","size":67259,"digest":"c3229ebf2a4d7c6398435d69eecb25c0fb35179c9d610c844a3f4404a5c6cba8","integrity":"sha256-wyKevypNfGOYQ11p7sslwPs1F5ydYQyESj9EBKXGy6g="},"content/lamby/masthead-2958bbf108ff6a30c332bce34da1f71f9c978794124fae83cb048ae3cfcee727.jpg":{"logical_path":"content/lamby/masthead.jpg","mtime":"2022-10-05T06:50:13-04:00","size":73078,"digest":"2958bbf108ff6a30c332bce34da1f71f9c978794124fae83cb048ae3cfcee727","integrity":"sha256-KVi78Qj/ajDDMrzjTaH3H5yXh5QST66DywSK48/O5yc="},"content/imgix/masthead2-f-5c55d7a6ff6e06cde41ff049f33a89b95697189e9d77e990d0a8aaca82ad617a.jpg":{"logical_path":"content/imgix/masthead2-f.jpg","mtime":"2022-10-05T06:50:13-04:00","size":83784,"digest":"5c55d7a6ff6e06cde41ff049f33a89b95697189e9d77e990d0a8aaca82ad617a","integrity":"sha256-XFXXpv9uBs3kH/BJ8zqJuVaXGJ6dd+mQ0KiqyoKtYXo="},"content/power-moves/masthead-00358e30452214dc1f16bc2293f4d5577dc9e2d6b3761fc6a6f71b8a63602e6c.jpg":{"logical_path":"content/power-moves/masthead.jpg","mtime":"2022-10-05T06:50:13-04:00","size":96504,"digest":"00358e30452214dc1f16bc2293f4d5577dc9e2d6b3761fc6a6f71b8a63602e6c","integrity":"sha256-ADWOMEUiFNwfFrwik/TVV33J4tazdh/GpvcbimNgLmw="},"content/static-components/masthead-colors-1162421fd0b8eb402443a61e871590d33767dfb7f2ca6fca439c5a1fd83e9b38.jpg":{"logical_path":"content/static-components/masthead-colors.jpg","mtime":"2022-10-05T06:50:13-04:00","size":82723,"digest":"1162421fd0b8eb402443a61e871590d33767dfb7f2ca6fca439c5a1fd83e9b38","integrity":"sha256-EWJCH9C460AkQ6YehxWQ0zdn37fyym/KQ5xaH9g+mzg="},"content/colored-logging-86436848bcea9b5fea72c77f2031c12c1b9dbcc156a5f8ef177644ad1ac1f099.png":{"logical_path":"content/colored-logging.png","mtime":"2022-10-05T06:50:13-04:00","size":94488,"digest":"86436848bcea9b5fea72c77f2031c12c1b9dbcc156a5f8ef177644ad1ac1f099","integrity":"sha256-hkNoSLzqm1/qcsd/IDHBLBudvMFWpfjvF3ZErRrB8Jk="},"content/svg-planet-stars-08c9b4337e6d15b697fff6d4a6b8fb23cdc840d040f3aa8aed11df307685ec1a.png":{"logical_path":"content/svg-planet-stars.png","mtime":"2022-10-05T06:50:13-04:00","size":17781,"digest":"08c9b4337e6d15b697fff6d4a6b8fb23cdc840d040f3aa8aed11df307685ec1a","integrity":"sha256-CMm0M35tFbaX//bUprj7I83IQNBA86qK7RHfMHaF7Bo="},"content/svg-our-awesome-sketch-c556fd04159b8596f809ad503a9657fcbdf4331de6a36ca90ea44f9e01cc8a41.png":{"logical_path":"content/svg-our-awesome-sketch.png","mtime":"2022-10-05T06:50:13-04:00","size":28004,"digest":"c556fd04159b8596f809ad503a9657fcbdf4331de6a36ca90ea44f9e01cc8a41","integrity":"sha256-xVb9BBWbhZb4Ca1QOpZX/L30Mx3mo2ypDqRPngHMikE="},"content/svg-planet-stars-v1-ece9734ba2b6813891665e3c67070f266e0f58cf72003341903e551da9fb2020.png":{"logical_path":"content/svg-planet-stars-v1.png","mtime":"2022-10-05T06:50:13-04:00","size":13507,"digest":"ece9734ba2b6813891665e3c67070f266e0f58cf72003341903e551da9fb2020","integrity":"sha256-7OlzS6K2gTiRZl48ZwcPJm4PWM9yADNBkD5VHan7ICA="},"authors/serverlesshero-2e96cfd1ad50c766ec3d5bde04c75aaa3709b59a33599346c1968f152a6638ae.png":{"logical_path":"authors/serverlesshero.png","mtime":"2022-10-05T06:50:13-04:00","size":6194,"digest":"2e96cfd1ad50c766ec3d5bde04c75aaa3709b59a33599346c1968f152a6638ae","integrity":"sha256-LpbP0a1Qx2bsPVveBMdaqjcJtZozWZNGwZaPFSpmOK4="},"content/arild-shirazi-7458f4d1710e5c667a8ca81bd9fe53693cdabc3f219d3da028d2fd59a6d5d8b3.jpg":{"logical_path":"content/arild-shirazi.jpg","mtime":"2022-10-05T06:50:13-04:00","size":34256,"digest":"7458f4d1710e5c667a8ca81bd9fe53693cdabc3f219d3da028d2fd59a6d5d8b3","integrity":"sha256-dFj00XEOXGZ6jKgb2f5TaTzavD8hnT2gKNL9WabV2LM="},"content/api-gateway/authorization-8c96576ad0783e5d3dc2d2afd0fd00362a1b8eb6fbccb2e54c01fc8dd9948763.png":{"logical_path":"content/api-gateway/authorization.png","mtime":"2022-10-05T06:50:13-04:00","size":10420,"digest":"8c96576ad0783e5d3dc2d2afd0fd00362a1b8eb6fbccb2e54c01fc8dd9948763","integrity":"sha256-jJZXatB4Pl09wtKv0P0ANiobjrb7zLLlTAH8jdmUh2M="},"content/outrunning-a-hurricane-dba8f2e4aeed28dc33af754692cdf80a43aa9a0a178c5d165eb15aef7f424c52.jpg":{"logical_path":"content/outrunning-a-hurricane.jpg","mtime":"2022-10-05T06:50:13-04:00","size":52175,"digest":"dba8f2e4aeed28dc33af754692cdf80a43aa9a0a178c5d165eb15aef7f424c52","integrity":"sha256-26jy5K7tKNwzr3VGks34CkOqmgoXjF0WXrFa739CTFI="},"content/how_dismantle_a_data_center/3par-36c6b8c0e49bedadaa178d16172518ca49ebc891afc75adac95e40f243a45135.jpg":{"logical_path":"content/how_dismantle_a_data_center/3par.jpg","mtime":"2022-10-05T06:50:13-04:00","size":203384,"digest":"36c6b8c0e49bedadaa178d16172518ca49ebc891afc75adac95e40f243a45135","integrity":"sha256-Nsa4wOSb7a2qF40WFyUYyknryJGvx1rayV5A8kOkUTU="},"content/how_dismantle_a_data_center/gerald-2e0b390e70aaf181de184a3123a4031542a3c1dd4ab7c744f96d6e62d3a605a5.jpg":{"logical_path":"content/how_dismantle_a_data_center/gerald.jpg","mtime":"2022-10-05T06:50:13-04:00","size":191856,"digest":"2e0b390e70aaf181de184a3123a4031542a3c1dd4ab7c744f96d6e62d3a605a5","integrity":"sha256-Lgs5DnCq8YHeGEoxI6QDFUKjwd1Kt8dE+W1uYtOmBaU="},"content/how_dismantle_a_data_center/wires-44e26bdf578405fb6bdccd7c529cf4ea74e817b0e90b29c4747d3853452c092a.jpg":{"logical_path":"content/how_dismantle_a_data_center/wires.jpg","mtime":"2022-10-05T06:50:13-04:00","size":348506,"digest":"44e26bdf578405fb6bdccd7c529cf4ea74e817b0e90b29c4747d3853452c092a","integrity":"sha256-ROJr31eEBftr3M18Upz06nToF7DpCynEdH04U0UsCSo="},"content/how_dismantle_a_data_center/truck-42606487a06ef4d07335c2f5bf99a64b6b3494580750057fe8748d228529e18d.jpg":{"logical_path":"content/how_dismantle_a_data_center/truck.jpg","mtime":"2022-10-05T06:50:13-04:00","size":262041,"digest":"42606487a06ef4d07335c2f5bf99a64b6b3494580750057fe8748d228529e18d","integrity":"sha256-QmBkh6Bu9NBzNcL1v5mmS2s0lFgHUAV/6HSNIoUp4Y0="},"content/ruby_for_good_2016/smithsonian-c98f941e7c42e6e5cefd0c4693663a7b74c8b2c7e7d78d5c0bf0bc4fb1d06fc6.jpg":{"logical_path":"content/ruby_for_good_2016/smithsonian.jpg","mtime":"2022-10-05T06:50:13-04:00","size":96682,"digest":"c98f941e7c42e6e5cefd0c4693663a7b74c8b2c7e7d78d5c0bf0bc4fb1d06fc6","integrity":"sha256-yY+UHnxC5uXO/QxGk2Y6e3TIssfn141cC/C8T7HQb8Y="},"content/ruby_for_good_2016/campus-6ac14cd4f0eb116fe28776ad5ef7d311c45737ae6e68d5e85cb117d15aa08de0.jpg":{"logical_path":"content/ruby_for_good_2016/campus.jpg","mtime":"2022-10-05T06:50:13-04:00","size":119183,"digest":"6ac14cd4f0eb116fe28776ad5ef7d311c45737ae6e68d5e85cb117d15aa08de0","integrity":"sha256-asFM1PDrEW/ih3atXvfTEcRXN65uaNXoXLEX0VqgjeA="},"content/ruby_for_good_2015/kitten-fd73cb1d457b5f57e00395069de120ac656a20b2640fd3ad2a6ec4aa389cd7d2.jpg":{"logical_path":"content/ruby_for_good_2015/kitten.jpg","mtime":"2022-10-05T06:50:13-04:00","size":36352,"digest":"fd73cb1d457b5f57e00395069de120ac656a20b2640fd3ad2a6ec4aa389cd7d2","integrity":"sha256-/XPLHUV7X1fgA5UGneEgrGVqILJkD9OtKm7Eqjic19I="},"content/best-tech-manager/masthead-1776-keyboard-artwork-a03546719667c8d597ffeb1759620267cb70feb53862698820f57c31cc5d07cd.jpg":{"logical_path":"content/best-tech-manager/masthead-1776-keyboard-artwork.jpg","mtime":"2022-10-05T06:50:13-04:00","size":118005,"digest":"a03546719667c8d597ffeb1759620267cb70feb53862698820f57c31cc5d07cd","integrity":"sha256-oDVGcZZnyNWX/+sXWWICZ8tw/rU4YmmIIPV8McxdB80="},"content/halloween2019/rangers-bf22fe767f867ef1d11f0ad125dfa4122f4148817414f2a2cbf223042c15a540.png":{"logical_path":"content/halloween2019/rangers.png","mtime":"2022-10-05T06:50:13-04:00","size":203749,"digest":"bf22fe767f867ef1d11f0ad125dfa4122f4148817414f2a2cbf223042c15a540","integrity":"sha256-vyL+dn+GfvHRHwrRJd+kEi9BSIF0FPKiy/IjBCwVpUA="},"content/halloween2019/hook-10bda45b0e0410215480abebf9b77b2df5e48b5ec980f56f403b9440820245e5.jpg":{"logical_path":"content/halloween2019/hook.jpg","mtime":"2022-10-05T06:50:13-04:00","size":143461,"digest":"10bda45b0e0410215480abebf9b77b2df5e48b5ec980f56f403b9440820245e5","integrity":"sha256-EL2kWw4EECFUgKvr+bd7LfXki17JgPVvQDuUQIICReU="},"content/halloween2019/nintendo-d5baf96677e014c8f748808fcdca8b7ad0b7083d8008a3672feb1eac8f7c3406.jpg":{"logical_path":"content/halloween2019/nintendo.jpg","mtime":"2022-10-05T06:50:13-04:00","size":522648,"digest":"d5baf96677e014c8f748808fcdca8b7ad0b7083d8008a3672feb1eac8f7c3406","integrity":"sha256-1br5ZnfgFMj3SICPzcqLetC3CD2ACKNnL+serI98NAY="},"content/halloween2019/toystory-5e2af23d4248e5392825cad05dd46a2a24d05ef8a19d12064c727a9f5e82e1df.png":{"logical_path":"content/halloween2019/toystory.png","mtime":"2022-10-05T06:50:13-04:00","size":626905,"digest":"5e2af23d4248e5392825cad05dd46a2a24d05ef8a19d12064c727a9f5e82e1df","integrity":"sha256-XiryPUJI5TkoJcrQXdRqKiTQXvihnRIGTHJ6n16C4d8="},"content/halloween2019/2018-c68a5323e7fecabec9877d35dc70d52ae4212f959a3d2b0261d4488e47947bac.png":{"logical_path":"content/halloween2019/2018.png","mtime":"2022-10-05T06:50:13-04:00","size":483156,"digest":"c68a5323e7fecabec9877d35dc70d52ae4212f959a3d2b0261d4488e47947bac","integrity":"sha256-xopTI+f+yr7Jh3013HDVKuQhL5WaPSsCYdRIjkeUe6w="},"content/halloween2019/90s-af4ddd64958b62b7d361eb6bf8e9abbf2ab486280a4f0c14c5bb07dacada2360.png":{"logical_path":"content/halloween2019/90s.png","mtime":"2022-10-05T06:50:13-04:00","size":142907,"digest":"af4ddd64958b62b7d361eb6bf8e9abbf2ab486280a4f0c14c5bb07dacada2360","integrity":"sha256-r03dZJWLYrfTYetr+Omrvyq0higKTwwUxbsH2sraI2A="},"content/career-fair/career-fair-uva-598ac96931b65efb06a59a322879ca1669a2ca031e0ad3493c3ccb892e0b4f6e.jpg":{"logical_path":"content/career-fair/career-fair-uva.jpg","mtime":"2022-10-05T06:50:13-04:00","size":481890,"digest":"598ac96931b65efb06a59a322879ca1669a2ca031e0ad3493c3ccb892e0b4f6e","integrity":"sha256-WYrJaTG2XvsGpZoyKHnKFmmiygMeCtNJPDzLiS4LT24="},"content/cypress/cypress-nav-284961bfd5b625abb9a41415d598d9a976bde5e4e956be7c972c1ac12941b770.gif":{"logical_path":"content/cypress/cypress-nav.gif","mtime":"2022-10-05T06:50:13-04:00","size":1266836,"digest":"284961bfd5b625abb9a41415d598d9a976bde5e4e956be7c972c1ac12941b770","integrity":"sha256-KElhv9W2Jau5pBQV1ZjZqXa95eTpVr58lywawSlBt3A="},"content/cypress/cypress-selector-f73313665a7bead2fedba190b02d297029a1f863f85ffab51e87a7d4aff5590f.gif":{"logical_path":"content/cypress/cypress-selector.gif","mtime":"2022-10-05T06:50:13-04:00","size":306877,"digest":"f73313665a7bead2fedba190b02d297029a1f863f85ffab51e87a7d4aff5590f","integrity":"sha256-9zMTZlp76tL+26GQsC0pcCmh+GP4X/q1Hoen1K/1WQ8="},"content/JSConferences/ReactNative-min-812e086884a943daa23a5ba07fce55f27426e4880cac04434de3955f282d549e.png":{"logical_path":"content/JSConferences/ReactNative-min.png","mtime":"2022-10-05T06:50:13-04:00","size":10325,"digest":"812e086884a943daa23a5ba07fce55f27426e4880cac04434de3955f282d549e","integrity":"sha256-gS4IaISpQ9qiOlugf85V8nQm5IgMrARDTeOVXygtVJ4="},"content/JSConferences/NationJS-booth-min-0deef83b4b3938ee6c5976ed45f4ef72af0831a44501f7a514d2a20135d932c3.jpg":{"logical_path":"content/JSConferences/NationJS-booth-min.jpg","mtime":"2022-10-05T06:50:13-04:00","size":117158,"digest":"0deef83b4b3938ee6c5976ed45f4ef72af0831a44501f7a514d2a20135d932c3","integrity":"sha256-De74O0s5OO5sWXbtRfTvcq8IMaRFAfelFNKiATXZMsM="},"content/like-a-ross-8119120f145b0d6bd8d9fbf087c81df45eb37c92a1b9abed35e39fb123ed8e7d.jpg":{"logical_path":"content/like-a-ross.jpg","mtime":"2022-10-05T06:50:13-04:00","size":68555,"digest":"8119120f145b0d6bd8d9fbf087c81df45eb37c92a1b9abed35e39fb123ed8e7d","integrity":"sha256-gRkSDxRbDWvY2fvwh8gd9F6zfJKhuavtNeOfsSPtjn0="},"content/ecomiccon/first_attendees-de92c4802a6a5c637abf40587f55e96537da768bc63362693a122671a03f2de8.jpg":{"logical_path":"content/ecomiccon/first_attendees.jpg","mtime":"2022-10-05T06:50:13-04:00","size":241277,"digest":"de92c4802a6a5c637abf40587f55e96537da768bc63362693a122671a03f2de8","integrity":"sha256-3pLEgCpqXGN6v0BYf1XpZTfadovGM2JpOhImcaA/Leg="},"content/ecomiccon/first_attendees2-7405164f7fd209d5f513a6db386de2a13f8e331d6d1a3616a23f19f49f2885c4.jpg":{"logical_path":"content/ecomiccon/first_attendees2.jpg","mtime":"2022-10-05T06:50:13-04:00","size":375752,"digest":"7405164f7fd209d5f513a6db386de2a13f8e331d6d1a3616a23f19f49f2885c4","integrity":"sha256-dAUWT3/SCdX1E6bbOG3ioT+OMx1tGjYWoj8Z9J8ohcQ="},"content/ecomiccon/by_the_stairs-7b4430e7f8db6810adbc2ce66cc8f111ed8c20d120bad47823c51d09765ce177.jpg":{"logical_path":"content/ecomiccon/by_the_stairs.jpg","mtime":"2022-10-05T06:50:13-04:00","size":342637,"digest":"7b4430e7f8db6810adbc2ce66cc8f111ed8c20d120bad47823c51d09765ce177","integrity":"sha256-e0Qw5/jbaBCtvCzmbMjxEe2MINEgutR4I8UdCXZc4Xc="},"content/ecomiccon/hanging_out-1dbbce0f0dd1b4cfd1a8ff22d86bfa4d1329fd442ab48a57dac2db108c3092e2.jpg":{"logical_path":"content/ecomiccon/hanging_out.jpg","mtime":"2022-10-05T06:50:13-04:00","size":485106,"digest":"1dbbce0f0dd1b4cfd1a8ff22d86bfa4d1329fd442ab48a57dac2db108c3092e2","integrity":"sha256-HbvODw3RtM/RqP8i2Gv6TRMp/UQqtIpX2sLbEIwwkuI="},"content/ecomiccon/gogopowerrangers-01dfdd7b5ad6462a4a1081a61725b390ab19eab5afd433b1819947d62642903d.jpg":{"logical_path":"content/ecomiccon/gogopowerrangers.jpg","mtime":"2022-10-05T06:50:13-04:00","size":287604,"digest":"01dfdd7b5ad6462a4a1081a61725b390ab19eab5afd433b1819947d62642903d","integrity":"sha256-Ad/de1rWRipKEIGmFyWzkKsZ6rWv1DOxgZlH1iZCkD0="},"content/ecomiccon/rocket-1e7931bfff1152a8dda69118b80192a6c8cf76dbca8bfe43e880e5369105ee1c.jpg":{"logical_path":"content/ecomiccon/rocket.jpg","mtime":"2022-10-05T06:50:13-04:00","size":380490,"digest":"1e7931bfff1152a8dda69118b80192a6c8cf76dbca8bfe43e880e5369105ee1c","integrity":"sha256-Hnkxv/8RUqjdppEYuAGSpsjPdtvKi/5D6IDlNpEF7hw="},"content/ecomiccon/strength_test-c560ee667d8d68df87da6218e9512f4c6265cb1e67bc0b55018243bc9d376917.jpg":{"logical_path":"content/ecomiccon/strength_test.jpg","mtime":"2022-10-05T06:50:13-04:00","size":266425,"digest":"c560ee667d8d68df87da6218e9512f4c6265cb1e67bc0b55018243bc9d376917","integrity":"sha256-xWDuZn2NaN+H2mIY6VEvTGJlyx5nvAtVAYJDvJ03aRc="},"content/ecomiccon/drdoom_link-a9c7801652f196ddd8cc1d454cf6e9c2c7ea4664cf5facd42c120a7b1b3b527d.jpg":{"logical_path":"content/ecomiccon/drdoom_link.jpg","mtime":"2022-10-05T06:50:13-04:00","size":275293,"digest":"a9c7801652f196ddd8cc1d454cf6e9c2c7ea4664cf5facd42c120a7b1b3b527d","integrity":"sha256-qceAFlLxlt3YzB1FTPbpwsfqRmTPX6zULBIKexs7Un0="},"content/ecomiccon/morhpin_lunch-ab0e13bfe301a53a11ec83af82fe4a50d33f4d7ec462251d5230a24f80ebef24.jpg":{"logical_path":"content/ecomiccon/morhpin_lunch.jpg","mtime":"2022-10-05T06:50:13-04:00","size":165802,"digest":"ab0e13bfe301a53a11ec83af82fe4a50d33f4d7ec462251d5230a24f80ebef24","integrity":"sha256-qw4Tv+MBpToR7IOvgv5KUNM/TX7EYiUdUjCiT4Dr7yQ="},"content/ecomiccon/working_link-64d49a31c5309cf694a8462b40482785cdc8f812a9fbf0a07efc8ee5d139928e.jpg":{"logical_path":"content/ecomiccon/working_link.jpg","mtime":"2022-10-05T06:50:13-04:00","size":559522,"digest":"64d49a31c5309cf694a8462b40482785cdc8f812a9fbf0a07efc8ee5d139928e","integrity":"sha256-ZNSaMcUwnPaUqEYrQEgnhc3I+BKp+/CgfvyO5dE5ko4="},"content/ecomiccon/super_meeting-ca825c4932b6d4ae674cd3eaca8931ff3a08388a67096450c43531e9a0c07a22.png":{"logical_path":"content/ecomiccon/super_meeting.png","mtime":"2022-10-05T06:50:13-04:00","size":394968,"digest":"ca825c4932b6d4ae674cd3eaca8931ff3a08388a67096450c43531e9a0c07a22","integrity":"sha256-yoJcSTK21K5nTNPqyokx/zoIOIpnCWRQxDUx6aDAeiI="},"content/ecomiccon/kickass_thirsty-6c601b06f864d5433d2bd7271548ad1678fd18926d75556b312b59a650850c3c.jpg":{"logical_path":"content/ecomiccon/kickass_thirsty.jpg","mtime":"2022-10-05T06:50:13-04:00","size":381511,"digest":"6c601b06f864d5433d2bd7271548ad1678fd18926d75556b312b59a650850c3c","integrity":"sha256-bGAbBvhk1UM9K9cnFUitFnj9GJJtdVVrMStZplCFDDw="},"content/ecomiccon/working_riker-2ef8edace8686e9837471e41b955f708139209513df446de7081c7aab6aa3f8c.jpg":{"logical_path":"content/ecomiccon/working_riker.jpg","mtime":"2022-10-05T06:50:13-04:00","size":401610,"digest":"2ef8edace8686e9837471e41b955f708139209513df446de7081c7aab6aa3f8c","integrity":"sha256-LvjtrOhobpg3Rx5BuVX3CBOSCVE99EbecIHHqraqP4w="},"content/ecomiccon/photo_thrones-2274c5db2349af0fd44d950d3d30e1903c23866ffdd4b7e960ab9afafdda3ed3.jpg":{"logical_path":"content/ecomiccon/photo_thrones.jpg","mtime":"2022-10-05T06:50:13-04:00","size":168258,"digest":"2274c5db2349af0fd44d950d3d30e1903c23866ffdd4b7e960ab9afafdda3ed3","integrity":"sha256-InTF2yNJrw/UTZUNPTDhkDwjhm/91LfpYKua+v3aPtM="},"content/ecomiccon/photo_power-f50002be0e99a4ef7865b86ae1fe1d9f320aa5dd50f25333ecc75f7c51d58465.jpg":{"logical_path":"content/ecomiccon/photo_power.jpg","mtime":"2022-10-05T06:50:13-04:00","size":304896,"digest":"f50002be0e99a4ef7865b86ae1fe1d9f320aa5dd50f25333ecc75f7c51d58465","integrity":"sha256-9QACvg6ZpO94Zbhq4f4dnzIKpd1Q8lMz7MdffFHVhGU="},"content/ecomiccon/photo_marvel-847e392b63f296bee8eb9ebd51d9a6541c4319a01bed27a8f36a0c7be873f29f.jpg":{"logical_path":"content/ecomiccon/photo_marvel.jpg","mtime":"2022-10-05T06:50:13-04:00","size":202218,"digest":"847e392b63f296bee8eb9ebd51d9a6541c4319a01bed27a8f36a0c7be873f29f","integrity":"sha256-hH45K2Pylr7o6569UdmmVBxDGaAb7Seo82oMe+hz8p8="},"content/ecomiccon/all_of_ecomiccon-a4679a345038eab38e4b28c0973739a1d0193ba1154f75b3a3c3fcc2e751a079.jpg":{"logical_path":"content/ecomiccon/all_of_ecomiccon.jpg","mtime":"2022-10-05T06:50:13-04:00","size":301158,"digest":"a4679a345038eab38e4b28c0973739a1d0193ba1154f75b3a3c3fcc2e751a079","integrity":"sha256-pGeaNFA46rOOSyjAlzc5odAZO6EVT3Wzo8P8wudRoHk="},"content/rubyconf5k_2014/stafford-e537c7852df7c461cd572b25b0db38d4f4b8748504d045e3aab3a5212d80c6a8.jpg":{"logical_path":"content/rubyconf5k_2014/stafford.jpg","mtime":"2022-10-05T06:50:13-04:00","size":227395,"digest":"e537c7852df7c461cd572b25b0db38d4f4b8748504d045e3aab3a5212d80c6a8","integrity":"sha256-5TfHhS33xGHNVyslsNs41PS4dIUE0EXjqrOlIS2Axqg="},"content/rubyconf5k_2014/shirts-8d88c259d652d34716d73e5ef0303c4066c2388a180eb0f23372fd061460bd91.jpg":{"logical_path":"content/rubyconf5k_2014/shirts.jpg","mtime":"2022-10-05T06:50:13-04:00","size":271487,"digest":"8d88c259d652d34716d73e5ef0303c4066c2388a180eb0f23372fd061460bd91","integrity":"sha256-jYjCWdZS00cW1z5e8DA8QGbCOIoYDrDyM3L9BhRgvZE="},"content/rubyconf5k_2014/kylepeyton-3cf69afa9af902d839a9d0d0016d4c9d8f056b61eff028a27d4935434660266b.jpg":{"logical_path":"content/rubyconf5k_2014/kylepeyton.jpg","mtime":"2022-10-05T06:50:13-04:00","size":68685,"digest":"3cf69afa9af902d839a9d0d0016d4c9d8f056b61eff028a27d4935434660266b","integrity":"sha256-PPaa+pr5Atg5qdDQAW1MnY8Fa2Hv8CiifUk1Q0ZgJms="},"content/rubyconf5k_2014/bridgetlandis-2f44464735ed6d816427430f9e4c0f01bcb5ef5441ddd2ecafd742de3f07a0cf.jpg":{"logical_path":"content/rubyconf5k_2014/bridgetlandis.jpg","mtime":"2022-10-05T06:50:13-04:00","size":80405,"digest":"2f44464735ed6d816427430f9e4c0f01bcb5ef5441ddd2ecafd742de3f07a0cf","integrity":"sha256-L0RGRzXtbYFkJ0MPnkwPAby171RB3dLsr9dC3j8HoM8="},"content/rubyconf5k_2014/justinschumacher-87c8a6ffec0a45d1f34262bc0bc0506a91996719858204519775d689db1e42c7.jpg":{"logical_path":"content/rubyconf5k_2014/justinschumacher.jpg","mtime":"2022-10-05T06:50:13-04:00","size":79362,"digest":"87c8a6ffec0a45d1f34262bc0bc0506a91996719858204519775d689db1e42c7","integrity":"sha256-h8im/+wKRdHzQmK8C8BQapGZZxmFggRRl3XWidseQsc="},"content/bundler_inline_gemfile/pre_flag-0180d46177063c57a3378b4cf6e021082a1de074506a82064a9d11a8192d0b87.png":{"logical_path":"content/bundler_inline_gemfile/pre_flag.png","mtime":"2022-10-05T06:50:13-04:00","size":15151,"digest":"0180d46177063c57a3378b4cf6e021082a1de074506a82064a9d11a8192d0b87","integrity":"sha256-AYDUYXcGPFejN4tM9uAhCCod4HRQaoIGSp0RqBktC4c="},"content/bundler_inline_gemfile/post_flag-96759bb2218646ba696491d739be1f7c28a578012931c71893f00dfba835dd84.png":{"logical_path":"content/bundler_inline_gemfile/post_flag.png","mtime":"2022-10-05T06:50:13-04:00","size":31408,"digest":"96759bb2218646ba696491d739be1f7c28a578012931c71893f00dfba835dd84","integrity":"sha256-lnWbsiGGRrppZJHXOb4ffCileAEpMccYk/AN+6g13YQ="},"content/ruby_for_good_2015/kitchen-111bb1986c02777f01f7aa860743dfd82a9c8f5553d0e326ae8603f851432403.jpg":{"logical_path":"content/ruby_for_good_2015/kitchen.jpg","mtime":"2022-10-05T06:50:13-04:00","size":63913,"digest":"111bb1986c02777f01f7aa860743dfd82a9c8f5553d0e326ae8603f851432403","integrity":"sha256-ERuxmGwCd38B96qGB0Pf2Cqcj1VT0OMmroYD+FFDJAM="},"content/ruby_for_good_2015/pairing-ccfaf0b6ff090b62c6f8c269be758c83bf68808591beb0d47850a835fe2c087d.jpg":{"logical_path":"content/ruby_for_good_2015/pairing.jpg","mtime":"2022-10-05T06:50:13-04:00","size":55615,"digest":"ccfaf0b6ff090b62c6f8c269be758c83bf68808591beb0d47850a835fe2c087d","integrity":"sha256-zPrwtv8JC2LG+MJpvnWMg79ogIWRvrDUeFCoNf4sCH0="},"content/ruby_for_good_2015/group-hug-1e7025598e1a81c0756b38f499c55132a70d8f1993f164506a7afff167e0539f.jpg":{"logical_path":"content/ruby_for_good_2015/group-hug.jpg","mtime":"2022-10-05T06:50:13-04:00","size":51121,"digest":"1e7025598e1a81c0756b38f499c55132a70d8f1993f164506a7afff167e0539f","integrity":"sha256-HnAlWY4agcB1azj0mcVRMqcNjxmT8WRQanr/8WfgU58="},"content/ruby_for_good_2015/group-heart-944f814f7946bcc58534f6a6ea5edc6a543368e77c039548143928de67706a51.jpg":{"logical_path":"content/ruby_for_good_2015/group-heart.jpg","mtime":"2022-10-05T06:50:13-04:00","size":56409,"digest":"944f814f7946bcc58534f6a6ea5edc6a543368e77c039548143928de67706a51","integrity":"sha256-lE+BT3lGvMWFNPam6l7calQzaOd8A5VIFDko3mdwalE="},"content/ossdatacamp/meeting-6348827ac90cef0e7d7f96c5f8b1df053b94b0d3d8439a5d2949a7f707ddf571.jpg":{"logical_path":"content/ossdatacamp/meeting.jpg","mtime":"2022-10-05T06:50:13-04:00","size":140642,"digest":"6348827ac90cef0e7d7f96c5f8b1df053b94b0d3d8439a5d2949a7f707ddf571","integrity":"sha256-Y0iCeskM7w59f5bF+LHfBTuUsNPYQ5pdKUmn9wfd9XE="},"content/ossdatacamp/learn-ruby-0b4c5cd3070a6c9d07024adafa582678e87402fcb715ba6eafa8e219a66aa965.jpg":{"logical_path":"content/ossdatacamp/learn-ruby.jpg","mtime":"2022-10-05T06:50:13-04:00","size":51693,"digest":"0b4c5cd3070a6c9d07024adafa582678e87402fcb715ba6eafa8e219a66aa965","integrity":"sha256-C0xc0wcKbJ0HAkra+lgmeOh0Avy3Fbpur6jiGaZqqWU="},"content/ossdatacamp/keepit-weird-d53badd278a1edb1c401e4586df6bfabdb6877e297cbddbe1106cd6f9da6e1ae.jpg":{"logical_path":"content/ossdatacamp/keepit-weird.jpg","mtime":"2022-10-05T06:50:13-04:00","size":44218,"digest":"d53badd278a1edb1c401e4586df6bfabdb6877e297cbddbe1106cd6f9da6e1ae","integrity":"sha256-1Tut0nih7bHEAeRYbfa/q9tod+KXy92+EQbNb52m4a4="},"content/ossdatacamp/sql-server-stretch-dd93c4c92375890e248d7c85047e1540c2e2bc75eecf3444faf78395ad024832.png":{"logical_path":"content/ossdatacamp/sql-server-stretch.png","mtime":"2022-10-05T06:50:13-04:00","size":22216,"digest":"dd93c4c92375890e248d7c85047e1540c2e2bc75eecf3444faf78395ad024832","integrity":"sha256-3ZPEySN1iQ4kjXyFBH4VQMLivHXuzzRE+veDla0CSDI="},"content/ossdatacamp/fetch-tobias-ternstrom-a2049eccce1dc3aa59f8e73633e8c919b1ce22b93ac1be8934bb8a057ecf7b80.jpg":{"logical_path":"content/ossdatacamp/fetch-tobias-ternstrom.jpg","mtime":"2022-10-05T06:50:13-04:00","size":41929,"digest":"a2049eccce1dc3aa59f8e73633e8c919b1ce22b93ac1be8934bb8a057ecf7b80","integrity":"sha256-ogSezM4dw6pZ+Oc2M+jJGbHOIrk6wb6JNLuKBX7Pe4A="},"content/rubyconf5k_2015/shirt_front-201946e782faf245391493c649de7f0ba2498150f5bbab4f22b7a4c216adda29.jpg":{"logical_path":"content/rubyconf5k_2015/shirt_front.jpg","mtime":"2022-10-05T06:50:13-04:00","size":25836,"digest":"201946e782faf245391493c649de7f0ba2498150f5bbab4f22b7a4c216adda29","integrity":"sha256-IBlG54L68kU5FJPGSd5/C6JJgVD1u6tPIrekwhat2ik="},"content/rubyconf5k_2015/shirt_back-2fa83ab884df9a3fadc65abf6f330c90a42f46bc75ffcb59f62c18f6c63f0e91.jpg":{"logical_path":"content/rubyconf5k_2015/shirt_back.jpg","mtime":"2022-10-05T06:50:13-04:00","size":26736,"digest":"2fa83ab884df9a3fadc65abf6f330c90a42f46bc75ffcb59f62c18f6c63f0e91","integrity":"sha256-L6g6uITfmj+txlq/bzMMkKQvRrx1/8tZ9iwY9sY/DpE="},"content/rolling-travisci-builds-9c7cad612f28eb2e30bc03efac7a717b5b8002e93c3f23cf0f537b25b79a4d7c.gif":{"logical_path":"content/rolling-travisci-builds.gif","mtime":"2022-10-05T06:50:13-04:00","size":461012,"digest":"9c7cad612f28eb2e30bc03efac7a717b5b8002e93c3f23cf0f537b25b79a4d7c","integrity":"sha256-nHytYS8o6y4wvAPvrHpxe1uAAuk8PyPPD1N7JbeaTXw="},"content/ruby_for_good_2016/campfire-4-44a53f3bfd88404abb2ad7a61ad588c5a04dd9b1d15b1dc503d7613e264d7f2f.jpg":{"logical_path":"content/ruby_for_good_2016/campfire-4.jpg","mtime":"2022-10-05T06:50:13-04:00","size":129648,"digest":"44a53f3bfd88404abb2ad7a61ad588c5a04dd9b1d15b1dc503d7613e264d7f2f","integrity":"sha256-RKU/O/2IQEq7KtemGtWIxaBN2bHRWx3FA9dhPiZNfy8="},"content/ruby_for_good_2016/campfire-5-4a3c5c06dee84804dd7a4da3dae52c4c1925866678f2a519ba998aee1b34cb72.jpg":{"logical_path":"content/ruby_for_good_2016/campfire-5.jpg","mtime":"2022-10-05T06:50:13-04:00","size":91921,"digest":"4a3c5c06dee84804dd7a4da3dae52c4c1925866678f2a519ba998aee1b34cb72","integrity":"sha256-SjxcBt7oSATdek2j2uUsTBklhmZ48qUZupmK7hs0y3I="},"content/ruby_for_good_2016/board-games-8cc0520a5e76d3d7d59b82aa82d0be11bd68e5fc2c4059df452cb8a56c4b8b3b.jpg":{"logical_path":"content/ruby_for_good_2016/board-games.jpg","mtime":"2022-10-05T06:50:13-04:00","size":91959,"digest":"8cc0520a5e76d3d7d59b82aa82d0be11bd68e5fc2c4059df452cb8a56c4b8b3b","integrity":"sha256-jMBSCl5209fVm4KqgtC+Eb1o5fwsQFnfRSy4pWxLizs="},"content/ruby_for_good_2016/working-124ae1411d040f594fc2a7bddfe94ddd829a0f6722f18bf8303c40fede53986a.jpg":{"logical_path":"content/ruby_for_good_2016/working.jpg","mtime":"2022-10-05T06:50:13-04:00","size":88873,"digest":"124ae1411d040f594fc2a7bddfe94ddd829a0f6722f18bf8303c40fede53986a","integrity":"sha256-EkrhQR0ED1lPwqe93+lN3YKaD2ci8Yv4MDxA/t5TmGo="},"content/ruby_for_good_2016/working-2-ec511a7b249641b9d722d48b7b53ab790471aeddf9055dc8800a3ae91e4e124c.jpg":{"logical_path":"content/ruby_for_good_2016/working-2.jpg","mtime":"2022-10-05T06:50:13-04:00","size":107151,"digest":"ec511a7b249641b9d722d48b7b53ab790471aeddf9055dc8800a3ae91e4e124c","integrity":"sha256-7FEaeySWQbnXItSLe1OreQRxrt35BV3IgAo66R5OEkw="},"content/ruby_for_good_2016/campfire-2-ce79d504ed02b314fb5a9e23aca81ff8816795b18a4d5fe482c1cf6d6a2c23f0.jpg":{"logical_path":"content/ruby_for_good_2016/campfire-2.jpg","mtime":"2022-10-05T06:50:13-04:00","size":81369,"digest":"ce79d504ed02b314fb5a9e23aca81ff8816795b18a4d5fe482c1cf6d6a2c23f0","integrity":"sha256-znnVBO0CsxT7Wp4jrKgf+IFnlbGKTV/kgsHPbWosI/A="},"content/ruby_for_good_2016/inkers-7c5134d2cbb72c062356000122899ba49f6077aa236a65eb6a9de4d7e8c38a33.jpg":{"logical_path":"content/ruby_for_good_2016/inkers.jpg","mtime":"2022-10-05T06:50:13-04:00","size":91673,"digest":"7c5134d2cbb72c062356000122899ba49f6077aa236a65eb6a9de4d7e8c38a33","integrity":"sha256-fFE00su3LAYjVgABIombpJ9gd6ojamXrap3k1+jDijM="},"content/ruby_for_good_2016/shirts-9f9ffb92c97df6c53dbb92e4012985222ad50befc9edc7c125a14657c380135a.jpg":{"logical_path":"content/ruby_for_good_2016/shirts.jpg","mtime":"2022-10-05T06:50:13-04:00","size":109617,"digest":"9f9ffb92c97df6c53dbb92e4012985222ad50befc9edc7c125a14657c380135a","integrity":"sha256-n5/7ksl99sU9u5LkASmFIirVC+/J7cfBJaFGV8OAE1o="},"content/ruby_for_good_2016/gooders-52bb2e52f9578f75e128d6dffeafb195e2ddc27941f20329b7c90b2f82a333b8.jpg":{"logical_path":"content/ruby_for_good_2016/gooders.jpg","mtime":"2022-10-05T06:50:13-04:00","size":212326,"digest":"52bb2e52f9578f75e128d6dffeafb195e2ddc27941f20329b7c90b2f82a333b8","integrity":"sha256-UrsuUvlXj3XhKNbf/q+xleLdwnlB8gMpt8kLL4KjM7g="},"content/rebuilding-the-plane-were-flying-in/cowboy_airplain-69c9c283776f8da4b84af61f8a74792e5404a0e7060797228633197f7d68dfdd.png":{"logical_path":"content/rebuilding-the-plane-were-flying-in/cowboy_airplain.png","mtime":"2022-10-05T06:50:13-04:00","size":3680,"digest":"69c9c283776f8da4b84af61f8a74792e5404a0e7060797228633197f7d68dfdd","integrity":"sha256-acnCg3dvjaS4SvYfinR5LlQEoOcGB5cihjMZf31o390="},"content/rebuilding-the-plane-were-flying-in/lightening_brain-ea6ff38f13d583effb8c25912d0b47ea936a855d7fb0e5336fde5ff408b67d5f.png":{"logical_path":"content/rebuilding-the-plane-were-flying-in/lightening_brain.png","mtime":"2022-10-05T06:50:13-04:00","size":18064,"digest":"ea6ff38f13d583effb8c25912d0b47ea936a855d7fb0e5336fde5ff408b67d5f","integrity":"sha256-6m/zjxPVg+/7jCWRLQtH6pNqhV1/sOUzb95f9Ai2fV8="},"content/rebuilding-the-plane-were-flying-in/wrench_man-d5d169c1acc3b30fa6dfa8ba665226816de30dbe87edd9cf68690b497f1c3488.png":{"logical_path":"content/rebuilding-the-plane-were-flying-in/wrench_man.png","mtime":"2022-10-05T06:50:13-04:00","size":4777,"digest":"d5d169c1acc3b30fa6dfa8ba665226816de30dbe87edd9cf68690b497f1c3488","integrity":"sha256-1dFpwazDsw+m36i6ZlImgW3jDb6H7dnPaGkLSX8cNIg="},"content/halloween2016/front-desk-e82945632033105b967fd98c112c6a6c682b6adde160e59d6ac23b3b6cd69e78.jpg":{"logical_path":"content/halloween2016/front-desk.jpg","mtime":"2022-10-05T06:50:13-04:00","size":66168,"digest":"e82945632033105b967fd98c112c6a6c682b6adde160e59d6ac23b3b6cd69e78","integrity":"sha256-6ClFYyAzEFuWf9mMESxqbGgrat3hYOWdasI7O2zWnng="},"content/halloween2016/dragondojo-58da63b265a6572c05005798bbae2923236dbb11ff6536586a4c690768ff5dde.jpg":{"logical_path":"content/halloween2016/dragondojo.jpg","mtime":"2022-10-05T06:50:13-04:00","size":42599,"digest":"58da63b265a6572c05005798bbae2923236dbb11ff6536586a4c690768ff5dde","integrity":"sha256-WNpjsmWmVywFAFeYu64pIyNtuxH/ZTZYakxpB2j/Xd4="},"content/halloween2016/dojodecor-ebb87cae436d350cf424c4863e0b1eef7f08513d5395f257d4e7ac905610813b.jpg":{"logical_path":"content/halloween2016/dojodecor.jpg","mtime":"2022-10-05T06:50:13-04:00","size":35693,"digest":"ebb87cae436d350cf424c4863e0b1eef7f08513d5395f257d4e7ac905610813b","integrity":"sha256-67h8rkNtNQz0JMSGPgse738IUT1TlfJX1OeskFYQgTs="},"content/halloween2016/3rdfloordecor-b12e16005ab1fd7e5dde87a8690da4769ea8c01172132d603c62786634be01dc.jpg":{"logical_path":"content/halloween2016/3rdfloordecor.jpg","mtime":"2022-10-05T06:50:13-04:00","size":41319,"digest":"b12e16005ab1fd7e5dde87a8690da4769ea8c01172132d603c62786634be01dc","integrity":"sha256-sS4WAFqx/X5d3oeoaQ2kdp6owBFyEy1gPGJ4ZjS+Adw="},"content/halloween2016/treats-499d5397bf53f308a64559a6a24dc996e94e9cca0d4e2680a9c863d98b3343a9.jpg":{"logical_path":"content/halloween2016/treats.jpg","mtime":"2022-10-05T06:50:13-04:00","size":40160,"digest":"499d5397bf53f308a64559a6a24dc996e94e9cca0d4e2680a9c863d98b3343a9","integrity":"sha256-SZ1Tl79T8wimRVmmok3JlulOnMoNTiaAqchj2YszQ6k="},"content/halloween2016/ghost-busters-chill-ba8e5cbcbdac45705289882cbc621b2792a6b9cfb71681e788858b00ee300140.jpg":{"logical_path":"content/halloween2016/ghost-busters-chill.jpg","mtime":"2022-10-05T06:50:13-04:00","size":50517,"digest":"ba8e5cbcbdac45705289882cbc621b2792a6b9cfb71681e788858b00ee300140","integrity":"sha256-uo5cvL2sRXBSiYgsvGIbJ5Kmuc+3FoHniIWLAO4wAUA="},"content/halloween2016/ghost-buster-coffee-d8f5f857a286f5ad3e2fdf8a4653cd072ee18d899b706340bb41a159488e3b7f.jpg":{"logical_path":"content/halloween2016/ghost-buster-coffee.jpg","mtime":"2022-10-05T06:50:13-04:00","size":41974,"digest":"d8f5f857a286f5ad3e2fdf8a4653cd072ee18d899b706340bb41a159488e3b7f","integrity":"sha256-2PX4V6KG9a0+L9+KRlPNBy7hjYmbcGNAu0GhWUiOO38="},"content/halloween2016/wolverine-48b1dc13d593618726fe2b42ed46fdb7356ca76a0ead2732ce8375d5bdf00de6.jpg":{"logical_path":"content/halloween2016/wolverine.jpg","mtime":"2022-10-05T06:50:13-04:00","size":31324,"digest":"48b1dc13d593618726fe2b42ed46fdb7356ca76a0ead2732ce8375d5bdf00de6","integrity":"sha256-SLHcE9WTYYcm/itC7Ub9tzVsp2oOrScyzoN11b3wDeY="},"content/halloween2016/avengers-3d415f55c4b62e0cae5e221953fb690ca457531f219601d48f221b3fc767e4f4.jpg":{"logical_path":"content/halloween2016/avengers.jpg","mtime":"2022-10-05T06:50:13-04:00","size":21987,"digest":"3d415f55c4b62e0cae5e221953fb690ca457531f219601d48f221b3fc767e4f4","integrity":"sha256-PUFfVcS2LgyuXiIZU/tpDKRXUx8hlgHUjyIbP8dn5PQ="},"content/halloween2016/batmankolas-0f0e2540300eea8cc63390ea859c691a7473c3a66fd0d4a072291dcaadaba65c.jpg":{"logical_path":"content/halloween2016/batmankolas.jpg","mtime":"2022-10-05T06:50:13-04:00","size":12470,"digest":"0f0e2540300eea8cc63390ea859c691a7473c3a66fd0d4a072291dcaadaba65c","integrity":"sha256-Dw4lQDAO6ozGM5DqhZxpGnRzw6Zv0NSgcikdyq2rplw="},"content/halloween2016/link-fcac7b1644d9c194aa351c5067cad22fd3ebfca2f502e385774ecf874beeedc1.jpg":{"logical_path":"content/halloween2016/link.jpg","mtime":"2022-10-05T06:50:13-04:00","size":6633,"digest":"fcac7b1644d9c194aa351c5067cad22fd3ebfca2f502e385774ecf874beeedc1","integrity":"sha256-/Kx7FkTZwZSqNRxQZ8rSL9Pr/KL1AuOFd07Ph0vu7cE="},"content/halloween2016/staypuft-db7844cae519ea7656b9c7a4a518c2d9ac67e0ebab21646ba0ead49bde1d57d6.jpg":{"logical_path":"content/halloween2016/staypuft.jpg","mtime":"2022-10-05T06:50:13-04:00","size":68064,"digest":"db7844cae519ea7656b9c7a4a518c2d9ac67e0ebab21646ba0ead49bde1d57d6","integrity":"sha256-23hEyuUZ6nZWucekpRjC2axn4OurIWRroOrUm94dV9Y="},"content/halloween2016/scream-e6f73a68804b13c246f8550a50556df82e8520a8886c68567fee958d73bd6ba8.jpg":{"logical_path":"content/halloween2016/scream.jpg","mtime":"2022-10-05T06:50:13-04:00","size":12628,"digest":"e6f73a68804b13c246f8550a50556df82e8520a8886c68567fee958d73bd6ba8","integrity":"sha256-5vc6aIBLE8JG+FUKUFVt+C6FIKiIbGhWf+6VjXO9a6g="},"content/halloween2016/disneyvillans-7739775657501c562464f1b5e1fa3c2b616c039a584e92c7cde9586b79e3b342.jpg":{"logical_path":"content/halloween2016/disneyvillans.jpg","mtime":"2022-10-05T06:50:13-04:00","size":36706,"digest":"7739775657501c562464f1b5e1fa3c2b616c039a584e92c7cde9586b79e3b342","integrity":"sha256-dzl3VldQHFYkZPG14fo8K2FsA5pYTpLHzelYa3njs0I="},"content/halloween2016/star-wars-57e16a7f95a92e516d2566c87112aa459392b7c09510ecb148063292d44792b5.jpg":{"logical_path":"content/halloween2016/star-wars.jpg","mtime":"2022-10-05T06:50:13-04:00","size":37798,"digest":"57e16a7f95a92e516d2566c87112aa459392b7c09510ecb148063292d44792b5","integrity":"sha256-V+Fqf5WpLlFtJWbIcRKqRZOSt8CVEOyxSAYyktRHkrU="},"content/halloween2016/phasmazoo2-7e8b69a9907f48a643a36c35480c56d780066913e0c04eaa98f8015c0a04877b.jpg":{"logical_path":"content/halloween2016/phasmazoo2.jpg","mtime":"2022-10-05T06:50:13-04:00","size":67485,"digest":"7e8b69a9907f48a643a36c35480c56d780066913e0c04eaa98f8015c0a04877b","integrity":"sha256-fotpqZB/SKZDo2w1SAxW14AGaRPgwE6qmPgBXAoEh3s="},"content/halloween2016/tacobell-6db2d1114366296f718f492b1511116575466f5446b11ef85e03afa3249de1de.jpg":{"logical_path":"content/halloween2016/tacobell.jpg","mtime":"2022-10-05T06:50:13-04:00","size":42182,"digest":"6db2d1114366296f718f492b1511116575466f5446b11ef85e03afa3249de1de","integrity":"sha256-bbLREUNmKW9xj0krFRERZXVGb1RGsR74XgOvoySd4d4="},"content/halloween2016/ewok-1ab5c5e3c2a1cc0b60e753a49894eabf5356a61401d5ef57418262e912c73e44.jpg":{"logical_path":"content/halloween2016/ewok.jpg","mtime":"2022-10-05T06:50:13-04:00","size":36996,"digest":"1ab5c5e3c2a1cc0b60e753a49894eabf5356a61401d5ef57418262e912c73e44","integrity":"sha256-GrXF48KhzAtg51OkmJTqv1NWphQB1e9XQYJi6RLHPkQ="},"content/halloween2016/underthesea-12debc7e9e40d9064c59ed13c01efaf91c6d81c32cd294a315d57b6606a7d98d.jpg":{"logical_path":"content/halloween2016/underthesea.jpg","mtime":"2022-10-05T06:50:13-04:00","size":45414,"digest":"12debc7e9e40d9064c59ed13c01efaf91c6d81c32cd294a315d57b6606a7d98d","integrity":"sha256-Et68fp5A2QZMWe0TwB76+RxtgcMs0pSjFdV7Zgan2Y0="},"content/halloween2016/browsers-bca956e9391b922787864d911d7edcbcb0fc35988ff89e7bf5c78df45df3bea0.jpg":{"logical_path":"content/halloween2016/browsers.jpg","mtime":"2022-10-05T06:50:13-04:00","size":24657,"digest":"bca956e9391b922787864d911d7edcbcb0fc35988ff89e7bf5c78df45df3bea0","integrity":"sha256-vKlW6TkbkieHhk2RHX7cvLD8NZiP+J579ceN9F3zvqA="},"content/halloween2016/marty-4fad90ff89ddad37f583d12ab6a5b8e87c8abdc84c91dff4cede3db562989128.jpg":{"logical_path":"content/halloween2016/marty.jpg","mtime":"2022-10-05T06:50:13-04:00","size":9857,"digest":"4fad90ff89ddad37f583d12ab6a5b8e87c8abdc84c91dff4cede3db562989128","integrity":"sha256-T62Q/4ndrTf1g9EqtqW46HyKvchMkd/0zt49tWKYkSg="},"content/halloween2016/cats-a4d7d6dc357679f187e95325aa1222ea85cd135dc1c8dd9119dccb8b3ffdf761.jpg":{"logical_path":"content/halloween2016/cats.jpg","mtime":"2022-10-05T06:50:13-04:00","size":15614,"digest":"a4d7d6dc357679f187e95325aa1222ea85cd135dc1c8dd9119dccb8b3ffdf761","integrity":"sha256-pNfW3DV2efGH6VMlqhIi6oXNE13ByN2RGdzLiz/992E="},"content/halloween2016/hackerman-26c059edcb3ed46a5ca16f9e70dca7d8a5a4b429e240af8689c8f2ab364bd715.jpg":{"logical_path":"content/halloween2016/hackerman.jpg","mtime":"2022-10-05T06:50:13-04:00","size":14527,"digest":"26c059edcb3ed46a5ca16f9e70dca7d8a5a4b429e240af8689c8f2ab364bd715","integrity":"sha256-JsBZ7cs+1GpcoW+ecNyn2KWktCniQK+GicjyqzZL1xU="},"content/halloween2016/calvinhobbes-73b644eb0738f1ae69ac13d8a7d0fc3b3d1896994cdb1771998d1ae9f69d52be.jpg":{"logical_path":"content/halloween2016/calvinhobbes.jpg","mtime":"2022-10-05T06:50:13-04:00","size":5545,"digest":"73b644eb0738f1ae69ac13d8a7d0fc3b3d1896994cdb1771998d1ae9f69d52be","integrity":"sha256-c7ZE6wc48a5prBPYp9D8Oz0YlplM2xdxmY0a6fadUr4="},"content/halloween2016/bobross-c56f9fcbc149ce4056516a2ba9eba642c0b154f6d0b5d46e95730382f9938d90.jpg":{"logical_path":"content/halloween2016/bobross.jpg","mtime":"2022-10-05T06:50:13-04:00","size":18691,"digest":"c56f9fcbc149ce4056516a2ba9eba642c0b154f6d0b5d46e95730382f9938d90","integrity":"sha256-xW+fy8FJzkBWUWorqeumQsCxVPbQtdRulXMDgvmTjZA="},"content/halloween2016/beaten-3433ad50ec6f2f30cbcbc6a3240c257d56466a0f5b559e6ebc637dc64d402406.jpg":{"logical_path":"content/halloween2016/beaten.jpg","mtime":"2022-10-05T06:50:13-04:00","size":7665,"digest":"3433ad50ec6f2f30cbcbc6a3240c257d56466a0f5b559e6ebc637dc64d402406","integrity":"sha256-NDOtUOxvLzDLy8ajJAwlfVZGag9bVZ5uvGN9xk1AJAY="},"content/halloween2016/basketball-f9287b64ec244af3262872268c73649607b41089270770a4243b960715d287b9.jpg":{"logical_path":"content/halloween2016/basketball.jpg","mtime":"2022-10-05T06:50:13-04:00","size":5553,"digest":"f9287b64ec244af3262872268c73649607b41089270770a4243b960715d287b9","integrity":"sha256-+Sh7ZOwkSvMmKHImjHNklge0EIknB3CkJDuWBxXSh7k="},"content/halloween2016/conventioncon-af7a30fcb37c39e2df4b8982a2a0f4564bdc38965535610fb1fa194537e6f576.jpg":{"logical_path":"content/halloween2016/conventioncon.jpg","mtime":"2022-10-05T06:50:13-04:00","size":11999,"digest":"af7a30fcb37c39e2df4b8982a2a0f4564bdc38965535610fb1fa194537e6f576","integrity":"sha256-r3ow/LN8OeLfS4mCoqD0VkvcOJZVNWEPsfoZRTfm9XY="},"content/halloween2016/disney-008a7308795952b9693489a2b9fbf1d0dd8523eb0b23c5493a49d2718339118f.jpg":{"logical_path":"content/halloween2016/disney.jpg","mtime":"2022-10-05T06:50:13-04:00","size":46552,"digest":"008a7308795952b9693489a2b9fbf1d0dd8523eb0b23c5493a49d2718339118f","integrity":"sha256-AIpzCHlZUrlpNImiufvx0N2FI+sLI8VJOknScYM5EY8="},"content/halloween2016/fridaynightlights-81fe769d4d123afb3c978f551abe389efe63445913ad239fc8e715bfc7b9c6ae.jpg":{"logical_path":"content/halloween2016/fridaynightlights.jpg","mtime":"2022-10-05T06:50:13-04:00","size":35702,"digest":"81fe769d4d123afb3c978f551abe389efe63445913ad239fc8e715bfc7b9c6ae","integrity":"sha256-gf52nU0SOvs8l49VGr44nv5jRFkTrSOfyOcVv8e5xq4="},"content/halloween2016/maverik-7701cfb7f5e95cf16ec07fb06515a4ba926b94a22db50a24d90750aba694e514.jpg":{"logical_path":"content/halloween2016/maverik.jpg","mtime":"2022-10-05T06:50:13-04:00","size":65296,"digest":"7701cfb7f5e95cf16ec07fb06515a4ba926b94a22db50a24d90750aba694e514","integrity":"sha256-dwHPt/XpXPFuwH+wZRWkupJrlKIttQok2QdQq6aU5RQ="},"content/halloween2016/ghostbustwothers-fd33c4a8aee6f89e9e9cdef50dd7dac725a436acbeb44a9b9783eb6c68e108df.jpg":{"logical_path":"content/halloween2016/ghostbustwothers.jpg","mtime":"2022-10-05T06:50:13-04:00","size":55993,"digest":"fd33c4a8aee6f89e9e9cdef50dd7dac725a436acbeb44a9b9783eb6c68e108df","integrity":"sha256-/TPEqK7m+J6enN71DdfaxyWkNqy+tEqbl4PrbGjhCN8="},"content/halloween2016/bustghost-d79f9f5486bd4776f06a8e644a91ceb1a40b75b1e63df1dfebc61e856b1ba678.jpg":{"logical_path":"content/halloween2016/bustghost.jpg","mtime":"2022-10-05T06:50:13-04:00","size":70214,"digest":"d79f9f5486bd4776f06a8e644a91ceb1a40b75b1e63df1dfebc61e856b1ba678","integrity":"sha256-15+fVIa9R3bwao5kSpHOsaQLdbHmPfHf68YehWsbpng="},"content/halloween2016/motherofdragons-a711c90a28b4e33a0f46f2905273f0b53a819e71c512b403982c15122f85b304.jpg":{"logical_path":"content/halloween2016/motherofdragons.jpg","mtime":"2022-10-05T06:50:13-04:00","size":24781,"digest":"a711c90a28b4e33a0f46f2905273f0b53a819e71c512b403982c15122f85b304","integrity":"sha256-pxHJCii04zoPRvKQUnPwtTqBnnHFErQDmCwVEi+FswQ="},"content/halloween2016/oz-6e28ce6c1982758a53738c1be3168c671e41220479fd09a12ccfdf45288d3740.jpg":{"logical_path":"content/halloween2016/oz.jpg","mtime":"2022-10-05T06:50:13-04:00","size":36307,"digest":"6e28ce6c1982758a53738c1be3168c671e41220479fd09a12ccfdf45288d3740","integrity":"sha256-bijObBmCdYpTc4wb4xaMZx5BIgR5/QmhLM/fRSiNN0A="},"content/halloween2016/tinkerpeter-1a73b63ec25b7568d3c124c1df421d9886a7f0f29fd4fb9b9f4087dd5fb17c2b.jpg":{"logical_path":"content/halloween2016/tinkerpeter.jpg","mtime":"2022-10-05T06:50:13-04:00","size":15998,"digest":"1a73b63ec25b7568d3c124c1df421d9886a7f0f29fd4fb9b9f4087dd5fb17c2b","integrity":"sha256-GnO2PsJbdWjTwSTB30IdmIan8PKf1Pubn0CH3V+xfCs="},"content/halloween2016/customink-2a2947526c929e11631c4ac954ccc94e460a07c445d1366d0d453aaa134efe90.jpg":{"logical_path":"content/halloween2016/customink.jpg","mtime":"2022-10-05T06:50:13-04:00","size":13781,"digest":"2a2947526c929e11631c4ac954ccc94e460a07c445d1366d0d453aaa134efe90","integrity":"sha256-KilHUmySnhFjHErJVMzJTkYKB8RF0TZtDUU6qhNO/pA="},"content/halloween2016/deer-24e610cee9e92a51e3310908a7de76d92d906caf5788e693184b7900d4bd4617.jpg":{"logical_path":"content/halloween2016/deer.jpg","mtime":"2022-10-05T06:50:13-04:00","size":22835,"digest":"24e610cee9e92a51e3310908a7de76d92d906caf5788e693184b7900d4bd4617","integrity":"sha256-JOYQzunpKlHjMQkIp9522S2QbK9XiOaTGEt5ANS9Rhc="},"content/halloween2016/eleven-9c006be4ebca93dd5dddc63264f7c9ec06ae993b32dbd47348a8daa9abdac6b8.jpg":{"logical_path":"content/halloween2016/eleven.jpg","mtime":"2022-10-05T06:50:13-04:00","size":11825,"digest":"9c006be4ebca93dd5dddc63264f7c9ec06ae993b32dbd47348a8daa9abdac6b8","integrity":"sha256-nABr5OvKk91d3cYyZPfJ7AaumTsy29RzSKjaqavaxrg="},"content/halloween2016/emojitwins-d4c96127519fec07b4272a6d5c6800c26f72752a76e28654d1bf562dbc2b37de.jpg":{"logical_path":"content/halloween2016/emojitwins.jpg","mtime":"2022-10-05T06:50:13-04:00","size":14641,"digest":"d4c96127519fec07b4272a6d5c6800c26f72752a76e28654d1bf562dbc2b37de","integrity":"sha256-1MlhJ1Gf7Ae0JyptXGgAwm9ydSp24oZU0b9WLbwrN94="},"content/halloween2016/famous-5d930700749fb3ee3ee49e74b48180f391105f77f501696b4b0eb964ff24bd9a.jpg":{"logical_path":"content/halloween2016/famous.jpg","mtime":"2022-10-05T06:50:13-04:00","size":5670,"digest":"5d930700749fb3ee3ee49e74b48180f391105f77f501696b4b0eb964ff24bd9a","integrity":"sha256-XZMHAHSfs+4+5J50tIGA85EQX3f1AWlrSw65ZP8kvZo="},"content/halloween2016/frieda-1341da9d27a8d5d105151d8d61579815db679c0aee80975327c6508a82141052.jpg":{"logical_path":"content/halloween2016/frieda.jpg","mtime":"2022-10-05T06:50:13-04:00","size":7288,"digest":"1341da9d27a8d5d105151d8d61579815db679c0aee80975327c6508a82141052","integrity":"sha256-E0HanSeo1dEFFR2NYVeYFdtnnArugJdTJ8ZQioIUEFI="},"content/halloween2016/greek-f4fe387f6e29820431da715c89037e9dd26f7cc37921118290652569d7f0f28c.jpg":{"logical_path":"content/halloween2016/greek.jpg","mtime":"2022-10-05T06:50:13-04:00","size":17159,"digest":"f4fe387f6e29820431da715c89037e9dd26f7cc37921118290652569d7f0f28c","integrity":"sha256-9P44f24pggQx2nFciQN+ndJvfMN5IRGCkGUladfw8ow="},"content/halloween2016/leslieknope-7c1bdd7022968cf7412ff433249772fb69cc85e22b034422424adc8c2edbf0d3.jpg":{"logical_path":"content/halloween2016/leslieknope.jpg","mtime":"2022-10-05T06:50:13-04:00","size":12246,"digest":"7c1bdd7022968cf7412ff433249772fb69cc85e22b034422424adc8c2edbf0d3","integrity":"sha256-fBvdcCKWjPdBL/QzJJdy+2nMheIrA0QiQkrcjC7b8NM="},"content/halloween2016/magicbus-ecdfd404f46cb4c67209e678c247941ede61bafc1dd76887069563a0b7720c4d.jpg":{"logical_path":"content/halloween2016/magicbus.jpg","mtime":"2022-10-05T06:50:13-04:00","size":6774,"digest":"ecdfd404f46cb4c67209e678c247941ede61bafc1dd76887069563a0b7720c4d","integrity":"sha256-7N/UBPRstMZyCeZ4wkeUHt5huvwd12iHBpVjoLdyDE0="},"content/halloween2016/military-7535a7b49db2df282598c9ee8e61845ba863accc660bb2e4fe5c8db39527fab0.jpg":{"logical_path":"content/halloween2016/military.jpg","mtime":"2022-10-05T06:50:13-04:00","size":7726,"digest":"7535a7b49db2df282598c9ee8e61845ba863accc660bb2e4fe5c8db39527fab0","integrity":"sha256-dTWntJ2y3yglmMnujmGEW6hjrMxmC7Lk/lyNs5Un+rA="},"content/halloween2016/mortecai-2f28aa6a1fa339c6f7a8f1399d60d53c6a45e4ea077aae93c317f9417852e27d.jpg":{"logical_path":"content/halloween2016/mortecai.jpg","mtime":"2022-10-05T06:50:13-04:00","size":10875,"digest":"2f28aa6a1fa339c6f7a8f1399d60d53c6a45e4ea077aae93c317f9417852e27d","integrity":"sha256-Lyiqah+jOcb3qPE5nWDVPGpF5OoHeq6Twxf5QXhS4n0="},"content/halloween2016/rainingmen-0c44013e150e07de9fb94fb35c6e9aa758e5e42ffd5df6e5c66f15875161a8ed.jpg":{"logical_path":"content/halloween2016/rainingmen.jpg","mtime":"2022-10-05T06:50:13-04:00","size":13652,"digest":"0c44013e150e07de9fb94fb35c6e9aa758e5e42ffd5df6e5c66f15875161a8ed","integrity":"sha256-DEQBPhUOB96fuU+zXG6ap1jl5C/9Xfblxm8Vh1FhqO0="},"content/halloween2016/rugrats-ee6081d324e4987be7ac529dd48ea9281c6118968803ef94ffd71f34c2499932.jpg":{"logical_path":"content/halloween2016/rugrats.jpg","mtime":"2022-10-05T06:50:13-04:00","size":8576,"digest":"ee6081d324e4987be7ac529dd48ea9281c6118968803ef94ffd71f34c2499932","integrity":"sha256-7mCB0yTkmHvnrFKd1I6pKBxhGJaIA++U/9cfNMJJmTI="},"content/halloween2016/willywonka-a463d4774cddff679c1d0cf412c943f6a6dd12055a8521e27e6a385cd43f28c3.jpg":{"logical_path":"content/halloween2016/willywonka.jpg","mtime":"2022-10-05T06:50:13-04:00","size":12836,"digest":"a463d4774cddff679c1d0cf412c943f6a6dd12055a8521e27e6a385cd43f28c3","integrity":"sha256-pGPUd0zd/2ecHQz0EslD9qbdEgVahSHifmo4XNQ/KMM="},"content/halloween2016/superbaby-a3e7f0efdca96f8caea133fafa9c2c0f6d91bc576ac8508882f3081a4102fa38.jpg":{"logical_path":"content/halloween2016/superbaby.jpg","mtime":"2022-10-05T06:50:13-04:00","size":14679,"digest":"a3e7f0efdca96f8caea133fafa9c2c0f6d91bc576ac8508882f3081a4102fa38","integrity":"sha256-o+fw79ypb4yuoTP6+pwsD22RvFdqyFCIgvMIGkEC+jg="},"content/halloween2016/panda-c0f52400e771376e02cf9921ad8c2f5c9603eb8704cbfd37231ef09b9ad7e567.jpg":{"logical_path":"content/halloween2016/panda.jpg","mtime":"2022-10-05T06:50:13-04:00","size":12539,"digest":"c0f52400e771376e02cf9921ad8c2f5c9603eb8704cbfd37231ef09b9ad7e567","integrity":"sha256-wPUkAOdxN24Cz5khrYwvXJYD64cEy/03Ix7wm5rX5Wc="},"content/halloween2016/maverick-buster-ea391333cd97de93109c85f44d737d29b9c2de3faa2e0ae620cbd7f9271316da.jpg":{"logical_path":"content/halloween2016/maverick-buster.jpg","mtime":"2022-10-05T06:50:13-04:00","size":41827,"digest":"ea391333cd97de93109c85f44d737d29b9c2de3faa2e0ae620cbd7f9271316da","integrity":"sha256-6jkTM82X3pMQnIX0TXN9KbnC3j+qLgrmIMvX+ScTFto="},"content/halloween2016/slimmerghost-6a367bd3202458529d4b11767679742c56d523e0320765f029bdcf731337e0b8.gif":{"logical_path":"content/halloween2016/slimmerghost.gif","mtime":"2022-10-05T06:50:13-04:00","size":2226041,"digest":"6a367bd3202458529d4b11767679742c56d523e0320765f029bdcf731337e0b8","integrity":"sha256-ajZ70yAkWFKdSxF2dnl0LFbVI+AyB2XwKb3PcxM34Lg="},"content/static-components/augusta-juniors-spirit-hooded-sweatshirt-card-c52feb507554ff32696a424b330090a49555c337db1e7fdbbd975e2789dbe482.jpg":{"logical_path":"content/static-components/augusta-juniors-spirit-hooded-sweatshirt-card.jpg","mtime":"2022-10-05T06:50:13-04:00","size":60476,"digest":"c52feb507554ff32696a424b330090a49555c337db1e7fdbbd975e2789dbe482","integrity":"sha256-xS/rUHVU/zJpakJLMwCQpJVVwzfbHn/bvZdeJ4nb5II="},"content/static-components/augusta-juniors-spirit-hooded-sweatshirt__start-74181b4f7ae39b74e8fcb4d64d5c2eefba3d328b1e4841ceb84908b5ec3b50ae.gif":{"logical_path":"content/static-components/augusta-juniors-spirit-hooded-sweatshirt__start.gif","mtime":"2022-10-05T06:50:13-04:00","size":126595,"digest":"74181b4f7ae39b74e8fcb4d64d5c2eefba3d328b1e4841ceb84908b5ec3b50ae","integrity":"sha256-dBgbT3rjm3To/LTWTVwu77o9MoseSEHOuEkItew7UK4="},"content/static-components/final-results-280dbcfd02fcea204dc683e446c3d09edba179cf246012c624b2884ca7f0b214.jpg":{"logical_path":"content/static-components/final-results.jpg","mtime":"2022-10-05T06:50:13-04:00","size":159785,"digest":"280dbcfd02fcea204dc683e446c3d09edba179cf246012c624b2884ca7f0b214","integrity":"sha256-KA28/QL86iBNxoPkRsPQntuhec8kYBLGJLKITKfwshQ="},"content/best-tech-manager/andrew_willis_2016-timmy-awards-9bf9100b19b6a6b21f6bb9e343352ccb908258dcff8ad02c359da0a5d0ea6f9d.jpg":{"logical_path":"content/best-tech-manager/andrew_willis_2016-timmy-awards.jpg","mtime":"2022-10-05T06:50:13-04:00","size":103711,"digest":"9bf9100b19b6a6b21f6bb9e343352ccb908258dcff8ad02c359da0a5d0ea6f9d","integrity":"sha256-m/kQCxm2prIfa7njQzUsy5CCWNz/itAsNZ2gpdDqb50="},"content/power-moves/docker-memory-prefs-8ad442dfb46bd33ab9a8eefdb54f598b96861d251ee06e5ffabcbe9dced7ed5d.jpg":{"logical_path":"content/power-moves/docker-memory-prefs.jpg","mtime":"2022-10-05T06:50:13-04:00","size":43860,"digest":"8ad442dfb46bd33ab9a8eefdb54f598b96861d251ee06e5ffabcbe9dced7ed5d","integrity":"sha256-itRC37Rr0zq5qO79tU9Zi5aGHSUe4G5f+ry+nc7X7V0="},"content/power-moves/welcome-to-rails-051121731979c533db830998a3cb6a81f02ed053fd051f090d29a231fb71a6cb.jpg":{"logical_path":"content/power-moves/welcome-to-rails.jpg","mtime":"2022-10-05T06:50:13-04:00","size":87044,"digest":"051121731979c533db830998a3cb6a81f02ed053fd051f090d29a231fb71a6cb","integrity":"sha256-BREhcxl5xTPbgwmYo8tqgfAu0FP9BR8JDSmiMftxpss="},"content/power-moves/thanks-6a02ee3951e46a9891740dcb02ee9aee4bef4eee8de029992554b479a8ce4983.jpg":{"logical_path":"content/power-moves/thanks.jpg","mtime":"2022-10-05T06:50:13-04:00","size":58947,"digest":"6a02ee3951e46a9891740dcb02ee9aee4bef4eee8de029992554b479a8ce4983","integrity":"sha256-agLuOVHkapiRdA3LAu6a7kvvTu6N4CmZJVS0eajOSYM="},"content/imgix/imgix-a6c45c8e8fbb4c352c598fcf2282992a1e145914ab324e413248e25068982afd.png":{"logical_path":"content/imgix/imgix.png","mtime":"2022-10-05T06:50:13-04:00","size":11195,"digest":"a6c45c8e8fbb4c352c598fcf2282992a1e145914ab324e413248e25068982afd","integrity":"sha256-psRcjo+7TDUsWY/PIoKZKh4UWRSrMk5BMkjiUGiYKv0="},"content/imgix/steps/0-7dc4b1cb585739f856abaaeff2102a176a7b6f690bb9e66a7a6602dbf0a1ee6f.png":{"logical_path":"content/imgix/steps/0.png","mtime":"2022-10-05T06:50:13-04:00","size":69367,"digest":"7dc4b1cb585739f856abaaeff2102a176a7b6f690bb9e66a7a6602dbf0a1ee6f","integrity":"sha256-fcSxy1hXOfhWq6rv8hAqF2p7b2kLueZqemYC2/Ch7m8="},"content/imgix/steps/1-c6da1cbcc1a856dc84073172007ae4115a5681fc437e4188dbe5ad441bdc8ea2.jpg":{"logical_path":"content/imgix/steps/1.jpg","mtime":"2022-10-05T06:50:13-04:00","size":42764,"digest":"c6da1cbcc1a856dc84073172007ae4115a5681fc437e4188dbe5ad441bdc8ea2","integrity":"sha256-xtocvMGoVtyEBzFyAHrkEVpWgfxDfkGI2+WtRBvcjqI="},"content/imgix/steps/2-bc0d5beea73569580a426338c1bbb9f0d3cba54d8723b9268921d634a650c079.png":{"logical_path":"content/imgix/steps/2.png","mtime":"2022-10-05T06:50:13-04:00","size":6473,"digest":"bc0d5beea73569580a426338c1bbb9f0d3cba54d8723b9268921d634a650c079","integrity":"sha256-vA1b7qc1aVgKQmM4wbu58NPLpU2HI7kmiSHWNKZQwHk="},"content/imgix/steps/2-debug-51de0c2249bd64a62bfce07f4695a8174457e018e9f02344b316d13a53dff67d.png":{"logical_path":"content/imgix/steps/2-debug.png","mtime":"2022-10-05T06:50:13-04:00","size":11788,"digest":"51de0c2249bd64a62bfce07f4695a8174457e018e9f02344b316d13a53dff67d","integrity":"sha256-Ud4MIkm9ZKYr/OB/RpWoF0RX4Bjp8CNEsxbROlPf9n0="},"content/imgix/steps/2-final-42566d816a563ab2ab427b40730ddbcddfbb74cf0dff2eea55fb6dac8895d467.jpg":{"logical_path":"content/imgix/steps/2-final.jpg","mtime":"2022-10-05T06:50:13-04:00","size":43745,"digest":"42566d816a563ab2ab427b40730ddbcddfbb74cf0dff2eea55fb6dac8895d467","integrity":"sha256-QlZtgWpWOrKrQntAcw3bzd+7dM8N/y7qVfttrIiV1Gc="},"content/imgix/steps/3-724c6a82ee2fe96c23013de72237d225a04d0b8cc74ad2fa30e9948a430e2cf1.jpg":{"logical_path":"content/imgix/steps/3.jpg","mtime":"2022-10-05T06:50:13-04:00","size":13075,"digest":"724c6a82ee2fe96c23013de72237d225a04d0b8cc74ad2fa30e9948a430e2cf1","integrity":"sha256-ckxqgu4v6WwjAT3nIjfSJaBNC4zHStL6MOmUikMOLPE="},"content/imgix/steps/final-bdfcc823ef810b7ce63b9194c9ee41235a57f3e739a0b784d3a44759ec958d15.jpg":{"logical_path":"content/imgix/steps/final.jpg","mtime":"2022-10-05T06:50:13-04:00","size":47880,"digest":"bdfcc823ef810b7ce63b9194c9ee41235a57f3e739a0b784d3a44759ec958d15","integrity":"sha256-vfzII++BC3zmO5GUye5BI1pX8+c5oLeE06RHWeyVjRU="},"content/imgix/advanced-73d094a30670f2bc0a0b66a1e23d82587521a87eb71ffa6f01c53bf93227f19a.jpg":{"logical_path":"content/imgix/advanced.jpg","mtime":"2022-10-05T06:50:13-04:00","size":154819,"digest":"73d094a30670f2bc0a0b66a1e23d82587521a87eb71ffa6f01c53bf93227f19a","integrity":"sha256-c9CUowZw8rwKC2ah4j2CWHUhqH63H/pvAcU7+TIn8Zo="},"content/lamby/lamby-723dfdc344c076844d5ad81fe9baab2f1240650bee200865edd3dbe6d77c336a.jpg":{"logical_path":"content/lamby/lamby.jpg","mtime":"2022-10-05T06:50:13-04:00","size":50042,"digest":"723dfdc344c076844d5ad81fe9baab2f1240650bee200865edd3dbe6d77c336a","integrity":"sha256-cj39w0TAdoRNWtgf6bqrLxJAZQvuIAhl7dPb5td8M2o="},"content/sidekiq/sidekiq-architecture-55a7b0491a724dd5c4b39570ea60966d438f97bebc2e9562ab5881db319fdc0f.png":{"logical_path":"content/sidekiq/sidekiq-architecture.png","mtime":"2022-10-05T06:50:13-04:00","size":17114,"digest":"55a7b0491a724dd5c4b39570ea60966d438f97bebc2e9562ab5881db319fdc0f","integrity":"sha256-VaewSRpyTdXEs5Vw6mCWbUOPl768LpViq1iB2zGf3A8="},"content/processing/2019-07-23_2323-345741e1030f3f4fb0e81f84f6e1bc9d8cf5f02a202cfab4221c2fbf8768d6e6.png":{"logical_path":"content/processing/2019-07-23_2323.png","mtime":"2022-10-05T06:50:13-04:00","size":199754,"digest":"345741e1030f3f4fb0e81f84f6e1bc9d8cf5f02a202cfab4221c2fbf8768d6e6","integrity":"sha256-NFdB4QMPP0+w6B+E9uG8nYz18CogLPq0Ihwvv4do1uY="},"content/processing/2019-07-24_2058-0ae2fa145e4510dff9bbebd01327ed83d2219c74972a75f9395b25c5cdbf4477.png":{"logical_path":"content/processing/2019-07-24_2058.png","mtime":"2022-10-05T06:50:13-04:00","size":174161,"digest":"0ae2fa145e4510dff9bbebd01327ed83d2219c74972a75f9395b25c5cdbf4477","integrity":"sha256-CuL6FF5FEN/5u+vQEyftg9IhnHSXKnX5OVslxc2/RHc="},"content/processing/2019-07-24_2106-df211f48b40921b6e418d0eefa28cffb1b965d0cc73f331faeeabaf2cc0c5ef6.png":{"logical_path":"content/processing/2019-07-24_2106.png","mtime":"2022-10-05T06:50:13-04:00","size":49362,"digest":"df211f48b40921b6e418d0eefa28cffb1b965d0cc73f331faeeabaf2cc0c5ef6","integrity":"sha256-3yEfSLQJIbbkGNDu+ijP+xuWXQzHPzMfruq68swMXvY="},"content/sidekiq/sidekiq-pro-3bfb28483017046cddbbeea528ee831351b3d4bc44e245e9008641f3ecca1bf8.png":{"logical_path":"content/sidekiq/sidekiq-pro.png","mtime":"2022-10-05T06:50:13-04:00","size":15727,"digest":"3bfb28483017046cddbbeea528ee831351b3d4bc44e245e9008641f3ecca1bf8","integrity":"sha256-O/soSDAXBGzdu+6lKO6DE1Gz1LxE4kXpAIZB8+zKG/g="},"content/githubactions-part1/getting-started-1-11b27f87329096758a9fb863ef51cfad256cc037131e0f0b1ff96715f02b6971.png":{"logical_path":"content/githubactions-part1/getting-started-1.png","mtime":"2022-10-05T06:50:13-04:00","size":74111,"digest":"11b27f87329096758a9fb863ef51cfad256cc037131e0f0b1ff96715f02b6971","integrity":"sha256-EbJ/hzKQlnWKn7hj71HPrSVswDcTHg8LH/lnFfAraXE="},"content/githubactions-part1/getting-started-2-0f8df01b7bb3cfcee139c4660ad6809c6c8d51b835698621eeaae8ea2f17191d.png":{"logical_path":"content/githubactions-part1/getting-started-2.png","mtime":"2022-10-05T06:50:13-04:00","size":75343,"digest":"0f8df01b7bb3cfcee139c4660ad6809c6c8d51b835698621eeaae8ea2f17191d","integrity":"sha256-D43wG3uzz87hOcRmCtaAnGyNUbg1aYYh7qro6i8XGR0="},"content/githubactions-part1/sqlite3.h-missing-c7238e45fec7653852119a511d6c7f324bc7286b72856d25545da207a98500c7.png":{"logical_path":"content/githubactions-part1/sqlite3.h-missing.png","mtime":"2022-10-05T06:50:13-04:00","size":18280,"digest":"c7238e45fec7653852119a511d6c7f324bc7286b72856d25545da207a98500c7","integrity":"sha256-xyOORf7HZThSEZpRHWx/MkvHKGtyhW0lVF2iB6mFAMc="},"content/githubactions-part1/greener-37f000dd8772fe3cdb04c5320283b6f7a6d827c8a4296a367d4a8425519abf8a.png":{"logical_path":"content/githubactions-part1/greener.png","mtime":"2022-10-05T06:50:13-04:00","size":14153,"digest":"37f000dd8772fe3cdb04c5320283b6f7a6d827c8a4296a367d4a8425519abf8a","integrity":"sha256-N/AA3Ydy/jzbBMUyAoO296bYJ8ikKWo2fUqEJVGav4o="},"content/githubactions-part1/pick-a-name-9043b5306864c99e9256383e8e618c7d2fcddf87a5ace6dd5863d01f3c8065da.png":{"logical_path":"content/githubactions-part1/pick-a-name.png","mtime":"2022-10-05T06:50:13-04:00","size":7437,"digest":"9043b5306864c99e9256383e8e618c7d2fcddf87a5ace6dd5863d01f3c8065da","integrity":"sha256-kEO1MGhkyZ6SVjg+jmGMfS/N34elrObdWGPQHzyAZdo="},"content/githubactions-part1/badge-398ae483455e770d9e51da964075caf992f37b068b6b12ddadd399d7d13805f2.png":{"logical_path":"content/githubactions-part1/badge.png","mtime":"2022-10-05T06:50:13-04:00","size":10792,"digest":"398ae483455e770d9e51da964075caf992f37b068b6b12ddadd399d7d13805f2","integrity":"sha256-OYrkg0Vedw2eUdqWQHXK+ZLzewaLaxLdrdOZ19E4BfI="},"content/internship_lunch-033d2e567072e89f0e9730e1883dcfb5e99ab7dcfb44474292b83893bab86163.png":{"logical_path":"content/internship_lunch.png","mtime":"2022-10-05T06:50:13-04:00","size":84167,"digest":"033d2e567072e89f0e9730e1883dcfb5e99ab7dcfb44474292b83893bab86163","integrity":"sha256-Az0uVnBy6J8OlzDhiD3Ptemat9z7REdCkrg4k7q4YWM="},"content/working-at-custom-ink/logan-screenprinting-558806ca6e8329772d7e3eee9ca4c50203bf85e0e118c3d393fbcfac0fd6ab67.jpg":{"logical_path":"content/working-at-custom-ink/logan-screenprinting.jpg","mtime":"2022-10-05T06:50:13-04:00","size":19282,"digest":"558806ca6e8329772d7e3eee9ca4c50203bf85e0e118c3d393fbcfac0fd6ab67","integrity":"sha256-VYgGym6DKXctfj7unKTFAgO/heDhGMPTk/vPrA/Wq2c="},"content/working-at-custom-ink/tech-logos-3a05461db679fd21965da95d46eef6d2e6dd90b394f05224a4bef11843040ee3.png":{"logical_path":"content/working-at-custom-ink/tech-logos.png","mtime":"2022-10-05T06:50:13-04:00","size":29182,"digest":"3a05461db679fd21965da95d46eef6d2e6dd90b394f05224a4bef11843040ee3","integrity":"sha256-OgVGHbZ5/SGWXaldRu720ubdkLOU8FIkpL7xGEMEDuM="},"content/cloud-cookies/our-goal-cookie-historgram-a30e6c17078564dea909a10dc62d7b933fd0a9075f6768f44deae5a2cf478b98.jpg":{"logical_path":"content/cloud-cookies/our-goal-cookie-historgram.jpg","mtime":"2022-10-05T06:50:13-04:00","size":35393,"digest":"a30e6c17078564dea909a10dc62d7b933fd0a9075f6768f44deae5a2cf478b98","integrity":"sha256-ow5sFweFZN6pCaENxi17kz/QqQdfZ2j0Terlos9Hi5g="},"content/cloud-cookies/monitoring-d5c2151f652f0468fa18728cc801b1bc6b5d3ee83675352941795d40ec6782a4.png":{"logical_path":"content/cloud-cookies/monitoring.png","mtime":"2022-10-05T06:50:13-04:00","size":42508,"digest":"d5c2151f652f0468fa18728cc801b1bc6b5d3ee83675352941795d40ec6782a4","integrity":"sha256-1cIVH2UvBGj6GHKMyAGxvGtdPug2dTUpQXldQOxngqQ="},"content/cloud-cookies/analysis-4443a3747c705b8d8f42dbe345bd095263ec140fcc964079bd4ba5f980f3ec57.png":{"logical_path":"content/cloud-cookies/analysis.png","mtime":"2022-10-05T06:50:13-04:00","size":13256,"digest":"4443a3747c705b8d8f42dbe345bd095263ec140fcc964079bd4ba5f980f3ec57","integrity":"sha256-REOjdHxwW42PQtvjRb0JUmPsFA/MlkB5vUul+YDz7Fc="},"content/tapping-into-logs/sumo-logic-query-6423fdf74608a34b5a7a383036751091c20a7a0365ac4cb2a35de1e17d8e07f2.png":{"logical_path":"content/tapping-into-logs/sumo-logic-query.png","mtime":"2022-10-05T06:50:13-04:00","size":15805,"digest":"6423fdf74608a34b5a7a383036751091c20a7a0365ac4cb2a35de1e17d8e07f2","integrity":"sha256-ZCP990YIo0taejgwNnUQkcIKegNlrEyyo13h4X2OB/I="},"content/tapping-into-logs/sumo-logic-report-568740550d282d0071e0059f0f8ef72e13be0c89b5d4939094f9b80eb8fb3cc2.png":{"logical_path":"content/tapping-into-logs/sumo-logic-report.png","mtime":"2022-10-05T06:50:13-04:00","size":24773,"digest":"568740550d282d0071e0059f0f8ef72e13be0c89b5d4939094f9b80eb8fb3cc2","integrity":"sha256-VodAVQ0oLQBx4AWfD473LhO+DIm11JOQlPm4Drj7PMI="},"content/company-culture-around-the-globe/wow_tv-9421ac7574c374607ca0c21e42d4f4f66728657c92eb1df8244f22a147940eed.jpg":{"logical_path":"content/company-culture-around-the-globe/wow_tv.jpg","mtime":"2022-10-05T06:50:13-04:00","size":789772,"digest":"9421ac7574c374607ca0c21e42d4f4f66728657c92eb1df8244f22a147940eed","integrity":"sha256-lCGsdXTDdGB8oMIeQtT09mcoZXyS6x34JE8ioUeUDu0="},"content/company-culture-around-the-globe/prague_wow_system-4a40f88befd668069a1f55ab95df642efcfb4ba98e360980fb857a29cfd251ce.jpg":{"logical_path":"content/company-culture-around-the-globe/prague_wow_system.jpg","mtime":"2022-10-05T06:50:13-04:00","size":316563,"digest":"4a40f88befd668069a1f55ab95df642efcfb4ba98e360980fb857a29cfd251ce","integrity":"sha256-SkD4i+/WaAaaH1Wrld9kLvz7S6mONgmA+4V6Kc/SUc4="},"content/company-culture-around-the-globe/prague_office-ad09f1acdd47af6353ebb6f30b7b4f2d5d9bff2b96204d9286e7902f639955d6.jpg":{"logical_path":"content/company-culture-around-the-globe/prague_office.jpg","mtime":"2022-10-05T06:50:13-04:00","size":267379,"digest":"ad09f1acdd47af6353ebb6f30b7b4f2d5d9bff2b96204d9286e7902f639955d6","integrity":"sha256-rQnxrN1Hr2NT67bzC3tPLV2b/yuWIE2ShueQL2OZVdY="},"content/aurora-serverless/ruby-gems-f734b8e2f5931ef0e5a82530b143a978c0e0c341502fb817aba90f72e458b517.gif":{"logical_path":"content/aurora-serverless/ruby-gems.gif","mtime":"2022-10-05T06:50:13-04:00","size":1697980,"digest":"f734b8e2f5931ef0e5a82530b143a978c0e0c341502fb817aba90f72e458b517","integrity":"sha256-9zS44vWTHvDlqCUwsUOpeMDgw0FQL7gXq6kPcuRYtRc="},"content/aurora-serverless/serverlessHero-badge-min-5b1c815b4bec88c668720fda5358aae9ab030b662a679b518d7431d5b952e328.png":{"logical_path":"content/aurora-serverless/serverlessHero-badge-min.png","mtime":"2022-10-05T06:50:13-04:00","size":3589,"digest":"5b1c815b4bec88c668720fda5358aae9ab030b662a679b518d7431d5b952e328","integrity":"sha256-WxyBW0vsiMZocg/aU1iq6asDC2YqZ5tRjXQx1blS4yg="},"content/aurora-serverless/hero-ken-collins-min-d995876e07f891979f61c75266ecea9c97702c8f023f2bbd35ba3ce5270a2976.jpg":{"logical_path":"content/aurora-serverless/hero-ken-collins-min.jpg","mtime":"2022-10-05T06:50:13-04:00","size":22160,"digest":"d995876e07f891979f61c75266ecea9c97702c8f023f2bbd35ba3ce5270a2976","integrity":"sha256-2ZWHbgf4kZefYcdSZuzqnJdwLI8CPyu9Nbo85ScKKXY="},"content/varnish-replace/backend-services-f1d6b94a50d3f736faf5d47cdeacf2cf4919227a92c4ca55efe70623e71920f6.png":{"logical_path":"content/varnish-replace/backend-services.png","mtime":"2022-10-05T06:50:13-04:00","size":8231,"digest":"f1d6b94a50d3f736faf5d47cdeacf2cf4919227a92c4ca55efe70623e71920f6","integrity":"sha256-8da5SlDT9zb69dR83qzyz0kZInqSxMpV7+cGI+cZIPY="},"content/varnish-replace/caching-4cc405bb8047220fc37a1b8dca9713837eb00258e207451158fec1f2392a231a.png":{"logical_path":"content/varnish-replace/caching.png","mtime":"2022-10-05T06:50:13-04:00","size":17934,"digest":"4cc405bb8047220fc37a1b8dca9713837eb00258e207451158fec1f2392a231a","integrity":"sha256-TMQFu4BHIg/DehuNypcTg36wAljiB0URWP7B8jkqIxo="},"content/varnish-replace/varnish-58c2d4be776138b588e7d880e4aa3f68e651197aa4a4e032b688a904ee74a23f.png":{"logical_path":"content/varnish-replace/varnish.png","mtime":"2022-10-05T06:50:13-04:00","size":17983,"digest":"58c2d4be776138b588e7d880e4aa3f68e651197aa4a4e032b688a904ee74a23f","integrity":"sha256-WMLUvndhOLWI59iA5Ko/aOZRGXqkpOAytoipBO50oj8="},"content/varnish-replace/varnish-uhoh-6ed4c555d8e00d43b375ae989e11d5bce0748140473bc8cf7a38045920c11cfb.png":{"logical_path":"content/varnish-replace/varnish-uhoh.png","mtime":"2022-10-05T06:50:13-04:00","size":15792,"digest":"6ed4c555d8e00d43b375ae989e11d5bce0748140473bc8cf7a38045920c11cfb","integrity":"sha256-btTFVdjgDUOzda6YnhHVvOB0gUBHO8jPejgEWSDBHPs="},"content/varnish-replace/transition-6df2a48b0349c799af033950b0f7bc76e2158ac302d02dd2c8f23b6431b69cf1.png":{"logical_path":"content/varnish-replace/transition.png","mtime":"2022-10-05T06:50:13-04:00","size":12828,"digest":"6df2a48b0349c799af033950b0f7bc76e2158ac302d02dd2c8f23b6431b69cf1","integrity":"sha256-bfKkiwNJx5mvAzlQsPe8duIVisMC0C3SyPI7ZDG2nPE="},"content/varnish-replace/finalstate-9dcb4c17832724613cad88c92c5f70659662f0a49e478fdb94bf5b5ffc132954.png":{"logical_path":"content/varnish-replace/finalstate.png","mtime":"2022-10-05T06:50:13-04:00","size":10548,"digest":"9dcb4c17832724613cad88c92c5f70659662f0a49e478fdb94bf5b5ffc132954","integrity":"sha256-nctMF4MnJGE8rYjJLF9wZZZi8KSeR4/blL9bX/wTKVQ="},"content/lambda-file-systems/access-point-70ae0b8ee149f62acd5eb939f2b92ee21bcca337a0df593065bba775b525b66c.png":{"logical_path":"content/lambda-file-systems/access-point.png","mtime":"2022-10-05T06:50:13-04:00","size":35733,"digest":"70ae0b8ee149f62acd5eb939f2b92ee21bcca337a0df593065bba775b525b66c","integrity":"sha256-cK4LjuFJ9irNXrk58rku4hvMozeg31kwZbundbUltmw="},"content/lambda-file-systems/lambda-rails-360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e.png":{"logical_path":"content/lambda-file-systems/lambda-rails.png","mtime":"2022-10-05T06:50:13-04:00","size":44521,"digest":"360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e","integrity":"sha256-Ng+Q1m+OqHOcv3M0082pGDk+IYRpZT3grg4Oh7ELrC4="},"content/lambda-file-systems/datasync-task-0b9663539358843ad91455a48ffe0a3d3471934247fdbaeac1ad70df8a227d15.png":{"logical_path":"content/lambda-file-systems/datasync-task.png","mtime":"2022-10-05T06:50:13-04:00","size":21741,"digest":"0b9663539358843ad91455a48ffe0a3d3471934247fdbaeac1ad70df8a227d15","integrity":"sha256-C5ZjU5NYhDrZFFWkj/4KPTRxk0JH/brqwa1w34oifRU="},"content/ssm-crr-lambda/ssm_crr_customink-8406544a87d272f0ffa7cf246890b8d84e0eac361329197835f08cd4398de3d2.png":{"logical_path":"content/ssm-crr-lambda/ssm_crr_customink.png","mtime":"2022-10-05T06:50:13-04:00","size":41001,"digest":"8406544a87d272f0ffa7cf246890b8d84e0eac361329197835f08cd4398de3d2","integrity":"sha256-hAZUSofScvD/p88kaJC42E4OrDYTKRl4NfCM1DmN49I="}},"assets":{"fontello.eot":"fontello-5c6d5a4b860bc986924a1ec510dcddbc10a425672dc0e3ba37e3bd4020e9d84f.eot","fontello.woff":"fontello-a11118120d4b90a4c4f937c40ed47f13b4ae131b1c6371fd85ec2843d7bc7b12.woff","fontello.ttf":"fontello-813519383401ebf865d03b706d20d1624b232501f0accdfa1bff4d28265d3f74.ttf","fontello.svg":"fontello-f25b435813c4882a6189f926bc10b0fc872c358e3071d21d8386765518bc4278.svg","tbicons.eot":"tbicons-096fa3970ce3a3595debd167e1cd11422745885e43987130c7ad2b9fd020a910.eot","tbicons.woff":"tbicons-a255c4d7531756c350cd3cb8ac924a3a70dba66357bc6f53cdcce66be69e1ca4.woff","tbicons.ttf":"tbicons-04c88863a35923e4156691375c162cd8b6fb44104e3cecbc17972c89da722d17.ttf","tbicons.svg":"tbicons-737a98cc543fbd45788943a259ba88d32a06bdd4e57cf10d9631866dce5df09e.svg","app.css":"app-7364e5d923858a09e03d1594b7afe5a66431387a5a0623957af903baceb3208d.css","CustomInk_Tech_Color.png":"CustomInk_Tech_Color-1460f9e847670e2626e66143266004749ab6c7204a8d5a2ae394613f986c473d.png","content/john-dyer-first-deploy.jpg":"content/john-dyer-first-deploy-f45c9bf89c3960034590cda4d06aa7ad225e0bf82864c2d3100e8cab7c85bef2.jpg","content/lambda-file-systems/masthead.jpg":"content/lambda-file-systems/masthead-867a17f618e0c2f6b04260b68de597850d7c98b0d9872478f4317988abacce1e.jpg","content/lambda-file-systems/efs-logo.png":"content/lambda-file-systems/efs-logo-07c46dafb5ab211876311a1f125a35d320d781052fb0bc128e3fd17b73390357.png","content/cookiecutter/masthead.jpg":"content/cookiecutter/masthead-81ebef04dce2278e5c5776780e1b9bca8ca9b23e1a0a05aa3edf80594d3b62fd.jpg","content/aurora-serverless/lambda-rails.png":"content/aurora-serverless/lambda-rails-360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e.png","content/aurora-serverless/masthead.jpg":"content/aurora-serverless/masthead-5a56cf63e72393d6abff92c8b05178363bbd07d444e19ed6dca99435403f5b5b.jpg","content/cloud-cookies/masthead.jpg":"content/cloud-cookies/masthead-2a39e4b23fb8985178be8224a591a9485990c8e9d1b6eea4dd5c74c88b5799b2.jpg","content/githubactions-part1/masthead.png":"content/githubactions-part1/masthead-c3229ebf2a4d7c6398435d69eecb25c0fb35179c9d610c844a3f4404a5c6cba8.png","content/lamby/masthead.jpg":"content/lamby/masthead-2958bbf108ff6a30c332bce34da1f71f9c978794124fae83cb048ae3cfcee727.jpg","content/imgix/masthead2-f.jpg":"content/imgix/masthead2-f-5c55d7a6ff6e06cde41ff049f33a89b95697189e9d77e990d0a8aaca82ad617a.jpg","content/power-moves/masthead.jpg":"content/power-moves/masthead-00358e30452214dc1f16bc2293f4d5577dc9e2d6b3761fc6a6f71b8a63602e6c.jpg","content/static-components/masthead-colors.jpg":"content/static-components/masthead-colors-1162421fd0b8eb402443a61e871590d33767dfb7f2ca6fca439c5a1fd83e9b38.jpg","content/colored-logging.png":"content/colored-logging-86436848bcea9b5fea72c77f2031c12c1b9dbcc156a5f8ef177644ad1ac1f099.png","content/svg-planet-stars.png":"content/svg-planet-stars-08c9b4337e6d15b697fff6d4a6b8fb23cdc840d040f3aa8aed11df307685ec1a.png","content/svg-our-awesome-sketch.png":"content/svg-our-awesome-sketch-c556fd04159b8596f809ad503a9657fcbdf4331de6a36ca90ea44f9e01cc8a41.png","content/svg-planet-stars-v1.png":"content/svg-planet-stars-v1-ece9734ba2b6813891665e3c67070f266e0f58cf72003341903e551da9fb2020.png","authors/serverlesshero.png":"authors/serverlesshero-2e96cfd1ad50c766ec3d5bde04c75aaa3709b59a33599346c1968f152a6638ae.png","content/arild-shirazi.jpg":"content/arild-shirazi-7458f4d1710e5c667a8ca81bd9fe53693cdabc3f219d3da028d2fd59a6d5d8b3.jpg","content/api-gateway/authorization.png":"content/api-gateway/authorization-8c96576ad0783e5d3dc2d2afd0fd00362a1b8eb6fbccb2e54c01fc8dd9948763.png","content/outrunning-a-hurricane.jpg":"content/outrunning-a-hurricane-dba8f2e4aeed28dc33af754692cdf80a43aa9a0a178c5d165eb15aef7f424c52.jpg","content/how_dismantle_a_data_center/3par.jpg":"content/how_dismantle_a_data_center/3par-36c6b8c0e49bedadaa178d16172518ca49ebc891afc75adac95e40f243a45135.jpg","content/how_dismantle_a_data_center/gerald.jpg":"content/how_dismantle_a_data_center/gerald-2e0b390e70aaf181de184a3123a4031542a3c1dd4ab7c744f96d6e62d3a605a5.jpg","content/how_dismantle_a_data_center/wires.jpg":"content/how_dismantle_a_data_center/wires-44e26bdf578405fb6bdccd7c529cf4ea74e817b0e90b29c4747d3853452c092a.jpg","content/how_dismantle_a_data_center/truck.jpg":"content/how_dismantle_a_data_center/truck-42606487a06ef4d07335c2f5bf99a64b6b3494580750057fe8748d228529e18d.jpg","content/ruby_for_good_2016/smithsonian.jpg":"content/ruby_for_good_2016/smithsonian-c98f941e7c42e6e5cefd0c4693663a7b74c8b2c7e7d78d5c0bf0bc4fb1d06fc6.jpg","content/ruby_for_good_2016/campus.jpg":"content/ruby_for_good_2016/campus-6ac14cd4f0eb116fe28776ad5ef7d311c45737ae6e68d5e85cb117d15aa08de0.jpg","content/ruby_for_good_2015/kitten.jpg":"content/ruby_for_good_2015/kitten-fd73cb1d457b5f57e00395069de120ac656a20b2640fd3ad2a6ec4aa389cd7d2.jpg","content/best-tech-manager/masthead-1776-keyboard-artwork.jpg":"content/best-tech-manager/masthead-1776-keyboard-artwork-a03546719667c8d597ffeb1759620267cb70feb53862698820f57c31cc5d07cd.jpg","content/halloween2019/rangers.png":"content/halloween2019/rangers-bf22fe767f867ef1d11f0ad125dfa4122f4148817414f2a2cbf223042c15a540.png","content/halloween2019/hook.jpg":"content/halloween2019/hook-10bda45b0e0410215480abebf9b77b2df5e48b5ec980f56f403b9440820245e5.jpg","content/halloween2019/nintendo.jpg":"content/halloween2019/nintendo-d5baf96677e014c8f748808fcdca8b7ad0b7083d8008a3672feb1eac8f7c3406.jpg","content/halloween2019/toystory.png":"content/halloween2019/toystory-5e2af23d4248e5392825cad05dd46a2a24d05ef8a19d12064c727a9f5e82e1df.png","content/halloween2019/2018.png":"content/halloween2019/2018-c68a5323e7fecabec9877d35dc70d52ae4212f959a3d2b0261d4488e47947bac.png","content/halloween2019/90s.png":"content/halloween2019/90s-af4ddd64958b62b7d361eb6bf8e9abbf2ab486280a4f0c14c5bb07dacada2360.png","content/career-fair/career-fair-uva.jpg":"content/career-fair/career-fair-uva-598ac96931b65efb06a59a322879ca1669a2ca031e0ad3493c3ccb892e0b4f6e.jpg","content/cypress/cypress-nav.gif":"content/cypress/cypress-nav-284961bfd5b625abb9a41415d598d9a976bde5e4e956be7c972c1ac12941b770.gif","content/cypress/cypress-selector.gif":"content/cypress/cypress-selector-f73313665a7bead2fedba190b02d297029a1f863f85ffab51e87a7d4aff5590f.gif","content/JSConferences/ReactNative-min.png":"content/JSConferences/ReactNative-min-812e086884a943daa23a5ba07fce55f27426e4880cac04434de3955f282d549e.png","content/JSConferences/NationJS-booth-min.jpg":"content/JSConferences/NationJS-booth-min-0deef83b4b3938ee6c5976ed45f4ef72af0831a44501f7a514d2a20135d932c3.jpg","content/like-a-ross.jpg":"content/like-a-ross-8119120f145b0d6bd8d9fbf087c81df45eb37c92a1b9abed35e39fb123ed8e7d.jpg","content/ecomiccon/first_attendees.jpg":"content/ecomiccon/first_attendees-de92c4802a6a5c637abf40587f55e96537da768bc63362693a122671a03f2de8.jpg","content/ecomiccon/first_attendees2.jpg":"content/ecomiccon/first_attendees2-7405164f7fd209d5f513a6db386de2a13f8e331d6d1a3616a23f19f49f2885c4.jpg","content/ecomiccon/by_the_stairs.jpg":"content/ecomiccon/by_the_stairs-7b4430e7f8db6810adbc2ce66cc8f111ed8c20d120bad47823c51d09765ce177.jpg","content/ecomiccon/hanging_out.jpg":"content/ecomiccon/hanging_out-1dbbce0f0dd1b4cfd1a8ff22d86bfa4d1329fd442ab48a57dac2db108c3092e2.jpg","content/ecomiccon/gogopowerrangers.jpg":"content/ecomiccon/gogopowerrangers-01dfdd7b5ad6462a4a1081a61725b390ab19eab5afd433b1819947d62642903d.jpg","content/ecomiccon/rocket.jpg":"content/ecomiccon/rocket-1e7931bfff1152a8dda69118b80192a6c8cf76dbca8bfe43e880e5369105ee1c.jpg","content/ecomiccon/strength_test.jpg":"content/ecomiccon/strength_test-c560ee667d8d68df87da6218e9512f4c6265cb1e67bc0b55018243bc9d376917.jpg","content/ecomiccon/drdoom_link.jpg":"content/ecomiccon/drdoom_link-a9c7801652f196ddd8cc1d454cf6e9c2c7ea4664cf5facd42c120a7b1b3b527d.jpg","content/ecomiccon/morhpin_lunch.jpg":"content/ecomiccon/morhpin_lunch-ab0e13bfe301a53a11ec83af82fe4a50d33f4d7ec462251d5230a24f80ebef24.jpg","content/ecomiccon/working_link.jpg":"content/ecomiccon/working_link-64d49a31c5309cf694a8462b40482785cdc8f812a9fbf0a07efc8ee5d139928e.jpg","content/ecomiccon/super_meeting.png":"content/ecomiccon/super_meeting-ca825c4932b6d4ae674cd3eaca8931ff3a08388a67096450c43531e9a0c07a22.png","content/ecomiccon/kickass_thirsty.jpg":"content/ecomiccon/kickass_thirsty-6c601b06f864d5433d2bd7271548ad1678fd18926d75556b312b59a650850c3c.jpg","content/ecomiccon/working_riker.jpg":"content/ecomiccon/working_riker-2ef8edace8686e9837471e41b955f708139209513df446de7081c7aab6aa3f8c.jpg","content/ecomiccon/photo_thrones.jpg":"content/ecomiccon/photo_thrones-2274c5db2349af0fd44d950d3d30e1903c23866ffdd4b7e960ab9afafdda3ed3.jpg","content/ecomiccon/photo_power.jpg":"content/ecomiccon/photo_power-f50002be0e99a4ef7865b86ae1fe1d9f320aa5dd50f25333ecc75f7c51d58465.jpg","content/ecomiccon/photo_marvel.jpg":"content/ecomiccon/photo_marvel-847e392b63f296bee8eb9ebd51d9a6541c4319a01bed27a8f36a0c7be873f29f.jpg","content/ecomiccon/all_of_ecomiccon.jpg":"content/ecomiccon/all_of_ecomiccon-a4679a345038eab38e4b28c0973739a1d0193ba1154f75b3a3c3fcc2e751a079.jpg","content/rubyconf5k_2014/stafford.jpg":"content/rubyconf5k_2014/stafford-e537c7852df7c461cd572b25b0db38d4f4b8748504d045e3aab3a5212d80c6a8.jpg","content/rubyconf5k_2014/shirts.jpg":"content/rubyconf5k_2014/shirts-8d88c259d652d34716d73e5ef0303c4066c2388a180eb0f23372fd061460bd91.jpg","content/rubyconf5k_2014/kylepeyton.jpg":"content/rubyconf5k_2014/kylepeyton-3cf69afa9af902d839a9d0d0016d4c9d8f056b61eff028a27d4935434660266b.jpg","content/rubyconf5k_2014/bridgetlandis.jpg":"content/rubyconf5k_2014/bridgetlandis-2f44464735ed6d816427430f9e4c0f01bcb5ef5441ddd2ecafd742de3f07a0cf.jpg","content/rubyconf5k_2014/justinschumacher.jpg":"content/rubyconf5k_2014/justinschumacher-87c8a6ffec0a45d1f34262bc0bc0506a91996719858204519775d689db1e42c7.jpg","content/bundler_inline_gemfile/pre_flag.png":"content/bundler_inline_gemfile/pre_flag-0180d46177063c57a3378b4cf6e021082a1de074506a82064a9d11a8192d0b87.png","content/bundler_inline_gemfile/post_flag.png":"content/bundler_inline_gemfile/post_flag-96759bb2218646ba696491d739be1f7c28a578012931c71893f00dfba835dd84.png","content/ruby_for_good_2015/kitchen.jpg":"content/ruby_for_good_2015/kitchen-111bb1986c02777f01f7aa860743dfd82a9c8f5553d0e326ae8603f851432403.jpg","content/ruby_for_good_2015/pairing.jpg":"content/ruby_for_good_2015/pairing-ccfaf0b6ff090b62c6f8c269be758c83bf68808591beb0d47850a835fe2c087d.jpg","content/ruby_for_good_2015/group-hug.jpg":"content/ruby_for_good_2015/group-hug-1e7025598e1a81c0756b38f499c55132a70d8f1993f164506a7afff167e0539f.jpg","content/ruby_for_good_2015/group-heart.jpg":"content/ruby_for_good_2015/group-heart-944f814f7946bcc58534f6a6ea5edc6a543368e77c039548143928de67706a51.jpg","content/ossdatacamp/meeting.jpg":"content/ossdatacamp/meeting-6348827ac90cef0e7d7f96c5f8b1df053b94b0d3d8439a5d2949a7f707ddf571.jpg","content/ossdatacamp/learn-ruby.jpg":"content/ossdatacamp/learn-ruby-0b4c5cd3070a6c9d07024adafa582678e87402fcb715ba6eafa8e219a66aa965.jpg","content/ossdatacamp/keepit-weird.jpg":"content/ossdatacamp/keepit-weird-d53badd278a1edb1c401e4586df6bfabdb6877e297cbddbe1106cd6f9da6e1ae.jpg","content/ossdatacamp/sql-server-stretch.png":"content/ossdatacamp/sql-server-stretch-dd93c4c92375890e248d7c85047e1540c2e2bc75eecf3444faf78395ad024832.png","content/ossdatacamp/fetch-tobias-ternstrom.jpg":"content/ossdatacamp/fetch-tobias-ternstrom-a2049eccce1dc3aa59f8e73633e8c919b1ce22b93ac1be8934bb8a057ecf7b80.jpg","content/rubyconf5k_2015/shirt_front.jpg":"content/rubyconf5k_2015/shirt_front-201946e782faf245391493c649de7f0ba2498150f5bbab4f22b7a4c216adda29.jpg","content/rubyconf5k_2015/shirt_back.jpg":"content/rubyconf5k_2015/shirt_back-2fa83ab884df9a3fadc65abf6f330c90a42f46bc75ffcb59f62c18f6c63f0e91.jpg","content/rolling-travisci-builds.gif":"content/rolling-travisci-builds-9c7cad612f28eb2e30bc03efac7a717b5b8002e93c3f23cf0f537b25b79a4d7c.gif","content/ruby_for_good_2016/campfire-4.jpg":"content/ruby_for_good_2016/campfire-4-44a53f3bfd88404abb2ad7a61ad588c5a04dd9b1d15b1dc503d7613e264d7f2f.jpg","content/ruby_for_good_2016/campfire-5.jpg":"content/ruby_for_good_2016/campfire-5-4a3c5c06dee84804dd7a4da3dae52c4c1925866678f2a519ba998aee1b34cb72.jpg","content/ruby_for_good_2016/board-games.jpg":"content/ruby_for_good_2016/board-games-8cc0520a5e76d3d7d59b82aa82d0be11bd68e5fc2c4059df452cb8a56c4b8b3b.jpg","content/ruby_for_good_2016/working.jpg":"content/ruby_for_good_2016/working-124ae1411d040f594fc2a7bddfe94ddd829a0f6722f18bf8303c40fede53986a.jpg","content/ruby_for_good_2016/working-2.jpg":"content/ruby_for_good_2016/working-2-ec511a7b249641b9d722d48b7b53ab790471aeddf9055dc8800a3ae91e4e124c.jpg","content/ruby_for_good_2016/campfire-2.jpg":"content/ruby_for_good_2016/campfire-2-ce79d504ed02b314fb5a9e23aca81ff8816795b18a4d5fe482c1cf6d6a2c23f0.jpg","content/ruby_for_good_2016/inkers.jpg":"content/ruby_for_good_2016/inkers-7c5134d2cbb72c062356000122899ba49f6077aa236a65eb6a9de4d7e8c38a33.jpg","content/ruby_for_good_2016/shirts.jpg":"content/ruby_for_good_2016/shirts-9f9ffb92c97df6c53dbb92e4012985222ad50befc9edc7c125a14657c380135a.jpg","content/ruby_for_good_2016/gooders.jpg":"content/ruby_for_good_2016/gooders-52bb2e52f9578f75e128d6dffeafb195e2ddc27941f20329b7c90b2f82a333b8.jpg","content/rebuilding-the-plane-were-flying-in/cowboy_airplain.png":"content/rebuilding-the-plane-were-flying-in/cowboy_airplain-69c9c283776f8da4b84af61f8a74792e5404a0e7060797228633197f7d68dfdd.png","content/rebuilding-the-plane-were-flying-in/lightening_brain.png":"content/rebuilding-the-plane-were-flying-in/lightening_brain-ea6ff38f13d583effb8c25912d0b47ea936a855d7fb0e5336fde5ff408b67d5f.png","content/rebuilding-the-plane-were-flying-in/wrench_man.png":"content/rebuilding-the-plane-were-flying-in/wrench_man-d5d169c1acc3b30fa6dfa8ba665226816de30dbe87edd9cf68690b497f1c3488.png","content/halloween2016/front-desk.jpg":"content/halloween2016/front-desk-e82945632033105b967fd98c112c6a6c682b6adde160e59d6ac23b3b6cd69e78.jpg","content/halloween2016/dragondojo.jpg":"content/halloween2016/dragondojo-58da63b265a6572c05005798bbae2923236dbb11ff6536586a4c690768ff5dde.jpg","content/halloween2016/dojodecor.jpg":"content/halloween2016/dojodecor-ebb87cae436d350cf424c4863e0b1eef7f08513d5395f257d4e7ac905610813b.jpg","content/halloween2016/3rdfloordecor.jpg":"content/halloween2016/3rdfloordecor-b12e16005ab1fd7e5dde87a8690da4769ea8c01172132d603c62786634be01dc.jpg","content/halloween2016/treats.jpg":"content/halloween2016/treats-499d5397bf53f308a64559a6a24dc996e94e9cca0d4e2680a9c863d98b3343a9.jpg","content/halloween2016/ghost-busters-chill.jpg":"content/halloween2016/ghost-busters-chill-ba8e5cbcbdac45705289882cbc621b2792a6b9cfb71681e788858b00ee300140.jpg","content/halloween2016/ghost-buster-coffee.jpg":"content/halloween2016/ghost-buster-coffee-d8f5f857a286f5ad3e2fdf8a4653cd072ee18d899b706340bb41a159488e3b7f.jpg","content/halloween2016/wolverine.jpg":"content/halloween2016/wolverine-48b1dc13d593618726fe2b42ed46fdb7356ca76a0ead2732ce8375d5bdf00de6.jpg","content/halloween2016/avengers.jpg":"content/halloween2016/avengers-3d415f55c4b62e0cae5e221953fb690ca457531f219601d48f221b3fc767e4f4.jpg","content/halloween2016/batmankolas.jpg":"content/halloween2016/batmankolas-0f0e2540300eea8cc63390ea859c691a7473c3a66fd0d4a072291dcaadaba65c.jpg","content/halloween2016/link.jpg":"content/halloween2016/link-fcac7b1644d9c194aa351c5067cad22fd3ebfca2f502e385774ecf874beeedc1.jpg","content/halloween2016/staypuft.jpg":"content/halloween2016/staypuft-db7844cae519ea7656b9c7a4a518c2d9ac67e0ebab21646ba0ead49bde1d57d6.jpg","content/halloween2016/scream.jpg":"content/halloween2016/scream-e6f73a68804b13c246f8550a50556df82e8520a8886c68567fee958d73bd6ba8.jpg","content/halloween2016/disneyvillans.jpg":"content/halloween2016/disneyvillans-7739775657501c562464f1b5e1fa3c2b616c039a584e92c7cde9586b79e3b342.jpg","content/halloween2016/star-wars.jpg":"content/halloween2016/star-wars-57e16a7f95a92e516d2566c87112aa459392b7c09510ecb148063292d44792b5.jpg","content/halloween2016/phasmazoo2.jpg":"content/halloween2016/phasmazoo2-7e8b69a9907f48a643a36c35480c56d780066913e0c04eaa98f8015c0a04877b.jpg","content/halloween2016/tacobell.jpg":"content/halloween2016/tacobell-6db2d1114366296f718f492b1511116575466f5446b11ef85e03afa3249de1de.jpg","content/halloween2016/ewok.jpg":"content/halloween2016/ewok-1ab5c5e3c2a1cc0b60e753a49894eabf5356a61401d5ef57418262e912c73e44.jpg","content/halloween2016/underthesea.jpg":"content/halloween2016/underthesea-12debc7e9e40d9064c59ed13c01efaf91c6d81c32cd294a315d57b6606a7d98d.jpg","content/halloween2016/browsers.jpg":"content/halloween2016/browsers-bca956e9391b922787864d911d7edcbcb0fc35988ff89e7bf5c78df45df3bea0.jpg","content/halloween2016/marty.jpg":"content/halloween2016/marty-4fad90ff89ddad37f583d12ab6a5b8e87c8abdc84c91dff4cede3db562989128.jpg","content/halloween2016/cats.jpg":"content/halloween2016/cats-a4d7d6dc357679f187e95325aa1222ea85cd135dc1c8dd9119dccb8b3ffdf761.jpg","content/halloween2016/hackerman.jpg":"content/halloween2016/hackerman-26c059edcb3ed46a5ca16f9e70dca7d8a5a4b429e240af8689c8f2ab364bd715.jpg","content/halloween2016/calvinhobbes.jpg":"content/halloween2016/calvinhobbes-73b644eb0738f1ae69ac13d8a7d0fc3b3d1896994cdb1771998d1ae9f69d52be.jpg","content/halloween2016/bobross.jpg":"content/halloween2016/bobross-c56f9fcbc149ce4056516a2ba9eba642c0b154f6d0b5d46e95730382f9938d90.jpg","content/halloween2016/beaten.jpg":"content/halloween2016/beaten-3433ad50ec6f2f30cbcbc6a3240c257d56466a0f5b559e6ebc637dc64d402406.jpg","content/halloween2016/basketball.jpg":"content/halloween2016/basketball-f9287b64ec244af3262872268c73649607b41089270770a4243b960715d287b9.jpg","content/halloween2016/conventioncon.jpg":"content/halloween2016/conventioncon-af7a30fcb37c39e2df4b8982a2a0f4564bdc38965535610fb1fa194537e6f576.jpg","content/halloween2016/disney.jpg":"content/halloween2016/disney-008a7308795952b9693489a2b9fbf1d0dd8523eb0b23c5493a49d2718339118f.jpg","content/halloween2016/fridaynightlights.jpg":"content/halloween2016/fridaynightlights-81fe769d4d123afb3c978f551abe389efe63445913ad239fc8e715bfc7b9c6ae.jpg","content/halloween2016/maverik.jpg":"content/halloween2016/maverik-7701cfb7f5e95cf16ec07fb06515a4ba926b94a22db50a24d90750aba694e514.jpg","content/halloween2016/ghostbustwothers.jpg":"content/halloween2016/ghostbustwothers-fd33c4a8aee6f89e9e9cdef50dd7dac725a436acbeb44a9b9783eb6c68e108df.jpg","content/halloween2016/bustghost.jpg":"content/halloween2016/bustghost-d79f9f5486bd4776f06a8e644a91ceb1a40b75b1e63df1dfebc61e856b1ba678.jpg","content/halloween2016/motherofdragons.jpg":"content/halloween2016/motherofdragons-a711c90a28b4e33a0f46f2905273f0b53a819e71c512b403982c15122f85b304.jpg","content/halloween2016/oz.jpg":"content/halloween2016/oz-6e28ce6c1982758a53738c1be3168c671e41220479fd09a12ccfdf45288d3740.jpg","content/halloween2016/tinkerpeter.jpg":"content/halloween2016/tinkerpeter-1a73b63ec25b7568d3c124c1df421d9886a7f0f29fd4fb9b9f4087dd5fb17c2b.jpg","content/halloween2016/customink.jpg":"content/halloween2016/customink-2a2947526c929e11631c4ac954ccc94e460a07c445d1366d0d453aaa134efe90.jpg","content/halloween2016/deer.jpg":"content/halloween2016/deer-24e610cee9e92a51e3310908a7de76d92d906caf5788e693184b7900d4bd4617.jpg","content/halloween2016/eleven.jpg":"content/halloween2016/eleven-9c006be4ebca93dd5dddc63264f7c9ec06ae993b32dbd47348a8daa9abdac6b8.jpg","content/halloween2016/emojitwins.jpg":"content/halloween2016/emojitwins-d4c96127519fec07b4272a6d5c6800c26f72752a76e28654d1bf562dbc2b37de.jpg","content/halloween2016/famous.jpg":"content/halloween2016/famous-5d930700749fb3ee3ee49e74b48180f391105f77f501696b4b0eb964ff24bd9a.jpg","content/halloween2016/frieda.jpg":"content/halloween2016/frieda-1341da9d27a8d5d105151d8d61579815db679c0aee80975327c6508a82141052.jpg","content/halloween2016/greek.jpg":"content/halloween2016/greek-f4fe387f6e29820431da715c89037e9dd26f7cc37921118290652569d7f0f28c.jpg","content/halloween2016/leslieknope.jpg":"content/halloween2016/leslieknope-7c1bdd7022968cf7412ff433249772fb69cc85e22b034422424adc8c2edbf0d3.jpg","content/halloween2016/magicbus.jpg":"content/halloween2016/magicbus-ecdfd404f46cb4c67209e678c247941ede61bafc1dd76887069563a0b7720c4d.jpg","content/halloween2016/military.jpg":"content/halloween2016/military-7535a7b49db2df282598c9ee8e61845ba863accc660bb2e4fe5c8db39527fab0.jpg","content/halloween2016/mortecai.jpg":"content/halloween2016/mortecai-2f28aa6a1fa339c6f7a8f1399d60d53c6a45e4ea077aae93c317f9417852e27d.jpg","content/halloween2016/rainingmen.jpg":"content/halloween2016/rainingmen-0c44013e150e07de9fb94fb35c6e9aa758e5e42ffd5df6e5c66f15875161a8ed.jpg","content/halloween2016/rugrats.jpg":"content/halloween2016/rugrats-ee6081d324e4987be7ac529dd48ea9281c6118968803ef94ffd71f34c2499932.jpg","content/halloween2016/willywonka.jpg":"content/halloween2016/willywonka-a463d4774cddff679c1d0cf412c943f6a6dd12055a8521e27e6a385cd43f28c3.jpg","content/halloween2016/superbaby.jpg":"content/halloween2016/superbaby-a3e7f0efdca96f8caea133fafa9c2c0f6d91bc576ac8508882f3081a4102fa38.jpg","content/halloween2016/panda.jpg":"content/halloween2016/panda-c0f52400e771376e02cf9921ad8c2f5c9603eb8704cbfd37231ef09b9ad7e567.jpg","content/halloween2016/maverick-buster.jpg":"content/halloween2016/maverick-buster-ea391333cd97de93109c85f44d737d29b9c2de3faa2e0ae620cbd7f9271316da.jpg","content/halloween2016/slimmerghost.gif":"content/halloween2016/slimmerghost-6a367bd3202458529d4b11767679742c56d523e0320765f029bdcf731337e0b8.gif","content/static-components/augusta-juniors-spirit-hooded-sweatshirt-card.jpg":"content/static-components/augusta-juniors-spirit-hooded-sweatshirt-card-c52feb507554ff32696a424b330090a49555c337db1e7fdbbd975e2789dbe482.jpg","content/static-components/augusta-juniors-spirit-hooded-sweatshirt__start.gif":"content/static-components/augusta-juniors-spirit-hooded-sweatshirt__start-74181b4f7ae39b74e8fcb4d64d5c2eefba3d328b1e4841ceb84908b5ec3b50ae.gif","content/static-components/final-results.jpg":"content/static-components/final-results-280dbcfd02fcea204dc683e446c3d09edba179cf246012c624b2884ca7f0b214.jpg","content/best-tech-manager/andrew_willis_2016-timmy-awards.jpg":"content/best-tech-manager/andrew_willis_2016-timmy-awards-9bf9100b19b6a6b21f6bb9e343352ccb908258dcff8ad02c359da0a5d0ea6f9d.jpg","content/power-moves/docker-memory-prefs.jpg":"content/power-moves/docker-memory-prefs-8ad442dfb46bd33ab9a8eefdb54f598b96861d251ee06e5ffabcbe9dced7ed5d.jpg","content/power-moves/welcome-to-rails.jpg":"content/power-moves/welcome-to-rails-051121731979c533db830998a3cb6a81f02ed053fd051f090d29a231fb71a6cb.jpg","content/power-moves/thanks.jpg":"content/power-moves/thanks-6a02ee3951e46a9891740dcb02ee9aee4bef4eee8de029992554b479a8ce4983.jpg","content/imgix/imgix.png":"content/imgix/imgix-a6c45c8e8fbb4c352c598fcf2282992a1e145914ab324e413248e25068982afd.png","content/imgix/steps/0.png":"content/imgix/steps/0-7dc4b1cb585739f856abaaeff2102a176a7b6f690bb9e66a7a6602dbf0a1ee6f.png","content/imgix/steps/1.jpg":"content/imgix/steps/1-c6da1cbcc1a856dc84073172007ae4115a5681fc437e4188dbe5ad441bdc8ea2.jpg","content/imgix/steps/2.png":"content/imgix/steps/2-bc0d5beea73569580a426338c1bbb9f0d3cba54d8723b9268921d634a650c079.png","content/imgix/steps/2-debug.png":"content/imgix/steps/2-debug-51de0c2249bd64a62bfce07f4695a8174457e018e9f02344b316d13a53dff67d.png","content/imgix/steps/2-final.jpg":"content/imgix/steps/2-final-42566d816a563ab2ab427b40730ddbcddfbb74cf0dff2eea55fb6dac8895d467.jpg","content/imgix/steps/3.jpg":"content/imgix/steps/3-724c6a82ee2fe96c23013de72237d225a04d0b8cc74ad2fa30e9948a430e2cf1.jpg","content/imgix/steps/final.jpg":"content/imgix/steps/final-bdfcc823ef810b7ce63b9194c9ee41235a57f3e739a0b784d3a44759ec958d15.jpg","content/imgix/advanced.jpg":"content/imgix/advanced-73d094a30670f2bc0a0b66a1e23d82587521a87eb71ffa6f01c53bf93227f19a.jpg","content/lamby/lamby.jpg":"content/lamby/lamby-723dfdc344c076844d5ad81fe9baab2f1240650bee200865edd3dbe6d77c336a.jpg","content/sidekiq/sidekiq-architecture.png":"content/sidekiq/sidekiq-architecture-55a7b0491a724dd5c4b39570ea60966d438f97bebc2e9562ab5881db319fdc0f.png","content/processing/2019-07-23_2323.png":"content/processing/2019-07-23_2323-345741e1030f3f4fb0e81f84f6e1bc9d8cf5f02a202cfab4221c2fbf8768d6e6.png","content/processing/2019-07-24_2058.png":"content/processing/2019-07-24_2058-0ae2fa145e4510dff9bbebd01327ed83d2219c74972a75f9395b25c5cdbf4477.png","content/processing/2019-07-24_2106.png":"content/processing/2019-07-24_2106-df211f48b40921b6e418d0eefa28cffb1b965d0cc73f331faeeabaf2cc0c5ef6.png","content/sidekiq/sidekiq-pro.png":"content/sidekiq/sidekiq-pro-3bfb28483017046cddbbeea528ee831351b3d4bc44e245e9008641f3ecca1bf8.png","content/githubactions-part1/getting-started-1.png":"content/githubactions-part1/getting-started-1-11b27f87329096758a9fb863ef51cfad256cc037131e0f0b1ff96715f02b6971.png","content/githubactions-part1/getting-started-2.png":"content/githubactions-part1/getting-started-2-0f8df01b7bb3cfcee139c4660ad6809c6c8d51b835698621eeaae8ea2f17191d.png","content/githubactions-part1/sqlite3.h-missing.png":"content/githubactions-part1/sqlite3.h-missing-c7238e45fec7653852119a511d6c7f324bc7286b72856d25545da207a98500c7.png","content/githubactions-part1/greener.png":"content/githubactions-part1/greener-37f000dd8772fe3cdb04c5320283b6f7a6d827c8a4296a367d4a8425519abf8a.png","content/githubactions-part1/pick-a-name.png":"content/githubactions-part1/pick-a-name-9043b5306864c99e9256383e8e618c7d2fcddf87a5ace6dd5863d01f3c8065da.png","content/githubactions-part1/badge.png":"content/githubactions-part1/badge-398ae483455e770d9e51da964075caf992f37b068b6b12ddadd399d7d13805f2.png","content/internship_lunch.png":"content/internship_lunch-033d2e567072e89f0e9730e1883dcfb5e99ab7dcfb44474292b83893bab86163.png","content/working-at-custom-ink/logan-screenprinting.jpg":"content/working-at-custom-ink/logan-screenprinting-558806ca6e8329772d7e3eee9ca4c50203bf85e0e118c3d393fbcfac0fd6ab67.jpg","content/working-at-custom-ink/tech-logos.png":"content/working-at-custom-ink/tech-logos-3a05461db679fd21965da95d46eef6d2e6dd90b394f05224a4bef11843040ee3.png","content/cloud-cookies/our-goal-cookie-historgram.jpg":"content/cloud-cookies/our-goal-cookie-historgram-a30e6c17078564dea909a10dc62d7b933fd0a9075f6768f44deae5a2cf478b98.jpg","content/cloud-cookies/monitoring.png":"content/cloud-cookies/monitoring-d5c2151f652f0468fa18728cc801b1bc6b5d3ee83675352941795d40ec6782a4.png","content/cloud-cookies/analysis.png":"content/cloud-cookies/analysis-4443a3747c705b8d8f42dbe345bd095263ec140fcc964079bd4ba5f980f3ec57.png","content/tapping-into-logs/sumo-logic-query.png":"content/tapping-into-logs/sumo-logic-query-6423fdf74608a34b5a7a383036751091c20a7a0365ac4cb2a35de1e17d8e07f2.png","content/tapping-into-logs/sumo-logic-report.png":"content/tapping-into-logs/sumo-logic-report-568740550d282d0071e0059f0f8ef72e13be0c89b5d4939094f9b80eb8fb3cc2.png","content/company-culture-around-the-globe/wow_tv.jpg":"content/company-culture-around-the-globe/wow_tv-9421ac7574c374607ca0c21e42d4f4f66728657c92eb1df8244f22a147940eed.jpg","content/company-culture-around-the-globe/prague_wow_system.jpg":"content/company-culture-around-the-globe/prague_wow_system-4a40f88befd668069a1f55ab95df642efcfb4ba98e360980fb857a29cfd251ce.jpg","content/company-culture-around-the-globe/prague_office.jpg":"content/company-culture-around-the-globe/prague_office-ad09f1acdd47af6353ebb6f30b7b4f2d5d9bff2b96204d9286e7902f639955d6.jpg","content/aurora-serverless/ruby-gems.gif":"content/aurora-serverless/ruby-gems-f734b8e2f5931ef0e5a82530b143a978c0e0c341502fb817aba90f72e458b517.gif","content/aurora-serverless/serverlessHero-badge-min.png":"content/aurora-serverless/serverlessHero-badge-min-5b1c815b4bec88c668720fda5358aae9ab030b662a679b518d7431d5b952e328.png","content/aurora-serverless/hero-ken-collins-min.jpg":"content/aurora-serverless/hero-ken-collins-min-d995876e07f891979f61c75266ecea9c97702c8f023f2bbd35ba3ce5270a2976.jpg","content/varnish-replace/backend-services.png":"content/varnish-replace/backend-services-f1d6b94a50d3f736faf5d47cdeacf2cf4919227a92c4ca55efe70623e71920f6.png","content/varnish-replace/caching.png":"content/varnish-replace/caching-4cc405bb8047220fc37a1b8dca9713837eb00258e207451158fec1f2392a231a.png","content/varnish-replace/varnish.png":"content/varnish-replace/varnish-58c2d4be776138b588e7d880e4aa3f68e651197aa4a4e032b688a904ee74a23f.png","content/varnish-replace/varnish-uhoh.png":"content/varnish-replace/varnish-uhoh-6ed4c555d8e00d43b375ae989e11d5bce0748140473bc8cf7a38045920c11cfb.png","content/varnish-replace/transition.png":"content/varnish-replace/transition-6df2a48b0349c799af033950b0f7bc76e2158ac302d02dd2c8f23b6431b69cf1.png","content/varnish-replace/finalstate.png":"content/varnish-replace/finalstate-9dcb4c17832724613cad88c92c5f70659662f0a49e478fdb94bf5b5ffc132954.png","content/lambda-file-systems/access-point.png":"content/lambda-file-systems/access-point-70ae0b8ee149f62acd5eb939f2b92ee21bcca337a0df593065bba775b525b66c.png","content/lambda-file-systems/lambda-rails.png":"content/lambda-file-systems/lambda-rails-360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e.png","content/lambda-file-systems/datasync-task.png":"content/lambda-file-systems/datasync-task-0b9663539358843ad91455a48ffe0a3d3471934247fdbaeac1ad70df8a227d15.png","content/ssm-crr-lambda/ssm_crr_customink.png":"content/ssm-crr-lambda/ssm_crr_customink-8406544a87d272f0ffa7cf246890b8d84e0eac361329197835f08cd4398de3d2.png"}} \ No newline at end of file +{"files":{"fontello-5c6d5a4b860bc986924a1ec510dcddbc10a425672dc0e3ba37e3bd4020e9d84f.eot":{"logical_path":"fontello.eot","mtime":"2023-03-08T10:16:37-05:00","size":5496,"digest":"5c6d5a4b860bc986924a1ec510dcddbc10a425672dc0e3ba37e3bd4020e9d84f","integrity":"sha256-XG1aS4YLyYaSSh7FENzdvBCkJWctwOO6N+O9QCDp2E8="},"fontello-a11118120d4b90a4c4f937c40ed47f13b4ae131b1c6371fd85ec2843d7bc7b12.woff":{"logical_path":"fontello.woff","mtime":"2023-03-08T10:16:37-05:00","size":3176,"digest":"a11118120d4b90a4c4f937c40ed47f13b4ae131b1c6371fd85ec2843d7bc7b12","integrity":"sha256-oREYEg1LkKTE+TfEDtR/E7SuExscY3H9hewoQ9e8exI="},"fontello-813519383401ebf865d03b706d20d1624b232501f0accdfa1bff4d28265d3f74.ttf":{"logical_path":"fontello.ttf","mtime":"2023-03-08T10:16:37-05:00","size":5328,"digest":"813519383401ebf865d03b706d20d1624b232501f0accdfa1bff4d28265d3f74","integrity":"sha256-gTUZODQB6/hl0DtwbSDRYksjJQHwrM36G/9NKCZdP3Q="},"fontello-f25b435813c4882a6189f926bc10b0fc872c358e3071d21d8386765518bc4278.svg":{"logical_path":"fontello.svg","mtime":"2023-03-08T10:16:37-05:00","size":2038,"digest":"f25b435813c4882a6189f926bc10b0fc872c358e3071d21d8386765518bc4278","integrity":"sha256-8ltDWBPEiCphifkmvBCw/IcsNY4wcdIdg4Z2VRi8Qng="},"tbicons-096fa3970ce3a3595debd167e1cd11422745885e43987130c7ad2b9fd020a910.eot":{"logical_path":"tbicons.eot","mtime":"2023-03-08T10:16:36-05:00","size":5416,"digest":"096fa3970ce3a3595debd167e1cd11422745885e43987130c7ad2b9fd020a910","integrity":"sha256-CW+jlwzjo1ld69Fn4c0RQidFiF5DmHEwx60rn9AgqRA="},"tbicons-a255c4d7531756c350cd3cb8ac924a3a70dba66357bc6f53cdcce66be69e1ca4.woff":{"logical_path":"tbicons.woff","mtime":"2023-03-08T10:16:36-05:00","size":3124,"digest":"a255c4d7531756c350cd3cb8ac924a3a70dba66357bc6f53cdcce66be69e1ca4","integrity":"sha256-olXE11MXVsNQzTy4rJJKOnDbpmNXvG9Tzczma+aeHKQ="},"tbicons-04c88863a35923e4156691375c162cd8b6fb44104e3cecbc17972c89da722d17.ttf":{"logical_path":"tbicons.ttf","mtime":"2023-03-08T10:16:36-05:00","size":5252,"digest":"04c88863a35923e4156691375c162cd8b6fb44104e3cecbc17972c89da722d17","integrity":"sha256-BMiIY6NZI+QVZpE3XBYs2Lb7RBBOPOy8F5csidpyLRc="},"tbicons-737a98cc543fbd45788943a259ba88d32a06bdd4e57cf10d9631866dce5df09e.svg":{"logical_path":"tbicons.svg","mtime":"2023-03-08T10:16:36-05:00","size":1903,"digest":"737a98cc543fbd45788943a259ba88d32a06bdd4e57cf10d9631866dce5df09e","integrity":"sha256-c3qYzFQ/vUV4iUOiWbqI0yoGvdTlfPENljGGbc5d8J4="},"app-7364e5d923858a09e03d1594b7afe5a66431387a5a0623957af903baceb3208d.css":{"logical_path":"app.css","mtime":"2023-03-08T11:40:54-05:00","size":31415,"digest":"7364e5d923858a09e03d1594b7afe5a66431387a5a0623957af903baceb3208d","integrity":"sha256-c2Tl2SOFigngPRWUt6/lpmQxOHpaBiOVevkDus6zII0="},"CustomInk_Tech_Color-1460f9e847670e2626e66143266004749ab6c7204a8d5a2ae394613f986c473d.png":{"logical_path":"CustomInk_Tech_Color.png","mtime":"2023-03-08T10:16:36-05:00","size":7190,"digest":"1460f9e847670e2626e66143266004749ab6c7204a8d5a2ae394613f986c473d","integrity":"sha256-FGD56EdnDiYm5mFDJmAEdJq2xyBKjVoq45RhP5hsRz0="},"content/john-dyer-first-deploy-f45c9bf89c3960034590cda4d06aa7ad225e0bf82864c2d3100e8cab7c85bef2.jpg":{"logical_path":"content/john-dyer-first-deploy.jpg","mtime":"2023-03-08T10:16:37-05:00","size":132491,"digest":"f45c9bf89c3960034590cda4d06aa7ad225e0bf82864c2d3100e8cab7c85bef2","integrity":"sha256-9Fyb+Jw5YANFkM2k0GqnrSJeC/goZMLTEA6Mq3yFvvI="},"content/lambda-file-systems/masthead-867a17f618e0c2f6b04260b68de597850d7c98b0d9872478f4317988abacce1e.jpg":{"logical_path":"content/lambda-file-systems/masthead.jpg","mtime":"2023-03-08T10:16:37-05:00","size":39229,"digest":"867a17f618e0c2f6b04260b68de597850d7c98b0d9872478f4317988abacce1e","integrity":"sha256-hnoX9hjgwvawQmC2jeWXhQ18mLDZhyR49DF5iKuszh4="},"content/lambda-file-systems/efs-logo-07c46dafb5ab211876311a1f125a35d320d781052fb0bc128e3fd17b73390357.png":{"logical_path":"content/lambda-file-systems/efs-logo.png","mtime":"2023-03-08T10:16:37-05:00","size":2763,"digest":"07c46dafb5ab211876311a1f125a35d320d781052fb0bc128e3fd17b73390357","integrity":"sha256-B8Rtr7WrIRh2MRofElo10yDXgQUvsLwSjj/Re3M5A1c="},"content/cookiecutter/masthead-81ebef04dce2278e5c5776780e1b9bca8ca9b23e1a0a05aa3edf80594d3b62fd.jpg":{"logical_path":"content/cookiecutter/masthead.jpg","mtime":"2023-03-08T10:16:36-05:00","size":36236,"digest":"81ebef04dce2278e5c5776780e1b9bca8ca9b23e1a0a05aa3edf80594d3b62fd","integrity":"sha256-gevvBNziJ45cV3Z4Dhubyoypsj4aCgWqPt+AWU07Yv0="},"content/aurora-serverless/lambda-rails-360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e.png":{"logical_path":"content/aurora-serverless/lambda-rails.png","mtime":"2023-03-08T10:16:36-05:00","size":44521,"digest":"360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e","integrity":"sha256-Ng+Q1m+OqHOcv3M0082pGDk+IYRpZT3grg4Oh7ELrC4="},"content/aurora-serverless/masthead-5a56cf63e72393d6abff92c8b05178363bbd07d444e19ed6dca99435403f5b5b.jpg":{"logical_path":"content/aurora-serverless/masthead.jpg","mtime":"2023-03-08T10:16:36-05:00","size":152402,"digest":"5a56cf63e72393d6abff92c8b05178363bbd07d444e19ed6dca99435403f5b5b","integrity":"sha256-WlbPY+cjk9ar/5LIsFF4Nju9B9RE4Z7W3KmUNUA/W1s="},"content/cloud-cookies/masthead-2a39e4b23fb8985178be8224a591a9485990c8e9d1b6eea4dd5c74c88b5799b2.jpg":{"logical_path":"content/cloud-cookies/masthead.jpg","mtime":"2023-03-08T10:16:36-05:00","size":41633,"digest":"2a39e4b23fb8985178be8224a591a9485990c8e9d1b6eea4dd5c74c88b5799b2","integrity":"sha256-Kjnksj+4mFF4voIkpZGpSFmQyOnRtu6k3Vx0yItXmbI="},"content/githubactions-part1/masthead-c3229ebf2a4d7c6398435d69eecb25c0fb35179c9d610c844a3f4404a5c6cba8.png":{"logical_path":"content/githubactions-part1/masthead.png","mtime":"2023-03-08T10:16:36-05:00","size":67259,"digest":"c3229ebf2a4d7c6398435d69eecb25c0fb35179c9d610c844a3f4404a5c6cba8","integrity":"sha256-wyKevypNfGOYQ11p7sslwPs1F5ydYQyESj9EBKXGy6g="},"content/lamby/masthead-2958bbf108ff6a30c332bce34da1f71f9c978794124fae83cb048ae3cfcee727.jpg":{"logical_path":"content/lamby/masthead.jpg","mtime":"2023-03-08T10:16:37-05:00","size":73078,"digest":"2958bbf108ff6a30c332bce34da1f71f9c978794124fae83cb048ae3cfcee727","integrity":"sha256-KVi78Qj/ajDDMrzjTaH3H5yXh5QST66DywSK48/O5yc="},"content/imgix/masthead2-f-5c55d7a6ff6e06cde41ff049f33a89b95697189e9d77e990d0a8aaca82ad617a.jpg":{"logical_path":"content/imgix/masthead2-f.jpg","mtime":"2023-03-08T10:16:37-05:00","size":83784,"digest":"5c55d7a6ff6e06cde41ff049f33a89b95697189e9d77e990d0a8aaca82ad617a","integrity":"sha256-XFXXpv9uBs3kH/BJ8zqJuVaXGJ6dd+mQ0KiqyoKtYXo="},"content/power-moves/masthead-00358e30452214dc1f16bc2293f4d5577dc9e2d6b3761fc6a6f71b8a63602e6c.jpg":{"logical_path":"content/power-moves/masthead.jpg","mtime":"2023-03-08T10:16:37-05:00","size":96504,"digest":"00358e30452214dc1f16bc2293f4d5577dc9e2d6b3761fc6a6f71b8a63602e6c","integrity":"sha256-ADWOMEUiFNwfFrwik/TVV33J4tazdh/GpvcbimNgLmw="},"content/static-components/masthead-colors-1162421fd0b8eb402443a61e871590d33767dfb7f2ca6fca439c5a1fd83e9b38.jpg":{"logical_path":"content/static-components/masthead-colors.jpg","mtime":"2023-03-08T10:16:37-05:00","size":82723,"digest":"1162421fd0b8eb402443a61e871590d33767dfb7f2ca6fca439c5a1fd83e9b38","integrity":"sha256-EWJCH9C460AkQ6YehxWQ0zdn37fyym/KQ5xaH9g+mzg="},"content/colored-logging-86436848bcea9b5fea72c77f2031c12c1b9dbcc156a5f8ef177644ad1ac1f099.png":{"logical_path":"content/colored-logging.png","mtime":"2023-03-08T10:16:36-05:00","size":94488,"digest":"86436848bcea9b5fea72c77f2031c12c1b9dbcc156a5f8ef177644ad1ac1f099","integrity":"sha256-hkNoSLzqm1/qcsd/IDHBLBudvMFWpfjvF3ZErRrB8Jk="},"content/svg-planet-stars-08c9b4337e6d15b697fff6d4a6b8fb23cdc840d040f3aa8aed11df307685ec1a.png":{"logical_path":"content/svg-planet-stars.png","mtime":"2023-03-08T10:16:37-05:00","size":17781,"digest":"08c9b4337e6d15b697fff6d4a6b8fb23cdc840d040f3aa8aed11df307685ec1a","integrity":"sha256-CMm0M35tFbaX//bUprj7I83IQNBA86qK7RHfMHaF7Bo="},"content/svg-our-awesome-sketch-c556fd04159b8596f809ad503a9657fcbdf4331de6a36ca90ea44f9e01cc8a41.png":{"logical_path":"content/svg-our-awesome-sketch.png","mtime":"2023-03-08T10:16:37-05:00","size":28004,"digest":"c556fd04159b8596f809ad503a9657fcbdf4331de6a36ca90ea44f9e01cc8a41","integrity":"sha256-xVb9BBWbhZb4Ca1QOpZX/L30Mx3mo2ypDqRPngHMikE="},"content/svg-planet-stars-v1-ece9734ba2b6813891665e3c67070f266e0f58cf72003341903e551da9fb2020.png":{"logical_path":"content/svg-planet-stars-v1.png","mtime":"2023-03-08T10:16:37-05:00","size":13507,"digest":"ece9734ba2b6813891665e3c67070f266e0f58cf72003341903e551da9fb2020","integrity":"sha256-7OlzS6K2gTiRZl48ZwcPJm4PWM9yADNBkD5VHan7ICA="},"authors/serverlesshero-2e96cfd1ad50c766ec3d5bde04c75aaa3709b59a33599346c1968f152a6638ae.png":{"logical_path":"authors/serverlesshero.png","mtime":"2023-03-08T10:16:36-05:00","size":6194,"digest":"2e96cfd1ad50c766ec3d5bde04c75aaa3709b59a33599346c1968f152a6638ae","integrity":"sha256-LpbP0a1Qx2bsPVveBMdaqjcJtZozWZNGwZaPFSpmOK4="},"content/arild-shirazi-7458f4d1710e5c667a8ca81bd9fe53693cdabc3f219d3da028d2fd59a6d5d8b3.jpg":{"logical_path":"content/arild-shirazi.jpg","mtime":"2023-03-08T10:16:36-05:00","size":34256,"digest":"7458f4d1710e5c667a8ca81bd9fe53693cdabc3f219d3da028d2fd59a6d5d8b3","integrity":"sha256-dFj00XEOXGZ6jKgb2f5TaTzavD8hnT2gKNL9WabV2LM="},"content/api-gateway/authorization-8c96576ad0783e5d3dc2d2afd0fd00362a1b8eb6fbccb2e54c01fc8dd9948763.png":{"logical_path":"content/api-gateway/authorization.png","mtime":"2023-03-08T10:16:36-05:00","size":10420,"digest":"8c96576ad0783e5d3dc2d2afd0fd00362a1b8eb6fbccb2e54c01fc8dd9948763","integrity":"sha256-jJZXatB4Pl09wtKv0P0ANiobjrb7zLLlTAH8jdmUh2M="},"content/outrunning-a-hurricane-dba8f2e4aeed28dc33af754692cdf80a43aa9a0a178c5d165eb15aef7f424c52.jpg":{"logical_path":"content/outrunning-a-hurricane.jpg","mtime":"2023-03-08T10:16:37-05:00","size":52175,"digest":"dba8f2e4aeed28dc33af754692cdf80a43aa9a0a178c5d165eb15aef7f424c52","integrity":"sha256-26jy5K7tKNwzr3VGks34CkOqmgoXjF0WXrFa739CTFI="},"content/how_dismantle_a_data_center/3par-36c6b8c0e49bedadaa178d16172518ca49ebc891afc75adac95e40f243a45135.jpg":{"logical_path":"content/how_dismantle_a_data_center/3par.jpg","mtime":"2023-03-08T10:16:37-05:00","size":203384,"digest":"36c6b8c0e49bedadaa178d16172518ca49ebc891afc75adac95e40f243a45135","integrity":"sha256-Nsa4wOSb7a2qF40WFyUYyknryJGvx1rayV5A8kOkUTU="},"content/how_dismantle_a_data_center/gerald-2e0b390e70aaf181de184a3123a4031542a3c1dd4ab7c744f96d6e62d3a605a5.jpg":{"logical_path":"content/how_dismantle_a_data_center/gerald.jpg","mtime":"2023-03-08T10:16:37-05:00","size":191856,"digest":"2e0b390e70aaf181de184a3123a4031542a3c1dd4ab7c744f96d6e62d3a605a5","integrity":"sha256-Lgs5DnCq8YHeGEoxI6QDFUKjwd1Kt8dE+W1uYtOmBaU="},"content/how_dismantle_a_data_center/wires-44e26bdf578405fb6bdccd7c529cf4ea74e817b0e90b29c4747d3853452c092a.jpg":{"logical_path":"content/how_dismantle_a_data_center/wires.jpg","mtime":"2023-03-08T10:16:37-05:00","size":348506,"digest":"44e26bdf578405fb6bdccd7c529cf4ea74e817b0e90b29c4747d3853452c092a","integrity":"sha256-ROJr31eEBftr3M18Upz06nToF7DpCynEdH04U0UsCSo="},"content/how_dismantle_a_data_center/truck-42606487a06ef4d07335c2f5bf99a64b6b3494580750057fe8748d228529e18d.jpg":{"logical_path":"content/how_dismantle_a_data_center/truck.jpg","mtime":"2023-03-08T10:16:37-05:00","size":262041,"digest":"42606487a06ef4d07335c2f5bf99a64b6b3494580750057fe8748d228529e18d","integrity":"sha256-QmBkh6Bu9NBzNcL1v5mmS2s0lFgHUAV/6HSNIoUp4Y0="},"content/ruby_for_good_2016/smithsonian-c98f941e7c42e6e5cefd0c4693663a7b74c8b2c7e7d78d5c0bf0bc4fb1d06fc6.jpg":{"logical_path":"content/ruby_for_good_2016/smithsonian.jpg","mtime":"2023-03-08T10:16:37-05:00","size":96682,"digest":"c98f941e7c42e6e5cefd0c4693663a7b74c8b2c7e7d78d5c0bf0bc4fb1d06fc6","integrity":"sha256-yY+UHnxC5uXO/QxGk2Y6e3TIssfn141cC/C8T7HQb8Y="},"content/ruby_for_good_2016/campus-6ac14cd4f0eb116fe28776ad5ef7d311c45737ae6e68d5e85cb117d15aa08de0.jpg":{"logical_path":"content/ruby_for_good_2016/campus.jpg","mtime":"2023-03-08T10:16:37-05:00","size":119183,"digest":"6ac14cd4f0eb116fe28776ad5ef7d311c45737ae6e68d5e85cb117d15aa08de0","integrity":"sha256-asFM1PDrEW/ih3atXvfTEcRXN65uaNXoXLEX0VqgjeA="},"content/ruby_for_good_2015/kitten-fd73cb1d457b5f57e00395069de120ac656a20b2640fd3ad2a6ec4aa389cd7d2.jpg":{"logical_path":"content/ruby_for_good_2015/kitten.jpg","mtime":"2023-03-08T10:16:37-05:00","size":36352,"digest":"fd73cb1d457b5f57e00395069de120ac656a20b2640fd3ad2a6ec4aa389cd7d2","integrity":"sha256-/XPLHUV7X1fgA5UGneEgrGVqILJkD9OtKm7Eqjic19I="},"content/best-tech-manager/masthead-1776-keyboard-artwork-a03546719667c8d597ffeb1759620267cb70feb53862698820f57c31cc5d07cd.jpg":{"logical_path":"content/best-tech-manager/masthead-1776-keyboard-artwork.jpg","mtime":"2023-03-08T10:16:36-05:00","size":118005,"digest":"a03546719667c8d597ffeb1759620267cb70feb53862698820f57c31cc5d07cd","integrity":"sha256-oDVGcZZnyNWX/+sXWWICZ8tw/rU4YmmIIPV8McxdB80="},"content/halloween2019/rangers-bf22fe767f867ef1d11f0ad125dfa4122f4148817414f2a2cbf223042c15a540.png":{"logical_path":"content/halloween2019/rangers.png","mtime":"2023-03-08T10:16:37-05:00","size":203749,"digest":"bf22fe767f867ef1d11f0ad125dfa4122f4148817414f2a2cbf223042c15a540","integrity":"sha256-vyL+dn+GfvHRHwrRJd+kEi9BSIF0FPKiy/IjBCwVpUA="},"content/halloween2019/hook-10bda45b0e0410215480abebf9b77b2df5e48b5ec980f56f403b9440820245e5.jpg":{"logical_path":"content/halloween2019/hook.jpg","mtime":"2023-03-08T10:16:37-05:00","size":143461,"digest":"10bda45b0e0410215480abebf9b77b2df5e48b5ec980f56f403b9440820245e5","integrity":"sha256-EL2kWw4EECFUgKvr+bd7LfXki17JgPVvQDuUQIICReU="},"content/halloween2019/nintendo-d5baf96677e014c8f748808fcdca8b7ad0b7083d8008a3672feb1eac8f7c3406.jpg":{"logical_path":"content/halloween2019/nintendo.jpg","mtime":"2023-03-08T10:16:37-05:00","size":522648,"digest":"d5baf96677e014c8f748808fcdca8b7ad0b7083d8008a3672feb1eac8f7c3406","integrity":"sha256-1br5ZnfgFMj3SICPzcqLetC3CD2ACKNnL+serI98NAY="},"content/halloween2019/toystory-5e2af23d4248e5392825cad05dd46a2a24d05ef8a19d12064c727a9f5e82e1df.png":{"logical_path":"content/halloween2019/toystory.png","mtime":"2023-03-08T10:16:37-05:00","size":626905,"digest":"5e2af23d4248e5392825cad05dd46a2a24d05ef8a19d12064c727a9f5e82e1df","integrity":"sha256-XiryPUJI5TkoJcrQXdRqKiTQXvihnRIGTHJ6n16C4d8="},"content/halloween2019/2018-c68a5323e7fecabec9877d35dc70d52ae4212f959a3d2b0261d4488e47947bac.png":{"logical_path":"content/halloween2019/2018.png","mtime":"2023-03-08T10:16:37-05:00","size":483156,"digest":"c68a5323e7fecabec9877d35dc70d52ae4212f959a3d2b0261d4488e47947bac","integrity":"sha256-xopTI+f+yr7Jh3013HDVKuQhL5WaPSsCYdRIjkeUe6w="},"content/halloween2019/90s-af4ddd64958b62b7d361eb6bf8e9abbf2ab486280a4f0c14c5bb07dacada2360.png":{"logical_path":"content/halloween2019/90s.png","mtime":"2023-03-08T10:16:37-05:00","size":142907,"digest":"af4ddd64958b62b7d361eb6bf8e9abbf2ab486280a4f0c14c5bb07dacada2360","integrity":"sha256-r03dZJWLYrfTYetr+Omrvyq0higKTwwUxbsH2sraI2A="},"content/career-fair/career-fair-uva-598ac96931b65efb06a59a322879ca1669a2ca031e0ad3493c3ccb892e0b4f6e.jpg":{"logical_path":"content/career-fair/career-fair-uva.jpg","mtime":"2023-03-08T10:16:36-05:00","size":481890,"digest":"598ac96931b65efb06a59a322879ca1669a2ca031e0ad3493c3ccb892e0b4f6e","integrity":"sha256-WYrJaTG2XvsGpZoyKHnKFmmiygMeCtNJPDzLiS4LT24="},"content/cypress/cypress-nav-284961bfd5b625abb9a41415d598d9a976bde5e4e956be7c972c1ac12941b770.gif":{"logical_path":"content/cypress/cypress-nav.gif","mtime":"2023-03-08T10:16:36-05:00","size":1266836,"digest":"284961bfd5b625abb9a41415d598d9a976bde5e4e956be7c972c1ac12941b770","integrity":"sha256-KElhv9W2Jau5pBQV1ZjZqXa95eTpVr58lywawSlBt3A="},"content/cypress/cypress-selector-f73313665a7bead2fedba190b02d297029a1f863f85ffab51e87a7d4aff5590f.gif":{"logical_path":"content/cypress/cypress-selector.gif","mtime":"2023-03-08T10:16:36-05:00","size":306877,"digest":"f73313665a7bead2fedba190b02d297029a1f863f85ffab51e87a7d4aff5590f","integrity":"sha256-9zMTZlp76tL+26GQsC0pcCmh+GP4X/q1Hoen1K/1WQ8="},"content/JSConferences/ReactNative-min-812e086884a943daa23a5ba07fce55f27426e4880cac04434de3955f282d549e.png":{"logical_path":"content/JSConferences/ReactNative-min.png","mtime":"2023-03-08T10:16:36-05:00","size":10325,"digest":"812e086884a943daa23a5ba07fce55f27426e4880cac04434de3955f282d549e","integrity":"sha256-gS4IaISpQ9qiOlugf85V8nQm5IgMrARDTeOVXygtVJ4="},"content/JSConferences/NationJS-booth-min-0deef83b4b3938ee6c5976ed45f4ef72af0831a44501f7a514d2a20135d932c3.jpg":{"logical_path":"content/JSConferences/NationJS-booth-min.jpg","mtime":"2023-03-08T10:16:36-05:00","size":117158,"digest":"0deef83b4b3938ee6c5976ed45f4ef72af0831a44501f7a514d2a20135d932c3","integrity":"sha256-De74O0s5OO5sWXbtRfTvcq8IMaRFAfelFNKiATXZMsM="},"content/like-a-ross-8119120f145b0d6bd8d9fbf087c81df45eb37c92a1b9abed35e39fb123ed8e7d.jpg":{"logical_path":"content/like-a-ross.jpg","mtime":"2023-03-08T10:16:37-05:00","size":68555,"digest":"8119120f145b0d6bd8d9fbf087c81df45eb37c92a1b9abed35e39fb123ed8e7d","integrity":"sha256-gRkSDxRbDWvY2fvwh8gd9F6zfJKhuavtNeOfsSPtjn0="},"content/ecomiccon/first_attendees-de92c4802a6a5c637abf40587f55e96537da768bc63362693a122671a03f2de8.jpg":{"logical_path":"content/ecomiccon/first_attendees.jpg","mtime":"2023-03-08T10:16:36-05:00","size":241277,"digest":"de92c4802a6a5c637abf40587f55e96537da768bc63362693a122671a03f2de8","integrity":"sha256-3pLEgCpqXGN6v0BYf1XpZTfadovGM2JpOhImcaA/Leg="},"content/ecomiccon/first_attendees2-7405164f7fd209d5f513a6db386de2a13f8e331d6d1a3616a23f19f49f2885c4.jpg":{"logical_path":"content/ecomiccon/first_attendees2.jpg","mtime":"2023-03-08T10:16:36-05:00","size":375752,"digest":"7405164f7fd209d5f513a6db386de2a13f8e331d6d1a3616a23f19f49f2885c4","integrity":"sha256-dAUWT3/SCdX1E6bbOG3ioT+OMx1tGjYWoj8Z9J8ohcQ="},"content/ecomiccon/by_the_stairs-7b4430e7f8db6810adbc2ce66cc8f111ed8c20d120bad47823c51d09765ce177.jpg":{"logical_path":"content/ecomiccon/by_the_stairs.jpg","mtime":"2023-03-08T10:16:36-05:00","size":342637,"digest":"7b4430e7f8db6810adbc2ce66cc8f111ed8c20d120bad47823c51d09765ce177","integrity":"sha256-e0Qw5/jbaBCtvCzmbMjxEe2MINEgutR4I8UdCXZc4Xc="},"content/ecomiccon/hanging_out-1dbbce0f0dd1b4cfd1a8ff22d86bfa4d1329fd442ab48a57dac2db108c3092e2.jpg":{"logical_path":"content/ecomiccon/hanging_out.jpg","mtime":"2023-03-08T10:16:36-05:00","size":485106,"digest":"1dbbce0f0dd1b4cfd1a8ff22d86bfa4d1329fd442ab48a57dac2db108c3092e2","integrity":"sha256-HbvODw3RtM/RqP8i2Gv6TRMp/UQqtIpX2sLbEIwwkuI="},"content/ecomiccon/gogopowerrangers-01dfdd7b5ad6462a4a1081a61725b390ab19eab5afd433b1819947d62642903d.jpg":{"logical_path":"content/ecomiccon/gogopowerrangers.jpg","mtime":"2023-03-08T10:16:36-05:00","size":287604,"digest":"01dfdd7b5ad6462a4a1081a61725b390ab19eab5afd433b1819947d62642903d","integrity":"sha256-Ad/de1rWRipKEIGmFyWzkKsZ6rWv1DOxgZlH1iZCkD0="},"content/ecomiccon/rocket-1e7931bfff1152a8dda69118b80192a6c8cf76dbca8bfe43e880e5369105ee1c.jpg":{"logical_path":"content/ecomiccon/rocket.jpg","mtime":"2023-03-08T10:16:36-05:00","size":380490,"digest":"1e7931bfff1152a8dda69118b80192a6c8cf76dbca8bfe43e880e5369105ee1c","integrity":"sha256-Hnkxv/8RUqjdppEYuAGSpsjPdtvKi/5D6IDlNpEF7hw="},"content/ecomiccon/strength_test-c560ee667d8d68df87da6218e9512f4c6265cb1e67bc0b55018243bc9d376917.jpg":{"logical_path":"content/ecomiccon/strength_test.jpg","mtime":"2023-03-08T10:16:36-05:00","size":266425,"digest":"c560ee667d8d68df87da6218e9512f4c6265cb1e67bc0b55018243bc9d376917","integrity":"sha256-xWDuZn2NaN+H2mIY6VEvTGJlyx5nvAtVAYJDvJ03aRc="},"content/ecomiccon/drdoom_link-a9c7801652f196ddd8cc1d454cf6e9c2c7ea4664cf5facd42c120a7b1b3b527d.jpg":{"logical_path":"content/ecomiccon/drdoom_link.jpg","mtime":"2023-03-08T10:16:36-05:00","size":275293,"digest":"a9c7801652f196ddd8cc1d454cf6e9c2c7ea4664cf5facd42c120a7b1b3b527d","integrity":"sha256-qceAFlLxlt3YzB1FTPbpwsfqRmTPX6zULBIKexs7Un0="},"content/ecomiccon/morhpin_lunch-ab0e13bfe301a53a11ec83af82fe4a50d33f4d7ec462251d5230a24f80ebef24.jpg":{"logical_path":"content/ecomiccon/morhpin_lunch.jpg","mtime":"2023-03-08T10:16:36-05:00","size":165802,"digest":"ab0e13bfe301a53a11ec83af82fe4a50d33f4d7ec462251d5230a24f80ebef24","integrity":"sha256-qw4Tv+MBpToR7IOvgv5KUNM/TX7EYiUdUjCiT4Dr7yQ="},"content/ecomiccon/working_link-64d49a31c5309cf694a8462b40482785cdc8f812a9fbf0a07efc8ee5d139928e.jpg":{"logical_path":"content/ecomiccon/working_link.jpg","mtime":"2023-03-08T10:16:36-05:00","size":559522,"digest":"64d49a31c5309cf694a8462b40482785cdc8f812a9fbf0a07efc8ee5d139928e","integrity":"sha256-ZNSaMcUwnPaUqEYrQEgnhc3I+BKp+/CgfvyO5dE5ko4="},"content/ecomiccon/super_meeting-ca825c4932b6d4ae674cd3eaca8931ff3a08388a67096450c43531e9a0c07a22.png":{"logical_path":"content/ecomiccon/super_meeting.png","mtime":"2023-03-08T10:16:36-05:00","size":394968,"digest":"ca825c4932b6d4ae674cd3eaca8931ff3a08388a67096450c43531e9a0c07a22","integrity":"sha256-yoJcSTK21K5nTNPqyokx/zoIOIpnCWRQxDUx6aDAeiI="},"content/ecomiccon/kickass_thirsty-6c601b06f864d5433d2bd7271548ad1678fd18926d75556b312b59a650850c3c.jpg":{"logical_path":"content/ecomiccon/kickass_thirsty.jpg","mtime":"2023-03-08T10:16:36-05:00","size":381511,"digest":"6c601b06f864d5433d2bd7271548ad1678fd18926d75556b312b59a650850c3c","integrity":"sha256-bGAbBvhk1UM9K9cnFUitFnj9GJJtdVVrMStZplCFDDw="},"content/ecomiccon/working_riker-2ef8edace8686e9837471e41b955f708139209513df446de7081c7aab6aa3f8c.jpg":{"logical_path":"content/ecomiccon/working_riker.jpg","mtime":"2023-03-08T10:16:36-05:00","size":401610,"digest":"2ef8edace8686e9837471e41b955f708139209513df446de7081c7aab6aa3f8c","integrity":"sha256-LvjtrOhobpg3Rx5BuVX3CBOSCVE99EbecIHHqraqP4w="},"content/ecomiccon/photo_thrones-2274c5db2349af0fd44d950d3d30e1903c23866ffdd4b7e960ab9afafdda3ed3.jpg":{"logical_path":"content/ecomiccon/photo_thrones.jpg","mtime":"2023-03-08T10:16:36-05:00","size":168258,"digest":"2274c5db2349af0fd44d950d3d30e1903c23866ffdd4b7e960ab9afafdda3ed3","integrity":"sha256-InTF2yNJrw/UTZUNPTDhkDwjhm/91LfpYKua+v3aPtM="},"content/ecomiccon/photo_power-f50002be0e99a4ef7865b86ae1fe1d9f320aa5dd50f25333ecc75f7c51d58465.jpg":{"logical_path":"content/ecomiccon/photo_power.jpg","mtime":"2023-03-08T10:16:36-05:00","size":304896,"digest":"f50002be0e99a4ef7865b86ae1fe1d9f320aa5dd50f25333ecc75f7c51d58465","integrity":"sha256-9QACvg6ZpO94Zbhq4f4dnzIKpd1Q8lMz7MdffFHVhGU="},"content/ecomiccon/photo_marvel-847e392b63f296bee8eb9ebd51d9a6541c4319a01bed27a8f36a0c7be873f29f.jpg":{"logical_path":"content/ecomiccon/photo_marvel.jpg","mtime":"2023-03-08T10:16:36-05:00","size":202218,"digest":"847e392b63f296bee8eb9ebd51d9a6541c4319a01bed27a8f36a0c7be873f29f","integrity":"sha256-hH45K2Pylr7o6569UdmmVBxDGaAb7Seo82oMe+hz8p8="},"content/ecomiccon/all_of_ecomiccon-a4679a345038eab38e4b28c0973739a1d0193ba1154f75b3a3c3fcc2e751a079.jpg":{"logical_path":"content/ecomiccon/all_of_ecomiccon.jpg","mtime":"2023-03-08T10:16:36-05:00","size":301158,"digest":"a4679a345038eab38e4b28c0973739a1d0193ba1154f75b3a3c3fcc2e751a079","integrity":"sha256-pGeaNFA46rOOSyjAlzc5odAZO6EVT3Wzo8P8wudRoHk="},"content/rubyconf5k_2014/stafford-e537c7852df7c461cd572b25b0db38d4f4b8748504d045e3aab3a5212d80c6a8.jpg":{"logical_path":"content/rubyconf5k_2014/stafford.jpg","mtime":"2023-03-08T10:16:37-05:00","size":227395,"digest":"e537c7852df7c461cd572b25b0db38d4f4b8748504d045e3aab3a5212d80c6a8","integrity":"sha256-5TfHhS33xGHNVyslsNs41PS4dIUE0EXjqrOlIS2Axqg="},"content/rubyconf5k_2014/shirts-8d88c259d652d34716d73e5ef0303c4066c2388a180eb0f23372fd061460bd91.jpg":{"logical_path":"content/rubyconf5k_2014/shirts.jpg","mtime":"2023-03-08T10:16:37-05:00","size":271487,"digest":"8d88c259d652d34716d73e5ef0303c4066c2388a180eb0f23372fd061460bd91","integrity":"sha256-jYjCWdZS00cW1z5e8DA8QGbCOIoYDrDyM3L9BhRgvZE="},"content/rubyconf5k_2014/kylepeyton-3cf69afa9af902d839a9d0d0016d4c9d8f056b61eff028a27d4935434660266b.jpg":{"logical_path":"content/rubyconf5k_2014/kylepeyton.jpg","mtime":"2023-03-08T10:16:37-05:00","size":68685,"digest":"3cf69afa9af902d839a9d0d0016d4c9d8f056b61eff028a27d4935434660266b","integrity":"sha256-PPaa+pr5Atg5qdDQAW1MnY8Fa2Hv8CiifUk1Q0ZgJms="},"content/rubyconf5k_2014/bridgetlandis-2f44464735ed6d816427430f9e4c0f01bcb5ef5441ddd2ecafd742de3f07a0cf.jpg":{"logical_path":"content/rubyconf5k_2014/bridgetlandis.jpg","mtime":"2023-03-08T10:16:37-05:00","size":80405,"digest":"2f44464735ed6d816427430f9e4c0f01bcb5ef5441ddd2ecafd742de3f07a0cf","integrity":"sha256-L0RGRzXtbYFkJ0MPnkwPAby171RB3dLsr9dC3j8HoM8="},"content/rubyconf5k_2014/justinschumacher-87c8a6ffec0a45d1f34262bc0bc0506a91996719858204519775d689db1e42c7.jpg":{"logical_path":"content/rubyconf5k_2014/justinschumacher.jpg","mtime":"2023-03-08T10:16:37-05:00","size":79362,"digest":"87c8a6ffec0a45d1f34262bc0bc0506a91996719858204519775d689db1e42c7","integrity":"sha256-h8im/+wKRdHzQmK8C8BQapGZZxmFggRRl3XWidseQsc="},"content/bundler_inline_gemfile/pre_flag-0180d46177063c57a3378b4cf6e021082a1de074506a82064a9d11a8192d0b87.png":{"logical_path":"content/bundler_inline_gemfile/pre_flag.png","mtime":"2023-03-08T10:16:36-05:00","size":15151,"digest":"0180d46177063c57a3378b4cf6e021082a1de074506a82064a9d11a8192d0b87","integrity":"sha256-AYDUYXcGPFejN4tM9uAhCCod4HRQaoIGSp0RqBktC4c="},"content/bundler_inline_gemfile/post_flag-96759bb2218646ba696491d739be1f7c28a578012931c71893f00dfba835dd84.png":{"logical_path":"content/bundler_inline_gemfile/post_flag.png","mtime":"2023-03-08T10:16:36-05:00","size":31408,"digest":"96759bb2218646ba696491d739be1f7c28a578012931c71893f00dfba835dd84","integrity":"sha256-lnWbsiGGRrppZJHXOb4ffCileAEpMccYk/AN+6g13YQ="},"content/ruby_for_good_2015/kitchen-111bb1986c02777f01f7aa860743dfd82a9c8f5553d0e326ae8603f851432403.jpg":{"logical_path":"content/ruby_for_good_2015/kitchen.jpg","mtime":"2023-03-08T10:16:37-05:00","size":63913,"digest":"111bb1986c02777f01f7aa860743dfd82a9c8f5553d0e326ae8603f851432403","integrity":"sha256-ERuxmGwCd38B96qGB0Pf2Cqcj1VT0OMmroYD+FFDJAM="},"content/ruby_for_good_2015/pairing-ccfaf0b6ff090b62c6f8c269be758c83bf68808591beb0d47850a835fe2c087d.jpg":{"logical_path":"content/ruby_for_good_2015/pairing.jpg","mtime":"2023-03-08T10:16:37-05:00","size":55615,"digest":"ccfaf0b6ff090b62c6f8c269be758c83bf68808591beb0d47850a835fe2c087d","integrity":"sha256-zPrwtv8JC2LG+MJpvnWMg79ogIWRvrDUeFCoNf4sCH0="},"content/ruby_for_good_2015/group-hug-1e7025598e1a81c0756b38f499c55132a70d8f1993f164506a7afff167e0539f.jpg":{"logical_path":"content/ruby_for_good_2015/group-hug.jpg","mtime":"2023-03-08T10:16:37-05:00","size":51121,"digest":"1e7025598e1a81c0756b38f499c55132a70d8f1993f164506a7afff167e0539f","integrity":"sha256-HnAlWY4agcB1azj0mcVRMqcNjxmT8WRQanr/8WfgU58="},"content/ruby_for_good_2015/group-heart-944f814f7946bcc58534f6a6ea5edc6a543368e77c039548143928de67706a51.jpg":{"logical_path":"content/ruby_for_good_2015/group-heart.jpg","mtime":"2023-03-08T10:16:37-05:00","size":56409,"digest":"944f814f7946bcc58534f6a6ea5edc6a543368e77c039548143928de67706a51","integrity":"sha256-lE+BT3lGvMWFNPam6l7calQzaOd8A5VIFDko3mdwalE="},"content/ossdatacamp/meeting-6348827ac90cef0e7d7f96c5f8b1df053b94b0d3d8439a5d2949a7f707ddf571.jpg":{"logical_path":"content/ossdatacamp/meeting.jpg","mtime":"2023-03-08T10:16:37-05:00","size":140642,"digest":"6348827ac90cef0e7d7f96c5f8b1df053b94b0d3d8439a5d2949a7f707ddf571","integrity":"sha256-Y0iCeskM7w59f5bF+LHfBTuUsNPYQ5pdKUmn9wfd9XE="},"content/ossdatacamp/learn-ruby-0b4c5cd3070a6c9d07024adafa582678e87402fcb715ba6eafa8e219a66aa965.jpg":{"logical_path":"content/ossdatacamp/learn-ruby.jpg","mtime":"2023-03-08T10:16:37-05:00","size":51693,"digest":"0b4c5cd3070a6c9d07024adafa582678e87402fcb715ba6eafa8e219a66aa965","integrity":"sha256-C0xc0wcKbJ0HAkra+lgmeOh0Avy3Fbpur6jiGaZqqWU="},"content/ossdatacamp/keepit-weird-d53badd278a1edb1c401e4586df6bfabdb6877e297cbddbe1106cd6f9da6e1ae.jpg":{"logical_path":"content/ossdatacamp/keepit-weird.jpg","mtime":"2023-03-08T10:16:37-05:00","size":44218,"digest":"d53badd278a1edb1c401e4586df6bfabdb6877e297cbddbe1106cd6f9da6e1ae","integrity":"sha256-1Tut0nih7bHEAeRYbfa/q9tod+KXy92+EQbNb52m4a4="},"content/ossdatacamp/sql-server-stretch-dd93c4c92375890e248d7c85047e1540c2e2bc75eecf3444faf78395ad024832.png":{"logical_path":"content/ossdatacamp/sql-server-stretch.png","mtime":"2023-03-08T10:16:37-05:00","size":22216,"digest":"dd93c4c92375890e248d7c85047e1540c2e2bc75eecf3444faf78395ad024832","integrity":"sha256-3ZPEySN1iQ4kjXyFBH4VQMLivHXuzzRE+veDla0CSDI="},"content/ossdatacamp/fetch-tobias-ternstrom-a2049eccce1dc3aa59f8e73633e8c919b1ce22b93ac1be8934bb8a057ecf7b80.jpg":{"logical_path":"content/ossdatacamp/fetch-tobias-ternstrom.jpg","mtime":"2023-03-08T10:16:37-05:00","size":41929,"digest":"a2049eccce1dc3aa59f8e73633e8c919b1ce22b93ac1be8934bb8a057ecf7b80","integrity":"sha256-ogSezM4dw6pZ+Oc2M+jJGbHOIrk6wb6JNLuKBX7Pe4A="},"content/rubyconf5k_2015/shirt_front-201946e782faf245391493c649de7f0ba2498150f5bbab4f22b7a4c216adda29.jpg":{"logical_path":"content/rubyconf5k_2015/shirt_front.jpg","mtime":"2023-03-08T10:16:37-05:00","size":25836,"digest":"201946e782faf245391493c649de7f0ba2498150f5bbab4f22b7a4c216adda29","integrity":"sha256-IBlG54L68kU5FJPGSd5/C6JJgVD1u6tPIrekwhat2ik="},"content/rubyconf5k_2015/shirt_back-2fa83ab884df9a3fadc65abf6f330c90a42f46bc75ffcb59f62c18f6c63f0e91.jpg":{"logical_path":"content/rubyconf5k_2015/shirt_back.jpg","mtime":"2023-03-08T10:16:37-05:00","size":26736,"digest":"2fa83ab884df9a3fadc65abf6f330c90a42f46bc75ffcb59f62c18f6c63f0e91","integrity":"sha256-L6g6uITfmj+txlq/bzMMkKQvRrx1/8tZ9iwY9sY/DpE="},"content/rolling-travisci-builds-9c7cad612f28eb2e30bc03efac7a717b5b8002e93c3f23cf0f537b25b79a4d7c.gif":{"logical_path":"content/rolling-travisci-builds.gif","mtime":"2023-03-08T10:16:37-05:00","size":461012,"digest":"9c7cad612f28eb2e30bc03efac7a717b5b8002e93c3f23cf0f537b25b79a4d7c","integrity":"sha256-nHytYS8o6y4wvAPvrHpxe1uAAuk8PyPPD1N7JbeaTXw="},"content/ruby_for_good_2016/campfire-4-44a53f3bfd88404abb2ad7a61ad588c5a04dd9b1d15b1dc503d7613e264d7f2f.jpg":{"logical_path":"content/ruby_for_good_2016/campfire-4.jpg","mtime":"2023-03-08T10:16:37-05:00","size":129648,"digest":"44a53f3bfd88404abb2ad7a61ad588c5a04dd9b1d15b1dc503d7613e264d7f2f","integrity":"sha256-RKU/O/2IQEq7KtemGtWIxaBN2bHRWx3FA9dhPiZNfy8="},"content/ruby_for_good_2016/campfire-5-4a3c5c06dee84804dd7a4da3dae52c4c1925866678f2a519ba998aee1b34cb72.jpg":{"logical_path":"content/ruby_for_good_2016/campfire-5.jpg","mtime":"2023-03-08T10:16:37-05:00","size":91921,"digest":"4a3c5c06dee84804dd7a4da3dae52c4c1925866678f2a519ba998aee1b34cb72","integrity":"sha256-SjxcBt7oSATdek2j2uUsTBklhmZ48qUZupmK7hs0y3I="},"content/ruby_for_good_2016/board-games-8cc0520a5e76d3d7d59b82aa82d0be11bd68e5fc2c4059df452cb8a56c4b8b3b.jpg":{"logical_path":"content/ruby_for_good_2016/board-games.jpg","mtime":"2023-03-08T10:16:37-05:00","size":91959,"digest":"8cc0520a5e76d3d7d59b82aa82d0be11bd68e5fc2c4059df452cb8a56c4b8b3b","integrity":"sha256-jMBSCl5209fVm4KqgtC+Eb1o5fwsQFnfRSy4pWxLizs="},"content/ruby_for_good_2016/working-124ae1411d040f594fc2a7bddfe94ddd829a0f6722f18bf8303c40fede53986a.jpg":{"logical_path":"content/ruby_for_good_2016/working.jpg","mtime":"2023-03-08T10:16:37-05:00","size":88873,"digest":"124ae1411d040f594fc2a7bddfe94ddd829a0f6722f18bf8303c40fede53986a","integrity":"sha256-EkrhQR0ED1lPwqe93+lN3YKaD2ci8Yv4MDxA/t5TmGo="},"content/ruby_for_good_2016/working-2-ec511a7b249641b9d722d48b7b53ab790471aeddf9055dc8800a3ae91e4e124c.jpg":{"logical_path":"content/ruby_for_good_2016/working-2.jpg","mtime":"2023-03-08T10:16:37-05:00","size":107151,"digest":"ec511a7b249641b9d722d48b7b53ab790471aeddf9055dc8800a3ae91e4e124c","integrity":"sha256-7FEaeySWQbnXItSLe1OreQRxrt35BV3IgAo66R5OEkw="},"content/ruby_for_good_2016/campfire-2-ce79d504ed02b314fb5a9e23aca81ff8816795b18a4d5fe482c1cf6d6a2c23f0.jpg":{"logical_path":"content/ruby_for_good_2016/campfire-2.jpg","mtime":"2023-03-08T10:16:37-05:00","size":81369,"digest":"ce79d504ed02b314fb5a9e23aca81ff8816795b18a4d5fe482c1cf6d6a2c23f0","integrity":"sha256-znnVBO0CsxT7Wp4jrKgf+IFnlbGKTV/kgsHPbWosI/A="},"content/ruby_for_good_2016/inkers-7c5134d2cbb72c062356000122899ba49f6077aa236a65eb6a9de4d7e8c38a33.jpg":{"logical_path":"content/ruby_for_good_2016/inkers.jpg","mtime":"2023-03-08T10:16:37-05:00","size":91673,"digest":"7c5134d2cbb72c062356000122899ba49f6077aa236a65eb6a9de4d7e8c38a33","integrity":"sha256-fFE00su3LAYjVgABIombpJ9gd6ojamXrap3k1+jDijM="},"content/ruby_for_good_2016/shirts-9f9ffb92c97df6c53dbb92e4012985222ad50befc9edc7c125a14657c380135a.jpg":{"logical_path":"content/ruby_for_good_2016/shirts.jpg","mtime":"2023-03-08T10:16:37-05:00","size":109617,"digest":"9f9ffb92c97df6c53dbb92e4012985222ad50befc9edc7c125a14657c380135a","integrity":"sha256-n5/7ksl99sU9u5LkASmFIirVC+/J7cfBJaFGV8OAE1o="},"content/ruby_for_good_2016/gooders-52bb2e52f9578f75e128d6dffeafb195e2ddc27941f20329b7c90b2f82a333b8.jpg":{"logical_path":"content/ruby_for_good_2016/gooders.jpg","mtime":"2023-03-08T10:16:37-05:00","size":212326,"digest":"52bb2e52f9578f75e128d6dffeafb195e2ddc27941f20329b7c90b2f82a333b8","integrity":"sha256-UrsuUvlXj3XhKNbf/q+xleLdwnlB8gMpt8kLL4KjM7g="},"content/rebuilding-the-plane-were-flying-in/cowboy_airplain-69c9c283776f8da4b84af61f8a74792e5404a0e7060797228633197f7d68dfdd.png":{"logical_path":"content/rebuilding-the-plane-were-flying-in/cowboy_airplain.png","mtime":"2023-03-08T10:16:37-05:00","size":3680,"digest":"69c9c283776f8da4b84af61f8a74792e5404a0e7060797228633197f7d68dfdd","integrity":"sha256-acnCg3dvjaS4SvYfinR5LlQEoOcGB5cihjMZf31o390="},"content/rebuilding-the-plane-were-flying-in/lightening_brain-ea6ff38f13d583effb8c25912d0b47ea936a855d7fb0e5336fde5ff408b67d5f.png":{"logical_path":"content/rebuilding-the-plane-were-flying-in/lightening_brain.png","mtime":"2023-03-08T10:16:37-05:00","size":18064,"digest":"ea6ff38f13d583effb8c25912d0b47ea936a855d7fb0e5336fde5ff408b67d5f","integrity":"sha256-6m/zjxPVg+/7jCWRLQtH6pNqhV1/sOUzb95f9Ai2fV8="},"content/rebuilding-the-plane-were-flying-in/wrench_man-d5d169c1acc3b30fa6dfa8ba665226816de30dbe87edd9cf68690b497f1c3488.png":{"logical_path":"content/rebuilding-the-plane-were-flying-in/wrench_man.png","mtime":"2023-03-08T10:16:37-05:00","size":4777,"digest":"d5d169c1acc3b30fa6dfa8ba665226816de30dbe87edd9cf68690b497f1c3488","integrity":"sha256-1dFpwazDsw+m36i6ZlImgW3jDb6H7dnPaGkLSX8cNIg="},"content/halloween2016/front-desk-e82945632033105b967fd98c112c6a6c682b6adde160e59d6ac23b3b6cd69e78.jpg":{"logical_path":"content/halloween2016/front-desk.jpg","mtime":"2023-03-08T10:16:36-05:00","size":66168,"digest":"e82945632033105b967fd98c112c6a6c682b6adde160e59d6ac23b3b6cd69e78","integrity":"sha256-6ClFYyAzEFuWf9mMESxqbGgrat3hYOWdasI7O2zWnng="},"content/halloween2016/dragondojo-58da63b265a6572c05005798bbae2923236dbb11ff6536586a4c690768ff5dde.jpg":{"logical_path":"content/halloween2016/dragondojo.jpg","mtime":"2023-03-08T10:16:36-05:00","size":42599,"digest":"58da63b265a6572c05005798bbae2923236dbb11ff6536586a4c690768ff5dde","integrity":"sha256-WNpjsmWmVywFAFeYu64pIyNtuxH/ZTZYakxpB2j/Xd4="},"content/halloween2016/dojodecor-ebb87cae436d350cf424c4863e0b1eef7f08513d5395f257d4e7ac905610813b.jpg":{"logical_path":"content/halloween2016/dojodecor.jpg","mtime":"2023-03-08T10:16:36-05:00","size":35693,"digest":"ebb87cae436d350cf424c4863e0b1eef7f08513d5395f257d4e7ac905610813b","integrity":"sha256-67h8rkNtNQz0JMSGPgse738IUT1TlfJX1OeskFYQgTs="},"content/halloween2016/3rdfloordecor-b12e16005ab1fd7e5dde87a8690da4769ea8c01172132d603c62786634be01dc.jpg":{"logical_path":"content/halloween2016/3rdfloordecor.jpg","mtime":"2023-03-08T10:16:36-05:00","size":41319,"digest":"b12e16005ab1fd7e5dde87a8690da4769ea8c01172132d603c62786634be01dc","integrity":"sha256-sS4WAFqx/X5d3oeoaQ2kdp6owBFyEy1gPGJ4ZjS+Adw="},"content/halloween2016/treats-499d5397bf53f308a64559a6a24dc996e94e9cca0d4e2680a9c863d98b3343a9.jpg":{"logical_path":"content/halloween2016/treats.jpg","mtime":"2023-03-08T10:16:37-05:00","size":40160,"digest":"499d5397bf53f308a64559a6a24dc996e94e9cca0d4e2680a9c863d98b3343a9","integrity":"sha256-SZ1Tl79T8wimRVmmok3JlulOnMoNTiaAqchj2YszQ6k="},"content/halloween2016/ghost-busters-chill-ba8e5cbcbdac45705289882cbc621b2792a6b9cfb71681e788858b00ee300140.jpg":{"logical_path":"content/halloween2016/ghost-busters-chill.jpg","mtime":"2023-03-08T10:16:36-05:00","size":50517,"digest":"ba8e5cbcbdac45705289882cbc621b2792a6b9cfb71681e788858b00ee300140","integrity":"sha256-uo5cvL2sRXBSiYgsvGIbJ5Kmuc+3FoHniIWLAO4wAUA="},"content/halloween2016/ghost-buster-coffee-d8f5f857a286f5ad3e2fdf8a4653cd072ee18d899b706340bb41a159488e3b7f.jpg":{"logical_path":"content/halloween2016/ghost-buster-coffee.jpg","mtime":"2023-03-08T10:16:36-05:00","size":41974,"digest":"d8f5f857a286f5ad3e2fdf8a4653cd072ee18d899b706340bb41a159488e3b7f","integrity":"sha256-2PX4V6KG9a0+L9+KRlPNBy7hjYmbcGNAu0GhWUiOO38="},"content/halloween2016/wolverine-48b1dc13d593618726fe2b42ed46fdb7356ca76a0ead2732ce8375d5bdf00de6.jpg":{"logical_path":"content/halloween2016/wolverine.jpg","mtime":"2023-03-08T10:16:37-05:00","size":31324,"digest":"48b1dc13d593618726fe2b42ed46fdb7356ca76a0ead2732ce8375d5bdf00de6","integrity":"sha256-SLHcE9WTYYcm/itC7Ub9tzVsp2oOrScyzoN11b3wDeY="},"content/halloween2016/avengers-3d415f55c4b62e0cae5e221953fb690ca457531f219601d48f221b3fc767e4f4.jpg":{"logical_path":"content/halloween2016/avengers.jpg","mtime":"2023-03-08T10:16:36-05:00","size":21987,"digest":"3d415f55c4b62e0cae5e221953fb690ca457531f219601d48f221b3fc767e4f4","integrity":"sha256-PUFfVcS2LgyuXiIZU/tpDKRXUx8hlgHUjyIbP8dn5PQ="},"content/halloween2016/batmankolas-0f0e2540300eea8cc63390ea859c691a7473c3a66fd0d4a072291dcaadaba65c.jpg":{"logical_path":"content/halloween2016/batmankolas.jpg","mtime":"2023-03-08T10:16:36-05:00","size":12470,"digest":"0f0e2540300eea8cc63390ea859c691a7473c3a66fd0d4a072291dcaadaba65c","integrity":"sha256-Dw4lQDAO6ozGM5DqhZxpGnRzw6Zv0NSgcikdyq2rplw="},"content/halloween2016/link-fcac7b1644d9c194aa351c5067cad22fd3ebfca2f502e385774ecf874beeedc1.jpg":{"logical_path":"content/halloween2016/link.jpg","mtime":"2023-03-08T10:16:36-05:00","size":6633,"digest":"fcac7b1644d9c194aa351c5067cad22fd3ebfca2f502e385774ecf874beeedc1","integrity":"sha256-/Kx7FkTZwZSqNRxQZ8rSL9Pr/KL1AuOFd07Ph0vu7cE="},"content/halloween2016/staypuft-db7844cae519ea7656b9c7a4a518c2d9ac67e0ebab21646ba0ead49bde1d57d6.jpg":{"logical_path":"content/halloween2016/staypuft.jpg","mtime":"2023-03-08T10:16:37-05:00","size":68064,"digest":"db7844cae519ea7656b9c7a4a518c2d9ac67e0ebab21646ba0ead49bde1d57d6","integrity":"sha256-23hEyuUZ6nZWucekpRjC2axn4OurIWRroOrUm94dV9Y="},"content/halloween2016/scream-e6f73a68804b13c246f8550a50556df82e8520a8886c68567fee958d73bd6ba8.jpg":{"logical_path":"content/halloween2016/scream.jpg","mtime":"2023-03-08T10:16:36-05:00","size":12628,"digest":"e6f73a68804b13c246f8550a50556df82e8520a8886c68567fee958d73bd6ba8","integrity":"sha256-5vc6aIBLE8JG+FUKUFVt+C6FIKiIbGhWf+6VjXO9a6g="},"content/halloween2016/disneyvillans-7739775657501c562464f1b5e1fa3c2b616c039a584e92c7cde9586b79e3b342.jpg":{"logical_path":"content/halloween2016/disneyvillans.jpg","mtime":"2023-03-08T10:16:36-05:00","size":36706,"digest":"7739775657501c562464f1b5e1fa3c2b616c039a584e92c7cde9586b79e3b342","integrity":"sha256-dzl3VldQHFYkZPG14fo8K2FsA5pYTpLHzelYa3njs0I="},"content/halloween2016/star-wars-57e16a7f95a92e516d2566c87112aa459392b7c09510ecb148063292d44792b5.jpg":{"logical_path":"content/halloween2016/star-wars.jpg","mtime":"2023-03-08T10:16:37-05:00","size":37798,"digest":"57e16a7f95a92e516d2566c87112aa459392b7c09510ecb148063292d44792b5","integrity":"sha256-V+Fqf5WpLlFtJWbIcRKqRZOSt8CVEOyxSAYyktRHkrU="},"content/halloween2016/phasmazoo2-7e8b69a9907f48a643a36c35480c56d780066913e0c04eaa98f8015c0a04877b.jpg":{"logical_path":"content/halloween2016/phasmazoo2.jpg","mtime":"2023-03-08T10:16:36-05:00","size":67485,"digest":"7e8b69a9907f48a643a36c35480c56d780066913e0c04eaa98f8015c0a04877b","integrity":"sha256-fotpqZB/SKZDo2w1SAxW14AGaRPgwE6qmPgBXAoEh3s="},"content/halloween2016/tacobell-6db2d1114366296f718f492b1511116575466f5446b11ef85e03afa3249de1de.jpg":{"logical_path":"content/halloween2016/tacobell.jpg","mtime":"2023-03-08T10:16:37-05:00","size":42182,"digest":"6db2d1114366296f718f492b1511116575466f5446b11ef85e03afa3249de1de","integrity":"sha256-bbLREUNmKW9xj0krFRERZXVGb1RGsR74XgOvoySd4d4="},"content/halloween2016/ewok-1ab5c5e3c2a1cc0b60e753a49894eabf5356a61401d5ef57418262e912c73e44.jpg":{"logical_path":"content/halloween2016/ewok.jpg","mtime":"2023-03-08T10:16:36-05:00","size":36996,"digest":"1ab5c5e3c2a1cc0b60e753a49894eabf5356a61401d5ef57418262e912c73e44","integrity":"sha256-GrXF48KhzAtg51OkmJTqv1NWphQB1e9XQYJi6RLHPkQ="},"content/halloween2016/underthesea-12debc7e9e40d9064c59ed13c01efaf91c6d81c32cd294a315d57b6606a7d98d.jpg":{"logical_path":"content/halloween2016/underthesea.jpg","mtime":"2023-03-08T10:16:37-05:00","size":45414,"digest":"12debc7e9e40d9064c59ed13c01efaf91c6d81c32cd294a315d57b6606a7d98d","integrity":"sha256-Et68fp5A2QZMWe0TwB76+RxtgcMs0pSjFdV7Zgan2Y0="},"content/halloween2016/browsers-bca956e9391b922787864d911d7edcbcb0fc35988ff89e7bf5c78df45df3bea0.jpg":{"logical_path":"content/halloween2016/browsers.jpg","mtime":"2023-03-08T10:16:36-05:00","size":24657,"digest":"bca956e9391b922787864d911d7edcbcb0fc35988ff89e7bf5c78df45df3bea0","integrity":"sha256-vKlW6TkbkieHhk2RHX7cvLD8NZiP+J579ceN9F3zvqA="},"content/halloween2016/marty-4fad90ff89ddad37f583d12ab6a5b8e87c8abdc84c91dff4cede3db562989128.jpg":{"logical_path":"content/halloween2016/marty.jpg","mtime":"2023-03-08T10:16:36-05:00","size":9857,"digest":"4fad90ff89ddad37f583d12ab6a5b8e87c8abdc84c91dff4cede3db562989128","integrity":"sha256-T62Q/4ndrTf1g9EqtqW46HyKvchMkd/0zt49tWKYkSg="},"content/halloween2016/cats-a4d7d6dc357679f187e95325aa1222ea85cd135dc1c8dd9119dccb8b3ffdf761.jpg":{"logical_path":"content/halloween2016/cats.jpg","mtime":"2023-03-08T10:16:36-05:00","size":15614,"digest":"a4d7d6dc357679f187e95325aa1222ea85cd135dc1c8dd9119dccb8b3ffdf761","integrity":"sha256-pNfW3DV2efGH6VMlqhIi6oXNE13ByN2RGdzLiz/992E="},"content/halloween2016/hackerman-26c059edcb3ed46a5ca16f9e70dca7d8a5a4b429e240af8689c8f2ab364bd715.jpg":{"logical_path":"content/halloween2016/hackerman.jpg","mtime":"2023-03-08T10:16:36-05:00","size":14527,"digest":"26c059edcb3ed46a5ca16f9e70dca7d8a5a4b429e240af8689c8f2ab364bd715","integrity":"sha256-JsBZ7cs+1GpcoW+ecNyn2KWktCniQK+GicjyqzZL1xU="},"content/halloween2016/calvinhobbes-73b644eb0738f1ae69ac13d8a7d0fc3b3d1896994cdb1771998d1ae9f69d52be.jpg":{"logical_path":"content/halloween2016/calvinhobbes.jpg","mtime":"2023-03-08T10:16:36-05:00","size":5545,"digest":"73b644eb0738f1ae69ac13d8a7d0fc3b3d1896994cdb1771998d1ae9f69d52be","integrity":"sha256-c7ZE6wc48a5prBPYp9D8Oz0YlplM2xdxmY0a6fadUr4="},"content/halloween2016/bobross-c56f9fcbc149ce4056516a2ba9eba642c0b154f6d0b5d46e95730382f9938d90.jpg":{"logical_path":"content/halloween2016/bobross.jpg","mtime":"2023-03-08T10:16:36-05:00","size":18691,"digest":"c56f9fcbc149ce4056516a2ba9eba642c0b154f6d0b5d46e95730382f9938d90","integrity":"sha256-xW+fy8FJzkBWUWorqeumQsCxVPbQtdRulXMDgvmTjZA="},"content/halloween2016/beaten-3433ad50ec6f2f30cbcbc6a3240c257d56466a0f5b559e6ebc637dc64d402406.jpg":{"logical_path":"content/halloween2016/beaten.jpg","mtime":"2023-03-08T10:16:36-05:00","size":7665,"digest":"3433ad50ec6f2f30cbcbc6a3240c257d56466a0f5b559e6ebc637dc64d402406","integrity":"sha256-NDOtUOxvLzDLy8ajJAwlfVZGag9bVZ5uvGN9xk1AJAY="},"content/halloween2016/basketball-f9287b64ec244af3262872268c73649607b41089270770a4243b960715d287b9.jpg":{"logical_path":"content/halloween2016/basketball.jpg","mtime":"2023-03-08T10:16:36-05:00","size":5553,"digest":"f9287b64ec244af3262872268c73649607b41089270770a4243b960715d287b9","integrity":"sha256-+Sh7ZOwkSvMmKHImjHNklge0EIknB3CkJDuWBxXSh7k="},"content/halloween2016/conventioncon-af7a30fcb37c39e2df4b8982a2a0f4564bdc38965535610fb1fa194537e6f576.jpg":{"logical_path":"content/halloween2016/conventioncon.jpg","mtime":"2023-03-08T10:16:36-05:00","size":11999,"digest":"af7a30fcb37c39e2df4b8982a2a0f4564bdc38965535610fb1fa194537e6f576","integrity":"sha256-r3ow/LN8OeLfS4mCoqD0VkvcOJZVNWEPsfoZRTfm9XY="},"content/halloween2016/disney-008a7308795952b9693489a2b9fbf1d0dd8523eb0b23c5493a49d2718339118f.jpg":{"logical_path":"content/halloween2016/disney.jpg","mtime":"2023-03-08T10:16:36-05:00","size":46552,"digest":"008a7308795952b9693489a2b9fbf1d0dd8523eb0b23c5493a49d2718339118f","integrity":"sha256-AIpzCHlZUrlpNImiufvx0N2FI+sLI8VJOknScYM5EY8="},"content/halloween2016/fridaynightlights-81fe769d4d123afb3c978f551abe389efe63445913ad239fc8e715bfc7b9c6ae.jpg":{"logical_path":"content/halloween2016/fridaynightlights.jpg","mtime":"2023-03-08T10:16:36-05:00","size":35702,"digest":"81fe769d4d123afb3c978f551abe389efe63445913ad239fc8e715bfc7b9c6ae","integrity":"sha256-gf52nU0SOvs8l49VGr44nv5jRFkTrSOfyOcVv8e5xq4="},"content/halloween2016/maverik-7701cfb7f5e95cf16ec07fb06515a4ba926b94a22db50a24d90750aba694e514.jpg":{"logical_path":"content/halloween2016/maverik.jpg","mtime":"2023-03-08T10:16:36-05:00","size":65296,"digest":"7701cfb7f5e95cf16ec07fb06515a4ba926b94a22db50a24d90750aba694e514","integrity":"sha256-dwHPt/XpXPFuwH+wZRWkupJrlKIttQok2QdQq6aU5RQ="},"content/halloween2016/ghostbustwothers-fd33c4a8aee6f89e9e9cdef50dd7dac725a436acbeb44a9b9783eb6c68e108df.jpg":{"logical_path":"content/halloween2016/ghostbustwothers.jpg","mtime":"2023-03-08T10:16:36-05:00","size":55993,"digest":"fd33c4a8aee6f89e9e9cdef50dd7dac725a436acbeb44a9b9783eb6c68e108df","integrity":"sha256-/TPEqK7m+J6enN71DdfaxyWkNqy+tEqbl4PrbGjhCN8="},"content/halloween2016/bustghost-d79f9f5486bd4776f06a8e644a91ceb1a40b75b1e63df1dfebc61e856b1ba678.jpg":{"logical_path":"content/halloween2016/bustghost.jpg","mtime":"2023-03-08T10:16:36-05:00","size":70214,"digest":"d79f9f5486bd4776f06a8e644a91ceb1a40b75b1e63df1dfebc61e856b1ba678","integrity":"sha256-15+fVIa9R3bwao5kSpHOsaQLdbHmPfHf68YehWsbpng="},"content/halloween2016/motherofdragons-a711c90a28b4e33a0f46f2905273f0b53a819e71c512b403982c15122f85b304.jpg":{"logical_path":"content/halloween2016/motherofdragons.jpg","mtime":"2023-03-08T10:16:36-05:00","size":24781,"digest":"a711c90a28b4e33a0f46f2905273f0b53a819e71c512b403982c15122f85b304","integrity":"sha256-pxHJCii04zoPRvKQUnPwtTqBnnHFErQDmCwVEi+FswQ="},"content/halloween2016/oz-6e28ce6c1982758a53738c1be3168c671e41220479fd09a12ccfdf45288d3740.jpg":{"logical_path":"content/halloween2016/oz.jpg","mtime":"2023-03-08T10:16:36-05:00","size":36307,"digest":"6e28ce6c1982758a53738c1be3168c671e41220479fd09a12ccfdf45288d3740","integrity":"sha256-bijObBmCdYpTc4wb4xaMZx5BIgR5/QmhLM/fRSiNN0A="},"content/halloween2016/tinkerpeter-1a73b63ec25b7568d3c124c1df421d9886a7f0f29fd4fb9b9f4087dd5fb17c2b.jpg":{"logical_path":"content/halloween2016/tinkerpeter.jpg","mtime":"2023-03-08T10:16:37-05:00","size":15998,"digest":"1a73b63ec25b7568d3c124c1df421d9886a7f0f29fd4fb9b9f4087dd5fb17c2b","integrity":"sha256-GnO2PsJbdWjTwSTB30IdmIan8PKf1Pubn0CH3V+xfCs="},"content/halloween2016/customink-2a2947526c929e11631c4ac954ccc94e460a07c445d1366d0d453aaa134efe90.jpg":{"logical_path":"content/halloween2016/customink.jpg","mtime":"2023-03-08T10:16:36-05:00","size":13781,"digest":"2a2947526c929e11631c4ac954ccc94e460a07c445d1366d0d453aaa134efe90","integrity":"sha256-KilHUmySnhFjHErJVMzJTkYKB8RF0TZtDUU6qhNO/pA="},"content/halloween2016/deer-24e610cee9e92a51e3310908a7de76d92d906caf5788e693184b7900d4bd4617.jpg":{"logical_path":"content/halloween2016/deer.jpg","mtime":"2023-03-08T10:16:36-05:00","size":22835,"digest":"24e610cee9e92a51e3310908a7de76d92d906caf5788e693184b7900d4bd4617","integrity":"sha256-JOYQzunpKlHjMQkIp9522S2QbK9XiOaTGEt5ANS9Rhc="},"content/halloween2016/eleven-9c006be4ebca93dd5dddc63264f7c9ec06ae993b32dbd47348a8daa9abdac6b8.jpg":{"logical_path":"content/halloween2016/eleven.jpg","mtime":"2023-03-08T10:16:36-05:00","size":11825,"digest":"9c006be4ebca93dd5dddc63264f7c9ec06ae993b32dbd47348a8daa9abdac6b8","integrity":"sha256-nABr5OvKk91d3cYyZPfJ7AaumTsy29RzSKjaqavaxrg="},"content/halloween2016/emojitwins-d4c96127519fec07b4272a6d5c6800c26f72752a76e28654d1bf562dbc2b37de.jpg":{"logical_path":"content/halloween2016/emojitwins.jpg","mtime":"2023-03-08T10:16:36-05:00","size":14641,"digest":"d4c96127519fec07b4272a6d5c6800c26f72752a76e28654d1bf562dbc2b37de","integrity":"sha256-1MlhJ1Gf7Ae0JyptXGgAwm9ydSp24oZU0b9WLbwrN94="},"content/halloween2016/famous-5d930700749fb3ee3ee49e74b48180f391105f77f501696b4b0eb964ff24bd9a.jpg":{"logical_path":"content/halloween2016/famous.jpg","mtime":"2023-03-08T10:16:36-05:00","size":5670,"digest":"5d930700749fb3ee3ee49e74b48180f391105f77f501696b4b0eb964ff24bd9a","integrity":"sha256-XZMHAHSfs+4+5J50tIGA85EQX3f1AWlrSw65ZP8kvZo="},"content/halloween2016/frieda-1341da9d27a8d5d105151d8d61579815db679c0aee80975327c6508a82141052.jpg":{"logical_path":"content/halloween2016/frieda.jpg","mtime":"2023-03-08T10:16:36-05:00","size":7288,"digest":"1341da9d27a8d5d105151d8d61579815db679c0aee80975327c6508a82141052","integrity":"sha256-E0HanSeo1dEFFR2NYVeYFdtnnArugJdTJ8ZQioIUEFI="},"content/halloween2016/greek-f4fe387f6e29820431da715c89037e9dd26f7cc37921118290652569d7f0f28c.jpg":{"logical_path":"content/halloween2016/greek.jpg","mtime":"2023-03-08T10:16:36-05:00","size":17159,"digest":"f4fe387f6e29820431da715c89037e9dd26f7cc37921118290652569d7f0f28c","integrity":"sha256-9P44f24pggQx2nFciQN+ndJvfMN5IRGCkGUladfw8ow="},"content/halloween2016/leslieknope-7c1bdd7022968cf7412ff433249772fb69cc85e22b034422424adc8c2edbf0d3.jpg":{"logical_path":"content/halloween2016/leslieknope.jpg","mtime":"2023-03-08T10:16:36-05:00","size":12246,"digest":"7c1bdd7022968cf7412ff433249772fb69cc85e22b034422424adc8c2edbf0d3","integrity":"sha256-fBvdcCKWjPdBL/QzJJdy+2nMheIrA0QiQkrcjC7b8NM="},"content/halloween2016/magicbus-ecdfd404f46cb4c67209e678c247941ede61bafc1dd76887069563a0b7720c4d.jpg":{"logical_path":"content/halloween2016/magicbus.jpg","mtime":"2023-03-08T10:16:36-05:00","size":6774,"digest":"ecdfd404f46cb4c67209e678c247941ede61bafc1dd76887069563a0b7720c4d","integrity":"sha256-7N/UBPRstMZyCeZ4wkeUHt5huvwd12iHBpVjoLdyDE0="},"content/halloween2016/military-7535a7b49db2df282598c9ee8e61845ba863accc660bb2e4fe5c8db39527fab0.jpg":{"logical_path":"content/halloween2016/military.jpg","mtime":"2023-03-08T10:16:36-05:00","size":7726,"digest":"7535a7b49db2df282598c9ee8e61845ba863accc660bb2e4fe5c8db39527fab0","integrity":"sha256-dTWntJ2y3yglmMnujmGEW6hjrMxmC7Lk/lyNs5Un+rA="},"content/halloween2016/mortecai-2f28aa6a1fa339c6f7a8f1399d60d53c6a45e4ea077aae93c317f9417852e27d.jpg":{"logical_path":"content/halloween2016/mortecai.jpg","mtime":"2023-03-08T10:16:36-05:00","size":10875,"digest":"2f28aa6a1fa339c6f7a8f1399d60d53c6a45e4ea077aae93c317f9417852e27d","integrity":"sha256-Lyiqah+jOcb3qPE5nWDVPGpF5OoHeq6Twxf5QXhS4n0="},"content/halloween2016/rainingmen-0c44013e150e07de9fb94fb35c6e9aa758e5e42ffd5df6e5c66f15875161a8ed.jpg":{"logical_path":"content/halloween2016/rainingmen.jpg","mtime":"2023-03-08T10:16:36-05:00","size":13652,"digest":"0c44013e150e07de9fb94fb35c6e9aa758e5e42ffd5df6e5c66f15875161a8ed","integrity":"sha256-DEQBPhUOB96fuU+zXG6ap1jl5C/9Xfblxm8Vh1FhqO0="},"content/halloween2016/rugrats-ee6081d324e4987be7ac529dd48ea9281c6118968803ef94ffd71f34c2499932.jpg":{"logical_path":"content/halloween2016/rugrats.jpg","mtime":"2023-03-08T10:16:36-05:00","size":8576,"digest":"ee6081d324e4987be7ac529dd48ea9281c6118968803ef94ffd71f34c2499932","integrity":"sha256-7mCB0yTkmHvnrFKd1I6pKBxhGJaIA++U/9cfNMJJmTI="},"content/halloween2016/willywonka-a463d4774cddff679c1d0cf412c943f6a6dd12055a8521e27e6a385cd43f28c3.jpg":{"logical_path":"content/halloween2016/willywonka.jpg","mtime":"2023-03-08T10:16:37-05:00","size":12836,"digest":"a463d4774cddff679c1d0cf412c943f6a6dd12055a8521e27e6a385cd43f28c3","integrity":"sha256-pGPUd0zd/2ecHQz0EslD9qbdEgVahSHifmo4XNQ/KMM="},"content/halloween2016/superbaby-a3e7f0efdca96f8caea133fafa9c2c0f6d91bc576ac8508882f3081a4102fa38.jpg":{"logical_path":"content/halloween2016/superbaby.jpg","mtime":"2023-03-08T10:16:37-05:00","size":14679,"digest":"a3e7f0efdca96f8caea133fafa9c2c0f6d91bc576ac8508882f3081a4102fa38","integrity":"sha256-o+fw79ypb4yuoTP6+pwsD22RvFdqyFCIgvMIGkEC+jg="},"content/halloween2016/panda-c0f52400e771376e02cf9921ad8c2f5c9603eb8704cbfd37231ef09b9ad7e567.jpg":{"logical_path":"content/halloween2016/panda.jpg","mtime":"2023-03-08T10:16:36-05:00","size":12539,"digest":"c0f52400e771376e02cf9921ad8c2f5c9603eb8704cbfd37231ef09b9ad7e567","integrity":"sha256-wPUkAOdxN24Cz5khrYwvXJYD64cEy/03Ix7wm5rX5Wc="},"content/halloween2016/maverick-buster-ea391333cd97de93109c85f44d737d29b9c2de3faa2e0ae620cbd7f9271316da.jpg":{"logical_path":"content/halloween2016/maverick-buster.jpg","mtime":"2023-03-08T10:16:36-05:00","size":41827,"digest":"ea391333cd97de93109c85f44d737d29b9c2de3faa2e0ae620cbd7f9271316da","integrity":"sha256-6jkTM82X3pMQnIX0TXN9KbnC3j+qLgrmIMvX+ScTFto="},"content/halloween2016/slimmerghost-6a367bd3202458529d4b11767679742c56d523e0320765f029bdcf731337e0b8.gif":{"logical_path":"content/halloween2016/slimmerghost.gif","mtime":"2023-03-08T10:16:37-05:00","size":2226041,"digest":"6a367bd3202458529d4b11767679742c56d523e0320765f029bdcf731337e0b8","integrity":"sha256-ajZ70yAkWFKdSxF2dnl0LFbVI+AyB2XwKb3PcxM34Lg="},"content/static-components/augusta-juniors-spirit-hooded-sweatshirt-card-c52feb507554ff32696a424b330090a49555c337db1e7fdbbd975e2789dbe482.jpg":{"logical_path":"content/static-components/augusta-juniors-spirit-hooded-sweatshirt-card.jpg","mtime":"2023-03-08T10:16:37-05:00","size":60476,"digest":"c52feb507554ff32696a424b330090a49555c337db1e7fdbbd975e2789dbe482","integrity":"sha256-xS/rUHVU/zJpakJLMwCQpJVVwzfbHn/bvZdeJ4nb5II="},"content/static-components/augusta-juniors-spirit-hooded-sweatshirt__start-74181b4f7ae39b74e8fcb4d64d5c2eefba3d328b1e4841ceb84908b5ec3b50ae.gif":{"logical_path":"content/static-components/augusta-juniors-spirit-hooded-sweatshirt__start.gif","mtime":"2023-03-08T10:16:37-05:00","size":126595,"digest":"74181b4f7ae39b74e8fcb4d64d5c2eefba3d328b1e4841ceb84908b5ec3b50ae","integrity":"sha256-dBgbT3rjm3To/LTWTVwu77o9MoseSEHOuEkItew7UK4="},"content/static-components/final-results-280dbcfd02fcea204dc683e446c3d09edba179cf246012c624b2884ca7f0b214.jpg":{"logical_path":"content/static-components/final-results.jpg","mtime":"2023-03-08T10:16:37-05:00","size":159785,"digest":"280dbcfd02fcea204dc683e446c3d09edba179cf246012c624b2884ca7f0b214","integrity":"sha256-KA28/QL86iBNxoPkRsPQntuhec8kYBLGJLKITKfwshQ="},"content/best-tech-manager/andrew_willis_2016-timmy-awards-9bf9100b19b6a6b21f6bb9e343352ccb908258dcff8ad02c359da0a5d0ea6f9d.jpg":{"logical_path":"content/best-tech-manager/andrew_willis_2016-timmy-awards.jpg","mtime":"2023-03-08T10:16:36-05:00","size":103711,"digest":"9bf9100b19b6a6b21f6bb9e343352ccb908258dcff8ad02c359da0a5d0ea6f9d","integrity":"sha256-m/kQCxm2prIfa7njQzUsy5CCWNz/itAsNZ2gpdDqb50="},"content/power-moves/docker-memory-prefs-8ad442dfb46bd33ab9a8eefdb54f598b96861d251ee06e5ffabcbe9dced7ed5d.jpg":{"logical_path":"content/power-moves/docker-memory-prefs.jpg","mtime":"2023-03-08T10:16:37-05:00","size":43860,"digest":"8ad442dfb46bd33ab9a8eefdb54f598b96861d251ee06e5ffabcbe9dced7ed5d","integrity":"sha256-itRC37Rr0zq5qO79tU9Zi5aGHSUe4G5f+ry+nc7X7V0="},"content/power-moves/welcome-to-rails-051121731979c533db830998a3cb6a81f02ed053fd051f090d29a231fb71a6cb.jpg":{"logical_path":"content/power-moves/welcome-to-rails.jpg","mtime":"2023-03-08T10:16:37-05:00","size":87044,"digest":"051121731979c533db830998a3cb6a81f02ed053fd051f090d29a231fb71a6cb","integrity":"sha256-BREhcxl5xTPbgwmYo8tqgfAu0FP9BR8JDSmiMftxpss="},"content/power-moves/thanks-6a02ee3951e46a9891740dcb02ee9aee4bef4eee8de029992554b479a8ce4983.jpg":{"logical_path":"content/power-moves/thanks.jpg","mtime":"2023-03-08T10:16:37-05:00","size":58947,"digest":"6a02ee3951e46a9891740dcb02ee9aee4bef4eee8de029992554b479a8ce4983","integrity":"sha256-agLuOVHkapiRdA3LAu6a7kvvTu6N4CmZJVS0eajOSYM="},"content/imgix/imgix-a6c45c8e8fbb4c352c598fcf2282992a1e145914ab324e413248e25068982afd.png":{"logical_path":"content/imgix/imgix.png","mtime":"2023-03-08T10:16:37-05:00","size":11195,"digest":"a6c45c8e8fbb4c352c598fcf2282992a1e145914ab324e413248e25068982afd","integrity":"sha256-psRcjo+7TDUsWY/PIoKZKh4UWRSrMk5BMkjiUGiYKv0="},"content/imgix/steps/0-7dc4b1cb585739f856abaaeff2102a176a7b6f690bb9e66a7a6602dbf0a1ee6f.png":{"logical_path":"content/imgix/steps/0.png","mtime":"2023-03-08T10:16:37-05:00","size":69367,"digest":"7dc4b1cb585739f856abaaeff2102a176a7b6f690bb9e66a7a6602dbf0a1ee6f","integrity":"sha256-fcSxy1hXOfhWq6rv8hAqF2p7b2kLueZqemYC2/Ch7m8="},"content/imgix/steps/1-c6da1cbcc1a856dc84073172007ae4115a5681fc437e4188dbe5ad441bdc8ea2.jpg":{"logical_path":"content/imgix/steps/1.jpg","mtime":"2023-03-08T10:16:37-05:00","size":42764,"digest":"c6da1cbcc1a856dc84073172007ae4115a5681fc437e4188dbe5ad441bdc8ea2","integrity":"sha256-xtocvMGoVtyEBzFyAHrkEVpWgfxDfkGI2+WtRBvcjqI="},"content/imgix/steps/2-bc0d5beea73569580a426338c1bbb9f0d3cba54d8723b9268921d634a650c079.png":{"logical_path":"content/imgix/steps/2.png","mtime":"2023-03-08T10:16:37-05:00","size":6473,"digest":"bc0d5beea73569580a426338c1bbb9f0d3cba54d8723b9268921d634a650c079","integrity":"sha256-vA1b7qc1aVgKQmM4wbu58NPLpU2HI7kmiSHWNKZQwHk="},"content/imgix/steps/2-debug-51de0c2249bd64a62bfce07f4695a8174457e018e9f02344b316d13a53dff67d.png":{"logical_path":"content/imgix/steps/2-debug.png","mtime":"2023-03-08T10:16:37-05:00","size":11788,"digest":"51de0c2249bd64a62bfce07f4695a8174457e018e9f02344b316d13a53dff67d","integrity":"sha256-Ud4MIkm9ZKYr/OB/RpWoF0RX4Bjp8CNEsxbROlPf9n0="},"content/imgix/steps/2-final-42566d816a563ab2ab427b40730ddbcddfbb74cf0dff2eea55fb6dac8895d467.jpg":{"logical_path":"content/imgix/steps/2-final.jpg","mtime":"2023-03-08T10:16:37-05:00","size":43745,"digest":"42566d816a563ab2ab427b40730ddbcddfbb74cf0dff2eea55fb6dac8895d467","integrity":"sha256-QlZtgWpWOrKrQntAcw3bzd+7dM8N/y7qVfttrIiV1Gc="},"content/imgix/steps/3-724c6a82ee2fe96c23013de72237d225a04d0b8cc74ad2fa30e9948a430e2cf1.jpg":{"logical_path":"content/imgix/steps/3.jpg","mtime":"2023-03-08T10:16:37-05:00","size":13075,"digest":"724c6a82ee2fe96c23013de72237d225a04d0b8cc74ad2fa30e9948a430e2cf1","integrity":"sha256-ckxqgu4v6WwjAT3nIjfSJaBNC4zHStL6MOmUikMOLPE="},"content/imgix/steps/final-bdfcc823ef810b7ce63b9194c9ee41235a57f3e739a0b784d3a44759ec958d15.jpg":{"logical_path":"content/imgix/steps/final.jpg","mtime":"2023-03-08T10:16:37-05:00","size":47880,"digest":"bdfcc823ef810b7ce63b9194c9ee41235a57f3e739a0b784d3a44759ec958d15","integrity":"sha256-vfzII++BC3zmO5GUye5BI1pX8+c5oLeE06RHWeyVjRU="},"content/imgix/advanced-73d094a30670f2bc0a0b66a1e23d82587521a87eb71ffa6f01c53bf93227f19a.jpg":{"logical_path":"content/imgix/advanced.jpg","mtime":"2023-03-08T10:16:37-05:00","size":154819,"digest":"73d094a30670f2bc0a0b66a1e23d82587521a87eb71ffa6f01c53bf93227f19a","integrity":"sha256-c9CUowZw8rwKC2ah4j2CWHUhqH63H/pvAcU7+TIn8Zo="},"content/lamby/lamby-723dfdc344c076844d5ad81fe9baab2f1240650bee200865edd3dbe6d77c336a.jpg":{"logical_path":"content/lamby/lamby.jpg","mtime":"2023-03-08T10:16:37-05:00","size":50042,"digest":"723dfdc344c076844d5ad81fe9baab2f1240650bee200865edd3dbe6d77c336a","integrity":"sha256-cj39w0TAdoRNWtgf6bqrLxJAZQvuIAhl7dPb5td8M2o="},"content/sidekiq/sidekiq-architecture-55a7b0491a724dd5c4b39570ea60966d438f97bebc2e9562ab5881db319fdc0f.png":{"logical_path":"content/sidekiq/sidekiq-architecture.png","mtime":"2023-03-08T10:16:37-05:00","size":17114,"digest":"55a7b0491a724dd5c4b39570ea60966d438f97bebc2e9562ab5881db319fdc0f","integrity":"sha256-VaewSRpyTdXEs5Vw6mCWbUOPl768LpViq1iB2zGf3A8="},"content/processing/2019-07-23_2323-345741e1030f3f4fb0e81f84f6e1bc9d8cf5f02a202cfab4221c2fbf8768d6e6.png":{"logical_path":"content/processing/2019-07-23_2323.png","mtime":"2023-03-08T10:16:37-05:00","size":199754,"digest":"345741e1030f3f4fb0e81f84f6e1bc9d8cf5f02a202cfab4221c2fbf8768d6e6","integrity":"sha256-NFdB4QMPP0+w6B+E9uG8nYz18CogLPq0Ihwvv4do1uY="},"content/processing/2019-07-24_2058-0ae2fa145e4510dff9bbebd01327ed83d2219c74972a75f9395b25c5cdbf4477.png":{"logical_path":"content/processing/2019-07-24_2058.png","mtime":"2023-03-08T10:16:37-05:00","size":174161,"digest":"0ae2fa145e4510dff9bbebd01327ed83d2219c74972a75f9395b25c5cdbf4477","integrity":"sha256-CuL6FF5FEN/5u+vQEyftg9IhnHSXKnX5OVslxc2/RHc="},"content/processing/2019-07-24_2106-df211f48b40921b6e418d0eefa28cffb1b965d0cc73f331faeeabaf2cc0c5ef6.png":{"logical_path":"content/processing/2019-07-24_2106.png","mtime":"2023-03-08T10:16:37-05:00","size":49362,"digest":"df211f48b40921b6e418d0eefa28cffb1b965d0cc73f331faeeabaf2cc0c5ef6","integrity":"sha256-3yEfSLQJIbbkGNDu+ijP+xuWXQzHPzMfruq68swMXvY="},"content/sidekiq/sidekiq-pro-3bfb28483017046cddbbeea528ee831351b3d4bc44e245e9008641f3ecca1bf8.png":{"logical_path":"content/sidekiq/sidekiq-pro.png","mtime":"2023-03-08T10:16:37-05:00","size":15727,"digest":"3bfb28483017046cddbbeea528ee831351b3d4bc44e245e9008641f3ecca1bf8","integrity":"sha256-O/soSDAXBGzdu+6lKO6DE1Gz1LxE4kXpAIZB8+zKG/g="},"content/githubactions-part1/getting-started-1-11b27f87329096758a9fb863ef51cfad256cc037131e0f0b1ff96715f02b6971.png":{"logical_path":"content/githubactions-part1/getting-started-1.png","mtime":"2023-03-08T10:16:36-05:00","size":74111,"digest":"11b27f87329096758a9fb863ef51cfad256cc037131e0f0b1ff96715f02b6971","integrity":"sha256-EbJ/hzKQlnWKn7hj71HPrSVswDcTHg8LH/lnFfAraXE="},"content/githubactions-part1/getting-started-2-0f8df01b7bb3cfcee139c4660ad6809c6c8d51b835698621eeaae8ea2f17191d.png":{"logical_path":"content/githubactions-part1/getting-started-2.png","mtime":"2023-03-08T10:16:36-05:00","size":75343,"digest":"0f8df01b7bb3cfcee139c4660ad6809c6c8d51b835698621eeaae8ea2f17191d","integrity":"sha256-D43wG3uzz87hOcRmCtaAnGyNUbg1aYYh7qro6i8XGR0="},"content/githubactions-part1/sqlite3.h-missing-c7238e45fec7653852119a511d6c7f324bc7286b72856d25545da207a98500c7.png":{"logical_path":"content/githubactions-part1/sqlite3.h-missing.png","mtime":"2023-03-08T10:16:36-05:00","size":18280,"digest":"c7238e45fec7653852119a511d6c7f324bc7286b72856d25545da207a98500c7","integrity":"sha256-xyOORf7HZThSEZpRHWx/MkvHKGtyhW0lVF2iB6mFAMc="},"content/githubactions-part1/greener-37f000dd8772fe3cdb04c5320283b6f7a6d827c8a4296a367d4a8425519abf8a.png":{"logical_path":"content/githubactions-part1/greener.png","mtime":"2023-03-08T10:16:36-05:00","size":14153,"digest":"37f000dd8772fe3cdb04c5320283b6f7a6d827c8a4296a367d4a8425519abf8a","integrity":"sha256-N/AA3Ydy/jzbBMUyAoO296bYJ8ikKWo2fUqEJVGav4o="},"content/githubactions-part1/pick-a-name-9043b5306864c99e9256383e8e618c7d2fcddf87a5ace6dd5863d01f3c8065da.png":{"logical_path":"content/githubactions-part1/pick-a-name.png","mtime":"2023-03-08T10:16:36-05:00","size":7437,"digest":"9043b5306864c99e9256383e8e618c7d2fcddf87a5ace6dd5863d01f3c8065da","integrity":"sha256-kEO1MGhkyZ6SVjg+jmGMfS/N34elrObdWGPQHzyAZdo="},"content/githubactions-part1/badge-398ae483455e770d9e51da964075caf992f37b068b6b12ddadd399d7d13805f2.png":{"logical_path":"content/githubactions-part1/badge.png","mtime":"2023-03-08T10:16:36-05:00","size":10792,"digest":"398ae483455e770d9e51da964075caf992f37b068b6b12ddadd399d7d13805f2","integrity":"sha256-OYrkg0Vedw2eUdqWQHXK+ZLzewaLaxLdrdOZ19E4BfI="},"content/internship_lunch-033d2e567072e89f0e9730e1883dcfb5e99ab7dcfb44474292b83893bab86163.png":{"logical_path":"content/internship_lunch.png","mtime":"2023-03-08T10:16:37-05:00","size":84167,"digest":"033d2e567072e89f0e9730e1883dcfb5e99ab7dcfb44474292b83893bab86163","integrity":"sha256-Az0uVnBy6J8OlzDhiD3Ptemat9z7REdCkrg4k7q4YWM="},"content/working-at-custom-ink/logan-screenprinting-558806ca6e8329772d7e3eee9ca4c50203bf85e0e118c3d393fbcfac0fd6ab67.jpg":{"logical_path":"content/working-at-custom-ink/logan-screenprinting.jpg","mtime":"2023-03-08T10:16:37-05:00","size":19282,"digest":"558806ca6e8329772d7e3eee9ca4c50203bf85e0e118c3d393fbcfac0fd6ab67","integrity":"sha256-VYgGym6DKXctfj7unKTFAgO/heDhGMPTk/vPrA/Wq2c="},"content/working-at-custom-ink/tech-logos-3a05461db679fd21965da95d46eef6d2e6dd90b394f05224a4bef11843040ee3.png":{"logical_path":"content/working-at-custom-ink/tech-logos.png","mtime":"2023-03-08T10:16:37-05:00","size":29182,"digest":"3a05461db679fd21965da95d46eef6d2e6dd90b394f05224a4bef11843040ee3","integrity":"sha256-OgVGHbZ5/SGWXaldRu720ubdkLOU8FIkpL7xGEMEDuM="},"content/cloud-cookies/our-goal-cookie-historgram-a30e6c17078564dea909a10dc62d7b933fd0a9075f6768f44deae5a2cf478b98.jpg":{"logical_path":"content/cloud-cookies/our-goal-cookie-historgram.jpg","mtime":"2023-03-08T10:16:36-05:00","size":35393,"digest":"a30e6c17078564dea909a10dc62d7b933fd0a9075f6768f44deae5a2cf478b98","integrity":"sha256-ow5sFweFZN6pCaENxi17kz/QqQdfZ2j0Terlos9Hi5g="},"content/cloud-cookies/monitoring-d5c2151f652f0468fa18728cc801b1bc6b5d3ee83675352941795d40ec6782a4.png":{"logical_path":"content/cloud-cookies/monitoring.png","mtime":"2023-03-08T10:16:36-05:00","size":42508,"digest":"d5c2151f652f0468fa18728cc801b1bc6b5d3ee83675352941795d40ec6782a4","integrity":"sha256-1cIVH2UvBGj6GHKMyAGxvGtdPug2dTUpQXldQOxngqQ="},"content/cloud-cookies/analysis-4443a3747c705b8d8f42dbe345bd095263ec140fcc964079bd4ba5f980f3ec57.png":{"logical_path":"content/cloud-cookies/analysis.png","mtime":"2023-03-08T10:16:36-05:00","size":13256,"digest":"4443a3747c705b8d8f42dbe345bd095263ec140fcc964079bd4ba5f980f3ec57","integrity":"sha256-REOjdHxwW42PQtvjRb0JUmPsFA/MlkB5vUul+YDz7Fc="},"content/tapping-into-logs/sumo-logic-query-6423fdf74608a34b5a7a383036751091c20a7a0365ac4cb2a35de1e17d8e07f2.png":{"logical_path":"content/tapping-into-logs/sumo-logic-query.png","mtime":"2023-03-08T10:16:37-05:00","size":15805,"digest":"6423fdf74608a34b5a7a383036751091c20a7a0365ac4cb2a35de1e17d8e07f2","integrity":"sha256-ZCP990YIo0taejgwNnUQkcIKegNlrEyyo13h4X2OB/I="},"content/tapping-into-logs/sumo-logic-report-568740550d282d0071e0059f0f8ef72e13be0c89b5d4939094f9b80eb8fb3cc2.png":{"logical_path":"content/tapping-into-logs/sumo-logic-report.png","mtime":"2023-03-08T10:16:37-05:00","size":24773,"digest":"568740550d282d0071e0059f0f8ef72e13be0c89b5d4939094f9b80eb8fb3cc2","integrity":"sha256-VodAVQ0oLQBx4AWfD473LhO+DIm11JOQlPm4Drj7PMI="},"content/company-culture-around-the-globe/wow_tv-9421ac7574c374607ca0c21e42d4f4f66728657c92eb1df8244f22a147940eed.jpg":{"logical_path":"content/company-culture-around-the-globe/wow_tv.jpg","mtime":"2023-03-08T10:16:36-05:00","size":789772,"digest":"9421ac7574c374607ca0c21e42d4f4f66728657c92eb1df8244f22a147940eed","integrity":"sha256-lCGsdXTDdGB8oMIeQtT09mcoZXyS6x34JE8ioUeUDu0="},"content/company-culture-around-the-globe/prague_wow_system-4a40f88befd668069a1f55ab95df642efcfb4ba98e360980fb857a29cfd251ce.jpg":{"logical_path":"content/company-culture-around-the-globe/prague_wow_system.jpg","mtime":"2023-03-08T10:16:36-05:00","size":316563,"digest":"4a40f88befd668069a1f55ab95df642efcfb4ba98e360980fb857a29cfd251ce","integrity":"sha256-SkD4i+/WaAaaH1Wrld9kLvz7S6mONgmA+4V6Kc/SUc4="},"content/company-culture-around-the-globe/prague_office-ad09f1acdd47af6353ebb6f30b7b4f2d5d9bff2b96204d9286e7902f639955d6.jpg":{"logical_path":"content/company-culture-around-the-globe/prague_office.jpg","mtime":"2023-03-08T10:16:36-05:00","size":267379,"digest":"ad09f1acdd47af6353ebb6f30b7b4f2d5d9bff2b96204d9286e7902f639955d6","integrity":"sha256-rQnxrN1Hr2NT67bzC3tPLV2b/yuWIE2ShueQL2OZVdY="},"content/aurora-serverless/ruby-gems-f734b8e2f5931ef0e5a82530b143a978c0e0c341502fb817aba90f72e458b517.gif":{"logical_path":"content/aurora-serverless/ruby-gems.gif","mtime":"2023-03-08T10:16:36-05:00","size":1697980,"digest":"f734b8e2f5931ef0e5a82530b143a978c0e0c341502fb817aba90f72e458b517","integrity":"sha256-9zS44vWTHvDlqCUwsUOpeMDgw0FQL7gXq6kPcuRYtRc="},"content/aurora-serverless/serverlessHero-badge-min-5b1c815b4bec88c668720fda5358aae9ab030b662a679b518d7431d5b952e328.png":{"logical_path":"content/aurora-serverless/serverlessHero-badge-min.png","mtime":"2023-03-08T10:16:36-05:00","size":3589,"digest":"5b1c815b4bec88c668720fda5358aae9ab030b662a679b518d7431d5b952e328","integrity":"sha256-WxyBW0vsiMZocg/aU1iq6asDC2YqZ5tRjXQx1blS4yg="},"content/aurora-serverless/hero-ken-collins-min-d995876e07f891979f61c75266ecea9c97702c8f023f2bbd35ba3ce5270a2976.jpg":{"logical_path":"content/aurora-serverless/hero-ken-collins-min.jpg","mtime":"2023-03-08T10:16:36-05:00","size":22160,"digest":"d995876e07f891979f61c75266ecea9c97702c8f023f2bbd35ba3ce5270a2976","integrity":"sha256-2ZWHbgf4kZefYcdSZuzqnJdwLI8CPyu9Nbo85ScKKXY="},"content/varnish-replace/backend-services-f1d6b94a50d3f736faf5d47cdeacf2cf4919227a92c4ca55efe70623e71920f6.png":{"logical_path":"content/varnish-replace/backend-services.png","mtime":"2023-03-08T10:16:37-05:00","size":8231,"digest":"f1d6b94a50d3f736faf5d47cdeacf2cf4919227a92c4ca55efe70623e71920f6","integrity":"sha256-8da5SlDT9zb69dR83qzyz0kZInqSxMpV7+cGI+cZIPY="},"content/varnish-replace/caching-4cc405bb8047220fc37a1b8dca9713837eb00258e207451158fec1f2392a231a.png":{"logical_path":"content/varnish-replace/caching.png","mtime":"2023-03-08T10:16:37-05:00","size":17934,"digest":"4cc405bb8047220fc37a1b8dca9713837eb00258e207451158fec1f2392a231a","integrity":"sha256-TMQFu4BHIg/DehuNypcTg36wAljiB0URWP7B8jkqIxo="},"content/varnish-replace/varnish-58c2d4be776138b588e7d880e4aa3f68e651197aa4a4e032b688a904ee74a23f.png":{"logical_path":"content/varnish-replace/varnish.png","mtime":"2023-03-08T10:16:37-05:00","size":17983,"digest":"58c2d4be776138b588e7d880e4aa3f68e651197aa4a4e032b688a904ee74a23f","integrity":"sha256-WMLUvndhOLWI59iA5Ko/aOZRGXqkpOAytoipBO50oj8="},"content/varnish-replace/varnish-uhoh-6ed4c555d8e00d43b375ae989e11d5bce0748140473bc8cf7a38045920c11cfb.png":{"logical_path":"content/varnish-replace/varnish-uhoh.png","mtime":"2023-03-08T10:16:37-05:00","size":15792,"digest":"6ed4c555d8e00d43b375ae989e11d5bce0748140473bc8cf7a38045920c11cfb","integrity":"sha256-btTFVdjgDUOzda6YnhHVvOB0gUBHO8jPejgEWSDBHPs="},"content/varnish-replace/transition-6df2a48b0349c799af033950b0f7bc76e2158ac302d02dd2c8f23b6431b69cf1.png":{"logical_path":"content/varnish-replace/transition.png","mtime":"2023-03-08T10:16:37-05:00","size":12828,"digest":"6df2a48b0349c799af033950b0f7bc76e2158ac302d02dd2c8f23b6431b69cf1","integrity":"sha256-bfKkiwNJx5mvAzlQsPe8duIVisMC0C3SyPI7ZDG2nPE="},"content/varnish-replace/finalstate-9dcb4c17832724613cad88c92c5f70659662f0a49e478fdb94bf5b5ffc132954.png":{"logical_path":"content/varnish-replace/finalstate.png","mtime":"2023-03-08T10:16:37-05:00","size":10548,"digest":"9dcb4c17832724613cad88c92c5f70659662f0a49e478fdb94bf5b5ffc132954","integrity":"sha256-nctMF4MnJGE8rYjJLF9wZZZi8KSeR4/blL9bX/wTKVQ="},"content/lambda-file-systems/access-point-70ae0b8ee149f62acd5eb939f2b92ee21bcca337a0df593065bba775b525b66c.png":{"logical_path":"content/lambda-file-systems/access-point.png","mtime":"2023-03-08T10:16:37-05:00","size":35733,"digest":"70ae0b8ee149f62acd5eb939f2b92ee21bcca337a0df593065bba775b525b66c","integrity":"sha256-cK4LjuFJ9irNXrk58rku4hvMozeg31kwZbundbUltmw="},"content/lambda-file-systems/lambda-rails-360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e.png":{"logical_path":"content/lambda-file-systems/lambda-rails.png","mtime":"2023-03-08T10:16:37-05:00","size":44521,"digest":"360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e","integrity":"sha256-Ng+Q1m+OqHOcv3M0082pGDk+IYRpZT3grg4Oh7ELrC4="},"content/lambda-file-systems/datasync-task-0b9663539358843ad91455a48ffe0a3d3471934247fdbaeac1ad70df8a227d15.png":{"logical_path":"content/lambda-file-systems/datasync-task.png","mtime":"2023-03-08T10:16:37-05:00","size":21741,"digest":"0b9663539358843ad91455a48ffe0a3d3471934247fdbaeac1ad70df8a227d15","integrity":"sha256-C5ZjU5NYhDrZFFWkj/4KPTRxk0JH/brqwa1w34oifRU="},"content/ssm-crr-lambda/ssm_crr_customink-8406544a87d272f0ffa7cf246890b8d84e0eac361329197835f08cd4398de3d2.png":{"logical_path":"content/ssm-crr-lambda/ssm_crr_customink.png","mtime":"2023-03-08T10:16:37-05:00","size":41001,"digest":"8406544a87d272f0ffa7cf246890b8d84e0eac361329197835f08cd4398de3d2","integrity":"sha256-hAZUSofScvD/p88kaJC42E4OrDYTKRl4NfCM1DmN49I="},"content/serverless-devcontainers/devcontainers-c50583eea3e4ef72a8cd7045d04c3c0385e9ef8efc8975162773ce28c3c27be1.webp":{"logical_path":"content/serverless-devcontainers/devcontainers.webp","mtime":"2023-03-08T12:19:42-05:00","size":10898,"digest":"c50583eea3e4ef72a8cd7045d04c3c0385e9ef8efc8975162773ce28c3c27be1","integrity":"sha256-xQWD7qPk73KozXBF0Ew8A4Xp7478iXUWJ3POKMPCe+E="},"content/serverless-devcontainers/vscode-codespaces-7f9106d37751482d16fb413125224e779ec55adb20efd4c026464d48d1e01dfa.webp":{"logical_path":"content/serverless-devcontainers/vscode-codespaces.webp","mtime":"2023-03-08T12:19:42-05:00","size":16618,"digest":"7f9106d37751482d16fb413125224e779ec55adb20efd4c026464d48d1e01dfa","integrity":"sha256-f5EG03dRSC0W+0ExJSJOd57FWtsg79TAJkZNSNHgHfo="},"content/serverless-devcontainers/vscode-preferences-998a7e5f016288cac7578c594ac2c2e275ac0e77d5ee183f90f3f7faa78afbe1.webp":{"logical_path":"content/serverless-devcontainers/vscode-preferences.webp","mtime":"2023-03-08T12:19:42-05:00","size":8890,"digest":"998a7e5f016288cac7578c594ac2c2e275ac0e77d5ee183f90f3f7faa78afbe1","integrity":"sha256-mYp+XwFiiMrHV4xZSsLC4nWsDnfV7hg/kPP3+qeK++E="},"content/lambda-rust/env-vars-2a128bc2c4fdc80a35244468c7386ab05a88b1c0cc4e7d41ac7acb46082776c0.webp":{"logical_path":"content/lambda-rust/env-vars.webp","mtime":"2023-03-08T12:09:04-05:00","size":6058,"digest":"2a128bc2c4fdc80a35244468c7386ab05a88b1c0cc4e7d41ac7acb46082776c0","integrity":"sha256-KhKLwsT9yAo1JERoxzhqsFqIscDMTn1BrHrLRggndsA="},"content/lambda-rust/cloud-watch-322b77dd8f0cb4fc0d07896ab76ed80d0cf6d1813651a27d7bf0af6c8706dbeb.webp":{"logical_path":"content/lambda-rust/cloud-watch.webp","mtime":"2023-03-08T12:09:05-05:00","size":16944,"digest":"322b77dd8f0cb4fc0d07896ab76ed80d0cf6d1813651a27d7bf0af6c8706dbeb","integrity":"sha256-Mit33Y8MtPwNB4lqt27YDQz20YE2UaJ9e/CvbIcG2+s="},"content/linux-devcontainers/container-areas-268f50de2e3e354f9dd3e226de34e1e9f740a838d6669902c1697653dcc90e21.png":{"logical_path":"content/linux-devcontainers/container-areas.png","mtime":"2023-03-08T11:58:30-05:00","size":5385,"digest":"268f50de2e3e354f9dd3e226de34e1e9f740a838d6669902c1697653dcc90e21","integrity":"sha256-Jo9Q3i4+NU+d0+Im3jTh6fdAqDjWZpkCwWl2U9zJDiE="},"content/linux-devcontainers/aws-lambda-before-devcontainers-7d9ad2ac5ffc39cf08115bcc97292a2bfdf816b2dc54d7bbe36e6c3381d93688.png":{"logical_path":"content/linux-devcontainers/aws-lambda-before-devcontainers.png","mtime":"2023-03-08T12:01:32-05:00","size":18196,"digest":"7d9ad2ac5ffc39cf08115bcc97292a2bfdf816b2dc54d7bbe36e6c3381d93688","integrity":"sha256-fZrSrF/8Oc8IEVvMlykqK/34FrLcVNe7425sM4HZNog="},"content/linux-devcontainers/aws-lambda-after-devcontainers-94e148ef0601a15c55848eecd0a6b591c7e8b2ce2f2ff5fc49b4ccc3aead784f.png":{"logical_path":"content/linux-devcontainers/aws-lambda-after-devcontainers.png","mtime":"2023-03-08T12:03:05-05:00","size":18151,"digest":"94e148ef0601a15c55848eecd0a6b591c7e8b2ce2f2ff5fc49b4ccc3aead784f","integrity":"sha256-lOFI7wYBoVxVhI7s0Ka1kcfoss4vL/X8SbTMw66teE8="},"content/linux-devcontainers/devcontainers-in-k8s-projects-e13c2f8cce935c9378054b32becbd76dd98704db3f7c11a072f68e81ee9674bf.png":{"logical_path":"content/linux-devcontainers/devcontainers-in-k8s-projects.png","mtime":"2023-03-08T12:03:58-05:00","size":25040,"digest":"e13c2f8cce935c9378054b32becbd76dd98704db3f7c11a072f68e81ee9674bf","integrity":"sha256-4TwvjM6TXJN4BUsyvsvXbdmHBNs/fBGgcvaOge6WdL8="},"content/circleci-deploy/circleci-deploy-trigger-4a79c8b1657909ed2de9965ad6ea53686719dcb5cd4f02fd622e260c315b395f.png":{"logical_path":"content/circleci-deploy/circleci-deploy-trigger.png","mtime":"2023-03-08T11:49:49-05:00","size":47129,"digest":"4a79c8b1657909ed2de9965ad6ea53686719dcb5cd4f02fd622e260c315b395f","integrity":"sha256-SnnIsWV5Ce0t6ZZa1upTaGcZ3LXNTwL9Yi4mDDFbOV8="}},"assets":{"fontello.eot":"fontello-5c6d5a4b860bc986924a1ec510dcddbc10a425672dc0e3ba37e3bd4020e9d84f.eot","fontello.woff":"fontello-a11118120d4b90a4c4f937c40ed47f13b4ae131b1c6371fd85ec2843d7bc7b12.woff","fontello.ttf":"fontello-813519383401ebf865d03b706d20d1624b232501f0accdfa1bff4d28265d3f74.ttf","fontello.svg":"fontello-f25b435813c4882a6189f926bc10b0fc872c358e3071d21d8386765518bc4278.svg","tbicons.eot":"tbicons-096fa3970ce3a3595debd167e1cd11422745885e43987130c7ad2b9fd020a910.eot","tbicons.woff":"tbicons-a255c4d7531756c350cd3cb8ac924a3a70dba66357bc6f53cdcce66be69e1ca4.woff","tbicons.ttf":"tbicons-04c88863a35923e4156691375c162cd8b6fb44104e3cecbc17972c89da722d17.ttf","tbicons.svg":"tbicons-737a98cc543fbd45788943a259ba88d32a06bdd4e57cf10d9631866dce5df09e.svg","app.css":"app-7364e5d923858a09e03d1594b7afe5a66431387a5a0623957af903baceb3208d.css","CustomInk_Tech_Color.png":"CustomInk_Tech_Color-1460f9e847670e2626e66143266004749ab6c7204a8d5a2ae394613f986c473d.png","content/john-dyer-first-deploy.jpg":"content/john-dyer-first-deploy-f45c9bf89c3960034590cda4d06aa7ad225e0bf82864c2d3100e8cab7c85bef2.jpg","content/lambda-file-systems/masthead.jpg":"content/lambda-file-systems/masthead-867a17f618e0c2f6b04260b68de597850d7c98b0d9872478f4317988abacce1e.jpg","content/lambda-file-systems/efs-logo.png":"content/lambda-file-systems/efs-logo-07c46dafb5ab211876311a1f125a35d320d781052fb0bc128e3fd17b73390357.png","content/cookiecutter/masthead.jpg":"content/cookiecutter/masthead-81ebef04dce2278e5c5776780e1b9bca8ca9b23e1a0a05aa3edf80594d3b62fd.jpg","content/aurora-serverless/lambda-rails.png":"content/aurora-serverless/lambda-rails-360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e.png","content/aurora-serverless/masthead.jpg":"content/aurora-serverless/masthead-5a56cf63e72393d6abff92c8b05178363bbd07d444e19ed6dca99435403f5b5b.jpg","content/cloud-cookies/masthead.jpg":"content/cloud-cookies/masthead-2a39e4b23fb8985178be8224a591a9485990c8e9d1b6eea4dd5c74c88b5799b2.jpg","content/githubactions-part1/masthead.png":"content/githubactions-part1/masthead-c3229ebf2a4d7c6398435d69eecb25c0fb35179c9d610c844a3f4404a5c6cba8.png","content/lamby/masthead.jpg":"content/lamby/masthead-2958bbf108ff6a30c332bce34da1f71f9c978794124fae83cb048ae3cfcee727.jpg","content/imgix/masthead2-f.jpg":"content/imgix/masthead2-f-5c55d7a6ff6e06cde41ff049f33a89b95697189e9d77e990d0a8aaca82ad617a.jpg","content/power-moves/masthead.jpg":"content/power-moves/masthead-00358e30452214dc1f16bc2293f4d5577dc9e2d6b3761fc6a6f71b8a63602e6c.jpg","content/static-components/masthead-colors.jpg":"content/static-components/masthead-colors-1162421fd0b8eb402443a61e871590d33767dfb7f2ca6fca439c5a1fd83e9b38.jpg","content/colored-logging.png":"content/colored-logging-86436848bcea9b5fea72c77f2031c12c1b9dbcc156a5f8ef177644ad1ac1f099.png","content/svg-planet-stars.png":"content/svg-planet-stars-08c9b4337e6d15b697fff6d4a6b8fb23cdc840d040f3aa8aed11df307685ec1a.png","content/svg-our-awesome-sketch.png":"content/svg-our-awesome-sketch-c556fd04159b8596f809ad503a9657fcbdf4331de6a36ca90ea44f9e01cc8a41.png","content/svg-planet-stars-v1.png":"content/svg-planet-stars-v1-ece9734ba2b6813891665e3c67070f266e0f58cf72003341903e551da9fb2020.png","authors/serverlesshero.png":"authors/serverlesshero-2e96cfd1ad50c766ec3d5bde04c75aaa3709b59a33599346c1968f152a6638ae.png","content/arild-shirazi.jpg":"content/arild-shirazi-7458f4d1710e5c667a8ca81bd9fe53693cdabc3f219d3da028d2fd59a6d5d8b3.jpg","content/api-gateway/authorization.png":"content/api-gateway/authorization-8c96576ad0783e5d3dc2d2afd0fd00362a1b8eb6fbccb2e54c01fc8dd9948763.png","content/outrunning-a-hurricane.jpg":"content/outrunning-a-hurricane-dba8f2e4aeed28dc33af754692cdf80a43aa9a0a178c5d165eb15aef7f424c52.jpg","content/how_dismantle_a_data_center/3par.jpg":"content/how_dismantle_a_data_center/3par-36c6b8c0e49bedadaa178d16172518ca49ebc891afc75adac95e40f243a45135.jpg","content/how_dismantle_a_data_center/gerald.jpg":"content/how_dismantle_a_data_center/gerald-2e0b390e70aaf181de184a3123a4031542a3c1dd4ab7c744f96d6e62d3a605a5.jpg","content/how_dismantle_a_data_center/wires.jpg":"content/how_dismantle_a_data_center/wires-44e26bdf578405fb6bdccd7c529cf4ea74e817b0e90b29c4747d3853452c092a.jpg","content/how_dismantle_a_data_center/truck.jpg":"content/how_dismantle_a_data_center/truck-42606487a06ef4d07335c2f5bf99a64b6b3494580750057fe8748d228529e18d.jpg","content/ruby_for_good_2016/smithsonian.jpg":"content/ruby_for_good_2016/smithsonian-c98f941e7c42e6e5cefd0c4693663a7b74c8b2c7e7d78d5c0bf0bc4fb1d06fc6.jpg","content/ruby_for_good_2016/campus.jpg":"content/ruby_for_good_2016/campus-6ac14cd4f0eb116fe28776ad5ef7d311c45737ae6e68d5e85cb117d15aa08de0.jpg","content/ruby_for_good_2015/kitten.jpg":"content/ruby_for_good_2015/kitten-fd73cb1d457b5f57e00395069de120ac656a20b2640fd3ad2a6ec4aa389cd7d2.jpg","content/best-tech-manager/masthead-1776-keyboard-artwork.jpg":"content/best-tech-manager/masthead-1776-keyboard-artwork-a03546719667c8d597ffeb1759620267cb70feb53862698820f57c31cc5d07cd.jpg","content/halloween2019/rangers.png":"content/halloween2019/rangers-bf22fe767f867ef1d11f0ad125dfa4122f4148817414f2a2cbf223042c15a540.png","content/halloween2019/hook.jpg":"content/halloween2019/hook-10bda45b0e0410215480abebf9b77b2df5e48b5ec980f56f403b9440820245e5.jpg","content/halloween2019/nintendo.jpg":"content/halloween2019/nintendo-d5baf96677e014c8f748808fcdca8b7ad0b7083d8008a3672feb1eac8f7c3406.jpg","content/halloween2019/toystory.png":"content/halloween2019/toystory-5e2af23d4248e5392825cad05dd46a2a24d05ef8a19d12064c727a9f5e82e1df.png","content/halloween2019/2018.png":"content/halloween2019/2018-c68a5323e7fecabec9877d35dc70d52ae4212f959a3d2b0261d4488e47947bac.png","content/halloween2019/90s.png":"content/halloween2019/90s-af4ddd64958b62b7d361eb6bf8e9abbf2ab486280a4f0c14c5bb07dacada2360.png","content/career-fair/career-fair-uva.jpg":"content/career-fair/career-fair-uva-598ac96931b65efb06a59a322879ca1669a2ca031e0ad3493c3ccb892e0b4f6e.jpg","content/cypress/cypress-nav.gif":"content/cypress/cypress-nav-284961bfd5b625abb9a41415d598d9a976bde5e4e956be7c972c1ac12941b770.gif","content/cypress/cypress-selector.gif":"content/cypress/cypress-selector-f73313665a7bead2fedba190b02d297029a1f863f85ffab51e87a7d4aff5590f.gif","content/JSConferences/ReactNative-min.png":"content/JSConferences/ReactNative-min-812e086884a943daa23a5ba07fce55f27426e4880cac04434de3955f282d549e.png","content/JSConferences/NationJS-booth-min.jpg":"content/JSConferences/NationJS-booth-min-0deef83b4b3938ee6c5976ed45f4ef72af0831a44501f7a514d2a20135d932c3.jpg","content/like-a-ross.jpg":"content/like-a-ross-8119120f145b0d6bd8d9fbf087c81df45eb37c92a1b9abed35e39fb123ed8e7d.jpg","content/ecomiccon/first_attendees.jpg":"content/ecomiccon/first_attendees-de92c4802a6a5c637abf40587f55e96537da768bc63362693a122671a03f2de8.jpg","content/ecomiccon/first_attendees2.jpg":"content/ecomiccon/first_attendees2-7405164f7fd209d5f513a6db386de2a13f8e331d6d1a3616a23f19f49f2885c4.jpg","content/ecomiccon/by_the_stairs.jpg":"content/ecomiccon/by_the_stairs-7b4430e7f8db6810adbc2ce66cc8f111ed8c20d120bad47823c51d09765ce177.jpg","content/ecomiccon/hanging_out.jpg":"content/ecomiccon/hanging_out-1dbbce0f0dd1b4cfd1a8ff22d86bfa4d1329fd442ab48a57dac2db108c3092e2.jpg","content/ecomiccon/gogopowerrangers.jpg":"content/ecomiccon/gogopowerrangers-01dfdd7b5ad6462a4a1081a61725b390ab19eab5afd433b1819947d62642903d.jpg","content/ecomiccon/rocket.jpg":"content/ecomiccon/rocket-1e7931bfff1152a8dda69118b80192a6c8cf76dbca8bfe43e880e5369105ee1c.jpg","content/ecomiccon/strength_test.jpg":"content/ecomiccon/strength_test-c560ee667d8d68df87da6218e9512f4c6265cb1e67bc0b55018243bc9d376917.jpg","content/ecomiccon/drdoom_link.jpg":"content/ecomiccon/drdoom_link-a9c7801652f196ddd8cc1d454cf6e9c2c7ea4664cf5facd42c120a7b1b3b527d.jpg","content/ecomiccon/morhpin_lunch.jpg":"content/ecomiccon/morhpin_lunch-ab0e13bfe301a53a11ec83af82fe4a50d33f4d7ec462251d5230a24f80ebef24.jpg","content/ecomiccon/working_link.jpg":"content/ecomiccon/working_link-64d49a31c5309cf694a8462b40482785cdc8f812a9fbf0a07efc8ee5d139928e.jpg","content/ecomiccon/super_meeting.png":"content/ecomiccon/super_meeting-ca825c4932b6d4ae674cd3eaca8931ff3a08388a67096450c43531e9a0c07a22.png","content/ecomiccon/kickass_thirsty.jpg":"content/ecomiccon/kickass_thirsty-6c601b06f864d5433d2bd7271548ad1678fd18926d75556b312b59a650850c3c.jpg","content/ecomiccon/working_riker.jpg":"content/ecomiccon/working_riker-2ef8edace8686e9837471e41b955f708139209513df446de7081c7aab6aa3f8c.jpg","content/ecomiccon/photo_thrones.jpg":"content/ecomiccon/photo_thrones-2274c5db2349af0fd44d950d3d30e1903c23866ffdd4b7e960ab9afafdda3ed3.jpg","content/ecomiccon/photo_power.jpg":"content/ecomiccon/photo_power-f50002be0e99a4ef7865b86ae1fe1d9f320aa5dd50f25333ecc75f7c51d58465.jpg","content/ecomiccon/photo_marvel.jpg":"content/ecomiccon/photo_marvel-847e392b63f296bee8eb9ebd51d9a6541c4319a01bed27a8f36a0c7be873f29f.jpg","content/ecomiccon/all_of_ecomiccon.jpg":"content/ecomiccon/all_of_ecomiccon-a4679a345038eab38e4b28c0973739a1d0193ba1154f75b3a3c3fcc2e751a079.jpg","content/rubyconf5k_2014/stafford.jpg":"content/rubyconf5k_2014/stafford-e537c7852df7c461cd572b25b0db38d4f4b8748504d045e3aab3a5212d80c6a8.jpg","content/rubyconf5k_2014/shirts.jpg":"content/rubyconf5k_2014/shirts-8d88c259d652d34716d73e5ef0303c4066c2388a180eb0f23372fd061460bd91.jpg","content/rubyconf5k_2014/kylepeyton.jpg":"content/rubyconf5k_2014/kylepeyton-3cf69afa9af902d839a9d0d0016d4c9d8f056b61eff028a27d4935434660266b.jpg","content/rubyconf5k_2014/bridgetlandis.jpg":"content/rubyconf5k_2014/bridgetlandis-2f44464735ed6d816427430f9e4c0f01bcb5ef5441ddd2ecafd742de3f07a0cf.jpg","content/rubyconf5k_2014/justinschumacher.jpg":"content/rubyconf5k_2014/justinschumacher-87c8a6ffec0a45d1f34262bc0bc0506a91996719858204519775d689db1e42c7.jpg","content/bundler_inline_gemfile/pre_flag.png":"content/bundler_inline_gemfile/pre_flag-0180d46177063c57a3378b4cf6e021082a1de074506a82064a9d11a8192d0b87.png","content/bundler_inline_gemfile/post_flag.png":"content/bundler_inline_gemfile/post_flag-96759bb2218646ba696491d739be1f7c28a578012931c71893f00dfba835dd84.png","content/ruby_for_good_2015/kitchen.jpg":"content/ruby_for_good_2015/kitchen-111bb1986c02777f01f7aa860743dfd82a9c8f5553d0e326ae8603f851432403.jpg","content/ruby_for_good_2015/pairing.jpg":"content/ruby_for_good_2015/pairing-ccfaf0b6ff090b62c6f8c269be758c83bf68808591beb0d47850a835fe2c087d.jpg","content/ruby_for_good_2015/group-hug.jpg":"content/ruby_for_good_2015/group-hug-1e7025598e1a81c0756b38f499c55132a70d8f1993f164506a7afff167e0539f.jpg","content/ruby_for_good_2015/group-heart.jpg":"content/ruby_for_good_2015/group-heart-944f814f7946bcc58534f6a6ea5edc6a543368e77c039548143928de67706a51.jpg","content/ossdatacamp/meeting.jpg":"content/ossdatacamp/meeting-6348827ac90cef0e7d7f96c5f8b1df053b94b0d3d8439a5d2949a7f707ddf571.jpg","content/ossdatacamp/learn-ruby.jpg":"content/ossdatacamp/learn-ruby-0b4c5cd3070a6c9d07024adafa582678e87402fcb715ba6eafa8e219a66aa965.jpg","content/ossdatacamp/keepit-weird.jpg":"content/ossdatacamp/keepit-weird-d53badd278a1edb1c401e4586df6bfabdb6877e297cbddbe1106cd6f9da6e1ae.jpg","content/ossdatacamp/sql-server-stretch.png":"content/ossdatacamp/sql-server-stretch-dd93c4c92375890e248d7c85047e1540c2e2bc75eecf3444faf78395ad024832.png","content/ossdatacamp/fetch-tobias-ternstrom.jpg":"content/ossdatacamp/fetch-tobias-ternstrom-a2049eccce1dc3aa59f8e73633e8c919b1ce22b93ac1be8934bb8a057ecf7b80.jpg","content/rubyconf5k_2015/shirt_front.jpg":"content/rubyconf5k_2015/shirt_front-201946e782faf245391493c649de7f0ba2498150f5bbab4f22b7a4c216adda29.jpg","content/rubyconf5k_2015/shirt_back.jpg":"content/rubyconf5k_2015/shirt_back-2fa83ab884df9a3fadc65abf6f330c90a42f46bc75ffcb59f62c18f6c63f0e91.jpg","content/rolling-travisci-builds.gif":"content/rolling-travisci-builds-9c7cad612f28eb2e30bc03efac7a717b5b8002e93c3f23cf0f537b25b79a4d7c.gif","content/ruby_for_good_2016/campfire-4.jpg":"content/ruby_for_good_2016/campfire-4-44a53f3bfd88404abb2ad7a61ad588c5a04dd9b1d15b1dc503d7613e264d7f2f.jpg","content/ruby_for_good_2016/campfire-5.jpg":"content/ruby_for_good_2016/campfire-5-4a3c5c06dee84804dd7a4da3dae52c4c1925866678f2a519ba998aee1b34cb72.jpg","content/ruby_for_good_2016/board-games.jpg":"content/ruby_for_good_2016/board-games-8cc0520a5e76d3d7d59b82aa82d0be11bd68e5fc2c4059df452cb8a56c4b8b3b.jpg","content/ruby_for_good_2016/working.jpg":"content/ruby_for_good_2016/working-124ae1411d040f594fc2a7bddfe94ddd829a0f6722f18bf8303c40fede53986a.jpg","content/ruby_for_good_2016/working-2.jpg":"content/ruby_for_good_2016/working-2-ec511a7b249641b9d722d48b7b53ab790471aeddf9055dc8800a3ae91e4e124c.jpg","content/ruby_for_good_2016/campfire-2.jpg":"content/ruby_for_good_2016/campfire-2-ce79d504ed02b314fb5a9e23aca81ff8816795b18a4d5fe482c1cf6d6a2c23f0.jpg","content/ruby_for_good_2016/inkers.jpg":"content/ruby_for_good_2016/inkers-7c5134d2cbb72c062356000122899ba49f6077aa236a65eb6a9de4d7e8c38a33.jpg","content/ruby_for_good_2016/shirts.jpg":"content/ruby_for_good_2016/shirts-9f9ffb92c97df6c53dbb92e4012985222ad50befc9edc7c125a14657c380135a.jpg","content/ruby_for_good_2016/gooders.jpg":"content/ruby_for_good_2016/gooders-52bb2e52f9578f75e128d6dffeafb195e2ddc27941f20329b7c90b2f82a333b8.jpg","content/rebuilding-the-plane-were-flying-in/cowboy_airplain.png":"content/rebuilding-the-plane-were-flying-in/cowboy_airplain-69c9c283776f8da4b84af61f8a74792e5404a0e7060797228633197f7d68dfdd.png","content/rebuilding-the-plane-were-flying-in/lightening_brain.png":"content/rebuilding-the-plane-were-flying-in/lightening_brain-ea6ff38f13d583effb8c25912d0b47ea936a855d7fb0e5336fde5ff408b67d5f.png","content/rebuilding-the-plane-were-flying-in/wrench_man.png":"content/rebuilding-the-plane-were-flying-in/wrench_man-d5d169c1acc3b30fa6dfa8ba665226816de30dbe87edd9cf68690b497f1c3488.png","content/halloween2016/front-desk.jpg":"content/halloween2016/front-desk-e82945632033105b967fd98c112c6a6c682b6adde160e59d6ac23b3b6cd69e78.jpg","content/halloween2016/dragondojo.jpg":"content/halloween2016/dragondojo-58da63b265a6572c05005798bbae2923236dbb11ff6536586a4c690768ff5dde.jpg","content/halloween2016/dojodecor.jpg":"content/halloween2016/dojodecor-ebb87cae436d350cf424c4863e0b1eef7f08513d5395f257d4e7ac905610813b.jpg","content/halloween2016/3rdfloordecor.jpg":"content/halloween2016/3rdfloordecor-b12e16005ab1fd7e5dde87a8690da4769ea8c01172132d603c62786634be01dc.jpg","content/halloween2016/treats.jpg":"content/halloween2016/treats-499d5397bf53f308a64559a6a24dc996e94e9cca0d4e2680a9c863d98b3343a9.jpg","content/halloween2016/ghost-busters-chill.jpg":"content/halloween2016/ghost-busters-chill-ba8e5cbcbdac45705289882cbc621b2792a6b9cfb71681e788858b00ee300140.jpg","content/halloween2016/ghost-buster-coffee.jpg":"content/halloween2016/ghost-buster-coffee-d8f5f857a286f5ad3e2fdf8a4653cd072ee18d899b706340bb41a159488e3b7f.jpg","content/halloween2016/wolverine.jpg":"content/halloween2016/wolverine-48b1dc13d593618726fe2b42ed46fdb7356ca76a0ead2732ce8375d5bdf00de6.jpg","content/halloween2016/avengers.jpg":"content/halloween2016/avengers-3d415f55c4b62e0cae5e221953fb690ca457531f219601d48f221b3fc767e4f4.jpg","content/halloween2016/batmankolas.jpg":"content/halloween2016/batmankolas-0f0e2540300eea8cc63390ea859c691a7473c3a66fd0d4a072291dcaadaba65c.jpg","content/halloween2016/link.jpg":"content/halloween2016/link-fcac7b1644d9c194aa351c5067cad22fd3ebfca2f502e385774ecf874beeedc1.jpg","content/halloween2016/staypuft.jpg":"content/halloween2016/staypuft-db7844cae519ea7656b9c7a4a518c2d9ac67e0ebab21646ba0ead49bde1d57d6.jpg","content/halloween2016/scream.jpg":"content/halloween2016/scream-e6f73a68804b13c246f8550a50556df82e8520a8886c68567fee958d73bd6ba8.jpg","content/halloween2016/disneyvillans.jpg":"content/halloween2016/disneyvillans-7739775657501c562464f1b5e1fa3c2b616c039a584e92c7cde9586b79e3b342.jpg","content/halloween2016/star-wars.jpg":"content/halloween2016/star-wars-57e16a7f95a92e516d2566c87112aa459392b7c09510ecb148063292d44792b5.jpg","content/halloween2016/phasmazoo2.jpg":"content/halloween2016/phasmazoo2-7e8b69a9907f48a643a36c35480c56d780066913e0c04eaa98f8015c0a04877b.jpg","content/halloween2016/tacobell.jpg":"content/halloween2016/tacobell-6db2d1114366296f718f492b1511116575466f5446b11ef85e03afa3249de1de.jpg","content/halloween2016/ewok.jpg":"content/halloween2016/ewok-1ab5c5e3c2a1cc0b60e753a49894eabf5356a61401d5ef57418262e912c73e44.jpg","content/halloween2016/underthesea.jpg":"content/halloween2016/underthesea-12debc7e9e40d9064c59ed13c01efaf91c6d81c32cd294a315d57b6606a7d98d.jpg","content/halloween2016/browsers.jpg":"content/halloween2016/browsers-bca956e9391b922787864d911d7edcbcb0fc35988ff89e7bf5c78df45df3bea0.jpg","content/halloween2016/marty.jpg":"content/halloween2016/marty-4fad90ff89ddad37f583d12ab6a5b8e87c8abdc84c91dff4cede3db562989128.jpg","content/halloween2016/cats.jpg":"content/halloween2016/cats-a4d7d6dc357679f187e95325aa1222ea85cd135dc1c8dd9119dccb8b3ffdf761.jpg","content/halloween2016/hackerman.jpg":"content/halloween2016/hackerman-26c059edcb3ed46a5ca16f9e70dca7d8a5a4b429e240af8689c8f2ab364bd715.jpg","content/halloween2016/calvinhobbes.jpg":"content/halloween2016/calvinhobbes-73b644eb0738f1ae69ac13d8a7d0fc3b3d1896994cdb1771998d1ae9f69d52be.jpg","content/halloween2016/bobross.jpg":"content/halloween2016/bobross-c56f9fcbc149ce4056516a2ba9eba642c0b154f6d0b5d46e95730382f9938d90.jpg","content/halloween2016/beaten.jpg":"content/halloween2016/beaten-3433ad50ec6f2f30cbcbc6a3240c257d56466a0f5b559e6ebc637dc64d402406.jpg","content/halloween2016/basketball.jpg":"content/halloween2016/basketball-f9287b64ec244af3262872268c73649607b41089270770a4243b960715d287b9.jpg","content/halloween2016/conventioncon.jpg":"content/halloween2016/conventioncon-af7a30fcb37c39e2df4b8982a2a0f4564bdc38965535610fb1fa194537e6f576.jpg","content/halloween2016/disney.jpg":"content/halloween2016/disney-008a7308795952b9693489a2b9fbf1d0dd8523eb0b23c5493a49d2718339118f.jpg","content/halloween2016/fridaynightlights.jpg":"content/halloween2016/fridaynightlights-81fe769d4d123afb3c978f551abe389efe63445913ad239fc8e715bfc7b9c6ae.jpg","content/halloween2016/maverik.jpg":"content/halloween2016/maverik-7701cfb7f5e95cf16ec07fb06515a4ba926b94a22db50a24d90750aba694e514.jpg","content/halloween2016/ghostbustwothers.jpg":"content/halloween2016/ghostbustwothers-fd33c4a8aee6f89e9e9cdef50dd7dac725a436acbeb44a9b9783eb6c68e108df.jpg","content/halloween2016/bustghost.jpg":"content/halloween2016/bustghost-d79f9f5486bd4776f06a8e644a91ceb1a40b75b1e63df1dfebc61e856b1ba678.jpg","content/halloween2016/motherofdragons.jpg":"content/halloween2016/motherofdragons-a711c90a28b4e33a0f46f2905273f0b53a819e71c512b403982c15122f85b304.jpg","content/halloween2016/oz.jpg":"content/halloween2016/oz-6e28ce6c1982758a53738c1be3168c671e41220479fd09a12ccfdf45288d3740.jpg","content/halloween2016/tinkerpeter.jpg":"content/halloween2016/tinkerpeter-1a73b63ec25b7568d3c124c1df421d9886a7f0f29fd4fb9b9f4087dd5fb17c2b.jpg","content/halloween2016/customink.jpg":"content/halloween2016/customink-2a2947526c929e11631c4ac954ccc94e460a07c445d1366d0d453aaa134efe90.jpg","content/halloween2016/deer.jpg":"content/halloween2016/deer-24e610cee9e92a51e3310908a7de76d92d906caf5788e693184b7900d4bd4617.jpg","content/halloween2016/eleven.jpg":"content/halloween2016/eleven-9c006be4ebca93dd5dddc63264f7c9ec06ae993b32dbd47348a8daa9abdac6b8.jpg","content/halloween2016/emojitwins.jpg":"content/halloween2016/emojitwins-d4c96127519fec07b4272a6d5c6800c26f72752a76e28654d1bf562dbc2b37de.jpg","content/halloween2016/famous.jpg":"content/halloween2016/famous-5d930700749fb3ee3ee49e74b48180f391105f77f501696b4b0eb964ff24bd9a.jpg","content/halloween2016/frieda.jpg":"content/halloween2016/frieda-1341da9d27a8d5d105151d8d61579815db679c0aee80975327c6508a82141052.jpg","content/halloween2016/greek.jpg":"content/halloween2016/greek-f4fe387f6e29820431da715c89037e9dd26f7cc37921118290652569d7f0f28c.jpg","content/halloween2016/leslieknope.jpg":"content/halloween2016/leslieknope-7c1bdd7022968cf7412ff433249772fb69cc85e22b034422424adc8c2edbf0d3.jpg","content/halloween2016/magicbus.jpg":"content/halloween2016/magicbus-ecdfd404f46cb4c67209e678c247941ede61bafc1dd76887069563a0b7720c4d.jpg","content/halloween2016/military.jpg":"content/halloween2016/military-7535a7b49db2df282598c9ee8e61845ba863accc660bb2e4fe5c8db39527fab0.jpg","content/halloween2016/mortecai.jpg":"content/halloween2016/mortecai-2f28aa6a1fa339c6f7a8f1399d60d53c6a45e4ea077aae93c317f9417852e27d.jpg","content/halloween2016/rainingmen.jpg":"content/halloween2016/rainingmen-0c44013e150e07de9fb94fb35c6e9aa758e5e42ffd5df6e5c66f15875161a8ed.jpg","content/halloween2016/rugrats.jpg":"content/halloween2016/rugrats-ee6081d324e4987be7ac529dd48ea9281c6118968803ef94ffd71f34c2499932.jpg","content/halloween2016/willywonka.jpg":"content/halloween2016/willywonka-a463d4774cddff679c1d0cf412c943f6a6dd12055a8521e27e6a385cd43f28c3.jpg","content/halloween2016/superbaby.jpg":"content/halloween2016/superbaby-a3e7f0efdca96f8caea133fafa9c2c0f6d91bc576ac8508882f3081a4102fa38.jpg","content/halloween2016/panda.jpg":"content/halloween2016/panda-c0f52400e771376e02cf9921ad8c2f5c9603eb8704cbfd37231ef09b9ad7e567.jpg","content/halloween2016/maverick-buster.jpg":"content/halloween2016/maverick-buster-ea391333cd97de93109c85f44d737d29b9c2de3faa2e0ae620cbd7f9271316da.jpg","content/halloween2016/slimmerghost.gif":"content/halloween2016/slimmerghost-6a367bd3202458529d4b11767679742c56d523e0320765f029bdcf731337e0b8.gif","content/static-components/augusta-juniors-spirit-hooded-sweatshirt-card.jpg":"content/static-components/augusta-juniors-spirit-hooded-sweatshirt-card-c52feb507554ff32696a424b330090a49555c337db1e7fdbbd975e2789dbe482.jpg","content/static-components/augusta-juniors-spirit-hooded-sweatshirt__start.gif":"content/static-components/augusta-juniors-spirit-hooded-sweatshirt__start-74181b4f7ae39b74e8fcb4d64d5c2eefba3d328b1e4841ceb84908b5ec3b50ae.gif","content/static-components/final-results.jpg":"content/static-components/final-results-280dbcfd02fcea204dc683e446c3d09edba179cf246012c624b2884ca7f0b214.jpg","content/best-tech-manager/andrew_willis_2016-timmy-awards.jpg":"content/best-tech-manager/andrew_willis_2016-timmy-awards-9bf9100b19b6a6b21f6bb9e343352ccb908258dcff8ad02c359da0a5d0ea6f9d.jpg","content/power-moves/docker-memory-prefs.jpg":"content/power-moves/docker-memory-prefs-8ad442dfb46bd33ab9a8eefdb54f598b96861d251ee06e5ffabcbe9dced7ed5d.jpg","content/power-moves/welcome-to-rails.jpg":"content/power-moves/welcome-to-rails-051121731979c533db830998a3cb6a81f02ed053fd051f090d29a231fb71a6cb.jpg","content/power-moves/thanks.jpg":"content/power-moves/thanks-6a02ee3951e46a9891740dcb02ee9aee4bef4eee8de029992554b479a8ce4983.jpg","content/imgix/imgix.png":"content/imgix/imgix-a6c45c8e8fbb4c352c598fcf2282992a1e145914ab324e413248e25068982afd.png","content/imgix/steps/0.png":"content/imgix/steps/0-7dc4b1cb585739f856abaaeff2102a176a7b6f690bb9e66a7a6602dbf0a1ee6f.png","content/imgix/steps/1.jpg":"content/imgix/steps/1-c6da1cbcc1a856dc84073172007ae4115a5681fc437e4188dbe5ad441bdc8ea2.jpg","content/imgix/steps/2.png":"content/imgix/steps/2-bc0d5beea73569580a426338c1bbb9f0d3cba54d8723b9268921d634a650c079.png","content/imgix/steps/2-debug.png":"content/imgix/steps/2-debug-51de0c2249bd64a62bfce07f4695a8174457e018e9f02344b316d13a53dff67d.png","content/imgix/steps/2-final.jpg":"content/imgix/steps/2-final-42566d816a563ab2ab427b40730ddbcddfbb74cf0dff2eea55fb6dac8895d467.jpg","content/imgix/steps/3.jpg":"content/imgix/steps/3-724c6a82ee2fe96c23013de72237d225a04d0b8cc74ad2fa30e9948a430e2cf1.jpg","content/imgix/steps/final.jpg":"content/imgix/steps/final-bdfcc823ef810b7ce63b9194c9ee41235a57f3e739a0b784d3a44759ec958d15.jpg","content/imgix/advanced.jpg":"content/imgix/advanced-73d094a30670f2bc0a0b66a1e23d82587521a87eb71ffa6f01c53bf93227f19a.jpg","content/lamby/lamby.jpg":"content/lamby/lamby-723dfdc344c076844d5ad81fe9baab2f1240650bee200865edd3dbe6d77c336a.jpg","content/sidekiq/sidekiq-architecture.png":"content/sidekiq/sidekiq-architecture-55a7b0491a724dd5c4b39570ea60966d438f97bebc2e9562ab5881db319fdc0f.png","content/processing/2019-07-23_2323.png":"content/processing/2019-07-23_2323-345741e1030f3f4fb0e81f84f6e1bc9d8cf5f02a202cfab4221c2fbf8768d6e6.png","content/processing/2019-07-24_2058.png":"content/processing/2019-07-24_2058-0ae2fa145e4510dff9bbebd01327ed83d2219c74972a75f9395b25c5cdbf4477.png","content/processing/2019-07-24_2106.png":"content/processing/2019-07-24_2106-df211f48b40921b6e418d0eefa28cffb1b965d0cc73f331faeeabaf2cc0c5ef6.png","content/sidekiq/sidekiq-pro.png":"content/sidekiq/sidekiq-pro-3bfb28483017046cddbbeea528ee831351b3d4bc44e245e9008641f3ecca1bf8.png","content/githubactions-part1/getting-started-1.png":"content/githubactions-part1/getting-started-1-11b27f87329096758a9fb863ef51cfad256cc037131e0f0b1ff96715f02b6971.png","content/githubactions-part1/getting-started-2.png":"content/githubactions-part1/getting-started-2-0f8df01b7bb3cfcee139c4660ad6809c6c8d51b835698621eeaae8ea2f17191d.png","content/githubactions-part1/sqlite3.h-missing.png":"content/githubactions-part1/sqlite3.h-missing-c7238e45fec7653852119a511d6c7f324bc7286b72856d25545da207a98500c7.png","content/githubactions-part1/greener.png":"content/githubactions-part1/greener-37f000dd8772fe3cdb04c5320283b6f7a6d827c8a4296a367d4a8425519abf8a.png","content/githubactions-part1/pick-a-name.png":"content/githubactions-part1/pick-a-name-9043b5306864c99e9256383e8e618c7d2fcddf87a5ace6dd5863d01f3c8065da.png","content/githubactions-part1/badge.png":"content/githubactions-part1/badge-398ae483455e770d9e51da964075caf992f37b068b6b12ddadd399d7d13805f2.png","content/internship_lunch.png":"content/internship_lunch-033d2e567072e89f0e9730e1883dcfb5e99ab7dcfb44474292b83893bab86163.png","content/working-at-custom-ink/logan-screenprinting.jpg":"content/working-at-custom-ink/logan-screenprinting-558806ca6e8329772d7e3eee9ca4c50203bf85e0e118c3d393fbcfac0fd6ab67.jpg","content/working-at-custom-ink/tech-logos.png":"content/working-at-custom-ink/tech-logos-3a05461db679fd21965da95d46eef6d2e6dd90b394f05224a4bef11843040ee3.png","content/cloud-cookies/our-goal-cookie-historgram.jpg":"content/cloud-cookies/our-goal-cookie-historgram-a30e6c17078564dea909a10dc62d7b933fd0a9075f6768f44deae5a2cf478b98.jpg","content/cloud-cookies/monitoring.png":"content/cloud-cookies/monitoring-d5c2151f652f0468fa18728cc801b1bc6b5d3ee83675352941795d40ec6782a4.png","content/cloud-cookies/analysis.png":"content/cloud-cookies/analysis-4443a3747c705b8d8f42dbe345bd095263ec140fcc964079bd4ba5f980f3ec57.png","content/tapping-into-logs/sumo-logic-query.png":"content/tapping-into-logs/sumo-logic-query-6423fdf74608a34b5a7a383036751091c20a7a0365ac4cb2a35de1e17d8e07f2.png","content/tapping-into-logs/sumo-logic-report.png":"content/tapping-into-logs/sumo-logic-report-568740550d282d0071e0059f0f8ef72e13be0c89b5d4939094f9b80eb8fb3cc2.png","content/company-culture-around-the-globe/wow_tv.jpg":"content/company-culture-around-the-globe/wow_tv-9421ac7574c374607ca0c21e42d4f4f66728657c92eb1df8244f22a147940eed.jpg","content/company-culture-around-the-globe/prague_wow_system.jpg":"content/company-culture-around-the-globe/prague_wow_system-4a40f88befd668069a1f55ab95df642efcfb4ba98e360980fb857a29cfd251ce.jpg","content/company-culture-around-the-globe/prague_office.jpg":"content/company-culture-around-the-globe/prague_office-ad09f1acdd47af6353ebb6f30b7b4f2d5d9bff2b96204d9286e7902f639955d6.jpg","content/aurora-serverless/ruby-gems.gif":"content/aurora-serverless/ruby-gems-f734b8e2f5931ef0e5a82530b143a978c0e0c341502fb817aba90f72e458b517.gif","content/aurora-serverless/serverlessHero-badge-min.png":"content/aurora-serverless/serverlessHero-badge-min-5b1c815b4bec88c668720fda5358aae9ab030b662a679b518d7431d5b952e328.png","content/aurora-serverless/hero-ken-collins-min.jpg":"content/aurora-serverless/hero-ken-collins-min-d995876e07f891979f61c75266ecea9c97702c8f023f2bbd35ba3ce5270a2976.jpg","content/varnish-replace/backend-services.png":"content/varnish-replace/backend-services-f1d6b94a50d3f736faf5d47cdeacf2cf4919227a92c4ca55efe70623e71920f6.png","content/varnish-replace/caching.png":"content/varnish-replace/caching-4cc405bb8047220fc37a1b8dca9713837eb00258e207451158fec1f2392a231a.png","content/varnish-replace/varnish.png":"content/varnish-replace/varnish-58c2d4be776138b588e7d880e4aa3f68e651197aa4a4e032b688a904ee74a23f.png","content/varnish-replace/varnish-uhoh.png":"content/varnish-replace/varnish-uhoh-6ed4c555d8e00d43b375ae989e11d5bce0748140473bc8cf7a38045920c11cfb.png","content/varnish-replace/transition.png":"content/varnish-replace/transition-6df2a48b0349c799af033950b0f7bc76e2158ac302d02dd2c8f23b6431b69cf1.png","content/varnish-replace/finalstate.png":"content/varnish-replace/finalstate-9dcb4c17832724613cad88c92c5f70659662f0a49e478fdb94bf5b5ffc132954.png","content/lambda-file-systems/access-point.png":"content/lambda-file-systems/access-point-70ae0b8ee149f62acd5eb939f2b92ee21bcca337a0df593065bba775b525b66c.png","content/lambda-file-systems/lambda-rails.png":"content/lambda-file-systems/lambda-rails-360f90d66f8ea8739cbf7334d3cda918393e218469653de0ae0e0e87b10bac2e.png","content/lambda-file-systems/datasync-task.png":"content/lambda-file-systems/datasync-task-0b9663539358843ad91455a48ffe0a3d3471934247fdbaeac1ad70df8a227d15.png","content/ssm-crr-lambda/ssm_crr_customink.png":"content/ssm-crr-lambda/ssm_crr_customink-8406544a87d272f0ffa7cf246890b8d84e0eac361329197835f08cd4398de3d2.png","content/serverless-devcontainers/devcontainers.webp":"content/serverless-devcontainers/devcontainers-c50583eea3e4ef72a8cd7045d04c3c0385e9ef8efc8975162773ce28c3c27be1.webp","content/serverless-devcontainers/vscode-codespaces.webp":"content/serverless-devcontainers/vscode-codespaces-7f9106d37751482d16fb413125224e779ec55adb20efd4c026464d48d1e01dfa.webp","content/serverless-devcontainers/vscode-preferences.webp":"content/serverless-devcontainers/vscode-preferences-998a7e5f016288cac7578c594ac2c2e275ac0e77d5ee183f90f3f7faa78afbe1.webp","content/lambda-rust/env-vars.webp":"content/lambda-rust/env-vars-2a128bc2c4fdc80a35244468c7386ab05a88b1c0cc4e7d41ac7acb46082776c0.webp","content/lambda-rust/cloud-watch.webp":"content/lambda-rust/cloud-watch-322b77dd8f0cb4fc0d07896ab76ed80d0cf6d1813651a27d7bf0af6c8706dbeb.webp","content/linux-devcontainers/container-areas.png":"content/linux-devcontainers/container-areas-268f50de2e3e354f9dd3e226de34e1e9f740a838d6669902c1697653dcc90e21.png","content/linux-devcontainers/aws-lambda-before-devcontainers.png":"content/linux-devcontainers/aws-lambda-before-devcontainers-7d9ad2ac5ffc39cf08115bcc97292a2bfdf816b2dc54d7bbe36e6c3381d93688.png","content/linux-devcontainers/aws-lambda-after-devcontainers.png":"content/linux-devcontainers/aws-lambda-after-devcontainers-94e148ef0601a15c55848eecd0a6b591c7e8b2ce2f2ff5fc49b4ccc3aead784f.png","content/linux-devcontainers/devcontainers-in-k8s-projects.png":"content/linux-devcontainers/devcontainers-in-k8s-projects-e13c2f8cce935c9378054b32becbd76dd98704db3f7c11a072f68e81ee9674bf.png","content/circleci-deploy/circleci-deploy-trigger.png":"content/circleci-deploy/circleci-deploy-trigger-4a79c8b1657909ed2de9965ad6ea53686719dcb5cd4f02fd622e260c315b395f.png"}} \ No newline at end of file diff --git a/assets/content/circleci-deploy/circleci-deploy-trigger-4a79c8b1657909ed2de9965ad6ea53686719dcb5cd4f02fd622e260c315b395f.png b/assets/content/circleci-deploy/circleci-deploy-trigger-4a79c8b1657909ed2de9965ad6ea53686719dcb5cd4f02fd622e260c315b395f.png new file mode 100644 index 0000000000000000000000000000000000000000..df8585824dcf7637d1f9d6f2ef10e8aee882f7f6 GIT binary patch literal 47129 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�-;C*1vo;_CP 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 I!zm)`zlE9LtpET3 literal 0 HcmV?d00001 diff --git a/assets/content/lambda-rust/cloud-watch-322b77dd8f0cb4fc0d07896ab76ed80d0cf6d1813651a27d7bf0af6c8706dbeb.webp b/assets/content/lambda-rust/cloud-watch-322b77dd8f0cb4fc0d07896ab76ed80d0cf6d1813651a27d7bf0af6c8706dbeb.webp new file mode 100644 index 0000000000000000000000000000000000000000..d06008cbce2ab5ba39a666b498f5b8cdde2b369c GIT binary patch literal 16944 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 literal 0 HcmV?d00001 diff --git a/assets/content/lambda-rust/env-vars-2a128bc2c4fdc80a35244468c7386ab05a88b1c0cc4e7d41ac7acb46082776c0.webp b/assets/content/lambda-rust/env-vars-2a128bc2c4fdc80a35244468c7386ab05a88b1c0cc4e7d41ac7acb46082776c0.webp new file mode 100644 index 0000000000000000000000000000000000000000..80f14e84304893679a0f2639957d3ae81a6c9099 GIT binary patch literal 6058 zcmV;b7ggv|Nk&GZ7XScPMM6+kP&iDM7XSb+Z-X=d$Dp`vBsH~+$L~`dNm80SHymCl zXd_9D9m6vz`1z0j|M!l2mUoZ0o;A8To3(~Hn>o8xU3Aw`&D~{&tdtR07$PDf#Ds_- zA`yXzI11XfVN(9E_YZ)Gm;ec@UaEyz5;XkmTL93yv2ELu6K=X9TN3U6e>K8RwQ(P9 zj4@|K|0S_)BuSDI8$cEMkRzwEt832v`W67TZX?^a2oStqB~c{)|5Gi>PCM!0+ejy( z|FUS?s#<5AardY+#;qV~gkT?E>tArOe9YqfQ|gC|QfF$az3(5e=(#MjT=^p(#9EvN5|vVU5nIc>f-bo#W&rWXFz7{Pv8WL5mlB>QoZ?}p=loXQr$^6&UC zxTO9_$@#uQ<@_71YSGy(H(M!=x2bH-%u&8{hu#Ze{}tpA_>p%wZn-6d^7FMpu-Gh- zIdz*6^Seq$ij{M0KS)+7rhwGH5>5#B{l`pt%U=)sEh_Sy5s?t(vWC>&N#c#ZXqYe* zSySYe>o>^Pp-ZUp)rs}{c?J3lG`pnpFJB^N8xr+ugw+;fdMAmcBm5PDDICfF9Krdu z)!7m>nUbxIy%%dkwl*CGYP7-5NWgWOHHn%CWNg)z38YsBsyoGYYs<1^6~sJy3gInr zm=Ch-jFLuS1kBScO4TSX-gGi)I0~WkdzpoR$~03(WPdylLbY|?PiQTpdnbt{H!i^= zx}YzlSgR!)>rWBP7gKvrAW&RFCJ;2g%pVg`2ogf8KjD>SF?d0?c7!8@o5rE0a62W2 za5$k7gY)W}S9qOPL!c7eh-RIZ5AUn1TvvK3yJ&V2NYR(Ln>m|~<&D1Vd(Y%+$ z)w=R+Dh~()goPE@4I?ib>BDLpH5HCE1O-A)D|ahLH6YaNeP&`UVt;7aZ>FQooQsc38cNTjd5#Qvn@Lt>2GWB8#T?p!n59WiU}Xw5i48x1UtN&Gaxl;i90@>4L&KQoi;~YOAAK`dEaXkZjoYv?F;dQwtd6Y5D z?a`60KT5^soNFOUMPI>|_QPiL(58fN1YXbdS2%{-_%VLteaXpSsJEMZ=!|jN{kqMcrrqSnv;a91h$#J- zA-vsHoZrE=8#B^lIgb#4eBcEkgybG6%JCB<-bw&^ZNnJCE0qvlECi<^xh{U_MKDxre74E_M`or3_JQkA>-s21R&oM;%ExL0H_*f=|aC_x; zIbPj8QV2iV2;sODXFseRTb+GlPX7eA*H6J>4gH|*H2xr!@%2_?KSE}XerS)enw1#4 znK}n+F}AydjYKF9HkM+t9%HeUV>)j#BQa8JmSeQ#gItNFOwSo(HnWw9QjKXk`CH0W zh+>QBvK&icO2cebk!{3CQdWY~o^EIM zDCIpK)o&Kxedf(@{UGZ%q2=~3x3%~GvR}^;ewnSWp@#p;vE@g?^dGP9yIYmhgTpD( z|MT^Ihy=7F_gBz728)Y(I@KP?k^%J>94R%wp%Bj$@wRK@w{hanO_>(A7<}o zzh`=;az~~A{^YIief&48OhN?2%JH|UsDHr&I`*F}H-)+<(b#razM;?_k0bgU`UNE; z>LZEPV}s_;Ry3Jk5V4k)C3-lt%9i;-Un}-o9E@c>FQw3&x!KC}qom_$(i`aSlJT4P ziu~`^?yiwk2glyjY-#guQ`>1*zgnBUZ;i9gs}G&ine}sPP956jxrJ@(%s#Y@*|7E< zVVL#4wCS{dp4#h{*7ZSK_ncd5w01da)9E97w%*y7>1ksdS>J|Jrw%7)W;VCV=%ck^ zb~T-6Kh?MD>boVYVO8_(8cm~PwB5D}y1VT9xy7B`&1ULwnYa5$q*tP=x$u{W4w2q; zxz^m{mk)cMR)eBTTbp*eDf%!o>G`n4jop4XcYW@O;;8L%lV0IwZ2n_lxg^%F{u#SN zy>4wkS?I;;d=(5E~h|MAqshLe7qF#szbD?2{DrwnL5ee(|Lu`F} z32l)~gjI zr>)eGvBquS4mv{abq9{t2&pC}&bL+(VO9d<;Tk#^2^~U&r4ms5P>858A&-Q_#oJs| zEK)zINX!US5-?#ln-P$jAR$&uMC8r};`UJ2M;EjqAzztoN%~L_C_fN)YIi?3ag(=X zw~R!fexlq81)TwwF4Ca%1harEk!Az!+B0^+ss(%39%&`g&b(pi z1$UJ0D7`={F7k(+B2tA~fu_hZo7x+e3Rw%bj@cays#sh%a5Af25v$%?ReM6$s)|i1 z70@mY)y^`CFBys^+OiaTziu`ngP>OIB4^yiO@f(q7M()A-L9&UP)n{aW-B5y{+-{Zzx_4hm#7&%Qf=|Nkg?_g;Xrf@-b(iA+>EQvXmP6_1xQv*;T111e;ip0>$YTh*=P7$}9m!L`+MRRO)( zoDjJX6?-H;vOZL}%~QGI`sj{p%*mIZu#k&m{S3jJ9IFX5pM>LfW|8#(*IF-k0*!Gh zl$!GHwYB}Vk_K5@bH_>1sy8NLwj0}wX?-spqqf%21I1l#FF@T$^a+f*!P-bpikDE+ zs_qnb6E&gw$OW51QlV1;Mgs8%WUC%8=dx{Y&lGA+9Sb4vo2t;Im|F8;pfui`kej3G zjf_=m-wEo?#u&09>Ly|BiEQ~y!tL}$G5L8?NE)$6YFf{YkY>;ft>T9=cdiZAS{o$& zR=5=?6Gam!vpSY*f=}X5glZXA#M;#L>9pO7it)mzIrTy+tuDPhl4Y1lvdP6VA{O_l zC`77-&61cU>ei@ljg<+xS&U|qJ2fjjr(~;yn3U8ityBDkhR(^XAPM&r%_{f2C01re z?v|)^M&w3_**=gUm0M(GnFW!W8H+V?AH2%QTpM*K=Uisoa+SIjUMl-0;ubH^4~$f| z8qd5vS447eK%GEb7o)ogn_bSI5#t!%#tOA5GA+6bK*deMO^8~Iw%c89J=+4py$d3D zCEcb%s)WpG33VmsSMW2Ej~}CTu2yM^xJxtDxmMf>%%&j9<&#LVEyCCCQ5U2#1d-I- z$3>-536<;J=vGa9ecH7wdm5vU2Z66@>n^nJ->>xOwPwGbET)%nX4mBmyyiK)k^3Bi zTMPQK*`3BOvoY_Ho#yP*9usVlW$SBSu0HM8J@9oCog(g2m8Y|u51!*5j+dplx zv=5u?OZx*)X06wsnW7?n-!45pqAY4QA13HTXn$nNuLh`{K(?nxCPK2+0Myez{Glly z82IYFMxXYQ(%wtT&q#6vUY3AY%PDtXYVFplnzbCtyCnHj1n9J06cO1(s&qsC8A+~y zx(IRu0Kn4~f@%WE@^(pY6L|wPv)z)APv**?b>iLKQv_R%r7XqgH+&_erv5fZ7a&Z7FTHL~46ZWH11Bix3Ap>Lf^=AvHj4wY*Vgn-MTaBBfO6iKKg0 z+O;Hj%YG2tWe}hW0Kz*>22{$vM`U%0r;R9~C993!o`V}&`&UtsX4WG~mS$C?t8gq* z?M!TJdb_mS-1pXc%bs+5TH0;?vhV*r@_84WZSVVArrl;$MDe56FQG-B_Rm_sgz@{W z-`)S`$o_v+-|PJ6|8wd6`Ttyc%V#XoHQ7I7aZMKfh{d>){3(O~{Fguf<$WvTA(K-7 zDlL|_3?75`Wt^#T*%m&`wB^n@I$m07Hce&HTI;Ts;&}Kdw-#V+$+k}PXq1WlAWT-0 zwKkOT=%}b}ZrQPp2`7?;!dA0`e8xc4$lchk;h)pDD=ZXVSs4|~v|kI9C{(*rMun6B ziS@LAI4wZR=mE3KRAL2e2XIUgp}hz%d4!Y`h`a7F1Tx1UeLX? zaw3Vqixu_?Sh)bP#^tnt>3vT`p%-pi1m+;590%(t3esbvt0OZ~Zp>@hQd+r35lUyy zVELew3n``bTq|5S%xG9rYRuenUb!wUFJ)uyWh+ZbdGMw&7v_3c9(m(lQmUujKIM&h zNvXb?5}3Qhvz-H$a)PD2#n98iV*$miWDseBIfH&|6fo=%fC@X50J1m`fYVm5d=@b| zVjc>Y3DQF!W@zCo0ca(X;L$Qij3g1jYzhPrM~NWo3Z5;%v_i}d01PJyfbr!NW)1y{ zlr4g~kg^w=H7Kpai7v5E?<7Y7yMZ~eNg59g2PuQf5!7(PuC0vKbdN|P{X2O&=NjZUCgyWP-0&{>=a^57SB<1pQ$}nO( zivSQsVBU4A_fo!r(02N!(%RLPhHR zB5h~pLYTlZJ9rgET5Ek0+G@aZp6$eGHq|v4Yi;pDTWixI!FU5$4dm%#n_`5uO3?Pu zra>_ml))Yg6UuAhI0@y76KSdf?W*wXXc#Ed&g}LBp}i7uC@|i&NjQV>7r=N4g*8~e z6T0Zagp5Y$jr3+?l(G_dkJMg5StLqCl@KMFD?e;$IW1u2;bgXm5@m{bgyW(SP?cS& zotdMI4pAz%J-C~Gk$EJEXx0lF(KhZHWtz@dxsWV|*h`IQ`ZC>;A6e3(%&??Ty3SQ2 zs!eO2-WoRU5(#Bw&Jq=8g($-&J$pn&c2l}3JbV>}Naf{hw>hTvEmOps4V%We-F9p# z%XQ0-u>BL^K5g5&F|!q|%}2R55;(rG+4nZxl0W6x$z)5 zFX8l*HBU)#yO9;i^sA2kvCS{qvMLPb;rz#<-`x*9{Egpl{mTFRmtR6MK4Ni&CDqSZ zEFZVz@%wGIKmX;=X?fDW+HZ^(PR3U1Hh7<`_310T*L||l26Lb6?Atoqdamesz3W#x>$4EE=!!uN;Udx&U=AIi%-Ai`Wg zVJZw>xN#nLZb&&!1F14+u#f(%)H?3Y^@+`C9XFetiKZ|ovp8>+&Kx8dH>xF_xZ1=~ zlM1uf5fz!*gCf(Cjas>E$Smyan4c)cd8c#=ntXG9@US5pMYeIYUa2rf~swh>;=t`)Hw*x3a26X zxq!dGZE%7x5rrRPcoDe|2Z^I_qk!g;nLEjqCGFFY(N4rDJX@%}^FYNGGOs{g%6%Rl z*+9K-d3iZzTY?mZr~0`Jh1*;|3z8y?=c0a20tyF-sJ%#6MqKwIdC1e)`vuH|6H-dy z4w51gK1)O@BxD#x0>x=?@g)2_*5f%-CC#UyQN$)ymx`+)1qX$huuI82KyyVk?pt17 zko$f+%JcPyfpq%3p;nZg=OXD4W^PDC#Hd2_Ivu7Z#At2w$zWuI)hz z&zqMb-Nr(`0Xv8yb^`10jO>T8E(`||?^a%35?RaEGSG#*EKAQI)3TK5`ojx%AztjX zXMj;aD=gC;?gV<-)|p`dJP#@B=0s!#b&JBazU&v0aC-zl?Qw1G8|b$60`@vF@FuBG zj57rg$AZ-AMBFmyidgLmB5>#U+P_0TxiSfdUAn|lZFCa+>775{oNEk_Yz9p=L<*q>@To51u zOF!04P|slQSYBQcX~7y-c;pa#@Rdgi*2SJC3P&iwcW0_cjwP{puZRQd-UPIv?(?!PoP%Sa>II_Ejh1rV2 zT)j;x4GY2f!WWs=%|W_%d3iAAf1`z4H0rlVY4zS;dvA4{%Rt+bPgW%;(_a3^?hw*u)Ud{MUgmoG0oyMbl?<+r!DiHL}vo}Tvh_6`pZhlYl(uC7K$M=vhU zPft!JCMGsEHU+35kD}8-^OG`_=y}b|!WO{nKr>BRB znzo~(<0gx7adB~eejXDGi;9N6tE;QMy}hk#X=Y|-c6Jt#JJI^C)Lcd%cCeQnRyh;?luo0os;85@Vp&gV_{Y&9iRO;1``S$TuJoSmIDB?V0MLnDJ)J2O0G zB+QG41`2w*0#iP_M!fS(h_Bw;2C4$u#_FR6R&;IOOjWwQ%gKuU_SMY&Z5E^@sj~dI zFRUfg=#9T$T0`9@$VO>NF&LbYUAy-^R{5sRYl|GW;@iYqbyt0t$fzP14hGeWa=L1!21 z`5jRYAY|-J=z}a*fU60p-X`S%s z*ohj<`ih7s?>7%l>xrj-{Ivr#Y(RNxJFL>{q10{_gY~@)bHR*P%!F|!A*>{_520nBS9f!zFiwam=&dT-tLun7@S|>&NMyRZ{0TIOm%o3zt5&a ztuPZGgLJHkOahc1gnntgI^nPbYcph-YTiW)4A?VT6h$gBDjtg8_R};Q+~6U|4fn~K zzpo0iJe=DuyV!JK2NnFbgwEpv@pcij)-+6b-G0QnVPT9^b}+K?WZ~Bqz1&@T4&R;9 zE`dhc=f#sxot3Q}-EFYqc`3O0?TN2OR)F=kP`dxaQq!+g`gKk{cH)i1C;|>;xvp`p zqH6hA4eWE3ujd#e4*?i1Xxn58+rvZ#Y>X#E`Jyg((~p+WuaE{oe4aU5(nq35w;s4! zDX92TvO}Jk8uF$sweOjcsS{}8LbBgo+7>}RDN#w>7E&shW+A3X{kr|5!0DJTQ66u~ z4cE%pJx)b`rj7M(2+c1sv32ytwTQ#7@(S2YhT&Ca515F$Lv^W{uipXPtZL4Ajkk0l zx$KYc=s`^w4FmLlF8<)>RlPX$%HGBYEu%W6!`77WE98=Y>5>rP05zjp3BspNEQ>$M z#w-M*)ZJcmhh9UKWTTXAm+3*zE}b-Vue}6LQ8?hnkADR#hl>VX2fEGFwOx!~0eWX9p zm6SLdO)X*Vo2HC=cp}S`^hMmRJCo8Mp`_8R@itPzd*pjfmf&QfE+GS8v=HT*UmGn; ztJYg>vOPRIKDj;ly+k6D{o9YLM~ZtfuNzN=JpmQt%E1(eH5q#$ErV!41 z&B3R&-2D3s1vOL5N0q#v1-#~M8HW|yzYCw`r70N71xm(#*UoOcMc@3ak9fyj;5{Jm z9et8H=Z>1|gGjZ+JmZ--m$tV%v)*S1;vHvE{e+PhxuqC2EGo8TRdjz;#6GGG_rAL+ zPJKrBLqkn*W}%OOSl!=#p0q4m)gwY-v0#1Q5z`q}I}aqSRdp*mtvDiFlwhvrW2n{; z&KNTBZIgoi90iah=U#{I@jaizDx&WT6)a0ssCMOJ>jwf5sz3siuOe>}qW^Qo#Vrt< zjv_i0FFd-ERe|c#b~i6e`c=9`WTUVqp0?St(kiZC+oT>Jpp0Fv28LnwgSWk4K7w17 zyriQ$Q`~A~oRj8KArgOf~mmF&HWndSHCuBhi7&R;)-XK;pLLA)7xtDy<~<;_dG z`JxD%`3`)MPHcXC6MI!e2NE&CeEAkCTpK;>zvYL;`J{GAMBQLFtLa2;$P$i97e!a3 z)lLCHefhU>L1};}d{fap1AH|;HLtT|VP-_$qut;s?FaT#G^#uGfetA0`Dn*m z!8Ytk2`+oGYC#Ebd2wI}FR`Aiw62G@Rk_5PHq{Xl3kV{jOaAOe=u~SVT)6ob8=fFr z6*ccy&=MN}9SCot8jhYS#SmbQnVrJq|Fj8FyoqrPMyJD5Z4b2N%Hf616li7R)FM+} z@69>=7!ak}`z?qVtfX;!o3;Llb;DFwHaYR5;mj@;)hxOb_=mY>_TbT`V60(O-}Q#~ z=bVN<)$-(E=b%cyuHk(D0vx&ue#)L*Bm+uZ>-5hvj3%m=9G|%T0M~TzBJNUxL8ud@XM`_ zQb!58N4Y#5mqb>Vt5E1E4rGqrIYZjio$IY>u!m}?HW|*XPo#njDZMlr{~r_pz6N-y zsBl_EJRi^L5(^?8-7uh9+r)Wk3f~10oGP3K0rc*DsNbDwSqvZv0a{FK+rew;qc1?T zeG-V!6D<@|{@m{XB9oz@mbea^qob&mRwzYxa*h;AvP!e!AKuzc_tgCAaB0}SPNCcM8D5zgwyT3_8jMR@7BD?TnASG}p$cU2m4J&jEt13cD8SQ3>7D5b^f zkgw`*fo(8rx>0xOW3ZEVIKVJn3n`g6w;Ev29ThZ#7E$7t>h<(0l4lsW?@f-NsVNz$ zLB~5}ex0hAh@p|0p61#6IrWO6-0hwi@}xkxPDm#;^@eImp$;YP98_P1JRnh3TN6bb z9GwV4I5@hAxHca)dERt29itg*9h4qt==s8do2>_TM(X?lRqVX+9`HD-`L@1bAO&`=0{!ZG3(zL~_49xM03Uy-)y8O?%+7F9 z7$ubibyZRT=4a&w+#?A79snXme zgp1Lrwq?1tL7UVvg~n;bVTQ!_AV$DuP<5Q%qaXs;Zn^218NqW|ZQVh=5d|mdW+swnKAv57hPQYSRWaOw!8%x0G zAG55jvZ|%wrS4)UuN)b%ceLKI+u5R^nwOgU-Y#6HHft{L@?P?EAY8#SUg$b=>FmSv zg=o-YXyi97(~xJ*VoeKyoYa2drO#xNG`+dFX1@}9es`wgXV4JPV(Tj;NtXWX2zztC zD_8r>>G+&5Iw?~7nKDIcU#ILs3j~vm@0`H8Mq2?uv++a!GiCE*7FZb&9NE^jpbc>| z{OZ=r*%fN;L7`1adw>o1CEt~}z%4F1Q+34=bvSNBd=-Hf8r-II*6y#Oxts^qWrKL7 zmYCrp2hO&7;V;KTU)cS+QPm8bpw|<3cjrwBlKJrcEH~u)tIbIUy!g30A?o$9w`AJd zoS~kvu`Cr9cU6@(NX>BGX*;%F#`epNl5)5u7vc@p-z z{UaX}#cuh}B#?LiPm4J-K(cwl#ZH2lz};Y@7&~RBl+#J5#RdzB&ttAKz4K2HkPLu<^i> zj4x@}SVtqFiKLh|u_u?8ieB}1$?pQC%ck+7Y(2B-1TU^tb`*|ptZ8yrT@LKt3g+Wq zR8sX{R*!JL%l|T?NS2aC>UKn#PjFG{oGpViscNlbCr9TJoN-q3;FJk)(AaQb{^@oh z$w8c*vKMMl-{|1Z={iW0C4!$?daHV5{KHhVKt$3HpTvtyHl;B!u%(i(o|1N-uSYlZ%jv-jj&m(0 zaj(Yh{d%5wY?db+hU-#04Knb`J|AXB=)LbDES4yn2)6BFUc07hmqlvH%9ki{uJAfUA50=oJ-> zQ3g5n4eh2nv;Td{{IBU&^5yHjukOJvq)j8T{Y4~isSgxcVGN`PlDIRFke@&#S=dl1V1f{6)b|6k01#W2)=mi^!P{~Ysgm}Zzzkm6%B9pHG6 z6hunu0hjl0pP>4Fmy-U0CyRiPvF95AwD9G4SdfD575RXSBZ-d0>W+{S&B?PO{@+#| zjj3CVc&sDWe`*S-!M8&cYU&>?ay8^k@B(HLs0v*yh?wx-`ucC({=fL&HTb82@>h@lIVj?vJn}!q{MW)S=>A(! zQY+}U7s;fjKprDZj0YGJshitj4vEi=!Q)Wa^g@QIElGznet+&2Ieg;bv$UJ$^^cvH z|0((EI6MA$(){W1Jw1&q4JzmO_C|B`T*&!4feU=%QiwnJ<3uHea(P9diId9(Vc+;r zx*{QNEo)Bu{-<3Egf=WuW7GS5g}4=UqNuo)jyM0poeB$(E;opR6-aZoEy#xZg^1GH9Kw6h>fP5!$leE-@Wk`&4+CAV)*F_3LNp*O2f9_hTBjc*hbhK==hG_L z^E@0*xR58Nu=0Qte7|&BLkJ@t%~Wl?YYMv=+wT#Wy9ipzhhOQSZ+0_HVH&NZcmcLo z0%n#slbsDb$cChGBg@MIP#?oK76VfCmC&Hxc80n|G4qox^1}owRTm4~6O&;bw=;Uv zH^DX`TEbO(@zv$1NA&EZLrsw4UqO6~U4Lr9X3W_Yy1JAt!$xdsU6frgLJ#suk}pNr z)07*wN%2eoCjK!zta;)5KC3*i{4v+8R&6Xwk3{ua^CsLnpcp6kfE9ihk+??c(Sux( zyOYHU=sxOv+3&}am*clf?1am)-m!*lt#52(C28N}y2CV;({r>dym%VZL2Tgz;tp6In?R+o!(U1t>% zN&02#6n4|d?M(gAXri29-2ZvagLmL!I4bcF|Ekt&rFd%<|cdSJ8uk$GM^YBd5<3JwxW$l>-Zc7taYR@0e};1|8?7uc7EDKD!Yj zX2@^C9T%73eRm_SQ^K&9eWZ{R#KJ7_m1qgPCiDQ1%9 zT+OR1q>TO4KhGZA@mA7GJzG3B`$S7&`jwiJ0F^%5tk2 zB~h3Tg~)-juU+)v9dCKhH7mS!HDCB0klVm%s>cX|HqxrTil4QZ*M;3FR0ry61>JO# zmVd|_z{vSgedH6I&dF!ba2Tvi=Foa-L)_y}Iyo|aOq}h+d5PT=T0HJo`s&p5rvioc zcO@C>9E^u5o-yHp7V4of6jKKWY~k|Vf~3tGyRkembboo8$Y{1dqM!p8 zR($kQC#eh6mRTzKckX9{Z69c1I_sKIbJ_%a0_7$V4yuB~WhPHsi*x7oP2>T&<9M3_ zK`IUR zYC;K?Bz{Tq46Gj3u|9qiHY5^?R3xbh734nad*$|GtPtXeL9s&v068 z@oGq>a7+~3&J9cPE*cNDhY|4bJN>O)|8Dn+C|AM7{RYqJ<00eq1=x?xk`2D?gBe51 zZpW0jXRrT{l?lS5>;KQy>VIFy{=4TX?eEIwA^CEuO$FjqyZ+SRHh8%+P;%>Y6XW&b zPw?Vx{|=s`(-XWW^l8?^HDE>j+CL<$47R=YGjzniz*FY1vFl<*!h`gLy7b}x7&9X! z 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 literal 0 HcmV?d00001 diff --git a/assets/content/linux-devcontainers/devcontainers-in-k8s-projects-e13c2f8cce935c9378054b32becbd76dd98704db3f7c11a072f68e81ee9674bf.png b/assets/content/linux-devcontainers/devcontainers-in-k8s-projects-e13c2f8cce935c9378054b32becbd76dd98704db3f7c11a072f68e81ee9674bf.png new file mode 100644 index 0000000000000000000000000000000000000000..1b93428f1168bce3b26585cd8118e8b25ac5a47f GIT binary patch literal 25040 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

}bEdX7*M#AoXpMMBcO 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 literal 0 HcmV?d00001 diff --git a/assets/content/serverless-devcontainers/devcontainers-c50583eea3e4ef72a8cd7045d04c3c0385e9ef8efc8975162773ce28c3c27be1.webp b/assets/content/serverless-devcontainers/devcontainers-c50583eea3e4ef72a8cd7045d04c3c0385e9ef8efc8975162773ce28c3c27be1.webp new file mode 100644 index 0000000000000000000000000000000000000000..783f79448d9f54ab4c9cb10b29ae590cd31efa1a GIT binary patch literal 10898 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 literal 0 HcmV?d00001 diff --git a/assets/content/serverless-devcontainers/vscode-codespaces-7f9106d37751482d16fb413125224e779ec55adb20efd4c026464d48d1e01dfa.webp b/assets/content/serverless-devcontainers/vscode-codespaces-7f9106d37751482d16fb413125224e779ec55adb20efd4c026464d48d1e01dfa.webp new file mode 100644 index 0000000000000000000000000000000000000000..b5b6d644452e9c0d4aa5120fa04d2f76a1b6718f GIT binary patch literal 16618 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 t+0{XFIC7P#IT?53j13<-Q6ShrE>8de literal 0 HcmV?d00001 diff --git a/assets/content/serverless-devcontainers/vscode-preferences-998a7e5f016288cac7578c594ac2c2e275ac0e77d5ee183f90f3f7faa78afbe1.webp b/assets/content/serverless-devcontainers/vscode-preferences-998a7e5f016288cac7578c594ac2c2e275ac0e77d5ee183f90f3f7faa78afbe1.webp new file mode 100644 index 0000000000000000000000000000000000000000..1ae36442c1dfbf4698eab147c0d30202bd616476 GIT binary patch literal 8890 zcmV;rB1PR&Nk&GpA^-qaMM6+kP&iDbA^-p{Z$mKvufZy|Z6(;XhdV78`X`_Q0o>tJ zYcP!@S=FPXde42x=4bTt{hmRg!eblRwvum8KNe9B{TDzCk$dR#ADS_L{k^)o4nw(w zU#7CMWH`rgj_Csk0U$8F2LJ$o={*2|NC*)U5)sUdMMz|dl@cW)hzK!ZW(bIg002Y; z08H<>DdTYA%UVrabDBy!jJmCJ-ly#v6xE`x)j^Frn@#JaCnEWfs_?UQ5dyg(|~@GSsf+qSlCtxBPi=tM8XTCcOu|Nl1< zq>7y=iARa(za&VK8&=hwYj}=^*|M2qOeV{DU zzn6&qLt-E|ZnJ7w#OIIzMcPi#zNy*P(@2tbAcF+R&|`Km`(Iun$SiYuvS$87^dEv7 zNs6Q>-7rM;Z4JMG;OX52^1l)3)x~ef_@gQ0AFqqABLDpN>jM3L%fDU{UrYY^lJvfo z{Np9Q+zRlORbcdj0?*fhzjz94HF~2hN*|T4P81PkV9K@dhKQQo_2@=+OU#g_K1y3I@L>aSe%WwlxzbB~u-zjeW4n+z; z5cMyS*QfjyP&e2vPKY@Ea48$!O@p_XO($K

O2 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 By: Alex Egan + + + + + + + + @@ -361,7 +369,7 @@

diff --git a/authors/andrea-bailey/index.html b/authors/andrea-bailey/index.html index 402ff2ae..0e8bc360 100644 --- a/authors/andrea-bailey/index.html +++ b/authors/andrea-bailey/index.html @@ -211,6 +211,14 @@

Posts By: Andrea Bailey

+ + + + + + + + @@ -357,7 +365,7 @@

A New Living Style Guid diff --git a/authors/anthony-corletti/index.html b/authors/anthony-corletti/index.html index 7976b3fa..4cc88f16 100644 --- a/authors/anthony-corletti/index.html +++ b/authors/anthony-corletti/index.html @@ -223,6 +223,14 @@

Posts By: Anthony Corletti

+ + + + + + + + @@ -362,7 +370,7 @@

0-60 in ten weeks at C diff --git a/authors/arild-shirazi/index.html b/authors/arild-shirazi/index.html index 7a0a4c8e..4717e880 100644 --- a/authors/arild-shirazi/index.html +++ b/authors/arild-shirazi/index.html @@ -197,6 +197,14 @@

Posts By: Arild Shirazi

+ + + + + + + + @@ -362,7 +370,7 @@

Ruby Meta - Method Madn diff --git a/authors/arne-de-herdt/index.html b/authors/arne-de-herdt/index.html index 9bc81b16..f22f7dea 100644 --- a/authors/arne-de-herdt/index.html +++ b/authors/arne-de-herdt/index.html @@ -61,6 +61,14 @@

Posts By: Arne De Herdt

+ + + + + + + + @@ -404,7 +412,7 @@

Inkycop - Standardizing team configurati diff --git a/authors/austin-moore/index.html b/authors/austin-moore/index.html index ce5c042b..82e0242f 100644 --- a/authors/austin-moore/index.html +++ b/authors/austin-moore/index.html @@ -57,6 +57,14 @@

Posts By: Austin Moore

+ + + + + + + + @@ -393,7 +401,7 @@

NationJS

diff --git a/authors/chris-mar/index.html b/authors/chris-mar/index.html index 39fceb15..19be263e 100644 --- a/authors/chris-mar/index.html +++ b/authors/chris-mar/index.html @@ -69,6 +69,14 @@

Posts By: Chris Mar

+ + + + + + + + @@ -683,7 +691,7 @@

Halloween Costume Winn diff --git a/authors/dan-drinkard/index.html b/authors/dan-drinkard/index.html index 7dc146fd..c79798a3 100644 --- a/authors/dan-drinkard/index.html +++ b/authors/dan-drinkard/index.html @@ -141,6 +141,14 @@

Posts By: Dan Drinkard

+ + + + + + + + @@ -366,7 +374,7 @@

-
© 2022 CustomInk, LLC. All rights reserved.
+
© 2023 CustomInk, LLC. All rights reserved.
CustomInk is a registered trademark of CustomInk LLC. "T-shirts Unite!" and the "Inky" octopus are trademarks of CustomInk, LLC.
diff --git a/authors/dan-hensgen/index.html b/authors/dan-hensgen/index.html index b391657a..4a90f623 100644 --- a/authors/dan-hensgen/index.html +++ b/authors/dan-hensgen/index.html @@ -183,6 +183,14 @@

Posts By: Dan Hensgen

+ + + + + + + + @@ -433,7 +441,7 @@

Welcome Lisa Pourkhomam diff --git a/authors/daniel-wheeler/index.html b/authors/daniel-wheeler/index.html index 5f4cae3f..a145d8a6 100644 --- a/authors/daniel-wheeler/index.html +++ b/authors/daniel-wheeler/index.html @@ -221,6 +221,14 @@

Posts By: Daniel Wheeler

+ + + + + + + + @@ -361,7 +369,7 @@

Learning Ruby on Rails diff --git a/authors/don-mclamb/index.html b/authors/don-mclamb/index.html index 73826b04..690c8742 100644 --- a/authors/don-mclamb/index.html +++ b/authors/don-mclamb/index.html @@ -91,6 +91,14 @@

Posts By: Don McLamb

+ + + + + + + + @@ -364,7 +372,7 @@

Let's Get Visual diff --git a/authors/gerald-hevener/index.html b/authors/gerald-hevener/index.html index e5f8b793..e45b9555 100644 --- a/authors/gerald-hevener/index.html +++ b/authors/gerald-hevener/index.html @@ -87,6 +87,14 @@

Posts By: Gerald Hevener

+ + + + + + + + @@ -366,7 +374,7 @@

-
© 2022 CustomInk, LLC. All rights reserved.
+
© 2023 CustomInk, LLC. All rights reserved.
CustomInk is a registered trademark of CustomInk LLC. "T-shirts Unite!" and the "Inky" octopus are trademarks of CustomInk, LLC.
diff --git a/authors/guillermo-saavedra/index.html b/authors/guillermo-saavedra/index.html index 1a49a64f..9637f79b 100644 --- a/authors/guillermo-saavedra/index.html +++ b/authors/guillermo-saavedra/index.html @@ -79,6 +79,14 @@

Posts By: Guillermo Saavedra

+ + + + + + + + @@ -358,7 +366,7 @@

Software engineer internsh diff --git a/authors/hunter-madison/index.html b/authors/hunter-madison/index.html index f647d3da..83c2cae8 100644 --- a/authors/hunter-madison/index.html +++ b/authors/hunter-madison/index.html @@ -115,6 +115,14 @@

Posts By: Hunter Madison

+ + + + + + + + @@ -398,7 +406,7 @@

-
© 2022 CustomInk, LLC. All rights reserved.
+
© 2023 CustomInk, LLC. All rights reserved.
CustomInk is a registered trademark of CustomInk LLC. "T-shirts Unite!" and the "Inky" octopus are trademarks of CustomInk, LLC.
diff --git a/authors/jake-vanderdray/index.html b/authors/jake-vanderdray/index.html index 239f1550..8f76d131 100644 --- a/authors/jake-vanderdray/index.html +++ b/authors/jake-vanderdray/index.html @@ -131,6 +131,14 @@

Posts By: Jake Vanderdray

+ + + + + + + + @@ -398,7 +406,7 @@

PagerDuty, Nagios and Chef

diff --git a/authors/john-peterson/index.html b/authors/john-peterson/index.html index c11999b9..74d4c263 100644 --- a/authors/john-peterson/index.html +++ b/authors/john-peterson/index.html @@ -143,6 +143,14 @@

Posts By: John Peterson

+ + + + + + + + @@ -402,7 +410,7 @@

To the Cloud!

diff --git a/authors/jonathan-lehman/index.html b/authors/jonathan-lehman/index.html index ebf054de..02452e08 100644 --- a/authors/jonathan-lehman/index.html +++ b/authors/jonathan-lehman/index.html @@ -187,6 +187,14 @@

Posts By: Jonathan Lehman

+ + + + + + + + @@ -441,7 +449,7 @@

Modular CSS with SUIT CSS< diff --git a/authors/kalimar-maia/index.html b/authors/kalimar-maia/index.html index 455bc739..b65c5038 100644 --- a/authors/kalimar-maia/index.html +++ b/authors/kalimar-maia/index.html @@ -133,6 +133,14 @@

Posts By: Kalimar Maia

+ + + + + + + + @@ -427,7 +435,7 @@

I have the PR!

diff --git a/authors/karle-durante/index.html b/authors/karle-durante/index.html index a35dc25c..c4f6b1f2 100644 --- a/authors/karle-durante/index.html +++ b/authors/karle-durante/index.html @@ -169,6 +169,14 @@

Posts By: Karle Durante

+ + + + + + + + @@ -661,7 +669,7 @@

Organizing Your Rai diff --git a/authors/katherine-cisneros/index.html b/authors/katherine-cisneros/index.html index 9573a724..79e65d25 100644 --- a/authors/katherine-cisneros/index.html +++ b/authors/katherine-cisneros/index.html @@ -48,6 +48,14 @@

Posts By: Katherine Cisneros

+ + + + + + + + @@ -445,7 +453,7 @@

Chaos at Custom Ink

diff --git a/authors/ke-cheng/index.html b/authors/ke-cheng/index.html index 36d2d5c2..e6c1a2ea 100644 --- a/authors/ke-cheng/index.html +++ b/authors/ke-cheng/index.html @@ -65,6 +65,14 @@

Posts By: Ke Cheng

+ + + + + + + + @@ -397,7 +405,7 @@

Inte diff --git a/authors/ken-collins/index.html b/authors/ken-collins/index.html index db4cba7f..a8a34416 100644 --- a/authors/ken-collins/index.html +++ b/authors/ken-collins/index.html @@ -48,6 +48,90 @@

Posts By: Ken Collins

+ + + +
+
+
+ +

Trigger CircleCI Workflow. AKA Simple Deploy Button

+
+

Very simple, no parameters needed, no enums, no booleans... just a really easy way to trigger a deploy with CircleCI. We can do this making use of the trigger_source pipeline value. When you click the button in CircleCI to "Trigger Pipeline" the value would be api vs something like webhook. +

+ Read More +
+ +
+ + + + + + + +
+
+
+ +

New Amazon Linux Dev Container Features

+
+

🆕 Want to use Codespaces with Amazon Linux 2? Check out customink/codespaces-features for two custom features. 1) common-amzn 2) docker-in-docker-amzn. +

+ Read More +
+ +
+ + + + + + + +
+ + +
+ + + + + + + +
+
+
+ +

Getting Started with GitHub Codespaces from a Serverless Perspective

+
+

If you are into Serverless and AWS Lambda, you may already know that the AWS Serverless Application Model (SAM) CLI makes it easy to leverage their Docker build images as development containers. We do exactly this for our Rails & Lambda projects. +

+ Read More +
+ +
+ + + + @@ -814,7 +898,7 @@

-
© 2022 CustomInk, LLC. All rights reserved.
+
© 2023 CustomInk, LLC. All rights reserved.
CustomInk is a registered trademark of CustomInk LLC. "T-shirts Unite!" and the "Inky" octopus are trademarks of CustomInk, LLC.
diff --git a/authors/logan-beougher/index.html b/authors/logan-beougher/index.html index 99478046..aec953e7 100644 --- a/authors/logan-beougher/index.html +++ b/authors/logan-beougher/index.html @@ -63,6 +63,14 @@

Posts By: Logan Beougher

+ + + + + + + + @@ -418,7 +426,7 @@

Sidekiq Rundown Part 1: G diff --git a/authors/mark-johnson/index.html b/authors/mark-johnson/index.html index 10aec42d..7d095932 100644 --- a/authors/mark-johnson/index.html +++ b/authors/mark-johnson/index.html @@ -123,6 +123,14 @@

Posts By: Mark Johnson

+ + + + + + + + @@ -366,7 +374,7 @@

Working For DC's Best Tech Ma diff --git a/authors/martin-bonica/index.html b/authors/martin-bonica/index.html index 0fc4c56a..53693c74 100644 --- a/authors/martin-bonica/index.html +++ b/authors/martin-bonica/index.html @@ -54,6 +54,14 @@

Posts By: Martin Bonica

+ + + + + + + + @@ -357,7 +365,7 @@

-
© 2022 CustomInk, LLC. All rights reserved.
+
© 2023 CustomInk, LLC. All rights reserved.
CustomInk is a registered trademark of CustomInk LLC. "T-shirts Unite!" and the "Inky" octopus are trademarks of CustomInk, LLC.
diff --git a/authors/max-tedford/index.html b/authors/max-tedford/index.html index 27b03edc..916454ac 100644 --- a/authors/max-tedford/index.html +++ b/authors/max-tedford/index.html @@ -135,6 +135,14 @@

Posts By: Max Tedford

+ + + + + + + + @@ -357,7 +365,7 @@

Contributing to Open diff --git a/authors/miranda-wang/index.html b/authors/miranda-wang/index.html index 579fcc96..5a9880b0 100644 --- a/authors/miranda-wang/index.html +++ b/authors/miranda-wang/index.html @@ -109,6 +109,14 @@

Posts By: Miranda Wang

+ + + + + + + + @@ -419,7 +427,7 @@

A Spooky Ink-o-ween!

diff --git a/authors/nathan-hessler/index.html b/authors/nathan-hessler/index.html index e2dbb5e2..61b7ac7d 100644 --- a/authors/nathan-hessler/index.html +++ b/authors/nathan-hessler/index.html @@ -185,6 +185,14 @@

Posts By: Nathan Hessler

+ + + + + + + + @@ -401,7 +409,7 @@

Welcome, Dan Hensgen

diff --git a/authors/nathen-harvery/index.html b/authors/nathen-harvery/index.html index 6517a319..9deb4579 100644 --- a/authors/nathen-harvery/index.html +++ b/authors/nathen-harvery/index.html @@ -263,6 +263,14 @@

Posts By: Nathen Harvery

+ + + + + + + + @@ -488,7 +496,7 @@

Testing diff --git a/authors/rj-pittman/index.html b/authors/rj-pittman/index.html index b65d399d..fe79c5fe 100644 --- a/authors/rj-pittman/index.html +++ b/authors/rj-pittman/index.html @@ -101,6 +101,14 @@

Posts By: RJ Pittman

+ + + + + + + + @@ -362,7 +370,7 @@

Day Zero Deployments diff --git a/authors/ryan-billings/index.html b/authors/ryan-billings/index.html index bce1e995..89c5e5d2 100644 --- a/authors/ryan-billings/index.html +++ b/authors/ryan-billings/index.html @@ -85,6 +85,14 @@

Posts By: Ryan Billings

+ + + + + + + + @@ -376,7 +384,7 @@

Taking a peek at Activ diff --git a/authors/seth-vargo/index.html b/authors/seth-vargo/index.html index 0e9546e2..39d1666e 100644 --- a/authors/seth-vargo/index.html +++ b/authors/seth-vargo/index.html @@ -253,6 +253,14 @@

Posts By: Seth Vargo

+ + + + + + + + @@ -461,7 +469,7 @@

Provision diff --git a/authors/tien-nguyen/index.html b/authors/tien-nguyen/index.html index 38d91861..40432b3c 100644 --- a/authors/tien-nguyen/index.html +++ b/authors/tien-nguyen/index.html @@ -285,6 +285,14 @@

Posts By: Tien Nguyen

+ + + + + + + + @@ -365,7 +373,7 @@

Coderetreat Floyd 2012 diff --git a/blog/2010/07/16/testing-mod-rewrite-and-apache-redirects/index.html b/blog/2010/07/16/testing-mod-rewrite-and-apache-redirects/index.html index 6461d6aa..af9a6962 100644 --- a/blog/2010/07/16/testing-mod-rewrite-and-apache-redirects/index.html +++ b/blog/2010/07/16/testing-mod-rewrite-and-apache-redirects/index.html @@ -111,7 +111,7 @@

Testing mod_rewrite and apache redirects

diff --git a/blog/2011/11/21/why-we-chose-chef-over-puppet-at-customink/index.html b/blog/2011/11/21/why-we-chose-chef-over-puppet-at-customink/index.html index 90183470..b0277acd 100644 --- a/blog/2011/11/21/why-we-chose-chef-over-puppet-at-customink/index.html +++ b/blog/2011/11/21/why-we-chose-chef-over-puppet-at-customink/index.html @@ -171,7 +171,7 @@

TL;DR

diff --git a/blog/2012/01/02/green-screen/index.html b/blog/2012/01/02/green-screen/index.html index 35fdd381..a41cbf2e 100644 --- a/blog/2012/01/02/green-screen/index.html +++ b/blog/2012/01/02/green-screen/index.html @@ -134,7 +134,7 @@

History

diff --git a/blog/2012/01/31/pagerduty/index.html b/blog/2012/01/31/pagerduty/index.html index 9ee5e775..a3c378d8 100644 --- a/blog/2012/01/31/pagerduty/index.html +++ b/blog/2012/01/31/pagerduty/index.html @@ -116,7 +116,7 @@

Three Things that Work Great Toge diff --git a/blog/2012/02/03/organizing-your-rails-models/index.html b/blog/2012/02/03/organizing-your-rails-models/index.html index 14989cdf..00403fd8 100644 --- a/blog/2012/02/03/organizing-your-rails-models/index.html +++ b/blog/2012/02/03/organizing-your-rails-models/index.html @@ -124,7 +124,7 @@

Organizing Your Rails Models

diff --git a/blog/2012/03/02/simple-data-mapper/index.html b/blog/2012/03/02/simple-data-mapper/index.html index b0cd525e..e7403aab 100644 --- a/blog/2012/03/02/simple-data-mapper/index.html +++ b/blog/2012/03/02/simple-data-mapper/index.html @@ -220,7 +220,7 @@

Simple Data Mapper

diff --git a/blog/2012/03/16/simple-garbage-collection-tuning-for-rails/index.html b/blog/2012/03/16/simple-garbage-collection-tuning-for-rails/index.html index 910539ef..dd19ca49 100644 --- a/blog/2012/03/16/simple-garbage-collection-tuning-for-rails/index.html +++ b/blog/2012/03/16/simple-garbage-collection-tuning-for-rails/index.html @@ -192,7 +192,7 @@

Where Those Numbers Actually Cam diff --git a/blog/2012/03/26/rubynation-2012/index.html b/blog/2012/03/26/rubynation-2012/index.html index 78ae3612..f8d8cea5 100644 --- a/blog/2012/03/26/rubynation-2012/index.html +++ b/blog/2012/03/26/rubynation-2012/index.html @@ -129,7 +129,7 @@

RubyNation 2012

diff --git a/blog/2012/04/27/critical-oversight-indexes/index.html b/blog/2012/04/27/critical-oversight-indexes/index.html index d27c5968..07fcf893 100644 --- a/blog/2012/04/27/critical-oversight-indexes/index.html +++ b/blog/2012/04/27/critical-oversight-indexes/index.html @@ -136,7 +136,7 @@

Critical Oversight: Indexes

diff --git a/blog/2012/05/14/welcome-josh-born/index.html b/blog/2012/05/14/welcome-josh-born/index.html index 40b34f61..148b6e02 100644 --- a/blog/2012/05/14/welcome-josh-born/index.html +++ b/blog/2012/05/14/welcome-josh-born/index.html @@ -122,7 +122,7 @@

Welcome Josh Born!

diff --git a/blog/2012/05/16/coderetreat-floyd-2012/index.html b/blog/2012/05/16/coderetreat-floyd-2012/index.html index 1844405f..da192f1b 100644 --- a/blog/2012/05/16/coderetreat-floyd-2012/index.html +++ b/blog/2012/05/16/coderetreat-floyd-2012/index.html @@ -199,7 +199,7 @@

Wrapping Up

diff --git a/blog/2012/05/24/welcome-interns/index.html b/blog/2012/05/24/welcome-interns/index.html index b7e9ae4a..90886019 100644 --- a/blog/2012/05/24/welcome-interns/index.html +++ b/blog/2012/05/24/welcome-interns/index.html @@ -133,7 +133,7 @@

Welcome Interns!

diff --git a/blog/2012/05/25/taming-the-kraken-how-operations-enables-developer-productivity/index.html b/blog/2012/05/25/taming-the-kraken-how-operations-enables-developer-productivity/index.html index a0f5d5c0..f4635b09 100644 --- a/blog/2012/05/25/taming-the-kraken-how-operations-enables-developer-productivity/index.html +++ b/blog/2012/05/25/taming-the-kraken-how-operations-enables-developer-productivity/index.html @@ -110,7 +110,7 @@

Slides

diff --git a/blog/2012/05/25/the-joy-of-cooking-whip-up-a-rails-environment-with-chef/index.html b/blog/2012/05/25/the-joy-of-cooking-whip-up-a-rails-environment-with-chef/index.html index 4a73291f..80e622d1 100644 --- a/blog/2012/05/25/the-joy-of-cooking-whip-up-a-rails-environment-with-chef/index.html +++ b/blog/2012/05/25/the-joy-of-cooking-whip-up-a-rails-environment-with-chef/index.html @@ -122,7 +122,7 @@

Slides

diff --git a/blog/2012/05/26/5-things-you-always-wanted-to-know-about-chef/index.html b/blog/2012/05/26/5-things-you-always-wanted-to-know-about-chef/index.html index 6def0e8f..44f223d4 100644 --- a/blog/2012/05/26/5-things-you-always-wanted-to-know-about-chef/index.html +++ b/blog/2012/05/26/5-things-you-always-wanted-to-know-about-chef/index.html @@ -129,7 +129,7 @@

Slides

diff --git a/blog/2012/05/28/provision-your-laptop-with-chef-part-1/index.html b/blog/2012/05/28/provision-your-laptop-with-chef-part-1/index.html index 3e24b314..04912528 100644 --- a/blog/2012/05/28/provision-your-laptop-with-chef-part-1/index.html +++ b/blog/2012/05/28/provision-your-laptop-with-chef-part-1/index.html @@ -363,7 +363,7 @@

Create your first cookbook

diff --git a/blog/2012/06/04/mvt-foodcritic-and-travis-ci/index.html b/blog/2012/06/04/mvt-foodcritic-and-travis-ci/index.html index bbc818a9..f6a7262e 100644 --- a/blog/2012/06/04/mvt-foodcritic-and-travis-ci/index.html +++ b/blog/2012/06/04/mvt-foodcritic-and-travis-ci/index.html @@ -260,7 +260,7 @@

Next Post

diff --git a/blog/2012/06/12/introducing-stoplight-greenscreen-2-dot-0/index.html b/blog/2012/06/12/introducing-stoplight-greenscreen-2-dot-0/index.html index 9963fe83..fc19a11c 100644 --- a/blog/2012/06/12/introducing-stoplight-greenscreen-2-dot-0/index.html +++ b/blog/2012/06/12/introducing-stoplight-greenscreen-2-dot-0/index.html @@ -216,7 +216,7 @@

I Want it!

diff --git a/blog/2012/06/15/welcome-jason-gilbertson/index.html b/blog/2012/06/15/welcome-jason-gilbertson/index.html index 0c88ca38..007a281d 100644 --- a/blog/2012/06/15/welcome-jason-gilbertson/index.html +++ b/blog/2012/06/15/welcome-jason-gilbertson/index.html @@ -122,7 +122,7 @@

Welcome Jason Gilbertson!

diff --git a/blog/2012/06/18/profiling-openstruct-eager-loading-method-missing-and-lazy-loading/index.html b/blog/2012/06/18/profiling-openstruct-eager-loading-method-missing-and-lazy-loading/index.html index d8d1bb47..b4a9d420 100644 --- a/blog/2012/06/18/profiling-openstruct-eager-loading-method-missing-and-lazy-loading/index.html +++ b/blog/2012/06/18/profiling-openstruct-eager-loading-method-missing-and-lazy-loading/index.html @@ -413,7 +413,7 @@

Known Caveats

diff --git a/blog/2012/06/27/welcome-dan-hensgen/index.html b/blog/2012/06/27/welcome-dan-hensgen/index.html index 994de5fa..78c2a707 100644 --- a/blog/2012/06/27/welcome-dan-hensgen/index.html +++ b/blog/2012/06/27/welcome-dan-hensgen/index.html @@ -111,7 +111,7 @@

Welcome, Dan Hensgen

diff --git a/blog/2012/07/06/mvt-knife-test-and-travisci/index.html b/blog/2012/07/06/mvt-knife-test-and-travisci/index.html index e18ab170..8490e759 100644 --- a/blog/2012/07/06/mvt-knife-test-and-travisci/index.html +++ b/blog/2012/07/06/mvt-knife-test-and-travisci/index.html @@ -276,7 +276,7 @@

Credit

diff --git a/blog/2012/07/10/stay-cool/index.html b/blog/2012/07/10/stay-cool/index.html index 16d95078..cb263796 100644 --- a/blog/2012/07/10/stay-cool/index.html +++ b/blog/2012/07/10/stay-cool/index.html @@ -118,7 +118,7 @@

Stay Cool

diff --git a/blog/2012/07/30/provision-your-laptop-with-chef-part-2/index.html b/blog/2012/07/30/provision-your-laptop-with-chef-part-2/index.html index b0735b85..938eedcb 100644 --- a/blog/2012/07/30/provision-your-laptop-with-chef-part-2/index.html +++ b/blog/2012/07/30/provision-your-laptop-with-chef-part-2/index.html @@ -582,7 +582,7 @@

Testing

diff --git a/blog/2012/07/31/easily-test-your-dns/index.html b/blog/2012/07/31/easily-test-your-dns/index.html index ba64d4d0..aed00f99 100644 --- a/blog/2012/07/31/easily-test-your-dns/index.html +++ b/blog/2012/07/31/easily-test-your-dns/index.html @@ -259,7 +259,7 @@

Disclaimer

diff --git a/blog/2012/08/03/etc-hosts-management-with-chef/index.html b/blog/2012/08/03/etc-hosts-management-with-chef/index.html index 19a279b4..2c9941b7 100644 --- a/blog/2012/08/03/etc-hosts-management-with-chef/index.html +++ b/blog/2012/08/03/etc-hosts-management-with-chef/index.html @@ -263,7 +263,7 @@

I want it now!

diff --git a/blog/2012/08/03/testing-chef-cookbooks/index.html b/blog/2012/08/03/testing-chef-cookbooks/index.html index d0da032f..190d8595 100644 --- a/blog/2012/08/03/testing-chef-cookbooks/index.html +++ b/blog/2012/08/03/testing-chef-cookbooks/index.html @@ -198,7 +198,7 @@

The Long & Short of it

diff --git a/blog/2012/09/14/welcome-ken-collins/index.html b/blog/2012/09/14/welcome-ken-collins/index.html index f7c15514..19bca54c 100644 --- a/blog/2012/09/14/welcome-ken-collins/index.html +++ b/blog/2012/09/14/welcome-ken-collins/index.html @@ -120,7 +120,7 @@

Welcome Ken Collins!

diff --git a/blog/2012/12/06/bootstrap-your-next-project-with-holygrailharness/index.html b/blog/2012/12/06/bootstrap-your-next-project-with-holygrailharness/index.html index 5e821305..0078fd58 100644 --- a/blog/2012/12/06/bootstrap-your-next-project-with-holygrailharness/index.html +++ b/blog/2012/12/06/bootstrap-your-next-project-with-holygrailharness/index.html @@ -368,7 +368,7 @@

Font Awesome

diff --git a/blog/2013/06/05/welcome-sukhada-kulkarni/index.html b/blog/2013/06/05/welcome-sukhada-kulkarni/index.html index d555ca1d..a012e66c 100644 --- a/blog/2013/06/05/welcome-sukhada-kulkarni/index.html +++ b/blog/2013/06/05/welcome-sukhada-kulkarni/index.html @@ -122,7 +122,7 @@

Welcome Sukhada Kulkarni

diff --git a/blog/2013/06/24/welcome-lisa-pourkhomami/index.html b/blog/2013/06/24/welcome-lisa-pourkhomami/index.html index 25a85ea5..1103d0d9 100644 --- a/blog/2013/06/24/welcome-lisa-pourkhomami/index.html +++ b/blog/2013/06/24/welcome-lisa-pourkhomami/index.html @@ -118,7 +118,7 @@

Welcome Lisa Pourkhomami!

diff --git a/blog/2013/10/01/chris-mar-is-an-inker/index.html b/blog/2013/10/01/chris-mar-is-an-inker/index.html index 022c7ac3..11138664 100644 --- a/blog/2013/10/01/chris-mar-is-an-inker/index.html +++ b/blog/2013/10/01/chris-mar-is-an-inker/index.html @@ -115,7 +115,7 @@

Chris Mar is an Inker

diff --git a/blog/2013/10/15/welcome-ryan-billings/index.html b/blog/2013/10/15/welcome-ryan-billings/index.html index 88be6109..f81f23a3 100644 --- a/blog/2013/10/15/welcome-ryan-billings/index.html +++ b/blog/2013/10/15/welcome-ryan-billings/index.html @@ -134,7 +134,7 @@

Welcome Ryan Billings!

diff --git a/blog/2013/10/31/halloween-costume-winners/index.html b/blog/2013/10/31/halloween-costume-winners/index.html index 039df5ba..8f9fc875 100644 --- a/blog/2013/10/31/halloween-costume-winners/index.html +++ b/blog/2013/10/31/halloween-costume-winners/index.html @@ -116,7 +116,7 @@

Halloween Costume Winners!

diff --git a/blog/2013/10/31/welcome-jonathan-lehman/index.html b/blog/2013/10/31/welcome-jonathan-lehman/index.html index 401a3f1b..0550b2d8 100644 --- a/blog/2013/10/31/welcome-jonathan-lehman/index.html +++ b/blog/2013/10/31/welcome-jonathan-lehman/index.html @@ -117,7 +117,7 @@

Welcome Jonathan Lehman!

diff --git a/blog/2013/11/30/upper-lipsters/index.html b/blog/2013/11/30/upper-lipsters/index.html index 7bd8002e..80e69279 100644 --- a/blog/2013/11/30/upper-lipsters/index.html +++ b/blog/2013/11/30/upper-lipsters/index.html @@ -126,7 +126,7 @@

Upper Lipsters 2013

diff --git a/blog/2013/12/01/welcome-michael-peteuil/index.html b/blog/2013/12/01/welcome-michael-peteuil/index.html index 6bb61ee0..699216d8 100644 --- a/blog/2013/12/01/welcome-michael-peteuil/index.html +++ b/blog/2013/12/01/welcome-michael-peteuil/index.html @@ -114,7 +114,7 @@

Welcome Michael Peteuil!

diff --git a/blog/2013/12/19/instrumenting-your-code-with-activesupport-notifications/index.html b/blog/2013/12/19/instrumenting-your-code-with-activesupport-notifications/index.html index 96c802d3..42b622c6 100644 --- a/blog/2013/12/19/instrumenting-your-code-with-activesupport-notifications/index.html +++ b/blog/2013/12/19/instrumenting-your-code-with-activesupport-notifications/index.html @@ -233,7 +233,7 @@

Other Resources

diff --git a/blog/2014/05/19/welcome-anthony-corletti/index.html b/blog/2014/05/19/welcome-anthony-corletti/index.html index 5b68ff01..4bbdb91d 100644 --- a/blog/2014/05/19/welcome-anthony-corletti/index.html +++ b/blog/2014/05/19/welcome-anthony-corletti/index.html @@ -118,7 +118,7 @@

Welcome Anthony Corletti!

diff --git a/blog/2014/06/17/build-better-teams-with-dashing-dashboards/index.html b/blog/2014/06/17/build-better-teams-with-dashing-dashboards/index.html index 4e1e6784..949f998f 100644 --- a/blog/2014/06/17/build-better-teams-with-dashing-dashboards/index.html +++ b/blog/2014/06/17/build-better-teams-with-dashing-dashboards/index.html @@ -119,7 +119,7 @@

Build Better Teams with Dashing Dashboards

diff --git a/blog/2014/07/08/welcome-hunter-madison/index.html b/blog/2014/07/08/welcome-hunter-madison/index.html index 49da52d5..5659b354 100644 --- a/blog/2014/07/08/welcome-hunter-madison/index.html +++ b/blog/2014/07/08/welcome-hunter-madison/index.html @@ -126,7 +126,7 @@

Welcome Hunter Madison!

diff --git a/blog/2014/07/25/anthcor-summer-internship/index.html b/blog/2014/07/25/anthcor-summer-internship/index.html index 46226e61..36740306 100644 --- a/blog/2014/07/25/anthcor-summer-internship/index.html +++ b/blog/2014/07/25/anthcor-summer-internship/index.html @@ -114,7 +114,7 @@

0-60 in ten weeks at CustomInk’s eCommerce Technology Department

diff --git a/blog/2014/08/12/learning-ruby-on-rails/index.html b/blog/2014/08/12/learning-ruby-on-rails/index.html index 4e92fefe..326370c3 100644 --- a/blog/2014/08/12/learning-ruby-on-rails/index.html +++ b/blog/2014/08/12/learning-ruby-on-rails/index.html @@ -120,7 +120,7 @@

Learning Ruby on Rails

diff --git a/blog/2014/08/15/tapas-time/index.html b/blog/2014/08/15/tapas-time/index.html index 9df343af..8bb7067c 100644 --- a/blog/2014/08/15/tapas-time/index.html +++ b/blog/2014/08/15/tapas-time/index.html @@ -118,7 +118,7 @@

Tapas Time!

diff --git a/blog/2014/08/22/welcome-john-dyer/index.html b/blog/2014/08/22/welcome-john-dyer/index.html index 1b533065..4e4bae7a 100644 --- a/blog/2014/08/22/welcome-john-dyer/index.html +++ b/blog/2014/08/22/welcome-john-dyer/index.html @@ -114,7 +114,7 @@

Welcome John Dyer!

diff --git a/blog/2014/08/26/modular-css-with-suit/index.html b/blog/2014/08/26/modular-css-with-suit/index.html index d9e963e9..9ece8ae0 100644 --- a/blog/2014/08/26/modular-css-with-suit/index.html +++ b/blog/2014/08/26/modular-css-with-suit/index.html @@ -238,7 +238,7 @@

Why?

diff --git a/blog/2014/08/29/dynamic-svgs-using-defs-elements-and-javascript/index.html b/blog/2014/08/29/dynamic-svgs-using-defs-elements-and-javascript/index.html index f25d7eaf..820b6433 100644 --- a/blog/2014/08/29/dynamic-svgs-using-defs-elements-and-javascript/index.html +++ b/blog/2014/08/29/dynamic-svgs-using-defs-elements-and-javascript/index.html @@ -264,7 +264,7 @@

Resources

diff --git a/blog/2014/09/01/a-new-living-style-guide/index.html b/blog/2014/09/01/a-new-living-style-guide/index.html index 2194b2cd..a4fcaa5b 100644 --- a/blog/2014/09/01/a-new-living-style-guide/index.html +++ b/blog/2014/09/01/a-new-living-style-guide/index.html @@ -114,7 +114,7 @@

A New Living Style Guide

diff --git a/blog/2014/09/08/building-the-customink-living-style-guide/index.html b/blog/2014/09/08/building-the-customink-living-style-guide/index.html index 55ec9c51..176c5c4e 100644 --- a/blog/2014/09/08/building-the-customink-living-style-guide/index.html +++ b/blog/2014/09/08/building-the-customink-living-style-guide/index.html @@ -156,7 +156,7 @@

Resources

diff --git a/blog/2014/09/12/fall-college-recruiting-schedule/index.html b/blog/2014/09/12/fall-college-recruiting-schedule/index.html index 8f250ddc..21a8e719 100644 --- a/blog/2014/09/12/fall-college-recruiting-schedule/index.html +++ b/blog/2014/09/12/fall-college-recruiting-schedule/index.html @@ -150,7 +150,7 @@

George Mason University

diff --git a/blog/2014/09/12/open-sourcing-a-gem-pt-1/index.html b/blog/2014/09/12/open-sourcing-a-gem-pt-1/index.html index 4d1d4255..737f83f7 100644 --- a/blog/2014/09/12/open-sourcing-a-gem-pt-1/index.html +++ b/blog/2014/09/12/open-sourcing-a-gem-pt-1/index.html @@ -124,7 +124,7 @@

More from this series

diff --git a/blog/2014/09/16/from-rails-3.2-to-4.2/index.html b/blog/2014/09/16/from-rails-3.2-to-4.2/index.html index 671db89e..0334a938 100644 --- a/blog/2014/09/16/from-rails-3.2-to-4.2/index.html +++ b/blog/2014/09/16/from-rails-3.2-to-4.2/index.html @@ -295,7 +295,7 @@

In Closing

diff --git a/blog/2014/09/19/single-class-vs-multi-class-css/index.html b/blog/2014/09/19/single-class-vs-multi-class-css/index.html index e298cf55..d6bb7375 100644 --- a/blog/2014/09/19/single-class-vs-multi-class-css/index.html +++ b/blog/2014/09/19/single-class-vs-multi-class-css/index.html @@ -266,7 +266,7 @@

Further Reading

diff --git a/blog/2014/09/23/migrating-session-flash-from-rails-30x-to-32x/index.html b/blog/2014/09/23/migrating-session-flash-from-rails-30x-to-32x/index.html index cf3a2045..01e7bb15 100644 --- a/blog/2014/09/23/migrating-session-flash-from-rails-30x-to-32x/index.html +++ b/blog/2014/09/23/migrating-session-flash-from-rails-30x-to-32x/index.html @@ -317,7 +317,7 @@

Pretty?

diff --git a/blog/2014/09/26/ruby-meta-method-madness/index.html b/blog/2014/09/26/ruby-meta-method-madness/index.html index 5e0b9300..a4412d6a 100644 --- a/blog/2014/09/26/ruby-meta-method-madness/index.html +++ b/blog/2014/09/26/ruby-meta-method-madness/index.html @@ -151,7 +151,7 @@

Ruby Meta - Method Madness

diff --git a/blog/2014/09/30/unit-testing-sass-frameworks/index.html b/blog/2014/09/30/unit-testing-sass-frameworks/index.html index 458aac15..94e3f5bf 100644 --- a/blog/2014/09/30/unit-testing-sass-frameworks/index.html +++ b/blog/2014/09/30/unit-testing-sass-frameworks/index.html @@ -205,7 +205,7 @@

Other Resources

diff --git a/blog/2014/10/07/rails-association-proxies/index.html b/blog/2014/10/07/rails-association-proxies/index.html index 02b7c40f..0425737f 100644 --- a/blog/2014/10/07/rails-association-proxies/index.html +++ b/blog/2014/10/07/rails-association-proxies/index.html @@ -150,7 +150,7 @@

Association Proxies

diff --git a/blog/2014/10/09/understanding-and-using-sass-load-paths/index.html b/blog/2014/10/09/understanding-and-using-sass-load-paths/index.html index c8eb46d6..6af4353f 100644 --- a/blog/2014/10/09/understanding-and-using-sass-load-paths/index.html +++ b/blog/2014/10/09/understanding-and-using-sass-load-paths/index.html @@ -168,7 +168,7 @@

Acknowledgements

diff --git a/blog/2014/10/14/better-hash-injection-using-each-with-object/index.html b/blog/2014/10/14/better-hash-injection-using-each-with-object/index.html index 1aba6b36..6b2622c3 100644 --- a/blog/2014/10/14/better-hash-injection-using-each-with-object/index.html +++ b/blog/2014/10/14/better-hash-injection-using-each-with-object/index.html @@ -162,7 +162,7 @@

Better Hash Injection using each_with_object

diff --git a/blog/2014/10/20/open-sourcing-a-gem-pt-2/index.html b/blog/2014/10/20/open-sourcing-a-gem-pt-2/index.html index 4dbf7ef2..d9765c57 100644 --- a/blog/2014/10/20/open-sourcing-a-gem-pt-2/index.html +++ b/blog/2014/10/20/open-sourcing-a-gem-pt-2/index.html @@ -143,7 +143,7 @@

More from this series

diff --git a/blog/2014/10/22/managing-your-local-project-repos/index.html b/blog/2014/10/22/managing-your-local-project-repos/index.html index 0712875e..a9dc75ef 100644 --- a/blog/2014/10/22/managing-your-local-project-repos/index.html +++ b/blog/2014/10/22/managing-your-local-project-repos/index.html @@ -168,7 +168,7 @@

Final Thoughts

diff --git a/blog/2014/10/23/welcome-arild-shirazi/index.html b/blog/2014/10/23/welcome-arild-shirazi/index.html index c0c89cf3..d499f667 100644 --- a/blog/2014/10/23/welcome-arild-shirazi/index.html +++ b/blog/2014/10/23/welcome-arild-shirazi/index.html @@ -131,7 +131,7 @@

Welcome Arild Shirazi!

diff --git a/blog/2014/10/31/ecomic-con-2014/index.html b/blog/2014/10/31/ecomic-con-2014/index.html index 285ffcb9..c202dc95 100644 --- a/blog/2014/10/31/ecomic-con-2014/index.html +++ b/blog/2014/10/31/ecomic-con-2014/index.html @@ -149,7 +149,7 @@

The Whole Team

diff --git a/blog/2014/11/19/rubyconf5k-2014/index.html b/blog/2014/11/19/rubyconf5k-2014/index.html index 26f5c9ee..8b54b5e8 100644 --- a/blog/2014/11/19/rubyconf5k-2014/index.html +++ b/blog/2014/11/19/rubyconf5k-2014/index.html @@ -140,7 +140,7 @@

1st Place Justin Schumacher

diff --git a/blog/2015/01/06/activerecord-42s-type-casting/index.html b/blog/2015/01/06/activerecord-42s-type-casting/index.html index 3d8edefe..5f565f19 100644 --- a/blog/2015/01/06/activerecord-42s-type-casting/index.html +++ b/blog/2015/01/06/activerecord-42s-type-casting/index.html @@ -235,7 +235,7 @@

Resources

diff --git a/blog/2015/02/08/customizing-rake-tasks-in-rails-41-and-higher/index.html b/blog/2015/02/08/customizing-rake-tasks-in-rails-41-and-higher/index.html index 7c6a3ad2..50caf54f 100644 --- a/blog/2015/02/08/customizing-rake-tasks-in-rails-41-and-higher/index.html +++ b/blog/2015/02/08/customizing-rake-tasks-in-rails-41-and-higher/index.html @@ -233,7 +233,7 @@

Final Rakefile Separating Integr diff --git a/blog/2015/02/13/to-the-cloud/index.html b/blog/2015/02/13/to-the-cloud/index.html index 2ffb97cb..77c4a97c 100644 --- a/blog/2015/02/13/to-the-cloud/index.html +++ b/blog/2015/02/13/to-the-cloud/index.html @@ -124,7 +124,7 @@

In the Beginning

diff --git a/blog/2015/06/08/ruby-pretzels/index.html b/blog/2015/06/08/ruby-pretzels/index.html index 3d656edd..2e350915 100644 --- a/blog/2015/06/08/ruby-pretzels/index.html +++ b/blog/2015/06/08/ruby-pretzels/index.html @@ -144,7 +144,7 @@

Ruby Pretzel Colons

diff --git a/blog/2015/06/19/rubys-private-is-for-methods-only/index.html b/blog/2015/06/19/rubys-private-is-for-methods-only/index.html index b675c52c..5134f5be 100644 --- a/blog/2015/06/19/rubys-private-is-for-methods-only/index.html +++ b/blog/2015/06/19/rubys-private-is-for-methods-only/index.html @@ -181,7 +181,7 @@

Ruby's Private is for Methods Only

diff --git a/blog/2015/06/22/rails-multi-database-best-practices-roundup/index.html b/blog/2015/06/22/rails-multi-database-best-practices-roundup/index.html index 107f0ba3..7f1a7958 100644 --- a/blog/2015/06/22/rails-multi-database-best-practices-roundup/index.html +++ b/blog/2015/06/22/rails-multi-database-best-practices-roundup/index.html @@ -381,7 +381,7 @@

Resources

diff --git a/blog/2015/07/07/i-have-the-pr/index.html b/blog/2015/07/07/i-have-the-pr/index.html index 3d045e49..8bed78ed 100644 --- a/blog/2015/07/07/i-have-the-pr/index.html +++ b/blog/2015/07/07/i-have-the-pr/index.html @@ -214,7 +214,7 @@

Ending Notes

diff --git a/blog/2015/07/16/colorized-sql-log-backport-for-activerecord/index.html b/blog/2015/07/16/colorized-sql-log-backport-for-activerecord/index.html index 101de472..491f7e4e 100644 --- a/blog/2015/07/16/colorized-sql-log-backport-for-activerecord/index.html +++ b/blog/2015/07/16/colorized-sql-log-backport-for-activerecord/index.html @@ -129,7 +129,7 @@

Resources

diff --git a/blog/2015/07/17/bundler-inline-gemfile-dependencies/index.html b/blog/2015/07/17/bundler-inline-gemfile-dependencies/index.html index af4b70d0..b5ea4956 100644 --- a/blog/2015/07/17/bundler-inline-gemfile-dependencies/index.html +++ b/blog/2015/07/17/bundler-inline-gemfile-dependencies/index.html @@ -171,7 +171,7 @@

Final Script

diff --git a/blog/2015/08/05/ruby-for-good/index.html b/blog/2015/08/05/ruby-for-good/index.html index 0a388648..b8477921 100644 --- a/blog/2015/08/05/ruby-for-good/index.html +++ b/blog/2015/08/05/ruby-for-good/index.html @@ -141,7 +141,7 @@

You Can Get Involved Today!

diff --git a/blog/2015/09/11/how-to-dismantle-a-data-center/index.html b/blog/2015/09/11/how-to-dismantle-a-data-center/index.html index 850d663a..f32f7e09 100644 --- a/blog/2015/09/11/how-to-dismantle-a-data-center/index.html +++ b/blog/2015/09/11/how-to-dismantle-a-data-center/index.html @@ -118,7 +118,7 @@

How to Dismantle a Data Center

diff --git a/blog/2015/10/07/inkovate-2015-lightning-talks/index.html b/blog/2015/10/07/inkovate-2015-lightning-talks/index.html index 26559dc4..a5f7cfc3 100644 --- a/blog/2015/10/07/inkovate-2015-lightning-talks/index.html +++ b/blog/2015/10/07/inkovate-2015-lightning-talks/index.html @@ -131,7 +131,7 @@

Individual Talks

diff --git a/blog/2015/10/19/microsofts-first-open-source-datacamp/index.html b/blog/2015/10/19/microsofts-first-open-source-datacamp/index.html index 0083f18d..98df4ee8 100644 --- a/blog/2015/10/19/microsofts-first-open-source-datacamp/index.html +++ b/blog/2015/10/19/microsofts-first-open-source-datacamp/index.html @@ -213,7 +213,7 @@

Many Thanks!

diff --git a/blog/2015/11/16/rubyconf-5k-2015/index.html b/blog/2015/11/16/rubyconf-5k-2015/index.html index a9dbc026..7c3d5470 100644 --- a/blog/2015/11/16/rubyconf-5k-2015/index.html +++ b/blog/2015/11/16/rubyconf-5k-2015/index.html @@ -490,7 +490,7 @@

Results

diff --git a/blog/2015/11/23/the-art-of-ruby-technical-interviews/index.html b/blog/2015/11/23/the-art-of-ruby-technical-interviews/index.html index 59ffb678..66725c60 100644 --- a/blog/2015/11/23/the-art-of-ruby-technical-interviews/index.html +++ b/blog/2015/11/23/the-art-of-ruby-technical-interviews/index.html @@ -124,7 +124,7 @@

Slides

diff --git a/blog/2016/01/10/two-headed-cat-using-secondbase-to-provide-some-level-of-sanity-in-a-two-database-rails-application/index.html b/blog/2016/01/10/two-headed-cat-using-secondbase-to-provide-some-level-of-sanity-in-a-two-database-rails-application/index.html index 9a03c1ff..8f01b484 100644 --- a/blog/2016/01/10/two-headed-cat-using-secondbase-to-provide-some-level-of-sanity-in-a-two-database-rails-application/index.html +++ b/blog/2016/01/10/two-headed-cat-using-secondbase-to-provide-some-level-of-sanity-in-a-two-database-rails-application/index.html @@ -151,7 +151,7 @@

Closing Thoughts

diff --git a/blog/2016/02/14/rolling-builds-on-travisci/index.html b/blog/2016/02/14/rolling-builds-on-travisci/index.html index 082bbf0e..02fa49f5 100644 --- a/blog/2016/02/14/rolling-builds-on-travisci/index.html +++ b/blog/2016/02/14/rolling-builds-on-travisci/index.html @@ -188,7 +188,7 @@

Resources

diff --git a/blog/2016/03/16/outrunning-a-hurricane/index.html b/blog/2016/03/16/outrunning-a-hurricane/index.html index e54ca151..3748e70f 100644 --- a/blog/2016/03/16/outrunning-a-hurricane/index.html +++ b/blog/2016/03/16/outrunning-a-hurricane/index.html @@ -122,7 +122,7 @@

Outrunning a Hurricane

diff --git a/blog/2016/04/07/introducing-the-activerecord-collection_cache_key-gem/index.html b/blog/2016/04/07/introducing-the-activerecord-collection_cache_key-gem/index.html index dd5d8902..f56752fd 100644 --- a/blog/2016/04/07/introducing-the-activerecord-collection_cache_key-gem/index.html +++ b/blog/2016/04/07/introducing-the-activerecord-collection_cache_key-gem/index.html @@ -174,7 +174,7 @@

That's it!

diff --git a/blog/2016/05/23/configuring_atom/index.html b/blog/2016/05/23/configuring_atom/index.html index 3130ba5a..f318c6c3 100644 --- a/blog/2016/05/23/configuring_atom/index.html +++ b/blog/2016/05/23/configuring_atom/index.html @@ -174,7 +174,7 @@

Summary

diff --git a/blog/2016/06/23/ruby-for-good-2016/index.html b/blog/2016/06/23/ruby-for-good-2016/index.html index ac219d17..1a0628a2 100644 --- a/blog/2016/06/23/ruby-for-good-2016/index.html +++ b/blog/2016/06/23/ruby-for-good-2016/index.html @@ -214,7 +214,7 @@

How to Get Involved

diff --git a/blog/2016/07/11/contributing-to-open-source/index.html b/blog/2016/07/11/contributing-to-open-source/index.html index 596da315..b364d7a9 100644 --- a/blog/2016/07/11/contributing-to-open-source/index.html +++ b/blog/2016/07/11/contributing-to-open-source/index.html @@ -156,7 +156,7 @@

More Resources

diff --git a/blog/2016/07/18/how-to-add-badges-to-iterm2/index.html b/blog/2016/07/18/how-to-add-badges-to-iterm2/index.html index a943f449..90357773 100644 --- a/blog/2016/07/18/how-to-add-badges-to-iterm2/index.html +++ b/blog/2016/07/18/how-to-add-badges-to-iterm2/index.html @@ -165,7 +165,7 @@

How to add a diff --git a/blog/2016/08/16/rebuilding-the-plane-were-flying-in/index.html b/blog/2016/08/16/rebuilding-the-plane-were-flying-in/index.html index 86e87f32..6fb91f12 100644 --- a/blog/2016/08/16/rebuilding-the-plane-were-flying-in/index.html +++ b/blog/2016/08/16/rebuilding-the-plane-were-flying-in/index.html @@ -140,7 +140,7 @@

Swapping in New Parts

diff --git a/blog/2016/11/01/a-spooky-ink-o-ween/index.html b/blog/2016/11/01/a-spooky-ink-o-ween/index.html index 91310913..c807b640 100644 --- a/blog/2016/11/01/a-spooky-ink-o-ween/index.html +++ b/blog/2016/11/01/a-spooky-ink-o-ween/index.html @@ -228,7 +228,7 @@

Now, please enjoy some bad Ha diff --git a/blog/2016/11/17/stateful-static-components-with-css/index.html b/blog/2016/11/17/stateful-static-components-with-css/index.html index fed65d16..07fc8f27 100644 --- a/blog/2016/11/17/stateful-static-components-with-css/index.html +++ b/blog/2016/11/17/stateful-static-components-with-css/index.html @@ -264,7 +264,7 @@

More Resources

diff --git a/blog/2016/12/11/timmy-award-winner/index.html b/blog/2016/12/11/timmy-award-winner/index.html index 0f4a7a58..0718b5f1 100644 --- a/blog/2016/12/11/timmy-award-winner/index.html +++ b/blog/2016/12/11/timmy-award-winner/index.html @@ -131,7 +131,7 @@

Working For DC's Best Tech Manager

diff --git a/blog/2017/06/01/disabling-image-loading-with-rails-systemtests/index.html b/blog/2017/06/01/disabling-image-loading-with-rails-systemtests/index.html index ae3dcba0..11f72e00 100644 --- a/blog/2017/06/01/disabling-image-loading-with-rails-systemtests/index.html +++ b/blog/2017/06/01/disabling-image-loading-with-rails-systemtests/index.html @@ -128,7 +128,7 @@

Disabling Image Loading with Rails System Tests

diff --git a/blog/2017/06/06/power-moves-rails-docker-and-sql-server-on-linux/index.html b/blog/2017/06/06/power-moves-rails-docker-and-sql-server-on-linux/index.html index 64bbc479..3bd0a5ab 100644 --- a/blog/2017/06/06/power-moves-rails-docker-and-sql-server-on-linux/index.html +++ b/blog/2017/06/06/power-moves-rails-docker-and-sql-server-on-linux/index.html @@ -213,7 +213,7 @@

Thanks!

diff --git a/blog/2017/09/19/clipart-on-aws-lambda/index.html b/blog/2017/09/19/clipart-on-aws-lambda/index.html index 586ed4be..7096273d 100644 --- a/blog/2017/09/19/clipart-on-aws-lambda/index.html +++ b/blog/2017/09/19/clipart-on-aws-lambda/index.html @@ -169,7 +169,7 @@

In Production

diff --git a/blog/2018/01/06/spawnfest-retrospective/index.html b/blog/2018/01/06/spawnfest-retrospective/index.html index f432d191..12a851f1 100644 --- a/blog/2018/01/06/spawnfest-retrospective/index.html +++ b/blog/2018/01/06/spawnfest-retrospective/index.html @@ -164,7 +164,7 @@

Still Not Perfect

diff --git a/blog/2018/02/23/learning-es6-strings-and-destructuring/index.html b/blog/2018/02/23/learning-es6-strings-and-destructuring/index.html index cb95ef56..982b4cb5 100644 --- a/blog/2018/02/23/learning-es6-strings-and-destructuring/index.html +++ b/blog/2018/02/23/learning-es6-strings-and-destructuring/index.html @@ -340,7 +340,7 @@

Notes and Thoughts

diff --git a/blog/2018/03/09/learning-es6-loops-&-iterators/index.html b/blog/2018/03/09/learning-es6-loops-&-iterators/index.html index e5e68425..04be85b4 100644 --- a/blog/2018/03/09/learning-es6-loops-&-iterators/index.html +++ b/blog/2018/03/09/learning-es6-loops-&-iterators/index.html @@ -230,7 +230,7 @@

Notes and Thoughts

diff --git a/blog/2018/03/12/learning-es6-new-methods-for-arrays/index.html b/blog/2018/03/12/learning-es6-new-methods-for-arrays/index.html index 22301629..9c36c500 100644 --- a/blog/2018/03/12/learning-es6-new-methods-for-arrays/index.html +++ b/blog/2018/03/12/learning-es6-new-methods-for-arrays/index.html @@ -185,7 +185,7 @@

Notes and Thoughts

diff --git a/blog/2018/11/27/using-imgix-to-personalize-knolled-images/index.html b/blog/2018/11/27/using-imgix-to-personalize-knolled-images/index.html index 281f2e0b..741a0e46 100644 --- a/blog/2018/11/27/using-imgix-to-personalize-knolled-images/index.html +++ b/blog/2018/11/27/using-imgix-to-personalize-knolled-images/index.html @@ -312,7 +312,7 @@

Thanks!

diff --git a/blog/2019/03/12/aws-lambda-with-ruby/index.html b/blog/2019/03/12/aws-lambda-with-ruby/index.html index 69a44607..d6d57960 100644 --- a/blog/2019/03/12/aws-lambda-with-ruby/index.html +++ b/blog/2019/03/12/aws-lambda-with-ruby/index.html @@ -122,7 +122,7 @@

Slide Deck

diff --git a/blog/2019/03/13/rails-on-aws-lambda-with-sam/index.html b/blog/2019/03/13/rails-on-aws-lambda-with-sam/index.html index 157d3d71..0778335a 100644 --- a/blog/2019/03/13/rails-on-aws-lambda-with-sam/index.html +++ b/blog/2019/03/13/rails-on-aws-lambda-with-sam/index.html @@ -169,7 +169,7 @@

Lots of Todos

diff --git a/blog/2019/04/12/day-zero-deployments/index.html b/blog/2019/04/12/day-zero-deployments/index.html index 69de7d1e..c780a170 100644 --- a/blog/2019/04/12/day-zero-deployments/index.html +++ b/blog/2019/04/12/day-zero-deployments/index.html @@ -149,7 +149,7 @@

🎁 Wrapping it all up

diff --git a/blog/2019/04/16/secure-configs-with-aws-ssm-parameter-store-and-rails-on-lambda/index.html b/blog/2019/04/16/secure-configs-with-aws-ssm-parameter-store-and-rails-on-lambda/index.html index 1192c7ef..98994904 100644 --- a/blog/2019/04/16/secure-configs-with-aws-ssm-parameter-store-and-rails-on-lambda/index.html +++ b/blog/2019/04/16/secure-configs-with-aws-ssm-parameter-store-and-rails-on-lambda/index.html @@ -204,7 +204,7 @@

More Resources

diff --git a/blog/2019/06/28/chaos-at-custom-ink/index.html b/blog/2019/06/28/chaos-at-custom-ink/index.html index 8faec8b2..7bd031f8 100644 --- a/blog/2019/06/28/chaos-at-custom-ink/index.html +++ b/blog/2019/06/28/chaos-at-custom-ink/index.html @@ -152,7 +152,7 @@
About the author
diff --git a/blog/2019/07/08/sidekiq-rundown-part-1/index.html b/blog/2019/07/08/sidekiq-rundown-part-1/index.html index e82da239..9ee854c3 100644 --- a/blog/2019/07/08/sidekiq-rundown-part-1/index.html +++ b/blog/2019/07/08/sidekiq-rundown-part-1/index.html @@ -212,7 +212,7 @@
About the author
diff --git a/blog/2019/07/15/inkycop/index.html b/blog/2019/07/15/inkycop/index.html index db45e2fd..440d6bae 100644 --- a/blog/2019/07/15/inkycop/index.html +++ b/blog/2019/07/15/inkycop/index.html @@ -197,7 +197,7 @@

Upcoming challenges

diff --git a/blog/2019/07/23/lets-get-visual-with-processing/index.html b/blog/2019/07/23/lets-get-visual-with-processing/index.html index 736b2eec..41ff5ba8 100644 --- a/blog/2019/07/23/lets-get-visual-with-processing/index.html +++ b/blog/2019/07/23/lets-get-visual-with-processing/index.html @@ -362,7 +362,7 @@

Processing Forum

diff --git a/blog/2019/07/29/integration-testing-react-apps-with-cypress/index.html b/blog/2019/07/29/integration-testing-react-apps-with-cypress/index.html index 10715d6d..5055e22e 100644 --- a/blog/2019/07/29/integration-testing-react-apps-with-cypress/index.html +++ b/blog/2019/07/29/integration-testing-react-apps-with-cypress/index.html @@ -195,7 +195,7 @@
-
© 2022 CustomInk, LLC. All rights reserved.
+
© 2023 CustomInk, LLC. All rights reserved.
CustomInk is a registered trademark of CustomInk LLC. "T-shirts Unite!" and the "Inky" octopus are trademarks of CustomInk, LLC.
diff --git a/blog/2019/08/05/performing-digital-forensics-on-an-aws-ebs-volume/index.html b/blog/2019/08/05/performing-digital-forensics-on-an-aws-ebs-volume/index.html index 299d6a2c..ef6cdfb8 100644 --- a/blog/2019/08/05/performing-digital-forensics-on-an-aws-ebs-volume/index.html +++ b/blog/2019/08/05/performing-digital-forensics-on-an-aws-ebs-volume/index.html @@ -272,7 +272,7 @@

Conclusion

diff --git a/blog/2019/08/16/authorization-with-api-gateway-and-congito/index.html b/blog/2019/08/16/authorization-with-api-gateway-and-congito/index.html index cb35cdcc..693c1723 100644 --- a/blog/2019/08/16/authorization-with-api-gateway-and-congito/index.html +++ b/blog/2019/08/16/authorization-with-api-gateway-and-congito/index.html @@ -167,7 +167,7 @@

Set up Amplify

diff --git a/blog/2019/08/23/sidekiq-rundown-part-2-optimizing-job-execution-within-sidekiq/index.html b/blog/2019/08/23/sidekiq-rundown-part-2-optimizing-job-execution-within-sidekiq/index.html index fefac69e..8e476964 100644 --- a/blog/2019/08/23/sidekiq-rundown-part-2-optimizing-job-execution-within-sidekiq/index.html +++ b/blog/2019/08/23/sidekiq-rundown-part-2-optimizing-job-execution-within-sidekiq/index.html @@ -208,7 +208,7 @@
About the author
diff --git a/blog/2019/09/02/from-travis-ci-to-github-actions/index.html b/blog/2019/09/02/from-travis-ci-to-github-actions/index.html index dd4f78d3..07bbca16 100644 --- a/blog/2019/09/02/from-travis-ci-to-github-actions/index.html +++ b/blog/2019/09/02/from-travis-ci-to-github-actions/index.html @@ -277,7 +277,7 @@

Additional Resources 📚

diff --git a/blog/2019/09/04/internship-experience/index.html b/blog/2019/09/04/internship-experience/index.html index fd12e45b..f70bec26 100644 --- a/blog/2019/09/04/internship-experience/index.html +++ b/blog/2019/09/04/internship-experience/index.html @@ -108,7 +108,7 @@

Software engineer internship at Custom Ink

diff --git a/blog/2019/09/09/imaginate/index.html b/blog/2019/09/09/imaginate/index.html index dbf4c272..d3bfe974 100644 --- a/blog/2019/09/09/imaginate/index.html +++ b/blog/2019/09/09/imaginate/index.html @@ -172,7 +172,7 @@

Inkovate

diff --git a/blog/2019/09/17/working-at-custom-ink/index.html b/blog/2019/09/17/working-at-custom-ink/index.html index 73f15e9b..531e04f4 100644 --- a/blog/2019/09/17/working-at-custom-ink/index.html +++ b/blog/2019/09/17/working-at-custom-ink/index.html @@ -138,7 +138,7 @@

Our Current Openings

diff --git a/blog/2019/09/20/how-to-kill-it-at-the-college-career-fair-software-engineers/index.html b/blog/2019/09/20/how-to-kill-it-at-the-college-career-fair-software-engineers/index.html index 8237a472..a7a2a1b7 100644 --- a/blog/2019/09/20/how-to-kill-it-at-the-college-career-fair-software-engineers/index.html +++ b/blog/2019/09/20/how-to-kill-it-at-the-college-career-fair-software-engineers/index.html @@ -132,7 +132,7 @@
-
© 2022 CustomInk, LLC. All rights reserved.
+
© 2023 CustomInk, LLC. All rights reserved.
CustomInk is a registered trademark of CustomInk LLC. "T-shirts Unite!" and the "Inky" octopus are trademarks of CustomInk, LLC.
diff --git a/blog/2019/09/26/codecommitment-issues/index.html b/blog/2019/09/26/codecommitment-issues/index.html index 69197b91..2ed72382 100644 --- a/blog/2019/09/26/codecommitment-issues/index.html +++ b/blog/2019/09/26/codecommitment-issues/index.html @@ -188,7 +188,7 @@
About the author
diff --git a/blog/2019/10/01/full-stack-to-functions-&-back-again-talk/index.html b/blog/2019/10/01/full-stack-to-functions-&-back-again-talk/index.html index 82c25ee1..89073f9d 100644 --- a/blog/2019/10/01/full-stack-to-functions-&-back-again-talk/index.html +++ b/blog/2019/10/01/full-stack-to-functions-&-back-again-talk/index.html @@ -127,7 +127,7 @@

Want to work on cool technolo diff --git a/blog/2019/10/05/building-a-cloudfront-cookie-dashboard-using-aws-lambda-at-edge-kinesis-and-quicksight/index.html b/blog/2019/10/05/building-a-cloudfront-cookie-dashboard-using-aws-lambda-at-edge-kinesis-and-quicksight/index.html index 2774266a..ab17faec 100644 --- a/blog/2019/10/05/building-a-cloudfront-cookie-dashboard-using-aws-lambda-at-edge-kinesis-and-quicksight/index.html +++ b/blog/2019/10/05/building-a-cloudfront-cookie-dashboard-using-aws-lambda-at-edge-kinesis-and-quicksight/index.html @@ -434,7 +434,7 @@

Resources

diff --git a/blog/2019/10/25/what-happens-when-engineers-participate-in-a-halloween-costume-contest/index.html b/blog/2019/10/25/what-happens-when-engineers-participate-in-a-halloween-costume-contest/index.html index bc7038ca..7ca21798 100644 --- a/blog/2019/10/25/what-happens-when-engineers-participate-in-a-halloween-costume-contest/index.html +++ b/blog/2019/10/25/what-happens-when-engineers-participate-in-a-halloween-costume-contest/index.html @@ -130,7 +130,7 @@

Saving the best diff --git a/blog/2019/11/01/tapping-into-logs/index.html b/blog/2019/11/01/tapping-into-logs/index.html index 4f2c3219..ec630671 100644 --- a/blog/2019/11/01/tapping-into-logs/index.html +++ b/blog/2019/11/01/tapping-into-logs/index.html @@ -157,7 +157,7 @@

Tapping into Logs

diff --git a/blog/2019/11/04/company-culture-around-the-globe/index.html b/blog/2019/11/04/company-culture-around-the-globe/index.html index 29b281dd..d5da8a27 100644 --- a/blog/2019/11/04/company-culture-around-the-globe/index.html +++ b/blog/2019/11/04/company-culture-around-the-globe/index.html @@ -186,7 +186,7 @@

Addressing the Geographical gap

diff --git a/blog/2019/11/21/rebase-into-ops-engineering/index.html b/blog/2019/11/21/rebase-into-ops-engineering/index.html index 90744083..c061d391 100644 --- a/blog/2019/11/21/rebase-into-ops-engineering/index.html +++ b/blog/2019/11/21/rebase-into-ops-engineering/index.html @@ -187,7 +187,7 @@
About the author
diff --git a/blog/2019/12/13/nationjs/index.html b/blog/2019/12/13/nationjs/index.html index d74e0905..8e40a539 100644 --- a/blog/2019/12/13/nationjs/index.html +++ b/blog/2019/12/13/nationjs/index.html @@ -148,7 +148,7 @@

JS Applications Demonstrated

diff --git a/blog/2020/01/03/migrate-your-rails-app-from-heroku-to-aws-lambda/index.html b/blog/2020/01/03/migrate-your-rails-app-from-heroku-to-aws-lambda/index.html index 72cff663..f3e6d348 100644 --- a/blog/2020/01/03/migrate-your-rails-app-from-heroku-to-aws-lambda/index.html +++ b/blog/2020/01/03/migrate-your-rails-app-from-heroku-to-aws-lambda/index.html @@ -422,7 +422,7 @@

Resources

diff --git a/blog/2020/01/17/prevalence-of-mobile-technology-and-adapting-to-the-industry-with-react-native/index.html b/blog/2020/01/17/prevalence-of-mobile-technology-and-adapting-to-the-industry-with-react-native/index.html index cec72311..9cd2b37a 100644 --- a/blog/2020/01/17/prevalence-of-mobile-technology-and-adapting-to-the-industry-with-react-native/index.html +++ b/blog/2020/01/17/prevalence-of-mobile-technology-and-adapting-to-the-industry-with-react-native/index.html @@ -152,7 +152,7 @@

Some cons I can think of include:

diff --git a/blog/2020/03/05/ken-collins-our-aws-hero/index.html b/blog/2020/03/05/ken-collins-our-aws-hero/index.html index c1e6a8ad..11e423c0 100644 --- a/blog/2020/03/05/ken-collins-our-aws-hero/index.html +++ b/blog/2020/03/05/ken-collins-our-aws-hero/index.html @@ -134,7 +134,7 @@

Ken Collins - man of past, present, and future

diff --git a/blog/2020/03/13/using-aws-sam-cookiecutter-project-templates-to-kickstart-your-ambda-projects/index.html b/blog/2020/03/13/using-aws-sam-cookiecutter-project-templates-to-kickstart-your-ambda-projects/index.html index b63192cc..76ac3bc6 100644 --- a/blog/2020/03/13/using-aws-sam-cookiecutter-project-templates-to-kickstart-your-ambda-projects/index.html +++ b/blog/2020/03/13/using-aws-sam-cookiecutter-project-templates-to-kickstart-your-ambda-projects/index.html @@ -293,7 +293,7 @@

Resources

diff --git a/blog/2020/04/05/aws-cli-multi-factor-auth-with-docker/index.html b/blog/2020/04/05/aws-cli-multi-factor-auth-with-docker/index.html index d3208000..94d27c88 100644 --- a/blog/2020/04/05/aws-cli-multi-factor-auth-with-docker/index.html +++ b/blog/2020/04/05/aws-cli-multi-factor-auth-with-docker/index.html @@ -175,7 +175,7 @@

📚 Resources

diff --git a/blog/2020/06/11/simplifying-custominks-http-accelerator-with-aws-cloudfront-and-application-load-balancer/index.html b/blog/2020/06/11/simplifying-custominks-http-accelerator-with-aws-cloudfront-and-application-load-balancer/index.html index 7423b6a9..5af79594 100644 --- a/blog/2020/06/11/simplifying-custominks-http-accelerator-with-aws-cloudfront-and-application-load-balancer/index.html +++ b/blog/2020/06/11/simplifying-custominks-http-accelerator-with-aws-cloudfront-and-application-load-balancer/index.html @@ -180,7 +180,7 @@

What Did We Gain?

diff --git a/blog/2020/06/16/monolithic-ideas-for-aws-lambda-file-systems/index.html b/blog/2020/06/16/monolithic-ideas-for-aws-lambda-file-systems/index.html index 53231a84..2449d2e0 100644 --- a/blog/2020/06/16/monolithic-ideas-for-aws-lambda-file-systems/index.html +++ b/blog/2020/06/16/monolithic-ideas-for-aws-lambda-file-systems/index.html @@ -383,7 +383,7 @@

Interested in Rails on Lambda? Try our -
© 2022 CustomInk, LLC. All rights reserved.
+
© 2023 CustomInk, LLC. All rights reserved.
CustomInk is a registered trademark of CustomInk LLC. "T-shirts Unite!" and the "Inky" octopus are trademarks of CustomInk, LLC.
diff --git a/blog/2020/12/02/ruby-curator-for-aws-elasticsearch-service/index.html b/blog/2020/12/02/ruby-curator-for-aws-elasticsearch-service/index.html index 4098586b..089023ba 100644 --- a/blog/2020/12/02/ruby-curator-for-aws-elasticsearch-service/index.html +++ b/blog/2020/12/02/ruby-curator-for-aws-elasticsearch-service/index.html @@ -267,7 +267,7 @@

Write your template.yaml CloudF diff --git a/blog/2022/01/10/aws-systems-manager-ssm-cross-region-replication/index.html b/blog/2022/01/10/aws-systems-manager-ssm-cross-region-replication/index.html index dab3a390..d00e3f1f 100644 --- a/blog/2022/01/10/aws-systems-manager-ssm-cross-region-replication/index.html +++ b/blog/2022/01/10/aws-systems-manager-ssm-cross-region-replication/index.html @@ -511,7 +511,7 @@

Code Setup

diff --git a/blog/2022/02/06/getting-started-with-github-codespaces-from-a-serverless-perspective/index.html b/blog/2022/02/06/getting-started-with-github-codespaces-from-a-serverless-perspective/index.html new file mode 100644 index 00000000..26a463f9 --- /dev/null +++ b/blog/2022/02/06/getting-started-with-github-codespaces-from-a-serverless-perspective/index.html @@ -0,0 +1,346 @@ + + + + Getting Started with GitHub Codespaces from a Serverless Perspective - CustomInk Technology Blog + + + + + + + + + + + +
+
+ + +
+ + +
+
+
+ +
+
+

Getting Started with GitHub Codespaces from a Serverless Perspective

+

If you are into Serverless and AWS Lambda, you may already know that the AWS Serverless Application Model (SAM) CLI makes it easy to leverage their Docker build images as development containers. We do exactly this for our Rails & Lambda projects.

+ + + +

Leveraging Docker with SAM ensures we have a Linux environment and versioned dependencies that closely mimic the Lambda Runtime or Container being shipped. The use and The Promise of Docker to solve these problems is nothing new... but something else is.

+ +

✨ The Rise of Ephemeral Dev Environments

+ +

A few weeks ago GitHub's engineering team released an in-depth article announcing their internal usage of the now generally available GitHub Codespaces. Since Custom Ink shares many of the same problems described in this post, I was curious if our Lambda projects could easily leverage Codespaces. But what is this new tool? Where did it come from? And what is this devcontainer.json file?

+ +

As best I can tell this all started in May of 2019 when the VS Code team first mentioned their remote development extensions. About a year later this content was rolled up into the VS Code Remote Development guides we have today.

+ +

VS Code Remote Development Architecture Diagram

+ +

Prior to Codespaces, we have had a clear leader in the automated development environment space with Gitpod. It was even featured in a January 2021 episode of Containers from the Couch. Gitpod leverages the same technology built into VS Code for remote development.

+ +

However, sometimes slow and steady wins the race. If this were ever true for GitHub-based projects, I think we have a huge winner with GitHub Codespaces. Keep reading below on how your company (or you) could get started. I will even cover how well Codespaces has worked for our Lambda projects that use an existing Docker in Docker development pattern.

+ +

⚙️ GitHub Settings

+ +

GitHub Codespaces is ONLY available now for GitHub Teams & Enterprise Cloud plans. It is not yet available for public repositories. If you are an administrator of such an account, here are a few things I did at the organization level to get started experimenting.

+ +
    +
  • Enable Codespaces: This can also be disabled completely or enabled for select users.
  • +
  • Repository Access: You can even limit repositories that are able to use Codespaces. If your GitHub account leverages permissions & teams, remember, Codespaces (via the generated GITHUB_TOKEN will not grant anyone elevated permissions to other repositories.
  • +
  • Manage Spending Limits: It would have been neat to see a way to limit which VMs (vCPU/Memory) options could have been used here.
  • +
  • Organizational Secrets: Create any secrets your organization needs to enable individuals to work. Remember, Codespaces secrets can be set at the repository or even user level too. Pick the one(s) that work the best for y'all.
  • +
+ +

🔰 Developer Tips

+ +

It could go without saying but getting good at Codespaces for most may mean getting good at VS Code. Technically you could bring your own editor like Vim or Emacs. But trust me, as a recent Sublime Text convert, switching to VS Code is worth it. Make sure to take the time to Google, learn, and in some cases install packages that make the transition easier.

+ +

Dotfiles & Settings

+ +

Remote development needs to feel local! Everything that makes your editor & terminal productive needs to be available to you. As described in the Personalizing Codespaces guide setting up your Dotfiles was high on my list.

+ +

For years I have maintained a personal Zshkit which had a ton of personal functions and aliases. When moving to Codespaces, I took the time to clean them up and create a github.com/metaskills/dotfiles repository, cloned it locally and hooked it up to my ZSH (default shell on Mac) ~/.zshrc file. Codespaces will automatically clone this repo when creating a Codespace and install it by running the install.sh script. Example.

+
if [ "$CODESPACES" = "true" ]; then
+  echo "source /workspaces/.codespaces/.persistedshare/dotfiles/rc" >> $HOME/.zshrc
+  sudo chsh -s /usr/bin/zsh
+fi
+
+

You can leverage the CODESPACES environment variable to do any customization per environment. Also, do not forget to use Settings Sync. I think this is only needed if you use VS Code's web-based editor. More on that topic later.

+ +

Your Codespaces Settings

+ +

You can Manage Your Codespaces settings at somewhat the same level as the organization. Here are a few settings I did.

+ +
    +
  • Access & Security: Set this to "All repositories". Your needs may vary.
  • +
  • Editor Preference: Set to "Visual Studio Code" vs for web. Ensures the [<> Code] button on repos opens VS Code on my Mac and avoids the need to click redirect in the browser.
  • +
  • Region: I set this manually to EastUs but I suspect I had no reason to do so.
  • +
  • Added Secrets: Read below on using SSH with Ruby Bundler or NPM packages.
  • +
+ +

Codespaces Extension

+ +

Install the GitHub Codespaces for VS Code. I think this is done for you automatically if you are using the web-based editor. Installing it on your host machine's VS Code will mean you can use Codespaces without ever browsing to GitHub.com and clicking on a [<> Code] button.

+ +

The Codespaces Command Pallet in VS Code provided by the Codespaces Extension

+ +

The Integrated Terminal

+ +

Assuming you have setup your Dotfiles, VS Code's integrated terminal should feel familiar by mirroring your host machine's prompt, aliases, and more. If your default shell is ZSH, you may need to do a few things to help Codespaces use ZSH by default vs Bash. Here are my settings for the integrated terminal now. Mind you, there was (maybe still is) a bug in VS Code where ZSH would not be respected. I have noticed in some cases Bash is used but it is easy to launch a new profile with ZSH if that happens.

+
  "terminal.integrated.fontSize": 14,
+  "terminal.integrated.defaultProfile.osx": "zsh",
+  "terminal.integrated.defaultProfile.linux": "zsh",
+
+

Using Command+K to clear the terminal's buffer is second nature to most. By default this key binding will not reach the integrated terminal. You can edit your Keyboard Shortcuts JSON file to solve for that. Below is a screen capture of the magic little button you have to press to edit that raw JSON file. Use the following snippet to fix this.

+ +

Super Hidden Keyboard Shortcuts JSON Edit Button

+
{
+  "key": "cmd+k",
+  "command": "workbench.action.terminal.clear",
+  "when": "terminalFocus"
+}
+
+

Terminal visibility and placement. When working on my laptop's smaller screen, I learned that you can use Control+~ to toggle the visibility of the integrated terminal. However, when working at my desk and larger screen, I really want the integrated terminal to be to the right of my editor. Thanks to this this Stack Overflow here are convoluted steps to make this happen. Hopefully one day they will make this easier. 😅

+ +
    +
  1. At the right top of the integrated terminal, click the + sign to open a 2nd terminal.
  2. +
  3. Within the panel to the right, right click any of the two profiles, select Move into Editor Area.
  4. +
  5. Close the bottom integrated terminal with the x button.
  6. +
  7. Focus the editor tab at the top moved from step 2, click the [|] split editor button.
  8. +
  9. Close the shell tab on the left side of the screen.
  10. +
+ +

🎉 Fun Highlights

+ +

Here are a few things I was pleasantly surprised with Codespaces' DX and how it works:

+ +
    +
  • When learning Codespaces or working on uncommitted code, you may have to rebuild your development container. Codespaces automatically maintains your present working directory, open files, etc when doing this. Amazing!
  • +
  • You can see all your Codespaces on GitHub by navigating to https://github.com/codespaces. However, I typically use VS Code's extension to navigate, open, and disconnect.
  • +
  • Leveraging the CODESPACES environment variable set to true is an easy way to integrate your existing tooling into Codespaces allowing your teams to support multiple ways to bootstrap your applications.
  • +
  • Forwarded ports are automatically detected via the integrated terminal's STDOUT. For example, a .bin/rails server will ouput whatever host/port you are using and Codespaces will see it. If needed you can use the forwardPorts config for devcontainer.json.
  • +
+ +

⚠️ Difficult Lessons

+ +

Some hard lessons learned when dipping into the deep end of using GitHub Codespaces. If you have any to share, please drop some comments below.

+ +

Private Packages & SSH

+ +

GitHub does a great job at providing your Codespace with a short lived GITHUB_TOKEN. Most package managers including NPM and Bundler can leverage this. However, if your organization has standardized on SSH setting up your projects could be a problem.

+ +

Thankfully when I reached out on Twitter, Jonathan Carter on the Codespaces team, seemed to suggest they may be working on a native SSH integration one day. Till then, here is the solution I came up with. This process address some sequencing issues around devcontainer.json's Lifecycle Scripts and when your Dotfiles are installed. Credit to VS Codes Using SSH Keys guide. Also, some things here are pulled directly from the GitHub Action to setup SSH. Again, thanks to Johnathan Carter for the ideas.

+ +
    +
  1. Create a personal Codespace secret called PERSONAL_SSH_KEY by visiting this page https://github.com/settings/codespaces/secrets/new and adding your private key, typically found in the ~/.ssh/id_rsa file.
  2. +
  3. Add this snippet to your postCreate script. It ensures GitHub is in the known hosts for SSH.
  4. +
+
echo "Adding GitHub.com keys to ~/.ssh/known_hosts"
+printf "\ngithub.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\n" >> ~/.ssh/known_hosts
+printf "\ngithub.com ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw==\n" >> ~/.ssh/known_hosts
+
+
    +
  1. Add this snippet to your Dotfiles. It will ensure the proper SSH agent is started, if not already, and that the key environment variables are set.
  2. +
+
if [ "$CODESPACES" = "true" ]; then
+  if [ -z "$SSH_AUTH_SOCK" ]; then
+    RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
+    if [ "$RUNNING_AGENT" = "0" ]; then
+      # Launch a new instance of the agent
+      ssh-agent -s &> $HOME/.ssh/ssh-agent
+    fi
+    eval `cat $HOME/.ssh/ssh-agent`
+  fi
+  # Add my SSH key.
+  if [ -n "${PERSONAL_SSH_KEY+1}" ]; then
+    ssh-add - <<< "${PERSONAL_SSH_KEY}"
+  fi
+fi
+
+

In order to see this all come together with our Docker in Docker Lambda patterns, please read the Serverless Docker Patterns article in this series where we describe how to use the SSH_AUTH_SOCK in a cross platform way for Mac & Linux.

+ +

AWS CLI

+ +

For our Lambda projects we use Docker in Docker patterns where both the AWS & SAM CLIs are pre-installed on the development image. However, you may need the AWS CLI installed on the developer's host machine too. In this case, Codespaces. Here is a short snippet that you can use in your postCreate script.

+
echo "Installing AWS CLI"
+pushd /tmp
+curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
+unzip -qq awscliv2.zip
+sudo ./aws/install
+rm -rf awscliv2.zip ./aws
+popd
+
+

Docker in Docker

+ +

I've said this before but cross platform Docker in Docker is really hard. This series aims to talk about most of them, but one I learned the hard way is that sometimes the pain comes from the ones you love... in this case AWS SAM. The team is doing some amazing work but I ran into a few issues where Docker in Docker patterns have broken down. Read here for details.

+ + + +

🚂 Full Lamby Example

+ +

Assuming the other patterns were in place like various postCreate hooks for SSH, using GitHub Codespaces with your already Docker'ized project is super easy. Here is a complete .devcontainer/devcontainer.json file for one of our projects. Again, see the Serverless Docker Patterns related post on how we are using COMPOSE_FILE for Mac filesystem performance and why it would be needed here.

+
{
+  "name": "my-application",
+  "forwardPorts": [4020],
+  "remoteEnv": {
+    "COMPOSE_FILE": "docker-compose.yml"
+  },
+  "postCreateCommand": "./.devcontainer/postCreate"
+}
+
+

In fact, none of this would be needed for a starter application! Give it a try. Go through our Lamby Quick Start guide, commit your project to GitHub... and give Codespaces a try!

+ +

🔐 Security Questions

+ +

The Codespaces team was kind enough to write their own Security in Codespaces documentation. I'll highlight their introduction below:

+ +
+

Codespaces is designed to be security hardened by default. Consequently, you will need to ensure that your software development practices do not risk reducing the security posture of your codespace.

+ +

This guide describes the way Codespaces keeps your development environment secure and provides some of the good practices that will help maintain your security as you work. As with any development tool, remember that you should only open and work within repositories you know and trust.

+
+ +

Good stuff! Security is a shared responsibility and it appears GitHub is doing their part. Please read over the full documentation for more information, but here are a few things I paid special attention to.

+ +
    +
  • Audit Logs: Are generated and can be queried.
  • +
  • Organization & User Secrets: Built on the same technology GitHub draws a line between GitHub standard org/user secrets with the Codespace ones. Again, they can be set at the organization, repository, or user. Providing an immense amount of control and security layers.
  • +
  • Dotfiles: Remind users that these are public repositories! Tho possible to encrypt secrets, I personally recommend keeping them basic to aliases and functions.
  • +
  • Secure Networking: Authenticated via GitHub via temporary tokens. Forwarding ports for web servers is done securely over the network between the host. Nothing is public by default.
  • +
+ +

🔮 What is Coming?

+ +

As mentioned above, I would love to see a native SSH solution. For now, the workarounds are minimal and feel secure with GitHub Secrets and Codespaces integration.

+ +

In their introductory blog article, the GitHub team put a lot of emphasis on prebuilds ensuring that each Codespaces development environment was super fast to setup. This was critical for their team and as of now Gitpod is making a clear distinction this is a key differentiator for them. I suspect prebuilds are coming soon. 🤔

+ +

📚 Resources

+ +

Thanks so much for reading! I would love to hear if you found this article helpful or what your organization may be doing with GitHub Codespaces. 💕

+ + + +
+ +
+ +
+
+
+
+ + + + + + + + + + + + diff --git a/blog/2022/06/29/lambda-rust-extension-for-any-runtime-to-preload-ssm-parameters-as-secure-environment-variables/index.html b/blog/2022/06/29/lambda-rust-extension-for-any-runtime-to-preload-ssm-parameters-as-secure-environment-variables/index.html new file mode 100644 index 00000000..313d1089 --- /dev/null +++ b/blog/2022/06/29/lambda-rust-extension-for-any-runtime-to-preload-ssm-parameters-as-secure-environment-variables/index.html @@ -0,0 +1,232 @@ + + + + Lambda Rust Extension for any Runtime to preload SSM Parameters as Secure Environment Variables! - CustomInk Technology Blog + + + + + + + + + + + +
+
+ + +
+ + +
+
+
+ +
+
+

Lambda Rust Extension for any Runtime to preload SSM Parameters as Secure Environment Variables!

+

ℹ️ Crypteia Hits v1.0.0 Miletstone! 🎉 - It now has support for Python among other popular languages like Ruby, Node, & PHP. Crypteia is easy to install as a Lambda Layer or in a Container. It can even be used with K8s containers!

+ + + +

Crypteia is a new super fast Lambda Extension written in Rust which turns your serverless environment variables from SSM Parameter Store paths like these...

+
Environment:
+  Variables:
+    SECRET: x-crypteia-ssm:/myapp/SECRET
+
+

... into real environment variables when using your Runtime's language of choice. For example, assuming the SSM Parameter path above returns 1A2B3C4D5E6F as the value. Your code's environment variable methods would return that same value.

+
process.env.SECRET   // 1A2B3C4D5E6F
+ENV['SECRET']        # 1A2B3C4D5E6F
+
+

It works by using a shared object library via the LD_PRELOAD environment variable in coordination with our Lambda Extension binary that loads all Parameter Store values within a few milliseconds of your function starting up.

+ +

Installation

+ +

When building your own Lambda Containers, download both the crypteia binary and libcrypteia.so shared object files that match your platform from our Releases page. Target platforms include the following using these naming conventions.

+ +
    +
  • Amazon Linux 2: crypteia-amzn.zip & libcrypteia-amzn.zip
  • +
  • Debian, Ubuntu, Etc: crypteia-debian.zip & libcrypteia-debian.zip
  • +
+ +

⚠️ When building your own Lambda Containers, please make sure glibc is installed since this is used by redhook.

+ +

⚠️ For now our project supports the x86_64 architecture, but we plan to release arm64 variants soon. Follow or contribute in our GitHub Issue which tracks this topic.

+ +

Once these files are downloaded, they can be incorporated into your Dockerfile file like so:

+
RUN mkdir -p /opt/lib
+RUN mkdir -p /opt/extensions
+COPY crypteia /opt/extensions/crypteia
+COPY libcrypteia.so /opt/lib/libcrypteia.so
+ENV LD_PRELOAD=/opt/lib/libcrypteia.so
+
+

Lambda Layer

+ +

Our Amazon Linux 2 files can be used within a Lambda Layer that you can deploy to your own AWS account. You can use this project to build, publish, and deploy that layer since it has the SAM CLI installed. All you need to do is supply your own S3 bucket. For example:

+
aws configure
+./amzn/setup
+S3_BUCKET_NAME=my-bucket ./layer/deploy
+
+

Usage

+ +

First, you will need your secret environment variables setup in AWS Systems Manager Parameter Store. These can be whatever hierarchy you choose. Parameters can be any string type. However, we recommend using SecureString to ensure your secrets are encrypted within AWS. For example, let's assume the following paramter paths and values exists.

+ +
    +
  • /myapp/SECRET -> 1A2B3C4D5E6F
  • +
  • /myapp/access-key -> G7H8I9J0K1L2
  • +
  • /myapp/envs/DB_URL -> mysql2://u:p@host:3306
  • +
  • /myapp/envs/NR_KEY -> z6y5x4w3v2u1
  • +
+ +

Crypteia supports two methods to fetch SSM parameters:

+ +
    +
  1. x-crypteia-ssm: - Single path for a single environment variable.
  2. +
  3. x-crypteia-ssm-path: - Path prefix to fetch many environment variables.
  4. +
+ +

Using whatever serverless framework you prefer, setup your function's environment variables using either of the two SSM interfaces from above. For example, here is a environment variables section for an AWS SAM template that demonstrates all of Crypteia's features.

+
Environment:
+  Variables:
+    SECRET: x-crypteia-ssm:/myapp/SECRET
+    ACCESS_KEY: x-crypteia-ssm:/myapp/access-key
+    X_CRYPTEIA_SSM: x-crypteia-ssm-path:/myapp/envs
+    DB_URL: x-crypteia
+    NR_KEY: x-crypteia
+
+

When your function initializes, each of the four environmet variables (SECRET, ACCESS_KEY, DB_URL, and NR_KEY) will return values from their respective SSM paths.

+
process.env.SECRET;       // 1A2B3C4D5E6F
+process.env.ACCESS_KEY;   // G7H8I9J0K1L2
+process.env.DB_URL;       // mysql2://u:p@host:3306
+process.env.NR_KEY;       // z6y5x4w3v2u1
+
+

Here are a few details about the internal implementation on how Crypteia works:

+ +
    +
  1. When accessing a single parameter path via x-crypteia-ssm: the environment variable name available to your runtime is used as is. No part of the parameter path effects the resulting name.
  2. +
  3. When using x-crypteia-ssm-path: the environment variable name can be anything and the value is left unchanged.
  4. +
  5. The parameter path hierarchy passed with x-crypteia-ssm-path: must be one level deep and end with valid environment variable names. These names must match environement placeholders using x-crypteia values.
  6. +
+ +

For security, the usage of DB_URL: x-crypteia placeholders ensures that your application's configuration is in full control on which dynamic values can be used with x-crypteia-ssm-path:.

+ +

Lambda Layer

+ +

Shown below is a simple Node.js 16 function which has the appropriate IAM Permissions and Crypteia Lambda Layer added. Also configured are the needed LD_PRELOAD and SECRET environment variables. The code of this function log the value of the process.env.SECRET which does correctly resolve to the value within SSM Parameter Store.

+ +

Screenshot of the Environment variables in the AWS Lambda Console showing `LD_PRELOAD` to `/opt/lib/libcrypteia.so` and `SECRET` to `x-crypteia-ssm:/myapp/SECRET`.

+ +

Screenshot of Code source in the AWS Lambda Console showing the `body` results of `1A2B3C4D5E6F` which is resolved from SSM Parameter Store.

+ +

Thank You 💞

+ +

Let me know if you find Crypteia useful or have any questions.

+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + diff --git a/blog/2022/10/30/new-amazon-linux-dev-container-features/index.html b/blog/2022/10/30/new-amazon-linux-dev-container-features/index.html new file mode 100644 index 00000000..e5c3d287 --- /dev/null +++ b/blog/2022/10/30/new-amazon-linux-dev-container-features/index.html @@ -0,0 +1,196 @@ + + + + New Amazon Linux Dev Container Features - CustomInk Technology Blog + + + + + + + + + + + +
+
+ + +
+ + +
+
+
+ +
+
+

New Amazon Linux Dev Container Features

+

🆕 Want to use Codespaces with Amazon Linux 2? Check out customink/codespaces-features for two custom features. 1) common-amzn 2) docker-in-docker-amzn.

+ + + +

So, last year I shared how we could integrate Codespaces into our AWS Lambda docker compose patterns. Since then Microsoft's Development Containers specification has come a LONG way. Everything is wrapped up nice and neatly at the containers.dev site. Take a look if you have not already seen it.

+ +

Dev Containers?

+ +

So why are Development Containers & Codespaces such a big deal? I can illustrate some Lambda & Kubernetes use cases below, but first I would like to spell out a few features that may be new to some. Including existing Codespaces users.

+ +
    +
  1. The Dev Container specification at the lowest level of Codespaces is open to everyone and lots of tooling exists around it by a growing community.
  2. +
  3. The specification has a reference implementation via a node Command Line Interface. Think of this devcontainer CLI as a higher order docker compose. You can use this to run Codespaces projects locally!
  4. +
  5. Atop of the CLI, there is CI tooling for GitHub Actions. This means you can use the same development container as your CI/CD environment.
  6. +
+ +

Containers Usage Areas

+ +

So where are containers used in your organization or projects? Here are some phases that most of us can identify with. Where projects move from the left to the right.

+ +

Container Areas

+ +

Development: Most of us have tried to use docker or compose at some point. For example, the most common use of this area would be running a database like MySQL. Docker makes this easy.

+ +

CI/CD: Typically where we run tests and hopefully build and/or deploy our code to production. If you have used CircleCI before, again a database container here might feel familiar.

+ +

Runtime: Which is often our final container environment. We can think of this as production for most of us but it could be any container orchestration like Kubernetes, Lambda, or Fargate.

+ +

Old AWS SAM Patterns with Docker Compose

+ +

Today our Lambda SAM cookiecutters leverage SAM's build image via docker compose to ensure local development is within the same environment for our CI/CD tooling. We ended up with something like this image

+ +

AWS Lambda Before Dev Containers

+ +

At the bottom we can see the host platform typically associated with each of these stages. Because we use Docker, we can be cross-platform and consistent. The problem? ⚠️ Making up your own docker/compose patterns are a huge drag. From SSH patterns to Docker-in-Docker gotchas.

+ +

New AWS SAM Patterns with Dev Containers

+ +

In the coming weeks the Lamby Cookiecutter will be updated to use Development Containers so folks with (or without) Codespaces can easily work with the project. The result will be something like this.

+ +

AWS Lambda After Dev Containers

+ +

With Development Containers, so much docker compose boilerplate can be removed. Thanks in huge part to our newly released common & docker-in-docker Amazon Linux 2 features work. If you want to see an example of how this helps everyone including running Codespaces locally with VS Code, checkout our Crypteia Project's Development section. You can even use all this without VS Code & GitHub Codespaces. For example:

+
devcontainer build --workspace-folder .
+devcontainer up --workspace-folder .
+devcontainer run-user-commands --workspace-folder .
+devcontainer exec --workspace-folder . ./bin/setup
+devcontainer exec --workspace-folder . ./bin/test-local
+
+

Unexplored Development Container Space

+ +

So can Development Containers be used in your projects without the Lambda patterns above? Yes! Consider the following diagram that has a Platform Engineering team building base images.

+ +

Where could Development Container fit into your Kubernetes/K8s Projects

+ +

These teams typically approach containers from the right to the left. Where base OS images are made into language specific images with variants for CI/CD. Just like SAM has build and runtime images. Technically for them "Runtime" is some container registry like Amazon ECR, but you get the idea.

+ +

At Custom Ink we are using our CircleCI images for our Kubernetes projects with Codespaces. The Microsoft team makes this easy since all of their features work with Ubuntu out of the box.

+ +

If your development stages look something like the image above. Please consider adopting Development Containers based on your CI/CD images and explore that big purple space by connecting your container value chain in a beautiful little circle. Thanks for reading!

+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + diff --git a/blog/2023/03/03/trigger-circleci-workflow-aka-simple-deploy-button/index.html b/blog/2023/03/03/trigger-circleci-workflow-aka-simple-deploy-button/index.html new file mode 100644 index 00000000..b4253add --- /dev/null +++ b/blog/2023/03/03/trigger-circleci-workflow-aka-simple-deploy-button/index.html @@ -0,0 +1,184 @@ + + + + Trigger CircleCI Workflow. AKA Simple Deploy Button - CustomInk Technology Blog + + + + + + + + + + + +
+
+ + +
+ + +
+
+
+ +
+
+

Trigger CircleCI Workflow. AKA Simple Deploy Button

+

Very simple, no parameters needed, no enums, no booleans... just a really easy way to trigger a deploy with CircleCI. We can do this making use of the trigger_source pipeline value. When you click the button in CircleCI to "Trigger Pipeline" the value would be api vs something like webhook.

+ + +
version: 2.1
+jobs:
+  deploy:
+    machine:
+      image: ubuntu-2204:current
+    steps:
+      - run: echo 'Deploying...'
+workflows:
+  deploy:
+    when: { equal: [ api, << pipeline.trigger_source >> ] }
+    jobs:
+      - deploy
+
+

If your workflow needs a test job, consider doing something a bit more complicated. Here we use two when conditions to work with a parameter.

+
version: 2.1
+parameters:
+  workflow:
+    type: enum
+    default: test
+    description: The workflow to trigger.
+    enum: [test, deploy]
+jobs:
+  test-job:
+    machine:
+      image: ubuntu-2204:current
+    steps:
+      - run: echo 'Testing...'  
+  deploy-job:
+    machine:
+      image: ubuntu-2204:current
+    steps:
+      - run: echo 'Deploying...'
+workflows:
+  test:
+    when: { equal: [ test, << pipeline.parameters.workflow >> ] }
+    jobs:
+      - test-job
+  deploy:
+    when: { equal: [ deploy, << pipeline.parameters.workflow >> ] }
+    jobs:
+      - deploy-job
+
+

Now your CircleCI config will run tests by default and you can easily trigger a deploy via any branch using the "Trigger Pipeline" button.

+ +

Screen capture of the CircleCI application. This shows the trigger pipeline UI which has the Add Parameter disclosure open. The options Parameter type, Name, and Value have been set to string, workflow, deploy.

+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + diff --git a/careers/index.html b/careers/index.html index 46fa4645..7aa564d4 100644 --- a/careers/index.html +++ b/careers/index.html @@ -58,7 +58,7 @@ diff --git a/feed.xml b/feed.xml index 44d1b28d..c52a7584 100644 --- a/feed.xml +++ b/feed.xml @@ -6,6 +6,452 @@ https://technology.customink.com/ + + Trigger CircleCI Workflow. AKA Simple Deploy Button + <p>Very simple, no parameters needed, no enums, no booleans... just a really easy way to trigger a deploy with CircleCI. We can do this making use of the <a href="https://circleci.com/docs/variables/#pipeline-values">trigger_source</a> pipeline value. When you click the button in CircleCI to &quot;Trigger Pipeline&quot; the value would be <code>api</code> vs something like <code>webhook</code>.</p> + +<!--more--> +<div class="highlight"><pre><code class="language-yaml" data-lang="yaml"><span class="na">version</span><span class="pi">:</span> <span class="m">2.1</span> +<span class="na">jobs</span><span class="pi">:</span> + <span class="na">deploy</span><span class="pi">:</span> + <span class="na">machine</span><span class="pi">:</span> + <span class="na">image</span><span class="pi">:</span> <span class="s">ubuntu-2204:current</span> + <span class="na">steps</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">run</span><span class="pi">:</span> <span class="s">echo 'Deploying...'</span> +<span class="na">workflows</span><span class="pi">:</span> + <span class="na">deploy</span><span class="pi">:</span> + <span class="na">when</span><span class="pi">:</span> <span class="pi">{</span> <span class="nv">equal</span><span class="pi">:</span> <span class="pi">[</span> <span class="nv">api</span><span class="pi">,</span> <span class="nv">&lt;&lt; pipeline.trigger_source &gt;&gt;</span> <span class="pi">]</span> <span class="pi">}</span> + <span class="na">jobs</span><span class="pi">:</span> + <span class="pi">-</span> <span class="s">deploy</span> +</code></pre></div> +<p>If your workflow needs a test job, consider doing something a bit more complicated. Here we use two <code>when</code> conditions to work with a parameter.</p> +<div class="highlight"><pre><code class="language-yaml" data-lang="yaml"><span class="na">version</span><span class="pi">:</span> <span class="m">2.1</span> +<span class="na">parameters</span><span class="pi">:</span> + <span class="na">workflow</span><span class="pi">:</span> + <span class="na">type</span><span class="pi">:</span> <span class="s">enum</span> + <span class="na">default</span><span class="pi">:</span> <span class="s">test</span> + <span class="na">description</span><span class="pi">:</span> <span class="s">The workflow to trigger.</span> + <span class="na">enum</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">test</span><span class="pi">,</span> <span class="nv">deploy</span><span class="pi">]</span> +<span class="na">jobs</span><span class="pi">:</span> + <span class="na">test-job</span><span class="pi">:</span> + <span class="na">machine</span><span class="pi">:</span> + <span class="na">image</span><span class="pi">:</span> <span class="s">ubuntu-2204:current</span> + <span class="na">steps</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">run</span><span class="pi">:</span> <span class="s">echo 'Testing...'</span> + <span class="na">deploy-job</span><span class="pi">:</span> + <span class="na">machine</span><span class="pi">:</span> + <span class="na">image</span><span class="pi">:</span> <span class="s">ubuntu-2204:current</span> + <span class="na">steps</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">run</span><span class="pi">:</span> <span class="s">echo 'Deploying...'</span> +<span class="na">workflows</span><span class="pi">:</span> + <span class="na">test</span><span class="pi">:</span> + <span class="na">when</span><span class="pi">:</span> <span class="pi">{</span> <span class="nv">equal</span><span class="pi">:</span> <span class="pi">[</span> <span class="nv">test</span><span class="pi">,</span> <span class="nv">&lt;&lt; pipeline.parameters.workflow &gt;&gt;</span> <span class="pi">]</span> <span class="pi">}</span> + <span class="na">jobs</span><span class="pi">:</span> + <span class="pi">-</span> <span class="s">test-job</span> + <span class="na">deploy</span><span class="pi">:</span> + <span class="na">when</span><span class="pi">:</span> <span class="pi">{</span> <span class="nv">equal</span><span class="pi">:</span> <span class="pi">[</span> <span class="nv">deploy</span><span class="pi">,</span> <span class="nv">&lt;&lt; pipeline.parameters.workflow &gt;&gt;</span> <span class="pi">]</span> <span class="pi">}</span> + <span class="na">jobs</span><span class="pi">:</span> + <span class="pi">-</span> <span class="s">deploy-job</span> +</code></pre></div> +<p>Now your CircleCI config will run tests by default and you can easily trigger a deploy via any branch using the &quot;Trigger Pipeline&quot; button.</p> + +<p><img src="/assets/content/circleci-deploy/circleci-deploy-trigger-4a79c8b1657909ed2de9965ad6ea53686719dcb5cd4f02fd622e260c315b395f.png" class="tb-Img tb-Img--responsive-ctr tb-Img--fancy" alt="Screen capture of the CircleCI application. This shows the trigger pipeline UI which has the Add Parameter disclosure open. The options Parameter type, Name, and Value have been set to string, workflow, deploy." /></p> + + Fri, 03 Mar 2023 00:00:00 -0500 + https://technology.customink.com//blog/2023/03/03/trigger-circleci-workflow-aka-simple-deploy-button/ + http://technology.customink.com//blog/2023/03/03/trigger-circleci-workflow-aka-simple-deploy-button/ + + + + New Amazon Linux Dev Container Features + <p>🆕 <strong>Want to use <a href="https://github.com/features/codespaces">Codespaces</a> with Amazon Linux 2?</strong> Check out <a href="https://github.com/customink/codespaces-features">customink/codespaces-features</a> for two custom features. 1) <a href="https://github.com/customink/codespaces-features/tree/main/src/common-amzn">common-amzn</a> 2) <a href="https://github.com/customink/codespaces-features/tree/main/src/docker-in-docker-amzn">docker-in-docker-amzn</a>.</p> + +<!--more--> + +<p>So, last year I shared how we could <a href="/blog/2022/02/06/getting-started-with-github-codespaces-from-a-serverless-perspective">integrate Codespaces</a> into our AWS Lambda <a href="https://dev.to/aws-heroes/lambda-containers-with-rails-a-perfect-match-4lgb">docker compose patterns</a>. Since then Microsoft&#39;s Development Containers specification has come a LONG way. Everything is wrapped up nice and neatly at the <a href="https://containers.dev">containers.dev</a> site. Take a look if you have not already seen it.</p> + +<h2 id="dev-containers">Dev Containers?</h2> + +<p>So why are Development Containers &amp; Codespaces such a big deal? I can illustrate some Lambda &amp; Kubernetes use cases below, but first I would like to spell out a few features that may be new to some. Including existing Codespaces users.</p> + +<ol> +<li>The Dev Container <a href="https://containers.dev">specification</a> at the lowest level of Codespaces is open to everyone and lots of tooling exists around it by a growing community.</li> +<li>The specification has a reference implementation via a node <a href="Dev%20Container%20CLI">Command Line Interface</a>. Think of this <code>devcontainer</code> CLI as a higher order docker compose. You can use this to run Codespaces projects locally!</li> +<li>Atop of the CLI, there is CI tooling for <a href="https://github.com/devcontainers/ci">GitHub Actions</a>. This means you can use the same development container as your CI/CD environment.</li> +</ol> + +<h2 id="containers-usage-areas">Containers Usage Areas</h2> + +<p>So where are containers used in your organization or projects? Here are some phases that most of us can identify with. Where projects move from the left to the right.</p> + +<p><img src="/assets/content/linux-devcontainers/container-areas-268f50de2e3e354f9dd3e226de34e1e9f740a838d6669902c1697653dcc90e21.png" class="tb-Img tb-Img--responsive-ctr" alt="Container Areas" /></p> + +<p><strong>Development:</strong> Most of us have tried to use docker or compose at some point. For example, the most common use of this area would be running a database like MySQL. Docker makes this easy.</p> + +<p><strong>CI/CD:</strong> Typically where we run tests and hopefully build and/or deploy our code to production. If you have used CircleCI before, again a database container here might feel familiar. </p> + +<p><strong>Runtime:</strong> Which is often our final container environment. We can think of this as production for most of us but it could be any container orchestration like Kubernetes, Lambda, or Fargate.</p> + +<h2 id="old-aws-sam-patterns-with-docker-compose">Old AWS SAM Patterns with Docker Compose</h2> + +<p>Today our Lambda SAM cookiecutters leverage SAM&#39;s build image via docker compose to ensure local development is within the same environment for our CI/CD tooling. We ended up with something like this image</p> + +<p><img src="/assets/content/linux-devcontainers/aws-lambda-before-devcontainers-7d9ad2ac5ffc39cf08115bcc97292a2bfdf816b2dc54d7bbe36e6c3381d93688.png" class="tb-Img tb-Img--responsive-ctr" alt="AWS Lambda Before Dev Containers" /></p> + +<p>At the bottom we can see the host platform typically associated with each of these stages. Because we use Docker, we can be cross-platform and consistent. <strong>The problem?</strong> ⚠️ Making up your own docker/compose patterns are a huge drag. From SSH patterns to Docker-in-Docker gotchas. </p> + +<h2 id="new-aws-sam-patterns-with-dev-containers">New AWS SAM Patterns with Dev Containers</h2> + +<p>In the coming weeks the <a href="https://github.com/customink/lamby-cookiecutter/tree/master/%7B%7Bcookiecutter.project_name%7D%7D">Lamby Cookiecutter</a> will be updated to use Development Containers so folks with (or without) Codespaces can easily work with the project. The result will be something like this.</p> + +<p><img src="/assets/content/linux-devcontainers/aws-lambda-after-devcontainers-94e148ef0601a15c55848eecd0a6b591c7e8b2ce2f2ff5fc49b4ccc3aead784f.png" class="tb-Img tb-Img--responsive-ctr" alt="AWS Lambda After Dev Containers" /></p> + +<p>With Development Containers, so much docker compose boilerplate can be removed. Thanks in huge part to our newly released <a href="https://github.com/customink/codespaces-features">common &amp; docker-in-docker Amazon Linux 2 features</a> work. If you want to see an example of how this helps everyone including running Codespaces locally with VS Code, checkout our <a href="https://github.com/customink/crypteia#development">Crypteia Project&#39;s Development</a> section. You can even use all this without VS Code &amp; GitHub Codespaces. For example:</p> +<div class="highlight"><pre><code class="language-shell" data-lang="shell">devcontainer build <span class="nt">--workspace-folder</span> <span class="nb">.</span> +devcontainer up <span class="nt">--workspace-folder</span> <span class="nb">.</span> +devcontainer run-user-commands <span class="nt">--workspace-folder</span> <span class="nb">.</span> +devcontainer <span class="nb">exec</span> <span class="nt">--workspace-folder</span> <span class="nb">.</span> ./bin/setup +devcontainer <span class="nb">exec</span> <span class="nt">--workspace-folder</span> <span class="nb">.</span> ./bin/test-local +</code></pre></div> +<h2 id="unexplored-development-container-space">Unexplored Development Container Space</h2> + +<p>So can Development Containers be used in your projects without the Lambda patterns above? Yes! Consider the following diagram that has a Platform Engineering team building base images. </p> + +<p><img src="/assets/content/linux-devcontainers/devcontainers-in-k8s-projects-e13c2f8cce935c9378054b32becbd76dd98704db3f7c11a072f68e81ee9674bf.png" class="tb-Img tb-Img--responsive-ctr" alt="Where could Development Container fit into your Kubernetes/K8s Projects" /></p> + +<p>These teams typically approach containers from the right to the left. Where base OS images are made into language specific images with variants for CI/CD. Just like SAM has build and runtime images. Technically for them &quot;Runtime&quot; is some container registry like Amazon ECR, but you get the idea.</p> + +<p>At <a href="https://www.customink.com">Custom Ink</a> we are using our CircleCI images for our Kubernetes projects with Codespaces. The Microsoft team makes this easy since all of their features work with Ubuntu out of the box.</p> + +<p>If your development stages look something like the image above. Please consider adopting Development Containers based on your CI/CD images and explore that big purple space by connecting your container value chain in a beautiful little circle. Thanks for reading!</p> + + Sun, 30 Oct 2022 00:00:00 -0400 + https://technology.customink.com//blog/2022/10/30/new-amazon-linux-dev-container-features/ + http://technology.customink.com//blog/2022/10/30/new-amazon-linux-dev-container-features/ + + + + Lambda Rust Extension for any Runtime to preload SSM Parameters as Secure Environment Variables! + <p>ℹ️ <a href="https://github.com/customink/crypteia">Crypteia Hits v1.0.0 Miletstone!</a> 🎉 - It now has support for Python among other popular languages like Ruby, Node, &amp; PHP. Crypteia is easy to install as a Lambda Layer or in a Container. It can even be used with K8s containers!</p> + +<!--more--> + +<p><a href="https://github.com/customink/crypteia">Crypteia</a> is a new super fast Lambda Extension written in Rust which turns your serverless environment variables from SSM Parameter Store paths like these...</p> +<div class="highlight"><pre><code class="language-yaml" data-lang="yaml"><span class="na">Environment</span><span class="pi">:</span> + <span class="na">Variables</span><span class="pi">:</span> + <span class="na">SECRET</span><span class="pi">:</span> <span class="s">x-crypteia-ssm:/myapp/SECRET</span> +</code></pre></div> +<p>... into real environment variables when using your Runtime&#39;s language of choice. For example, assuming the SSM Parameter path above returns <code>1A2B3C4D5E6F</code> as the value. Your code&#39;s environment variable methods would return that same value.</p> +<div class="highlight"><pre><code class="language-" data-lang="">process.env.SECRET // 1A2B3C4D5E6F +ENV['SECRET'] # 1A2B3C4D5E6F +</code></pre></div> +<p>It works by using a shared object library via the <code>LD_PRELOAD</code> environment variable in coordination with our <a href="https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html">Lambda Extension</a> binary that loads all Parameter Store values within a few milliseconds of your function starting up.</p> + +<h2 id="installation">Installation</h2> + +<p>When building your own Lambda Containers, <a href="https://github.com/customink/crypteia/releases">download</a> both the <code>crypteia</code> binary and <code>libcrypteia.so</code> shared object files that match your platform from our <a href="https://github.com/customink/crypteia/releases">Releases</a> page. Target platforms include the following using these naming conventions.</p> + +<ul> +<li>Amazon Linux 2: <code>crypteia-amzn.zip</code> &amp; <code>libcrypteia-amzn.zip</code></li> +<li>Debian, Ubuntu, Etc: <code>crypteia-debian.zip</code> &amp; <code>libcrypteia-debian.zip</code></li> +</ul> + +<p>⚠️ When building your own Lambda Containers, please make sure <a href="https://www.gnu.org/software/libc/">glibc</a> is installed since this is used by <a href="https://github.com/geofft/redhook">redhook</a>.</p> + +<p>⚠️ For now our project supports the <code>x86_64</code> architecture, but we plan to release <code>arm64</code> variants soon. Follow or contribute in our <a href="https://github.com/customink/crypteia/issues/5">GitHub Issue</a> which tracks this topic.</p> + +<p>Once these files are downloaded, they can be incorporated into your <code>Dockerfile</code> file like so:</p> +<div class="highlight"><pre><code class="language-dockerfile" data-lang="dockerfile"><span class="k">RUN </span><span class="nb">mkdir</span> <span class="nt">-p</span> /opt/lib +<span class="k">RUN </span><span class="nb">mkdir</span> <span class="nt">-p</span> /opt/extensions +<span class="k">COPY</span><span class="s"> crypteia /opt/extensions/crypteia</span> +<span class="k">COPY</span><span class="s"> libcrypteia.so /opt/lib/libcrypteia.so</span> +<span class="k">ENV</span><span class="s"> LD_PRELOAD=/opt/lib/libcrypteia.so</span> +</code></pre></div> +<h4 id="lambda-layer">Lambda Layer</h4> + +<p>Our Amazon Linux 2 files can be used within a <a href="https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html">Lambda Layer</a> that you can deploy to your own AWS account. You can use this project to build, publish, and deploy that layer since it has the SAM CLI installed. All you need to do is supply your own S3 bucket. For example:</p> +<div class="highlight"><pre><code class="language-shell" data-lang="shell">aws configure +./amzn/setup +<span class="nv">S3_BUCKET_NAME</span><span class="o">=</span>my-bucket ./layer/deploy +</code></pre></div> +<h2 id="usage">Usage</h2> + +<p>First, you will need your secret environment variables setup in <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html">AWS Systems Manager Parameter Store</a>. These can be whatever <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-hierarchies.html">hierarchy</a> you choose. Parameters can be any string type. However, we recommend using <code>SecureString</code> to ensure your secrets are encrypted within AWS. For example, let&#39;s assume the following paramter paths and values exists.</p> + +<ul> +<li><code>/myapp/SECRET</code> -&gt; <code>1A2B3C4D5E6F</code></li> +<li><code>/myapp/access-key</code> -&gt; <code>G7H8I9J0K1L2</code></li> +<li><code>/myapp/envs/DB_URL</code> -&gt; <code>mysql2://u:p@host:3306</code></li> +<li><code>/myapp/envs/NR_KEY</code> -&gt; <code>z6y5x4w3v2u1</code></li> +</ul> + +<p>Crypteia supports two methods to fetch SSM parameters:</p> + +<ol> +<li><code>x-crypteia-ssm:</code> - Single path for a single environment variable.</li> +<li><code>x-crypteia-ssm-path:</code> - Path prefix to fetch many environment variables.</li> +</ol> + +<p>Using whatever serverless framework you prefer, setup your function&#39;s environment variables using either of the two SSM interfaces from above. For example, here is a environment variables section for an <a href="https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-getting-started.html">AWS SAM</a> template that demonstrates all of Crypteia&#39;s features.</p> +<div class="highlight"><pre><code class="language-yaml" data-lang="yaml"><span class="na">Environment</span><span class="pi">:</span> + <span class="na">Variables</span><span class="pi">:</span> + <span class="na">SECRET</span><span class="pi">:</span> <span class="s">x-crypteia-ssm:/myapp/SECRET</span> + <span class="na">ACCESS_KEY</span><span class="pi">:</span> <span class="s">x-crypteia-ssm:/myapp/access-key</span> + <span class="na">X_CRYPTEIA_SSM</span><span class="pi">:</span> <span class="s">x-crypteia-ssm-path:/myapp/envs</span> + <span class="na">DB_URL</span><span class="pi">:</span> <span class="s">x-crypteia</span> + <span class="na">NR_KEY</span><span class="pi">:</span> <span class="s">x-crypteia</span> +</code></pre></div> +<p>When your function initializes, each of the four environmet variables (<code>SECRET</code>, <code>ACCESS_KEY</code>, <code>DB_URL</code>, and <code>NR_KEY</code>) will return values from their respective SSM paths.</p> +<div class="highlight"><pre><code class="language-" data-lang="">process.env.SECRET; // 1A2B3C4D5E6F +process.env.ACCESS_KEY; // G7H8I9J0K1L2 +process.env.DB_URL; // mysql2://u:p@host:3306 +process.env.NR_KEY; // z6y5x4w3v2u1 +</code></pre></div> +<p>Here are a few details about the internal implementation on how Crypteia works:</p> + +<ol> +<li>When accessing a single parameter path via <code>x-crypteia-ssm:</code> the environment variable name available to your runtime is used as is. No part of the parameter path effects the resulting name.</li> +<li>When using <code>x-crypteia-ssm-path:</code> the environment variable name can be anything and the value is left unchanged.</li> +<li>The parameter path hierarchy passed with <code>x-crypteia-ssm-path:</code> must be one level deep and end with valid environment variable names. These names must match environement placeholders using <code>x-crypteia</code> values.</li> +</ol> + +<p>For security, the usage of <code>DB_URL: x-crypteia</code> placeholders ensures that your application&#39;s configuration is in full control on which dynamic values can be used with <code>x-crypteia-ssm-path:</code>.</p> + +<h4 id="lambda-layer">Lambda Layer</h4> + +<p>Shown below is a simple Node.js 16 function which has the appropriate <a href="#iam-permissions">IAM Permissions</a> and Crypteia Lambda Layer added. Also configured are the needed <code>LD_PRELOAD</code> and <code>SECRET</code> environment variables. The code of this function log the value of the <code>process.env.SECRET</code> which does correctly resolve to the value within SSM Parameter Store.</p> + +<p><img src="/assets/content/lambda-rust/env-vars-2a128bc2c4fdc80a35244468c7386ab05a88b1c0cc4e7d41ac7acb46082776c0.webp" class="tb-Img tb-Img--responsive-ctr" alt="Screenshot of the Environment variables in the AWS Lambda Console showing `LD_PRELOAD` to `/opt/lib/libcrypteia.so` and `SECRET` to `x-crypteia-ssm:/myapp/SECRET`." /></p> + +<p><img src="/assets/content/lambda-rust/cloud-watch-322b77dd8f0cb4fc0d07896ab76ed80d0cf6d1813651a27d7bf0af6c8706dbeb.webp" class="tb-Img tb-Img--responsive-ctr" alt="Screenshot of Code source in the AWS Lambda Console showing the `body` results of `1A2B3C4D5E6F` which is resolved from SSM Parameter Store." /></p> + +<h2 id="thank-you">Thank You 💞</h2> + +<p>Let me know if you find Crypteia useful or have any questions.</p> + + Wed, 29 Jun 2022 00:00:00 -0400 + https://technology.customink.com//blog/2022/06/29/lambda-rust-extension-for-any-runtime-to-preload-ssm-parameters-as-secure-environment-variables/ + http://technology.customink.com//blog/2022/06/29/lambda-rust-extension-for-any-runtime-to-preload-ssm-parameters-as-secure-environment-variables/ + + + + Getting Started with GitHub Codespaces from a Serverless Perspective + <p>If you are into Serverless and AWS Lambda, you may already know that the <a href="https://aws.amazon.com/serverless/sam/">AWS Serverless Application Model (SAM)</a> CLI makes it easy to leverage their Docker <a href="https://github.com/aws/aws-sam-build-images">build images</a> as development containers. We do exactly this for our <a href="https://lamby.custominktech.com/">Rails &amp; Lambda</a> projects.</p> + +<!--more--> + +<p>Leveraging Docker with SAM ensures we have a Linux environment and versioned dependencies that closely mimic the Lambda Runtime or Container being shipped. The use and <a href="https://dev.to/quinncuatro/the-promise-of-docker-containers-57fd">The Promise of Docker</a> to solve these problems is nothing new... but something else is.</p> + +<h2 id="the-rise-of-ephemeral-dev-environments">✨ The Rise of Ephemeral Dev Environments</h2> + +<p>A few weeks ago GitHub&#39;s engineering team released an <a href="https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/">in-depth article</a> announcing their internal usage of the now generally available <a href="https://github.com/features/codespaces">GitHub Codespaces</a>. Since Custom Ink shares many of the same problems described in this post, I was curious if our Lambda projects could easily leverage Codespaces. But what is this new tool? Where did it come from? And what is this <code>devcontainer.json</code> file?</p> + +<p>As best I can tell this all started in May of 2019 when the VS Code team first mentioned their <a href="https://code.visualstudio.com/blogs/2019/05/02/remote-development">remote development extensions</a>. About a year later this content was rolled up into the <a href="https://code.visualstudio.com/docs/remote/remote-overview">VS Code Remote Development</a> guides we have today.</p> + +<p><img src="/assets/content/serverless-devcontainers/devcontainers-c50583eea3e4ef72a8cd7045d04c3c0385e9ef8efc8975162773ce28c3c27be1.webp" class="tb-Img tb-Img--responsive-ctr" alt="VS Code Remote Development Architecture Diagram" /></p> + +<p>Prior to Codespaces, we have had a clear leader in the automated development environment space with <a href="https://www.gitpod.io">Gitpod</a>. It was even featured in a January 2021 episode of <a href="https://www.youtube.com/watch?v=rjDDAFHEYEc&list=PLehXSATXjcQFHpz-HAO8YOC6EqFScEz27">Containers from the Couch</a>. Gitpod leverages the same technology built into VS Code for remote development.</p> + +<p>However, sometimes slow and steady wins the race. If this were ever true for GitHub-based projects, I think we have a huge winner with GitHub Codespaces. Keep reading below on how your company (or you) could get started. I will even cover how well Codespaces has worked for our Lambda projects that use an existing Docker in Docker development pattern.</p> + +<h2 id="github-settings">⚙️ GitHub Settings</h2> + +<p>GitHub Codespaces is ONLY available now for GitHub Teams &amp; Enterprise Cloud plans. It is not yet available for public repositories. If you are an administrator of such an account, here are a few things I did <a href="https://docs.github.com/en/codespaces/managing-codespaces-for-your-organization">at the organization level</a> to get started experimenting.</p> + +<ul> +<li><a href="https://docs.github.com/en/codespaces/managing-codespaces-for-your-organization/enabling-codespaces-for-your-organization#setting-a-spending-limit">Enable Codespaces</a>: This can also be disabled completely or enabled for select users.</li> +<li><a href="https://docs.github.com/en/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces">Repository Access</a>: You can even limit repositories that are able to use Codespaces. If your GitHub account leverages permissions &amp; teams, remember, Codespaces (via the generated <code>GITHUB_TOKEN</code> will not grant anyone elevated permissions to other repositories.</li> +<li><a href="https://docs.github.com/en/billing/managing-billing-for-github-codespaces/managing-spending-limits-for-codespaces">Manage Spending Limits</a>: It would have been neat to see a way to limit which VMs (vCPU/Memory) options could have been used here.</li> +<li><a href="https://docs.github.com/en/codespaces/managing-codespaces-for-your-organization/managing-encrypted-secrets-for-your-repository-and-organization-for-codespaces#adding-secrets-for-an-organization">Organizational Secrets</a>: Create any secrets your organization needs to enable individuals to work. Remember, Codespaces secrets can be set at the repository or even user level too. Pick the one(s) that work the best for y&#39;all.</li> +</ul> + +<h2 id="developer-tips">🔰 Developer Tips</h2> + +<p>It could go without saying but getting good at Codespaces for most may mean getting good at VS Code. Technically you could bring your own editor like Vim or Emacs. But trust me, as a recent Sublime Text convert, switching to VS Code is worth it. Make sure to take the time to Google, learn, and in some cases <a href="https://github.com/Microsoft/vscode-sublime-keybindings">install packages</a> that make the transition easier.</p> + +<h3 id="dotfiles-settings">Dotfiles &amp; Settings</h3> + +<p>Remote development needs to feel local! Everything that makes your editor &amp; terminal productive needs to be available to you. As described in the <a href="https://docs.github.com/en/codespaces/customizing-your-codespace/personalizing-codespaces-for-your-account">Personalizing Codespaces</a> guide setting up your Dotfiles was high on my list.</p> + +<p>For years I have maintained a personal Zshkit which had a ton of personal functions and aliases. When moving to Codespaces, I took the time to clean them up and create a <code>github.com/metaskills/dotfiles</code> repository, cloned it locally and hooked it up to my ZSH (default shell on Mac) <code>~/.zshrc</code> file. Codespaces will automatically clone this repo when creating a Codespace and install it by running the <code>install.sh</code> script. Example.</p> +<div class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$CODESPACES</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"true"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then + </span><span class="nb">echo</span> <span class="s2">"source /workspaces/.codespaces/.persistedshare/dotfiles/rc"</span> <span class="o">&gt;&gt;</span> <span class="nv">$HOME</span>/.zshrc + <span class="nb">sudo </span>chsh <span class="nt">-s</span> /usr/bin/zsh +<span class="k">fi</span> +</code></pre></div> +<p>You can leverage the <code>CODESPACES</code> environment variable to do any customization per environment. Also, do not forget to use <a href="https://code.visualstudio.com/docs/editor/settings-sync">Settings Sync</a>. I think this is only needed if you use VS Code&#39;s web-based editor. More on that topic later.</p> + +<h3 id="your-codespaces-settings">Your Codespaces Settings</h3> + +<p>You can <a href="https://docs.github.com/en/codespaces/managing-your-codespaces">Manage Your Codespaces</a> settings at somewhat the same level as the organization. Here are a few settings I did.</p> + +<ul> +<li>Access &amp; Security: Set this to &quot;All repositories&quot;. Your needs may vary.</li> +<li>Editor Preference: Set to &quot;Visual Studio Code&quot; vs for web. Ensures the <code>[&lt;&gt; Code]</code> button on repos opens VS Code on my Mac and avoids the need to click redirect in the browser.</li> +<li>Region: I set this manually to <code>EastUs</code> but I suspect I had no reason to do so.</li> +<li>Added Secrets: Read below on using SSH with Ruby Bundler or NPM packages.</li> +</ul> + +<h3 id="codespaces-extension">Codespaces Extension</h3> + +<p>Install the <a href="https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces">GitHub Codespaces</a> for VS Code. I think this is done for you automatically if you are using the web-based editor. Installing it on your host machine&#39;s VS Code will mean you can use Codespaces without ever browsing to GitHub.com and clicking on a <code>[&lt;&gt; Code]</code> button.</p> + +<p><img src="/assets/content/serverless-devcontainers/vscode-codespaces-7f9106d37751482d16fb413125224e779ec55adb20efd4c026464d48d1e01dfa.webp" class="tb-Img tb-Img--responsive-ctr" alt="The Codespaces Command Pallet in VS Code provided by the Codespaces Extension" /></p> + +<h3 id="the-integrated-terminal">The Integrated Terminal</h3> + +<p>Assuming you have setup your Dotfiles, VS Code&#39;s <a href="https://code.visualstudio.com/docs/editor/integrated-terminal">integrated terminal</a> should feel familiar by mirroring your host machine&#39;s prompt, aliases, and more. If your default shell is ZSH, you may need to do a few things to help Codespaces use ZSH by default vs Bash. Here are my settings for the integrated terminal now. Mind you, there was (maybe still is) <a href="https://github.community/t/integrated-terminal-setting-not-respected/145625">a bug</a> in VS Code where ZSH would not be respected. I have noticed in some cases Bash is used but it is easy to launch a new profile with ZSH if that happens.</p> +<div class="highlight"><pre><code class="language-json" data-lang="json"><span class="w"> </span><span class="nl">"terminal.integrated.fontSize"</span><span class="p">:</span><span class="w"> </span><span class="mi">14</span><span class="err">,</span><span class="w"> + </span><span class="nl">"terminal.integrated.defaultProfile.osx"</span><span class="p">:</span><span class="w"> </span><span class="s2">"zsh"</span><span class="err">,</span><span class="w"> + </span><span class="nl">"terminal.integrated.defaultProfile.linux"</span><span class="p">:</span><span class="w"> </span><span class="s2">"zsh"</span><span class="err">,</span><span class="w"> +</span></code></pre></div> +<p>Using <code>Command+K</code> to clear the terminal&#39;s buffer is second nature to most. By default this key binding will not reach the integrated terminal. You can edit your Keyboard Shortcuts JSON file to solve for that. Below is a screen capture of the magic little button you have to press to edit that raw JSON file. Use the following snippet to fix this.</p> + +<p><img src="/assets/content/serverless-devcontainers/vscode-preferences-998a7e5f016288cac7578c594ac2c2e275ac0e77d5ee183f90f3f7faa78afbe1.webp" class="tb-Img tb-Img--responsive-ctr" alt="Super Hidden Keyboard Shortcuts JSON Edit Button" /></p> +<div class="highlight"><pre><code class="language-json" data-lang="json"><span class="p">{</span><span class="w"> + </span><span class="nl">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"cmd+k"</span><span class="p">,</span><span class="w"> + </span><span class="nl">"command"</span><span class="p">:</span><span class="w"> </span><span class="s2">"workbench.action.terminal.clear"</span><span class="p">,</span><span class="w"> + </span><span class="nl">"when"</span><span class="p">:</span><span class="w"> </span><span class="s2">"terminalFocus"</span><span class="w"> +</span><span class="p">}</span><span class="w"> +</span></code></pre></div> +<p>Terminal visibility and placement. When working on my laptop&#39;s smaller screen, I learned that you can use <code>Control+~</code> to toggle the visibility of the integrated terminal. However, when working at my desk and larger screen, I really want the integrated terminal to be to the right of my editor. Thanks to this <a href="https://stackoverflow.com/questions/41874426/how-do-i-move-the-panel-in-visual-studio-code-to-the-right-side">this Stack Overflow</a> here are convoluted steps to make this happen. Hopefully one day they will make this easier. 😅</p> + +<ol> +<li>At the right top of the integrated terminal, click the <code>+</code> sign to open a 2nd terminal.</li> +<li>Within the panel to the right, right click any of the two profiles, select <code>Move into Editor Area</code>.</li> +<li>Close the bottom integrated terminal with the <code>x</code> button.</li> +<li>Focus the editor tab at the top moved from step 2, click the <code>[|]</code> split editor button.</li> +<li>Close the shell tab on the left side of the screen.</li> +</ol> + +<h2 id="fun-highlights">🎉 Fun Highlights</h2> + +<p>Here are a few things I was pleasantly surprised with Codespaces&#39; DX and how it works:</p> + +<ul> +<li>When learning Codespaces or working on uncommitted code, you may have to rebuild your development container. Codespaces automatically maintains your present working directory, open files, etc when doing this. Amazing!</li> +<li>You can see all your Codespaces on GitHub by navigating to <a href="https://github.com/codespaces">https://github.com/codespaces</a>. However, I typically use VS Code&#39;s <a href="https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces">extension</a> to navigate, open, and disconnect.</li> +<li>Leveraging the <code>CODESPACES</code> environment variable set to <code>true</code> is an easy way to integrate your existing tooling into Codespaces allowing your teams to support multiple ways to bootstrap your applications.</li> +<li>Forwarded ports are automatically detected via the integrated terminal&#39;s STDOUT. For example, a <code>.bin/rails server</code> will ouput whatever host/port you are using and Codespaces will see it. If needed you can use the <code>forwardPorts</code> config for <code>devcontainer.json</code>.</li> +</ul> + +<h2 id="difficult-lessons">⚠️ Difficult Lessons</h2> + +<p>Some hard lessons learned when dipping into the deep end of using GitHub Codespaces. If you have any to share, please drop some comments below.</p> + +<h3 id="private-packages-ssh">Private Packages &amp; SSH</h3> + +<p>GitHub does a great job at providing your Codespace with a short lived <code>GITHUB_TOKEN</code>. Most package managers including NPM and Bundler can leverage this. However, if your organization has standardized on SSH setting up your projects could be a problem.</p> + +<p>Thankfully when I reached out on Twitter, Jonathan Carter on the Codespaces team, <a href="https://twitter.com/LostInTangent/status/1427053387007225861">seemed to suggest</a> they may be working on a native SSH integration one day. Till then, here is the solution I came up with. This process address some sequencing issues around <code>devcontainer.json</code>&#39;s <a href="https://code.visualstudio.com/docs/remote/devcontainerjson-reference#_lifecycle-scripts">Lifecycle Scripts</a> and when your Dotfiles are installed. Credit to VS Codes <a href="https://code.visualstudio.com/docs/remote/containers#_using-ssh-keys">Using SSH Keys</a> guide. Also, some things here are pulled directly from the <a href="https://github.com/webfactory/ssh-agent">GitHub Action</a> to setup SSH. Again, thanks to Johnathan Carter for the ideas.</p> + +<ol> +<li>Create a personal Codespace secret called <code>PERSONAL_SSH_KEY</code> by visiting this page <a href="https://github.com/settings/codespaces/secrets/new">https://github.com/settings/codespaces/secrets/new</a> and adding your private key, typically found in the <code>~/.ssh/id_rsa</code> file.</li> +<li>Add this snippet to your <code>postCreate</code> script. It ensures GitHub is in the known hosts for SSH.</li> +</ol> +<div class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">echo</span> <span class="s2">"Adding GitHub.com keys to ~/.ssh/known_hosts"</span> +<span class="nb">printf</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==</span><span class="se">\n</span><span class="s2">"</span> <span class="o">&gt;&gt;</span> ~/.ssh/known_hosts +<span class="nb">printf</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">github.com ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw==</span><span class="se">\n</span><span class="s2">"</span> <span class="o">&gt;&gt;</span> ~/.ssh/known_hosts +</code></pre></div> +<ol> +<li>Add this snippet to your Dotfiles. It will ensure the proper SSH agent is started, if not already, and that the key environment variables are set.</li> +</ol> +<div class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$CODESPACES</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"true"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then + if</span> <span class="o">[</span> <span class="nt">-z</span> <span class="s2">"</span><span class="nv">$SSH_AUTH_SOCK</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then + </span><span class="nv">RUNNING_AGENT</span><span class="o">=</span><span class="s2">"</span><span class="sb">`</span>ps <span class="nt">-ax</span> | <span class="nb">grep</span> <span class="s1">'ssh-agent -s'</span> | <span class="nb">grep</span> <span class="nt">-v</span> <span class="nb">grep</span> | <span class="nb">wc</span> <span class="nt">-l</span> | <span class="nb">tr</span> <span class="nt">-d</span> <span class="s1">'[:space:]'</span><span class="sb">`</span><span class="s2">"</span> + <span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$RUNNING_AGENT</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"0"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> + <span class="c"># Launch a new instance of the agent</span> + ssh-agent <span class="nt">-s</span> &amp;&gt; <span class="nv">$HOME</span>/.ssh/ssh-agent + <span class="k">fi + </span><span class="nb">eval</span> <span class="sb">`</span><span class="nb">cat</span> <span class="nv">$HOME</span>/.ssh/ssh-agent<span class="sb">`</span> + <span class="k">fi</span> + <span class="c"># Add my SSH key.</span> + <span class="k">if</span> <span class="o">[</span> <span class="nt">-n</span> <span class="s2">"</span><span class="k">${</span><span class="nv">PERSONAL_SSH_KEY</span><span class="p">+1</span><span class="k">}</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then + </span>ssh-add - <span class="o">&lt;&lt;&lt;</span> <span class="s2">"</span><span class="k">${</span><span class="nv">PERSONAL_SSH_KEY</span><span class="k">}</span><span class="s2">"</span> + <span class="k">fi +fi</span> +</code></pre></div> +<p>In order to see this all come together with our Docker in Docker Lambda patterns, please read the <a href="https://dev.to/aws-heroes/serverless-docker-patterns-4g1p">Serverless Docker Patterns</a> article in this series where we describe how to use the <code>SSH_AUTH_SOCK</code> in a cross platform way for Mac &amp; Linux.</p> + +<h3 id="aws-cli">AWS CLI</h3> + +<p>For our Lambda projects we use Docker in Docker patterns where both the AWS &amp; SAM CLIs are pre-installed on the development image. However, you may need the AWS CLI installed on the developer&#39;s host machine too. In this case, Codespaces. Here is a short snippet that you can use in your <code>postCreate</code> script.</p> +<div class="highlight"><pre><code class="language-shell" data-lang="shell"><span class="nb">echo</span> <span class="s2">"Installing AWS CLI"</span> +<span class="nb">pushd</span> /tmp +curl <span class="s2">"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"</span> <span class="nt">-o</span> <span class="s2">"awscliv2.zip"</span> +unzip <span class="nt">-qq</span> awscliv2.zip +<span class="nb">sudo</span> ./aws/install +<span class="nb">rm</span> <span class="nt">-rf</span> awscliv2.zip ./aws +<span class="nb">popd</span> +</code></pre></div> +<h3 id="docker-in-docker">Docker in Docker</h3> + +<p>I&#39;ve said this before but cross platform Docker in Docker is really hard. This series aims to talk about most of them, but one I learned the hard way is that sometimes the pain comes from the ones you love... in this case AWS SAM. The team is doing some amazing work but I ran into a few issues where Docker in Docker patterns have broken down. Read here for details.</p> + +<ul> +<li><a href="https://github.com/aws/aws-sam-cli/issues/2837#issuecomment-845487064">No Response from Invoke Container for Lambda Inside docker-compose #2837</a></li> +<li><a href="https://github.com/aws/aws-sam-cli/issues/921#issuecomment-907859353">Watch Option for SAM Build Command #921</a></li> +</ul> + +<h2 id="full-lamby-example">🚂 Full Lamby Example</h2> + +<p>Assuming the other patterns were in place like various <code>postCreate</code> hooks for SSH, using GitHub Codespaces with your already Docker&#39;ized project is super easy. Here is a complete <code>.devcontainer/devcontainer.json</code> file for one of our projects. Again, see the <a href="https://dev.to/aws-heroes/serverless-docker-patterns-4g1p">Serverless Docker Patterns</a> related post on how we are using <code>COMPOSE_FILE</code> for Mac filesystem performance and why it would be needed here.</p> +<div class="highlight"><pre><code class="language-json" data-lang="json"><span class="p">{</span><span class="w"> + </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"my-application"</span><span class="p">,</span><span class="w"> + </span><span class="nl">"forwardPorts"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="mi">4020</span><span class="p">],</span><span class="w"> + </span><span class="nl">"remoteEnv"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> + </span><span class="nl">"COMPOSE_FILE"</span><span class="p">:</span><span class="w"> </span><span class="s2">"docker-compose.yml"</span><span class="w"> + </span><span class="p">},</span><span class="w"> + </span><span class="nl">"postCreateCommand"</span><span class="p">:</span><span class="w"> </span><span class="s2">"./.devcontainer/postCreate"</span><span class="w"> +</span><span class="p">}</span><span class="w"> +</span></code></pre></div> +<p>In fact, none of this would be needed for a starter application! Give it a try. Go through our <a href="https://lamby.custominktech.com/docs/quick_start">Lamby Quick Start</a> guide, commit your project to GitHub... and give Codespaces a try!</p> + +<h2 id="security-questions">🔐 Security Questions</h2> + +<p>The Codespaces team was kind enough to write their own <a href="https://docs.github.com/en/codespaces/codespaces-reference/security-in-codespaces">Security in Codespaces</a> documentation. I&#39;ll highlight their introduction below:</p> + +<blockquote> +<p>Codespaces is designed to be security hardened by default. Consequently, you will need to ensure that your software development practices do not risk reducing the security posture of your codespace.</p> + +<p>This guide describes the way Codespaces keeps your development environment secure and provides some of the good practices that will help maintain your security as you work. As with any development tool, remember that you should only open and work within repositories you know and trust.</p> +</blockquote> + +<p>Good stuff! Security is a shared responsibility and it appears GitHub is doing their part. Please read over the full documentation for more information, but here are a few things I paid special attention to.</p> + +<ul> +<li><a href="https://docs.github.com/en/codespaces/managing-codespaces-for-your-organization/reviewing-your-organizations-audit-logs-for-codespaces">Audit Logs</a>: Are generated and can be queried.</li> +<li><a href="https://docs.github.com/en/codespaces/managing-codespaces-for-your-organization/managing-encrypted-secrets-for-your-repository-and-organization-for-codespaces">Organization &amp; User Secrets</a>: Built on the <a href="https://libsodium.gitbook.io/doc/public-key_cryptography/sealed_boxes">same technology</a> GitHub draws a line between GitHub standard org/user secrets with the Codespace ones. Again, they can be set at the organization, repository, or user. Providing an immense amount of control and security layers.</li> +<li><a href="https://docs.github.com/en/codespaces/customizing-your-codespace/personalizing-codespaces-for-your-account#dotfiles">Dotfiles</a>: Remind users that these are public repositories! Tho possible to encrypt secrets, I personally recommend keeping them basic to aliases and functions.</li> +<li><a href="https://docs.github.com/en/codespaces/codespaces-reference/security-in-codespaces#isolated-networking">Secure Networking</a>: Authenticated via GitHub via temporary tokens. Forwarding ports for web servers is done securely over the network between the host. Nothing is public by default.</li> +</ul> + +<h2 id="what-is-coming">🔮 What is Coming?</h2> + +<p>As mentioned above, I would love to see a native SSH solution. For now, the workarounds are minimal and feel secure with GitHub Secrets and Codespaces integration.</p> + +<p>In their introductory <a href="https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/">blog article</a>, the GitHub team put a lot of emphasis on prebuilds ensuring that each Codespaces development environment was super fast to setup. This was critical for their team and as of now Gitpod is making a clear distinction this is a <a href="https://www.gitpod.io/gitpod-vs-github-codespaces">key differentiator</a> for them. I suspect prebuilds are coming soon. 🤔</p> + +<h2 id="resources">📚 Resources</h2> + +<p>Thanks so much for reading! I would love to hear if you found this article helpful or what your organization may be doing with GitHub Codespaces. 💕</p> + +<ul> +<li><a href="https://docs.github.com/en/codespaces">GitHub Codespaces</a> - Blazing fast cloud +developer environments with Visual Studio Code backed by high performance VMs that start in seconds.</li> +<li><a href="https://github.blog/2021-08-11-githubs-engineering-team-moved-codespaces/">GitHub’s Engineering Team has moved to Codespaces</a> - Great description of the business needs for easy development environments. Common for most orgs.</li> +<li><a href="https://lamby.custominktech.com/docs/quick_start">Getting Started with Rails on Lambda</a> - An quick start guide using Docker for development with GitHub &amp; Codespaces.</li> +<li><a href="https://code.visualstudio.com/docs/remote/remote-overview">VS Code Remote Development</a> - The architecture behind GitHub Codespaces.</li> +<li><a href="https://www.gitpod.io">Gitpod</a> - Spin up fresh, automated dev environments +for each task, in the cloud, in seconds.</li> +<li><a href="https://www.gitpod.io/blog/ephemeral-dev-envs">DevX Digest: The Rise of Ephemeral Developer Environments</a> - Great post by <a href="https://twitter.com/paulienuh">Pauline P. Narvas</a> on where cloud-based dev environments are headed.</li> +</ul> + + Sun, 06 Feb 2022 00:00:00 -0500 + https://technology.customink.com//blog/2022/02/06/getting-started-with-github-codespaces-from-a-serverless-perspective/ + http://technology.customink.com//blog/2022/02/06/getting-started-with-github-codespaces-from-a-serverless-perspective/ + + AWS Systems Manager (SSM) Cross Region Replication <p>Replicate SSM parameters to another region using AWS Lambda &amp; SQS.</p> diff --git a/foo.bar b/foo.bar new file mode 100644 index 00000000..e69de29b diff --git a/index.html b/index.html index 7e7282e3..6b2b0935 100644 --- a/index.html +++ b/index.html @@ -17,9 +17,9 @@ - Posted On 10 Jan 2022  -  Katherine Cisneros + Posted On 03 Mar 2023  -  Ken Collins - AWS Systems Manager ..."> + Trigger CircleCI Workflow. ...">

Configuring Atom