{"data":{"allTalksYaml":{"nodes":[{"company":"charmCityJS, December 2020","description":["<p>This was my second of two talks about WebRTC. This one focused on RTCPeerConnection and the why/how of ICE. You can see the whole talk <a href=\"https://www.youtube.com/watch?v=YLPRBYTeoF4\">on YouTube</a>!</p>\n"],"id":"c1fed9d0-14d8-5735-be8c-3ea5aecebb07","title":"WebRTC: A STUNning TURN of Events","url":"https://docs.google.com/presentation/d/1sMykfr7jHEnqP3LzEtlmjMEWqrzH1_JkpqS9ypyS95o/edit?usp=sharing","clips":[{"height":9,"id":"webrtc2-collage","src":"images/portfolio/webrtc2-collage.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAADHUlEQVQoz0XO/U+UBQDA8Udx1VJirESHFAlKW7bcOnlxMy91cixrdiNzzNTUwLbLUQbpaL1YFhNINsw8bjFRWSClp15N8kTCgXjGyT0cdHrcC3Dvz70fFzNx+zbxh/6Bz/crvFC6h2c2lLJgSTY5L+axoqiQ0dFhnOIw+jPtTCeiJCQ/LrPIdCJORAqwaNFi5j85j+V5Wex9cynrCvPIys5l2bJchJwiOeWNx1C9t5mS/CwyljxNb991rD3X0H93mOloGK9ZZPTXDpIBDzDDF1X7EeakIwgCcwSBxwWBJ+amkJaaiqBu+ZmI5KVLfYhTlUq2KBX8flmHzfAXfzSpCbsmGDeZ6G/W0KfVMTJoRN9Sx8tNncxt1pD+0cfM36wk/aWVCPNSEM6dv8Q/QS/GX9RY9R1EQj5u6LspK1RQvb2aowfqKS/ZynXtBT7ZupfivNV8s7OSFW1XEf7s5THDLZ6yWnn2oo6UjQqE051agtEIkcQULq8HKR6iXXOa4udlvCMrpurdKlQKJZ0/nqC8pIy1mSvZozzArjotBTUqMhrqWXjyJEvbzrAgX4ZwsesKIzY7N00mjKMWRhwOWjWn2JizCkVuAcf3VdPwfgVdPxyj9oNq3s6X03H8KLFQEstAN61qNW+V7qRIuZvFmcsfgl1EZx4w7nBiHzLhjycY6u6h8eAh2k+0Ig4Y6Ovtx2E24w3HuC3epEe7jbDvAlPJEB6fj89qDpOa+gZpCzch6K7oic08wDoxyeCQCWkqicFoxB+Pz946pCDuaIwBUSQB/Ha1h+zMNFbLMtiw9jnqj3yN0z7GJV0/ik07/gfvOMcZFIdxhcKIljuzAfFvCxabnbGJSW4Pm/EnkpjMIoVr1tDQ1My3+1WsWy+n4DU5twYNtPykeQRG78/gcHuwjo3hloLY7A5cPj+THi/OSReugMRdmx1fLI7TH0Beuo2vvm8kmQhTefBTyioqqG04Ql1t7SMwcu9f3JHoLOYOSEz4fFgdTu7aHTjdHtwPcSlI+N59rvXf4NViBetfV7Bj9y5WyV7h85ovOdvWzj7Vh/wHDHNoil99FbQAAAAASUVORK5CYII=","aspectRatio":1.7857142857142858,"src":"/static/3f679e2f87d3e1dd20a74909a3fdf2ec/0a74d/webrtc2-collage.png","srcSet":"/static/3f679e2f87d3e1dd20a74909a3fdf2ec/ba958/webrtc2-collage.png 75w,\n/static/3f679e2f87d3e1dd20a74909a3fdf2ec/89761/webrtc2-collage.png 150w,\n/static/3f679e2f87d3e1dd20a74909a3fdf2ec/0a74d/webrtc2-collage.png 300w,\n/static/3f679e2f87d3e1dd20a74909a3fdf2ec/5498c/webrtc2-collage.png 450w,\n/static/3f679e2f87d3e1dd20a74909a3fdf2ec/fa42c/webrtc2-collage.png 600w,\n/static/3f679e2f87d3e1dd20a74909a3fdf2ec/99f97/webrtc2-collage.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}}]},{"company":"charmCityJS, October 2020","description":["<p>This was my first of two talks about WebRTC. This one focused on getUserMedia, MediaStreams, and what you could do with them. You can see the whole talk <a href=\"https://www.youtube.com/watch?v=jAyI8EB0-OQ\">on YouTube</a>!</p>\n"],"id":"3525c24c-8242-5d26-9b96-40e7ae15035b","title":"WebRTC, But Hold The Ice","url":"https://docs.google.com/presentation/d/1eOpwSRAhFzJERtK-FndVDC5uiNF5N8wwMx7wViVvecU/edit?usp=sharing","clips":[{"height":9,"id":"webrtc1-iceberg","src":"images/portfolio/webrtc1-iceberg.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAADJklEQVQozy2Oe0zUBQDHf5sh9/jd7w48787jjnuo9+I4uLjj2SHBkWMkgQ90qYsrH2mHmTAeWqg4aq1lzB5Tl1kJMSNF4thwOxGs6fqjNplDy0GG9EIxoa211fq0Y/7x3fev7+f7EZqG7nPw0gOah+6zvW+GunP32DUwS33fFI0XJtjXf4djVx9wJP4bDf0/0/LlXV6/OE1b7C6HYtMcGZhi48kfKGwfI9R2HaHmwjw1fXPU9s/x7OA863t/obr7Dut6poicn6bnuxlu/zrLF9duUHXyBqtPT1H96U8Uv/8jgbcnCLx5i5yOcVz7x8hvv4kQbI0TaL1M4MAovqYRspuHKT48St7By+z++BtGxifpHLpO7ktdeJ47g695lMzmr8nYdwnP3mHcLw/jiA5j2RbHvyeOsNjxCsmeNha53yAt/CHOtZ+grzyLadVpljw9iKr+NsLOm4TaJijcMYK27CxJRedIyjmOPHgK2ePHkWcfJclzGFNRO4IqzY9ke5JF5mqe3xShe1eEz1dv5UpZhBcb+3F8MEbl1b8pGpgndHSSqvpBvOt6sJR2kuxqQHTvRlxZi8xcgjWzDEGjNiKmWtDqXbznMHHNIHExYONEyMf+zSXkb2yl5at/CXX9QXnsITWvDeANd1C+9R3Sc7YgW5aHtCwDhdqEfXkmgloyolYZUavTeEJroiJYzOa6bVRGtlO4Kh9TxSksnX+xoul3NsX+JNr9LfLMBoIVDVRs2Il5uQ+lqEcUDdjtCaDKQCIaychjMh22rFKCT0VJyWlBU9uLMzpO3ZmHVJ+YJ/jRDIUdVzAUNKK1l2G2+3E6/KSb3SjkWuy2DARJpUcS9QtQSaEjw51LVkENrqIdFNSfpyU+R13vPTTts7zw2SRVW95lbeQQJeH1pBmdlIfX4PPmIktKwW7zJAx1SKKORIuKpditXrxZJehXhrHnRcjrGmPP9//x6q1/iHTGiDYdI91dis2azTNranE7/Qs7ZcLQ6kZQi4+Aj6JSLEVUGhBTVrA4NQu5bwPFe98iP3IApaUUnTUfSW1dOLaYnSiSU9GoDChlS7BbXfwPu2TJ8v43V0wAAAAASUVORK5CYII=","aspectRatio":1.744186046511628,"src":"/static/0542e40b8bac6636f4162f3805e3b1e8/0a74d/webrtc1-iceberg.png","srcSet":"/static/0542e40b8bac6636f4162f3805e3b1e8/ba958/webrtc1-iceberg.png 75w,\n/static/0542e40b8bac6636f4162f3805e3b1e8/89761/webrtc1-iceberg.png 150w,\n/static/0542e40b8bac6636f4162f3805e3b1e8/0a74d/webrtc1-iceberg.png 300w,\n/static/0542e40b8bac6636f4162f3805e3b1e8/5498c/webrtc1-iceberg.png 450w,\n/static/0542e40b8bac6636f4162f3805e3b1e8/fa42c/webrtc1-iceberg.png 600w,\n/static/0542e40b8bac6636f4162f3805e3b1e8/e40ea/webrtc1-iceberg.png 1838w","sizes":"(max-width: 300px) 100vw, 300px"}}}}]},{"company":"charmCityJS, July 2020","description":["<p>This talk was based on <a href=\"/blog/2020/06/16/unshattering-the-audience-building-theatre-on-the-web-in-2020\">my blog post of the same name</a>, and was a quick run-through of how I built the software that ran Shattered Space. I don't have a video of this one, and my slides are a bit incomplete (it was heavily demo-focused), so I'd recommend checking out the <a href=\"/blog/2020/06/16/unshattering-the-audience-building-theatre-on-the-web-in-2020\">blog post</a> instead.\"</p>\n"],"id":"7b0350aa-2160-503a-b5b6-c2f3644ae701","title":"Unshattering the Audience: Building Theatre on the Web in 2020","url":"https://docs.google.com/presentation/d/17DFPZ13CoJ-SL8V42TOj9rxjJaSqabUksPRnBPp_yIU/edit?usp=sharing","clips":[{"height":9,"id":"unshattering-title","src":"images/portfolio/unshattering-title.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAABSUlEQVQoz41Sy46CQBD0M4hPfERRiRGBKERNJCp40E3kYIB4g///hNpUJ0PYBbN7qFTP1HRNF0NrOBxC13WQmzAajf7U2M+60+mgpczI/X4f3W5XBIV2u13W1IherydMjbUyF8PqDavVCtvtFrvdDsfjUfhyuWC/38P3PXieB9d14TgOfN/H4XDAer2WQWqG5CiKEMcxsiwTTtMURVEgSVK8Xi9cr1ckSYL3+40wipDnuezRaDwe1yMPBoMy1tfjgSAIcDoFeD6fCMMQ5/MZt9tNWNO0Mn5j5KopRUaiCQ3u97tMwohMQU0Z1R5FbdJosVjAtm1sNhupl8slTNOEYRgC1pZlYT6fC/NbTiaTcogfhryFIhvZMJ1Oy5o8m80ESiO4plFtwt+Rq+ArcmK+OCdk1Oo51o2RP/3cqkHh05maYdOh/+5XDb8BQ0pElalnsPsAAAAASUVORK5CYII=","aspectRatio":1.7857142857142858,"src":"/static/214a388a20cefc4985e18d469b3c9732/0a74d/unshattering-title.png","srcSet":"/static/214a388a20cefc4985e18d469b3c9732/ba958/unshattering-title.png 75w,\n/static/214a388a20cefc4985e18d469b3c9732/89761/unshattering-title.png 150w,\n/static/214a388a20cefc4985e18d469b3c9732/0a74d/unshattering-title.png 300w,\n/static/214a388a20cefc4985e18d469b3c9732/5498c/unshattering-title.png 450w,\n/static/214a388a20cefc4985e18d469b3c9732/fa42c/unshattering-title.png 600w,\n/static/214a388a20cefc4985e18d469b3c9732/b15c4/unshattering-title.png 2555w","sizes":"(max-width: 300px) 100vw, 300px"}}}}]},{"company":"charmCityJS, February 2019","description":["<p>At this point I had only done projections for two shows (Rocky and Thank You, Dad) but a lot of the concepts I cover in here (particularly ARKit and basic WebRTC stuff) formed the basis for a lot of my future projections work as well. <a href=\"https://www.youtube.com/watch?v=6AXFH11t6vg\">This is also the only talk I've done that was recorded at the meetup where it was given, so I recommend checking that out</a>.\"</p>\n"],"id":"6e3f7bbe-13e6-5ea4-9231-b53a1a503053","title":"Let's Do The Timeout Again: Using Javascript to make Projections for Theatre","url":"https://chrisuehlinger.com/ProjectionsTalk","clips":[{"height":9,"id":"timeout-clip","src":"https://cdn.chrisuehlinger.com/show-videos/timeout-clip.mp4","type":"video","width":16,"image":null},{"height":9,"id":"the-timeout-title","src":"images/portfolio/the-timeout-title.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAACLUlEQVQozz2Su4oUQRSGh53u6uruOnWZ2R10mRnHtXemp3e6V1nXwBuoeIFVQcTAS2JmIIgYaWCygqJooolo4CUQL4lgoiC+gBj4AL7KL3W2e4PDOVXV9dV//tMt6xyamLcWO6zFzjp8Tc6hV2dd18Y5Pl+wFolzvO5ay/dbV9IUp4hwO0nwRgjciWM8lhI3kwS/221cUgqbUuKtEHgeRXgZRThNxPVDKfFESryOInwSAoeJ0DqnFO7HMR5IiUdSMvwMETJj8F4InCTCrSTB3TjGvTjGUymx2xhcS1OcV4qFbNbQ4x7YsZbl+thlDE4QYV1rFMZg2RhMjMERIgytxSEirGnNrVZa88NjY9iK1Dm2peWshYdK53CMCO+EwIsows8gwL+5Oc5/223e/ygEfgQBPgjB3XwOQ+5A1v57FgNdbbR/2fvjFXkrfH1RKWwohf1a40aSsMKracpqvYBFa1mhZ1hWWE+4AUfO4WDdjn/9glI4UK+9R5fTFGeVwlGi7b+jubulsNnwo3eOgc+kxK8g4KF8DUN8EQLfwxCvogjfwhB/2m1cT1P2vQHamtFqCm7bGHT9ILTm2EfErY21Rqk11ok4r/khGcMQU2dr3RaQW/ZT7nYxzXNMiwLZdIqlyQTDLMNilmFPnmM0HmMpz7Gc53zeH41QFAWHv2trldtAn3u9HsdwMEC5soJiOsWsKLBaVajKEnurCuVshtWyxKDfR6fT4e8bxsJ8B/8B0lorzX+5qSYAAAAASUVORK5CYII=","aspectRatio":1.7857142857142858,"src":"/static/e432b65c22d3c444b60d1aeebcec722f/0a74d/the-timeout-title.png","srcSet":"/static/e432b65c22d3c444b60d1aeebcec722f/ba958/the-timeout-title.png 75w,\n/static/e432b65c22d3c444b60d1aeebcec722f/89761/the-timeout-title.png 150w,\n/static/e432b65c22d3c444b60d1aeebcec722f/0a74d/the-timeout-title.png 300w,\n/static/e432b65c22d3c444b60d1aeebcec722f/5498c/the-timeout-title.png 450w,\n/static/e432b65c22d3c444b60d1aeebcec722f/fa42c/the-timeout-title.png 600w,\n/static/e432b65c22d3c444b60d1aeebcec722f/99f97/the-timeout-title.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}},{"height":9,"id":"the-timeout-beat-matching","src":"images/portfolio/the-timeout-beat-matching.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAAByElEQVQoz52RT4/SUBRHm0zoGxKg0S+gUsbiJIVpAWVD/9G+AqUzrTjDyNaFxp1xYWKMunPrzo97zHtBEuJojIuTe1/be/LrfUbTsnglBD9OTvhomrwXgqrZ5FujwSfT5J0QfBAmb4Xgq2nyvdHQ370+PeWLabJtNvlsmrwRAtHpYDx6+ADPdfHcAQPH4dxxeOI4nHW7nHVtTb/b1Ti2Td+2dX1s25zvz+pdr9fDcRyM8cin2tQs1wWLYkmWS+ZZeoxMSbKUKI6PCH/VKCJNU/I8x/A8j6qukLkkW+TIdcF8sSCMQsIwIAgDXXU/mxEEwe/MZsRxrDG84ZBytaIoCs1yuaSQkoXMybIMKSXz+Zw4TXUSJQjD8Aj1LEkSjeF7Hi9vb3lxfc1ms6EsSy6Lgsuy1CIlVTVJU6J/EQ4GA57XV9R1pdOtVNr1WqdVvRKme1l4kAV/FrquS7FeIWWmhzMpkXmu5WrJWqSG9oN3MdvvMEliDN/32e12bLdbtjc3XFU1dV3r318VBXMpiePosPS7iPa3rDD6/T7T6ZTReMzI95lMJqibHw6HmouLi0P/N1SwZ0/HGJZl0Wq1aLfbBzqdzn9x/57FT+YGanNM+bYTAAAAAElFTkSuQmCC","aspectRatio":1.7857142857142858,"src":"/static/c92a463fd4127c4abbf9869ca1d5bc97/0a74d/the-timeout-beat-matching.png","srcSet":"/static/c92a463fd4127c4abbf9869ca1d5bc97/ba958/the-timeout-beat-matching.png 75w,\n/static/c92a463fd4127c4abbf9869ca1d5bc97/89761/the-timeout-beat-matching.png 150w,\n/static/c92a463fd4127c4abbf9869ca1d5bc97/0a74d/the-timeout-beat-matching.png 300w,\n/static/c92a463fd4127c4abbf9869ca1d5bc97/5498c/the-timeout-beat-matching.png 450w,\n/static/c92a463fd4127c4abbf9869ca1d5bc97/fa42c/the-timeout-beat-matching.png 600w,\n/static/c92a463fd4127c4abbf9869ca1d5bc97/99f97/the-timeout-beat-matching.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}},{"height":9,"id":"the-timeout-seriously","src":"images/portfolio/the-timeout-seriously.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAAB3klEQVQoz63QS2/aQBSGYe/KjD3Gg/oXUCKVACZpCRSDr4CxMZCEpGk3Ve9SpapSF12ll03/9lvZoKjposqii0dHczTzzcwxHK1paM2DvRsh+C4En6TkqxD8FIIPUvJDiGq9tixGts1L0+RXrYapNTWt0XuGdhxsrbkyTT5LyTsp+SYE76XktZR8EYJXUvJGSt7uex+l5KZW44VpVhdcmia241BmGdrRWI7DRKkqNLcsnpkmhWWRKsXzqtqcK8VSKTZKcV32lcKr1zlTiti2cRqN6qfGsdthtcwYz1NGsxlRtsBfLhnHMU88j643wn063BkNaQ8HPOqf0jo9pdvv09kbDgYcHB5i9B8fc3V1yaooON9suLy4YHt2xkWes1ksSOdTprOkMpsnREFA6Pt3BJMJURRxdHSE0e12yZYZySwhnsZV9QMfPwrwQ78yHo//yfM8giCg1WphuD2XYl1UQfPFnDRLieKIKIkIo7ASRAFhHDKZTKqAsv6p7IVhuAvsHfdYb9aki5RFNicvcqaz6e3G+7jzwpOTE7bbLatVwTLPyPKcNM+Jk5hkmuxGkcS3tTz4N9/3ieN4N8Nms4nrurTbbTqdzq1ytvdV7u/1ehweNDHq9Tq2bf8XDxsOvwF93Fup9PE3LgAAAABJRU5ErkJggg==","aspectRatio":1.7857142857142858,"src":"/static/0217b7bb12b7a90cee9ba7447a6ada1e/0a74d/the-timeout-seriously.png","srcSet":"/static/0217b7bb12b7a90cee9ba7447a6ada1e/ba958/the-timeout-seriously.png 75w,\n/static/0217b7bb12b7a90cee9ba7447a6ada1e/89761/the-timeout-seriously.png 150w,\n/static/0217b7bb12b7a90cee9ba7447a6ada1e/0a74d/the-timeout-seriously.png 300w,\n/static/0217b7bb12b7a90cee9ba7447a6ada1e/5498c/the-timeout-seriously.png 450w,\n/static/0217b7bb12b7a90cee9ba7447a6ada1e/fa42c/the-timeout-seriously.png 600w,\n/static/0217b7bb12b7a90cee9ba7447a6ada1e/99f97/the-timeout-seriously.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}}]},{"company":"charmCityJS, November 2017","description":["This talk was a response to that whole thing where Facebook changed up the licensing of React (and other projects) in a way that created a lot of confusion about people's liability. Many people working in software have only a cursory knowledge of how software IP works, so it felt like a good time to review the basics of IP law and how it affects us. In a blistering 25 minutes I rampaged through the concepts of Copyright, Fair Use, Licenses, Patents, Patent Grants and then the issues surrounding Facebook's actions and what they meant (spoiler: it's a bit unclear but it might be fine but I am not your lawyer).","I also yelled the entire 3rd paragraph of the MIT license at 70 people."],"id":"4b7226d7-b546-5b35-adbd-5c863fda18a2","title":"Copywhat? Licenses, Patents and that Weird React Thing","url":"https://chrisuehlinger.com/Copywhat","clips":[{"height":9,"id":"copywhat-title","src":"images/portfolio/copywhat-title.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAABNUlEQVQoz61S226CUBDkOxCEc6gXlEsVHkhsYgwk+ABFUxoebNFG4///wTS7CQQN+uTDZDezs3NmA4qUEq+Eck8IIdresqy2dtGn7TVsBIZhYDgcQtM06LqOwWAAVVUZ1NOs0d6bKl2SXiezMAxRVRXO5zOOxyPqusb1esXhcMDlcuHZYrGAaZq80zVVui+RgFI5joMsy7Df7xFFEXa7HaMoCuY3mw0bUXoK0OwTbhKuVivkec6LtLRer5EkCeI45p440my3W6RpirIseX6TsGtIyeiUIAi4p6X69wfFZ47v8gt/pxMbu64L3/dZ53ne45Obj0Ggcyb2DMvoA/P3EHN/yf3UnrWnku7pyfcwhYRhjSDGNuRoCuNtwtyzX01pnPsgpYCkKkwIYXKVT/RtwlfBGk/xD9woRnnKnLOcAAAAAElFTkSuQmCC","aspectRatio":1.7857142857142858,"src":"/static/9a55780c280b0d5c7b144b93566326ae/0a74d/copywhat-title.png","srcSet":"/static/9a55780c280b0d5c7b144b93566326ae/ba958/copywhat-title.png 75w,\n/static/9a55780c280b0d5c7b144b93566326ae/89761/copywhat-title.png 150w,\n/static/9a55780c280b0d5c7b144b93566326ae/0a74d/copywhat-title.png 300w,\n/static/9a55780c280b0d5c7b144b93566326ae/5498c/copywhat-title.png 450w,\n/static/9a55780c280b0d5c7b144b93566326ae/fa42c/copywhat-title.png 600w,\n/static/9a55780c280b0d5c7b144b93566326ae/99f97/copywhat-title.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}},{"height":9,"id":"copywhat-constitution","src":"images/portfolio/copywhat-constitution.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAABXklEQVQoz31S226CQBTkO2q5ri1ggqDGK2qMxoB346MJvPQ/+tbvnmZOslYF+zA5Z9mZObPsGp7ngXBdF7rX61arhW63iyRJEMexgN/quLo37j+wOo4j1TRNTKdTFEWBy+WC6/WKsiwxHA5ljzzbth+0N0OChCAI0Ov1JBWFnU4HURTJOgxDWevE5A0GA9FQ+5BQT2g2myIcjUaYz+eC2Wwm0D1rmqYYj8cyTCn1+sicRMJyucRms8HxeJS63++x2+2kPxwOyPNcOOTqdJUj36dkEgppsl6vsd1uxURX7i0Wi0q6iqEGj8R0q9UK5/MZWZbdEtKQiTm0TlubsN/vi5hmBBPRhAlPp5MM4IW8SKjgKQVWbciba7fbcgF8OpPJRMDkrLwM3/eFe/9sCMMxG3DMN7i2+bDBn21Zlry1Z2jOLRn7Dx/qM4QRl99Ivn4Q5gWs90atwX/g0L/BDn4BT51QvxPVbawAAAAASUVORK5CYII=","aspectRatio":1.7857142857142858,"src":"/static/7a07fb63e659702e82536f2c077306b4/0a74d/copywhat-constitution.png","srcSet":"/static/7a07fb63e659702e82536f2c077306b4/ba958/copywhat-constitution.png 75w,\n/static/7a07fb63e659702e82536f2c077306b4/89761/copywhat-constitution.png 150w,\n/static/7a07fb63e659702e82536f2c077306b4/0a74d/copywhat-constitution.png 300w,\n/static/7a07fb63e659702e82536f2c077306b4/5498c/copywhat-constitution.png 450w,\n/static/7a07fb63e659702e82536f2c077306b4/fa42c/copywhat-constitution.png 600w,\n/static/7a07fb63e659702e82536f2c077306b4/99f97/copywhat-constitution.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}},{"height":9,"id":"copywhat-hold-on","src":"images/portfolio/copywhat-hold-on.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAACc0lEQVQoz2WTS08TURiGu6BdUEug9DYt09vMtNObRdpGjY0ao4kRGwwxulMSF7YruuiSWExI/wB/ARMJrFjgCnFnQEJjCSmJNGAsaKEQIIXaG685H4FEmOTJzMmZec57vu+Mwul0wuFwwO12IxgM4kbvdYT6ehHwe9Hf/wTDw8NIJBKIx+MYGhqCJEmwWq2w2WyE3W6n789RsBd0Oh1SqRRKpRK+La9hMbuOxdw61n4UMDf3GbOznzA/P4/x8XH4fD74/X4EAgF69ng8tAiDhSNhV1cXxsbGwK7NP1VsbB3j504VlWodzwdjkCUzZLcLTqdAKQRBIFg6i8UCvV5PY+YioVarxejoKAmPTyrYK++icnSIg8Mj3L0ThlajQEfHNajV6itoNBq0t7eD5/lLwvdnwlq9hu1SGb+2S9jYLOLF4D34vXZIkhuiKFISk8lEqRisXN3d3ZSczV8I0+k0CRuNBvb3yijv7uD39hYeP30GrscOjuOgN+hhNBovMBgMJL0iZDXMZDIkrNfrWC2UsLBaRL5QRCgcgbrTAE2nFsq2NqhUqguUSiVt+78tsy2wQTQaxcjICElzxRq+rO6jfFDB23gc9x88ws1btxEOh9EXCtM9FAohEolQCVhSlo4Sss6JogQTx8Hr8yGbzWJxeQVfl74jl1vBwtIy8vk8Tqp/0To9Rb3RRLPZRKvVosWTySR1Wpbls3Po4C2w82Y4rT0QbDwEhw0uSYRbEuFyuegQx2IxTE1N4cPEBCYnP2J6epqYmZnBwMAANUkQJQguGYrg6zSIV+/Q+yYD+eFL8GYOvNVGMobZbKbGXYbVns2d/zWMfx1wu3jlhHJaAAAAAElFTkSuQmCC","aspectRatio":1.7857142857142858,"src":"/static/bdb70521f2491d1292983f6ce570aa5f/0a74d/copywhat-hold-on.png","srcSet":"/static/bdb70521f2491d1292983f6ce570aa5f/ba958/copywhat-hold-on.png 75w,\n/static/bdb70521f2491d1292983f6ce570aa5f/89761/copywhat-hold-on.png 150w,\n/static/bdb70521f2491d1292983f6ce570aa5f/0a74d/copywhat-hold-on.png 300w,\n/static/bdb70521f2491d1292983f6ce570aa5f/5498c/copywhat-hold-on.png 450w,\n/static/bdb70521f2491d1292983f6ce570aa5f/fa42c/copywhat-hold-on.png 600w,\n/static/bdb70521f2491d1292983f6ce570aa5f/99f97/copywhat-hold-on.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}},{"height":9,"id":"copywhat-didnt-like","src":"images/portfolio/copywhat-didnt-like.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAACPElEQVQoz3WSy07bQBSG8xC5lMaIJIAUqV10idqUxokQmyiJxCVAkOgrdN9FX6HvULXwAF20WxZ9AarCqiAFim/jjGNiO7evmkGp1JulX+P/+Jxv/iM5VSqVUCoWi6yurtJoNOh0Olq7u7t0u12azSZbW1scHh5ydHSkazs7OxwcHOgZNTvnpOamUCjwIJcjk06TzWbZ2NjQQ9VqlbW1NVqtlq5tbm5Sr9fJZDJkMmlyuZyenYdKzWHlcplGq0VTqdmks7enE21vb+uk+/v7+l1dotKrnla7Tbvd1rNzaGp5eZm8YVAzTW5Ov+B+v8IPAmzbwXU9pJRIGSCEjxBCe+H7RHGMeqbTKbVajXw+j2JpoLG4yPNnTzn79BHpCuQgJAyHRPGIYZQwGo8ZTyaMJ1NG44nWMIqYzWbEcYxpmn8ADYPqi3Ws2x6+DJDBgPBOAROdZKjAiYLEJKORvkClvgcmfwOVUbFVCtu2sSwLz/NwXRfHUasLXCH1N+F5JElCFEV65X8mVEYVVZPfl1i2i+14v07HFdiOi+UIhAyZTKcMBuF/gCsr5I1FzFpdr+T6A65vPW4sj2tL0Lu9P68tD0cEGqj6+jLQQJX2N2BpyeBhNo25XmE2jvFdmx+9HtIXxKHkLvCJQkkcBkSDPsOgz3QU4QuB6/kMwjv9hxhLBVbKj0g9efmGx93XmK/ecnKe8P7rkHdnQ47PRxyfx3z4Fuu6kvInqnYx4fOFz02vx+XlFZVKhYWFBQqFIj8BTT5XW+4bkeEAAAAASUVORK5CYII=","aspectRatio":1.7857142857142858,"src":"/static/fdd595cfa954762a6b1d8f3d8564c1a6/0a74d/copywhat-didnt-like.png","srcSet":"/static/fdd595cfa954762a6b1d8f3d8564c1a6/ba958/copywhat-didnt-like.png 75w,\n/static/fdd595cfa954762a6b1d8f3d8564c1a6/89761/copywhat-didnt-like.png 150w,\n/static/fdd595cfa954762a6b1d8f3d8564c1a6/0a74d/copywhat-didnt-like.png 300w,\n/static/fdd595cfa954762a6b1d8f3d8564c1a6/5498c/copywhat-didnt-like.png 450w,\n/static/fdd595cfa954762a6b1d8f3d8564c1a6/fa42c/copywhat-didnt-like.png 600w,\n/static/fdd595cfa954762a6b1d8f3d8564c1a6/99f97/copywhat-didnt-like.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}}]},{"company":"charmCityJS, February 2017","description":["D3 is an incredible tool that many developers find intimidating at first. This talk was a basic tutorial in making a bar chart in D3, but with a focus on how you don't need to understand all of D3 in order to be very proficient in using it. I also highlighted the awesome amount of examples on bl.ocks.org and how you could use them as both inspiration and as a starting point for your own visualizations."],"id":"d5449fc5-c880-5e01-90ff-6175fb017238","title":"Introduction to D3.js","url":"https://chrisuehlinger.com/charmcity-d3","clips":[{"height":9,"id":"d3-intro-title","src":"https://cdn.chrisuehlinger.com/show-videos/intro-d3-title.mp4","type":"video","width":16,"image":null},{"height":9,"id":"d3-modules","src":"https://cdn.chrisuehlinger.com/show-videos/d3-modules.mp4","type":"video","width":16,"image":null}]},{"company":"charmCityJS, December 2016","description":["This talk was a brief intro to working with Three.js. I began with a supercut of some of the amazing stuff the community has made and then went on to a walkthrough of the official Three.js tutorial, showing the results of each step and explaining how each of the new vocabulary terms (Geometry, Materials, Textures, etc.) relate to each other."],"id":"714c0287-7c79-5bab-8a26-884709f7f7a3","title":"Three.js and WebGL","url":"https://chrisuehlinger.com/ThreeJsTalk","clips":[{"height":9,"id":"threejs-talk-title","src":"images/portfolio/threejs-talk-title.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAAA+UlEQVQoz7VSuYqFQBD0P7wPvEUjI1HEI9HMQPADjIxEEPz5WnpgZPZdwfI2KKet6a6p6WnJsix8ExIPTNP8s4hYK9EPJwzDgK7rN4gnjoM4MYdiXsvXXw49z0Mcx4iiCEmSwHEc+L4P13URBAHCMGQr7RMo/8khfWzbhqIo6Pse27YxnOeJtm2xLAvmecZxHFjXFdM04bou7PvO8qqqgqqqTOO+sngK30jTFE3ToCgKlGXJCimu6xp5nrMc7v7J4aOopmnIsgzDMDABckroug7jODJBcsV7/LaH4stR02VZZq0QQRwd+PaVP40BXf8VPo2Z9G+D/S3BHwieQnv2OW0IAAAAAElFTkSuQmCC","aspectRatio":1.7857142857142858,"src":"/static/49a2088000df3be86444c43ca174ea50/0a74d/threejs-talk-title.png","srcSet":"/static/49a2088000df3be86444c43ca174ea50/ba958/threejs-talk-title.png 75w,\n/static/49a2088000df3be86444c43ca174ea50/89761/threejs-talk-title.png 150w,\n/static/49a2088000df3be86444c43ca174ea50/0a74d/threejs-talk-title.png 300w,\n/static/49a2088000df3be86444c43ca174ea50/5498c/threejs-talk-title.png 450w,\n/static/49a2088000df3be86444c43ca174ea50/fa42c/threejs-talk-title.png 600w,\n/static/49a2088000df3be86444c43ca174ea50/99f97/threejs-talk-title.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}},{"height":9,"id":"threejs-talk-nothanks","src":"images/portfolio/threejs-talk-nothanks.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAACN0lEQVQoz32Sy0sbURSHJ51YJi9rJKmZJph5JRZKhSCV4qIdfFSCVEIL2QlBcOPKVV11oZS4MAj9A0JAhIpSkW66iyBClSwCrS8Q3PhYKKUuBCFRvjLTRpIWvHDu73C55+O8BFVV0TQNSyORCOFw+E5rj0SQo1Hcfj/P/H7iskxU09BU1WYINaCiKIiiiCAIDeZwOGy9Z5nTaftOQWCis5OrhQXed3fTEgoRN4y7gS6X6xbmrHt/7ffzPZeD01NYW+NidJTngQCPDAO9HmipBZAkCdM0SafTvEmlaA4GbdBTQeDL+Djs7MDhIdWJCa7m52F1la8jI4Tb2tANoxFoBSYSCd6mUvQNDvJqeJhUIsFsby/VjQ04OuKmUKA6NsZ1Pv8ny91dltNpYrKMWg+0Sm4SRV6YJi+TSfq7uvg4NMSvpSU4PoZikcrkJJWZGdjbg7Mzvk1N0e/x8DAQsGFafcm6ptkZtrW2Mp1Msjc3B+fnsLxMJZ+nMj0N6+twecnPlRVm+vqQ/vZV1/XGKVuwiKLwRJL4lMnA/r4dfF0uUy2VuCmVsE5lc5NZ08RoauJBKIRTkrgvinZ1t22zrphh4Jdl3nV0wNYW1UKB62yW6uKiDeLggM+ZDI//WanaWv0HtDJsV1VaXS5+DAxANgvlMpycsJvLkZZlHNYeejw8aG7G5/Xi9Xpxu934fD4aBltzYrpOUFEYi8Vge5uLYpEPPT3oLS0Eo1Fi8bj9R9N1u2c1s+JrDEt/A4aCmISz192zAAAAAElFTkSuQmCC","aspectRatio":1.7857142857142858,"src":"/static/09e487eaee7fb89e2a0927a72b2640b2/0a74d/threejs-talk-nothanks.png","srcSet":"/static/09e487eaee7fb89e2a0927a72b2640b2/ba958/threejs-talk-nothanks.png 75w,\n/static/09e487eaee7fb89e2a0927a72b2640b2/89761/threejs-talk-nothanks.png 150w,\n/static/09e487eaee7fb89e2a0927a72b2640b2/0a74d/threejs-talk-nothanks.png 300w,\n/static/09e487eaee7fb89e2a0927a72b2640b2/5498c/threejs-talk-nothanks.png 450w,\n/static/09e487eaee7fb89e2a0927a72b2640b2/fa42c/threejs-talk-nothanks.png 600w,\n/static/09e487eaee7fb89e2a0927a72b2640b2/99f97/threejs-talk-nothanks.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}},{"height":9,"id":"threejs-talk-vr","src":"images/portfolio/threejs-talk-vr.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAABVklEQVQoz5WSwUvDMBTGm7TOsbl1rTMtbJGmHQOlzlYZFjfcQAaKm6xQdHpSD948ePLP/ySRlSoruMPHe2ne90vy+jTf9yGEgIxBEKDX66l1FEVYrVbIsgzz+VzFNE1VHsexqpG10lNkaOtERsuy0Gw20TJN2LYFxpiS4zgquq4Lxg5UnWmaqlbmRUYO9DwPhBBomraVpEd6NwJ1XQclBH6njWPhgrMWDJ3m5lq1gj5nas+x9tQ36dkIFELekKJi6Ph8nuF9OcLjdYx9s5YDD10bXy83eL27wP04hE4JKKUlQPlk+gNMr0KkkwE+HqZom/Uc6NoNZNMBnmbneFtcghBNAUXZkw3DUEVn/Q4W4xPcJkdo1HZzYL26g1HoYTk5xSQKVHukp7SH2/6QtUp6KMA5R7fbBZfiPF8X9XdPxl9jUxzK4XCIJEm2kvSUDnbx1P9o0w2/AchpJXvJnd/TAAAAAElFTkSuQmCC","aspectRatio":1.7857142857142858,"src":"/static/8575578f86ac6f1ced3953c7f4109145/0a74d/threejs-talk-vr.png","srcSet":"/static/8575578f86ac6f1ced3953c7f4109145/ba958/threejs-talk-vr.png 75w,\n/static/8575578f86ac6f1ced3953c7f4109145/89761/threejs-talk-vr.png 150w,\n/static/8575578f86ac6f1ced3953c7f4109145/0a74d/threejs-talk-vr.png 300w,\n/static/8575578f86ac6f1ced3953c7f4109145/5498c/threejs-talk-vr.png 450w,\n/static/8575578f86ac6f1ced3953c7f4109145/fa42c/threejs-talk-vr.png 600w,\n/static/8575578f86ac6f1ced3953c7f4109145/99f97/threejs-talk-vr.png 2560w","sizes":"(max-width: 300px) 100vw, 300px"}}}}]},{"company":"charmCityJS, March 2016","description":["<p>This is a talk I've given at charmCityJS and the Loyola University ACM series (<a href=\"https://www.youtube.com/watch?v=ljJVzaW8xuk\">which was recorded</a>). It's about my experience teaching programming in Thailand, and some of the lessons I learned that helped me become a better teacher and communicator.</p>\n"],"id":"a89be1a1-19e1-546f-bb91-0894376c263d","title":"Teaching JavaScript as a Foreign Language","url":"https://chrisuehlinger.com/TJFL","clips":[{"height":9,"id":"tjfl-slide","src":"images/tjfl.png","type":"image","width":16,"image":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAABYlAAAWJQFJUiTwAAACpklEQVQ4y0WT6XbaWBCE9ThzkthsAm1XG1otECGAMWAgsWMwYIyXk5l5/G+OGifzo3R1patSV3W19umixkW9Rb3Vodm2aJsOhu1hqQDH66L8CBWc4fhdbDfEdHw6lotu2DR0g8uGzufLBn99vkT7UmsIWatj0bEUpvLPREGMI2Qx7gfOxOfVcgP5sW46NHRTSD9d1NGqm1qzTbNtykvD8bDcEK+bMpktmc5XTBdrrucrJrNb4ryP7YVypqqy2bGotTpC+KXWRKsqGwzHFOWQ4XjK5GbBze2a+fIHTy/vHE5vbHZHWbf7Z9b3G2bL70xubuXs6HpGORwTZ4VYp1UeOF6IFyZ00yvSYkAxGAny8hvfpgseHp9YrO//PO99HZMVA6k2THK8MBZll402Wl03xAPdcMRsN0xQQcJwMmN1t2F9v+VhdxRU+8qGMLkSSyrpHduVZtZbhvRCq9jH0xnj6fxDxi3L7z+53+x5fv0leP31Ly/v/3B6+/ss+27DfPVDpI+mc/k2K0rpuFbFxA0iKT3KemS9AZv9ke3hmbvtnu3hxO74ys/HJ/bPr9xtdjw+nRjfLIjzntjkd1Ms5Z8rrFhFru1LTPwoI8lLxtMlD9sj292Jw/Gdx8MLh+Mbq/WGrBgSp33cIMFWXdqW+pD9m9Cy0UMHM/LxkgRVxITDK/LFkP58Qrm8ZrCYMlhck85L3F6CU3Sx0gA9sSWPVVqq+GkSasNCdx0sP6DVt7B7IcbQw+unBIMcNYpxRhHqa4Q9qN656KVNszBpB4q2qSTHVRYl2NWmY56npJ0oVBzhZol4Gl/1CcoMv8wIipwgy1FphBUHdEKFafm0DFvkXtSbaNXl/9FzsZ0Q5UV4YSp+BnFONy4EQZRLA1w/xnG74ruM3kd11Tz/B3RT2V8/npIRAAAAAElFTkSuQmCC","aspectRatio":1.530612244897959,"src":"/static/c3408b3e84ec22ab6a0cf00b910e2c5e/0a74d/tjfl.png","srcSet":"/static/c3408b3e84ec22ab6a0cf00b910e2c5e/ba958/tjfl.png 75w,\n/static/c3408b3e84ec22ab6a0cf00b910e2c5e/89761/tjfl.png 150w,\n/static/c3408b3e84ec22ab6a0cf00b910e2c5e/0a74d/tjfl.png 300w,\n/static/c3408b3e84ec22ab6a0cf00b910e2c5e/5498c/tjfl.png 450w,\n/static/c3408b3e84ec22ab6a0cf00b910e2c5e/fa42c/tjfl.png 600w,\n/static/c3408b3e84ec22ab6a0cf00b910e2c5e/4ce6a/tjfl.png 1920w","sizes":"(max-width: 300px) 100vw, 300px"}}}}]}]}}}