<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Stephanie Lage Frantz</title>
    <description>The latest articles on DEV Community by Stephanie Lage Frantz (@thehandsomezebra).</description>
    <link>https://dev.to/thehandsomezebra</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F259483%2F4a7cf4b5-c25c-40cb-9507-6363bfe2ac6c.png</url>
      <title>DEV Community: Stephanie Lage Frantz</title>
      <link>https://dev.to/thehandsomezebra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thehandsomezebra"/>
    <language>en</language>
    <item>
      <title>Creating a Hello World Resource Type for Concourse</title>
      <dc:creator>Stephanie Lage Frantz</dc:creator>
      <pubDate>Sat, 20 Feb 2021 16:38:49 +0000</pubDate>
      <link>https://dev.to/thehandsomezebra/creating-a-hello-world-resource-type-for-concourse-di7</link>
      <guid>https://dev.to/thehandsomezebra/creating-a-hello-world-resource-type-for-concourse-di7</guid>
      <description>&lt;h2&gt;
  
  
  What is Concourse?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Concourse is an open-source continuous thing-doer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Concourse is a CI/CD tool that is configurable with a simple YAML file.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ygRHbIko--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlkj49f3cvi4tkt7rl89.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ygRHbIko--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlkj49f3cvi4tkt7rl89.png" alt="screenshot of the pipelines" width="620" height="996"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Walkthrough
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Pre-Requisities
&lt;/h3&gt;

&lt;p&gt;Follow the steps on &lt;a href="https://concourse-ci.org/"&gt;https://concourse-ci.org/&lt;/a&gt; to install Fly &amp;amp; Concourse.&lt;br&gt;
If this is your first time checking out Concourse, I would highly recommend reviewing the tutorials &amp;amp; docs they have posted.&lt;/p&gt;
&lt;h3&gt;
  
  
  Exploring a basic Resource Type
&lt;/h3&gt;

&lt;p&gt;You can follow along using or (fork my repo)[&lt;a href="https://github.com/thehandsomezebra/concourse-resourcetype-helloworld"&gt;https://github.com/thehandsomezebra/concourse-resourcetype-helloworld&lt;/a&gt;].&lt;/p&gt;

&lt;p&gt;A concourse &lt;code&gt;resource_type&lt;/code&gt; works well using a minimum of 4 files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-- resource
|   +-- check
|   +-- in
|   +-- out
+-- Dockerfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each of the scripts are required to have the output of its execution in json appropriate format.&lt;/p&gt;

&lt;p&gt;Let's walk thru each file at a high level and get everything set up!&lt;/p&gt;




&lt;h3&gt;
  
  
  check
&lt;/h3&gt;

&lt;p&gt;The check file is going to check for new versions.&lt;/p&gt;

&lt;p&gt;The check script we will report back a message of Hello World.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
set -eu
set -o pipefail
echo '[{ "revision": "N/A",  "message": "The check script says Hello World!" }]'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  in
&lt;/h3&gt;

&lt;p&gt;This fetches the given resource.&lt;/p&gt;

&lt;p&gt;For the In script, let's add some metadata.  This metadata will be viewable in a few places in the pipeline.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
set -eu
set -o pipefail
echo '{ "version": { "revision": "N/A", "message": "The in script version message says Hello World" }, "metadata": [{ "name": "message", "value": "The in script metadata message says Hello World." }] }'

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  out
&lt;/h3&gt;

&lt;p&gt;For the Out script, let's get a little more complex.  We'll be getting a variable &lt;code&gt;greeting&lt;/code&gt; from the pipeline, and let's echo it out.&lt;br&gt;
We'll be using jq to grab it from the params that get passed via the pipeline.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
echo '{ "version": { "revision": "N/A", "message": "The out script version message says Hello World" }, "metadata": [{ "name": "message", "value": "The out script metadata message says Hello World." }] }'

set -e -u

exec 3&amp;gt;&amp;amp;1 # make stdout available as fd 3 for the result
exec 1&amp;gt;&amp;amp;2 # redirect all output to stderr for logging

echo "Echo says hi from the out script!" &amp;gt;&amp;amp;2

source=$1

if [[ -z "$source" ]]; then
  echo "usage: $0 &amp;lt;path/to/source&amp;gt;"
  exit 1
fi

# for jq
PATH=/usr/local/bin:$PATH

export TMPDIR=${TMPDIR:-/tmp/rclone}
mkdir -p "${TMPDIR}"

payload=$(mktemp "$TMPDIR/resource-request.XXXXXX")
cat &amp;gt; "$payload" &amp;lt;&amp;amp;0

greeting=$(jq -r '.params.greeting // ""' &amp;lt; "$payload")
echo "Param greeting says: $greeting" &amp;gt;&amp;amp;2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Dockerfile
&lt;/h3&gt;

&lt;p&gt;This Dockerfile will be short and sweet. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spins up a tiny Alpine Linux instance&lt;/li&gt;
&lt;li&gt;Loads in bash &amp;amp; jq&lt;/li&gt;
&lt;li&gt;Adds in our script files to the /opt/resource folder&lt;/li&gt;
&lt;li&gt;Makes those files executable &lt;/li&gt;
&lt;li&gt;Specifies that we will be running bash in root
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM alpine:3.13

RUN apk add --update --upgrade --no-cache bash

RUN apk update \
    &amp;amp;&amp;amp; apk upgrade \
    &amp;amp;&amp;amp; apk add --update bash curl unzip jq

ADD resource/ /opt/resource/
RUN chmod +x /opt/resource/*

WORKDIR /
ENTRYPOINT ["/bin/bash"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  One last file to get it running: the pipeline yaml file
&lt;/h3&gt;

&lt;p&gt;This file does not need to be in the docker - but it's inluded in my repo, so you can follow along.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create a file called hello-pipeline.yml&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resource_types:
- name: helloworld
  type: docker-image
  source:
    # set repo of your helloworld resource
    #repository: Your-Docker-Acct/Your-Docker-Repository
    ## or use my helloworld resource
    repository: thehandsomezebra/concourse-test

resources:
- name: helloworld
  type: helloworld

jobs:
- name: hello-job
  plan:
  - get: helloworld
  - put: put-helloworld
    resource: helloworld
    inputs:
         - helloworld
    params:
      greeting: "Hey y'all!"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is going to create a new pipeline called hello-job that will &lt;code&gt;get&lt;/code&gt; the &lt;code&gt;in&lt;/code&gt; and &lt;code&gt;put&lt;/code&gt; the &lt;code&gt;out&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Get it running
&lt;/h1&gt;

&lt;p&gt;Following the steps above, create a github repo (&lt;a href="https://github.com/thehandsomezebra/concourse-resourcetype-helloworld"&gt;or fork mine&lt;/a&gt;) &amp;amp; create a docker hub repo. It's fast to connect your github repo to docker and even set it up to autobuild (&lt;a href="https://docs.docker.com/docker-hub/builds/"&gt;learn more about that here&lt;/a&gt;)).&lt;/p&gt;

&lt;p&gt;Once your repo is ready in Docker Hub, let's start the concourse pipeline by using this line&lt;/p&gt;

&lt;p&gt;Let's start the hello-world pipeline!&lt;br&gt;
Run the following in your terminal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fly -t ci set-pipeline -c hello-pipeline.yml -p hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;&lt;code&gt;ci&lt;/code&gt; will be the name of your target (if you followed a the tutorial, it might be named &lt;code&gt;tutorial&lt;/code&gt; or &lt;code&gt;example&lt;/code&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If we look at the pipeline diagram, we can also see the result of the &lt;code&gt;check&lt;/code&gt; step in the box with the dashed lines (dependency - trigger).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xt6CGzId--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/screenshot2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xt6CGzId--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/screenshot2.png" alt="screenshot showing the pipeline diagram" width="880" height="91"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Checking our job, we can see our messages in each of the stages.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KKuDKJhN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/screenshot1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KKuDKJhN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/screenshot1.png" alt="screenshot showing each of the stages in the job" width="880" height="1091"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's a lot you can do creating your own resource types for concourse - be sure to &lt;a href="https://resource-types.concourse-ci.org/"&gt;check out the Resource Types catalog&lt;/a&gt;, &lt;a href="https://github.com/concourse/resource-types/blob/master/README.md"&gt;contribute to the community&lt;/a&gt; and get assistance (or lurk thru questions that have been already answered) in &lt;a href="https://discord.gg/MeRxXKW"&gt;Discord in the #resource-types channel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: I'm not affiliated with Concourse - I am just a nerd that is fascinated by the continuous thing-doer continuously doing things.&lt;/em&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  Sources:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://concourse-ci.org/implementing-resource-types.html"&gt;https://concourse-ci.org/implementing-resource-types.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/concourse/resource-types/blob/master/README.md"&gt;https://github.com/concourse/resource-types/blob/master/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/concourse/concourse/wiki/Tutorials"&gt;https://github.com/concourse/concourse/wiki/Tutorials&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>docker</category>
      <category>concourse</category>
      <category>helloworld</category>
    </item>
    <item>
      <title>Gotta Go Fast: Playing YouTube Videos Faster</title>
      <dc:creator>Stephanie Lage Frantz</dc:creator>
      <pubDate>Thu, 04 Feb 2021 01:10:17 +0000</pubDate>
      <link>https://dev.to/thehandsomezebra/gotta-go-fast-playing-youtube-videos-faster-fof</link>
      <guid>https://dev.to/thehandsomezebra/gotta-go-fast-playing-youtube-videos-faster-fof</guid>
      <description>&lt;p&gt;Do you enjoy consuming your media at 3x or 4x speed and you're bummed that you can only speed up your YouTube videos up to 2x?&lt;br&gt;
Many people choose learning in an online, self-paced environment.  I find myself frequently diving into training at 2.5x or 3x speed -- and I've found it dissapointing that YouTube tops out at only 2x speeds.  &lt;/p&gt;

&lt;p&gt;This Chrome Bookmarklet will help you speed up your YouTube video beyond the 2x speed limit!&lt;/p&gt;
&lt;h2&gt;
  
  
  Gotta Go Fast
&lt;/h2&gt;

&lt;p&gt;This is a Bookmarklet for Chrome and may not be suitable in other browsers.  Your mileage may vary.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Right click on the bookmark bar.&lt;/li&gt;
&lt;li&gt;Click "Add page..."&lt;/li&gt;
&lt;li&gt;Name: "Play 3X Speed"&lt;/li&gt;
&lt;li&gt;In the URL bar, paste this:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javascript:(function(){document.getElementsByTagName("video")[0].playbackRate = 3})();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Freadthis.info%2Fassets%2F2021-02-03_19h58_12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Freadthis.info%2Fassets%2F2021-02-03_19h58_12.png" alt="2021-02-03_19h58_12.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click Save.&lt;/li&gt;
&lt;li&gt;Next time you watch a youtube video, click this bookmark and it'll speed up to 3X.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you'd like a different variable, you can change the &lt;code&gt;playbackRate =&lt;/code&gt; number to something other than 3.  You can try .25 or .5 increments, too!&lt;/p&gt;
&lt;h3&gt;
  
  
  Alternatives
&lt;/h3&gt;

&lt;p&gt;If you like this idea, but you'd like a little more flexibility, you can use this code to ask for a prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javascript:(function(){document.getElementsByTagName("video")[0].playbackRate = prompt("Please enter the speed you wish to watch the video", "1")})();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Other Notes
&lt;/h4&gt;

&lt;p&gt;The YouTube video GUI will not update with the new speed, but as soon as you adjust it to a different value, it will return to normal functionality.&lt;/p&gt;

&lt;p&gt;😃  I hope this helps someone out there who likes to go fast!&lt;/p&gt;

</description>
      <category>youtube</category>
      <category>bookmarklet</category>
      <category>chrome</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Getting Started with ESP8266: Blink</title>
      <dc:creator>Stephanie Lage Frantz</dc:creator>
      <pubDate>Sat, 07 Mar 2020 05:50:43 +0000</pubDate>
      <link>https://dev.to/thehandsomezebra/getting-started-with-esp8266-blink-2b60</link>
      <guid>https://dev.to/thehandsomezebra/getting-started-with-esp8266-blink-2b60</guid>
      <description>&lt;p&gt;There's a lot of different resources out there in terms of how to get started with Arduinos, ESP8266, Home Automation, and more: but this data is rarely in one place. My goal with this series is to get up and running and using the ESP8266 for the first time. I will explore how to make connections to other web services and do a some home-automation in my own real-world exercises. Thanks for joining me!&lt;/p&gt;

&lt;p&gt;I am using the ESP8266 development board. I got this one on ebay, you can try searching terms like "ESP8266 Development Board" or "ESP8266 with USB". They can cost anywhere from 5 to 12 USD.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dTG3Zehw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252021-51-04.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dTG3Zehw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252021-51-04.png" alt="Screenshot from 2020-03-03 21-51-04"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 1: Install Arduino IDE
&lt;/h2&gt;

&lt;p&gt;I'm running Linux PopOS!, which is an Ubuntu-based Linux distro; your mileage may vary. Our first goal is to download the Arduino IDE. If you're running a different OS, you may follow different steps to install.&lt;/p&gt;

&lt;p&gt;For me, the first thing that I'm going to do is update the latest package lists. Open up the terminal and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Next, let's install Ubuntu Make. Ubuntu Make is a command-line tool that allows us to setup our development environment with ease. In the terminal, type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install ubuntu-make
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Next, we'll use Ubuntu Make to install the Arduino IDE software. Back in the terminal, type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;umake electronics arduino
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Once that's complete, log out and back into your computer (or just restart). We're now ready to start!&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Update Preferences in Arduino IDE
&lt;/h2&gt;

&lt;p&gt;Next, we will need to add in the Boards Manager. Open Arduino IDE and navigate to &lt;u&gt;File &amp;gt; Preferences&lt;/u&gt;.&lt;/p&gt;

&lt;p&gt;In the empty space, add in Additional Boards Manager URLs: &lt;a href="https://arduino.esp8266.com/stable/package_esp8266com_index.json"&gt;https://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: If you already have URLs here, you may separate them with commas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Qh8j-zna--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252021-30-15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qh8j-zna--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252021-30-15.png" alt="Screenshot from 2020-03-03 21-30-15"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Add the Generic ESP8266 Module Package
&lt;/h2&gt;

&lt;p&gt;Now that the library is there, let's add the ESP8266 package by navigating to &lt;u&gt;Tools &amp;gt; Board(xxx) &amp;gt; Board Manager&lt;/u&gt;. Now search &lt;strong&gt;"esp8266"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I selected the latest version to install:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q55aQIYS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252021-37-19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q55aQIYS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252021-37-19.png" alt="Screenshot from 2020-03-03 21-37-19"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once installation is complete, click &lt;u&gt;Tools &amp;gt; Board(xxx) &amp;gt; Generic ESP8266 Module&lt;/u&gt; to activate it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---01tDmAg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252021-48-04.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---01tDmAg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252021-48-04.png" alt="Screenshot from 2020-03-03 21-48-04"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Plug it in &amp;amp; Identify the Port
&lt;/h2&gt;

&lt;p&gt;Next, plug in the module via USB.&lt;/p&gt;

&lt;p&gt;We need to find out which port the module is plugged into. Open the terminal once more, and type&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dmesg
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;We'll see a stream of some of the most recent things that have happened on your system: and if the last thing you did was plug in the ESP8266 module, you'll see that at the very end.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i6nffC9f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252022-05-38.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i6nffC9f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252022-05-38.png" alt="Screenshot from 2020-03-03 22-05-38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my case, the module is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ttyUSB0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Go back into the Arduino IDE and click &lt;u&gt;Tools &amp;gt; Port&lt;/u&gt; and select the module that you identified in &lt;em&gt;dmesg&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HmkRzBlA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252022-10-02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HmkRzBlA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252022-10-02.png" alt="Screenshot from 2020-03-03 22-10-02"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Grant Access
&lt;/h2&gt;

&lt;p&gt;If you're like me, I had to do one additional step to grant perms to edit anything at that port.&lt;/p&gt;

&lt;p&gt;Back in the terminal, type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chmod a+rw /dev/ttyUSB0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This is granting Read &amp;amp; Write access to "all" users.&lt;/p&gt;

&lt;p&gt;I found that I had to provide perms every time I disconnected/reconnected it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Upload Sketch
&lt;/h2&gt;

&lt;p&gt;Here's our sketch code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*
ESP8266 Blink
Blink the blue LED on the ESP8266 module
*/&lt;/span&gt;

&lt;span class="cp"&gt;#define LED 2 //Define blinking LED pin
&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;pinMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LED&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;OUTPUT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Initialize the LED pin as an output&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// the loop function runs over and over again forever&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;digitalWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LED&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;LOW&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Turn the LED on (Note that LOW is the voltage level)&lt;/span&gt;
  &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Wait for a second&lt;/span&gt;
  &lt;span class="n"&gt;digitalWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LED&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;HIGH&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Turn the LED off by making the voltage HIGH&lt;/span&gt;
  &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Wait for two seconds&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now we're ready to click upload!&lt;/p&gt;

&lt;p&gt;Upon clicking Upload, I will get prompted to save my sketch - this is something that is saved locally for use later.&lt;/p&gt;

&lt;p&gt;As it's running, I will see the text &lt;strong&gt;"Uploadinghttps://readthis.info/"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sLcZ06RY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252022-19-34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sLcZ06RY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252022-19-34.png" alt="Screenshot from 2020-03-03 22-19-34"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some useful text that might be of interest is how much memory that we're using. This sketch appears to use 26% of program storage space.&lt;/p&gt;

&lt;p&gt;When it's done, it will say &lt;strong&gt;"Done Uploading"&lt;/strong&gt; and I will see my blinking LED!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eeMA6i55--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252022-19-52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eeMA6i55--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://readthis.info/assets/Screenshot%2520from%25202020-03-03%252022-19-52.png" alt="Screenshot from 2020-03-03 22-19-52"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vNXmA8ER--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://readthis.info/assets/blink-esp8266.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vNXmA8ER--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://readthis.info/assets/blink-esp8266.gif" alt="blink-esp8266"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>esp8266</category>
      <category>homeautomation</category>
      <category>arduinoide</category>
    </item>
    <item>
      <title>CodeMash 2020 Recap: A Newb's Highlight Reel</title>
      <dc:creator>Stephanie Lage Frantz</dc:creator>
      <pubDate>Fri, 28 Feb 2020 16:20:30 +0000</pubDate>
      <link>https://dev.to/thehandsomezebra/codemash-2020-recap-a-newb-s-highlight-reel-3hal</link>
      <guid>https://dev.to/thehandsomezebra/codemash-2020-recap-a-newb-s-highlight-reel-3hal</guid>
      <description>&lt;p&gt;It was my first time ever experiencing CodeMash: and I'd have to say: I thoroughly enjoyed every moment. I want to take this chance to present a highlight reel, as seen from a newb's perspective.&lt;/p&gt;

&lt;h2&gt;
  
  
  CodeMash Newb
&lt;/h2&gt;

&lt;p&gt;The ribbon labeled "Newb" provided an easy-opener to any conversation: "So, this is your first codemash?" The venue was amazing: the sessions, the hotel, the food, and more. I am so grateful that I got to kick off my year with some awesome training sessions: when in tech, the learning never stops.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Made it to &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt;!! &lt;a href="https://t.co/R9F6Q6lbI7"&gt;pic.twitter.com/R9F6Q6lbI7&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1214336202997927941?ref_src=twsrc%5Etfw"&gt;January 7, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h2&gt;
  
  
  Day 1: Precompiler Sessions
&lt;/h2&gt;
&lt;h6&gt;
  
  
  Hacking Your Emotional API: Emotional Intelligence in Practice
&lt;/h6&gt;

&lt;p&gt;.. with John Sawers &lt;a href="https://twitter.com/johnksawers"&gt;@johnksawers&lt;/a&gt; and Aaron Aldrich &lt;a href="https://twitter.com/crayzeigh"&gt;@crayzeigh&lt;/a&gt; was how I started my first day at CodeMash. This was a great soft-skills session that took a 4 hour dive into EQ (Emotional Intelligence), how to express feelings, and non-violent communication often in relation to the workplace. Practicing skills in a group was really effective, from my point of view. Despite the large crowd, I found it very effective to have open conversations and examples of the stages with observations, feelings, needs and requests. The speakers were compassionate and made the first session of my first CodeMash very memorable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://emotionalapi.com/"&gt;https://emotionalapi.com/&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  Get Up And Running Quickly with Vue.js
&lt;/h6&gt;

&lt;p&gt;... led by Burton Smith &lt;a href="https://twitter.com/stuffbreaker"&gt;@stuffbreaker&lt;/a&gt; was hands-on technical learning at a relatively fast pace: and I loved it. Prior to this session, I hadn't done more than just poke it with a stick to see what it could do. Vue.js is a middle ground between Angular and React in regards to the learning curve. Angular can offer a strong typescript based javascript framework backed by Google. React is a few years newer than Angular, developed by Facebook, and is lightweight, non-browser specific and uses a virutal DOM. Vue is even newer still, and it's framework seems to adapt many of the beloved attributes from both React and Angular. Vue is lightweight, offers better performance than Angular, and it's flexible like React. Vue.js is quite beloved by those who use it: so I decided to give this class a try!&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;That's what she said... &lt;a href="https://twitter.com/hashtag/100daysofcode?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#100daysofcode&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/VueJS?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#VueJS&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; &lt;a href="https://t.co/MYNeLs6ACp"&gt;pic.twitter.com/MYNeLs6ACp&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1214646376040189958?ref_src=twsrc%5Etfw"&gt;January 7, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h2&gt;
  
  
  Day 2: Round Two of the Precompiler Sessions
&lt;/h2&gt;
&lt;h6&gt;
  
  
  Building Quality JavaScript with Test-Driven Development
&lt;/h6&gt;

&lt;p&gt;... with Steven Hicks &lt;a href="https://twitter.com/pepopowitz"&gt;@pepopowitz&lt;/a&gt;. I have written code.. I have written tests.. But I've never done test-driven development. I loved how this session was very intuitive and it encouraged us to think in terms of "we need the program to test positive for X, Y, Z -- so we'll code for X, Y, Z". Learning TDD with Jest from Steven was spectacular -- It's a session I'm happy I attended as I'm already using this technique in my studies!&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Awesome session on &lt;a href="https://twitter.com/hashtag/TDD?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#TDD&lt;/a&gt; test driven design given by &lt;a href="https://twitter.com/pepopowitz?ref_src=twsrc%5Etfw"&gt;@pepopowitz&lt;/a&gt; at &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; ! &lt;a href="https://t.co/y50XtEaEZq"&gt;pic.twitter.com/y50XtEaEZq&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1214947026380701699?ref_src=twsrc%5Etfw"&gt;January 8, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h6&gt;
  
  
  Help Cure the #1 Leading Cause of Death in America
&lt;/h6&gt;

&lt;p&gt;... or A Civic Developer's Quest to Change Healthcare (changed name of session just beforehand) with Luther Hill (&lt;a href="https://www.linkedin.com/in/sweetdatatea/"&gt;https://www.linkedin.com/in/sweetdatatea/&lt;/a&gt;) was the next session that I chose. Luther presented how to build a learning machine in an easily digestible format. I walked into this session thinking that training AI with datasets was something that was complicated, challenging and required a big brain to figure out... I was honestly expecting this to be a show-and-tell, high-level experience, but I was pleasantly surprised! Luther taught the class everything they needed to know, end to end, how to get into machine learning and build our own models. He touched on using kaggle for datasets, python for running the code, using jupyter notebooks, and running it all in google colabs with google drive as a server. Without a doubt, this was my favorite session of 2020.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Ready for an awesome session by Luther Hill on a Civic developer's quest to change healthcare!! &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; &lt;a href="https://t.co/s9hjyUXC6B"&gt;pic.twitter.com/s9hjyUXC6B&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1214970198538825730?ref_src=twsrc%5Etfw"&gt;January 8, 2020&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;I wrapped up the evening with some lightning talks!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lightningvote.com/events/26"&gt;http://lightningvote.com/events/26&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My favorites were...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;#EstimatesAreBS by &lt;a href="https://twitter.com/scottconnerly"&gt;@scottconnerly&lt;/a&gt; - talking about how estimating sprints with points just ain't the best... &lt;a href="http://slides.com/scottconnerly/estimatesarebs"&gt;http://slides.com/scottconnerly/estimatesarebs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mental health &lt;a href="https://github.com/aetherical/end-the-stigma"&gt;https://github.com/aetherical/end-the-stigma&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Steve Crow - Balloon Twisting: The Esoteric Language You Compile Yourself: programming languages &amp;amp; balloon animals &lt;a href="https://twitter.com/cr0wst"&gt;@cr0wst&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Michael Richardson - Stop Saying "I'm bad with names"&lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;
&lt;p&gt;Lightning talks... This is an awesome way to wrap up the evening! &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; &lt;a href="https://t.co/xoRfxlHwoF"&gt;pic.twitter.com/xoRfxlHwoF&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215060845903990784?ref_src=twsrc%5Etfw"&gt;January 9, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h2&gt;
  
  
  Day 3: The Real Convention Begins
&lt;/h2&gt;

&lt;p&gt;Compared to the pre-compiler with two sessions per day, the next two days went blazing fast. Hallways were lined with sponsors, classrooms were full up and conversations were always bubbling.&lt;/p&gt;

&lt;h6&gt;
  
  
  Capture The Flag: How CTF Competitions make you a better developer
&lt;/h6&gt;

&lt;p&gt;Watch the recording here: &lt;a href="https://www.pluralsight.com/courses/codemash-session-38"&gt;https://www.pluralsight.com/courses/codemash-session-38&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;... with John Joerner &lt;a href="https://twitter.com/johnkoerner"&gt;@johnkoerner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With my hubby in IT security and my interests with development, I can't wait until we take on our first CTF. As John went over in his session, I recognized the value of finding ways to attack; but also taking notes on ways to defend while developing.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Why CTF can make you a better developer talk by &lt;a href="https://twitter.com/johnkoerner?ref_src=twsrc%5Etfw"&gt;@johnkoerner&lt;/a&gt; , starting now at &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; ! &lt;a href="https://t.co/IadisaxgV9"&gt;pic.twitter.com/IadisaxgV9&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215276425323991040?ref_src=twsrc%5Etfw"&gt;January 9, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h6&gt;
  
  
  Postman Delivers! A deep dive into API Testing
&lt;/h6&gt;

&lt;p&gt;... with Bob Crowley &lt;a href="https://twitter.com/contrivedex"&gt;@contrivedex&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Watch the recording here: &lt;a href="https://www.pluralsight.com/courses/codemash-session-05"&gt;https://www.pluralsight.com/courses/codemash-session-05&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At my day job, there are only a handful of people on my team that use postman... What about me? You guessed it, I'm one of them. Products that are live to customers, but the internal process isn't 100% developed requires some manual API pushes. I really enjoyed this session and learned a couple features that I hadn't used before.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Ready for Postman API testing deep dive by &lt;a href="https://twitter.com/contrivedex?ref_src=twsrc%5Etfw"&gt;@contrivedex&lt;/a&gt; at &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt;! &lt;a href="https://t.co/lCZkXm2ox1"&gt;pic.twitter.com/lCZkXm2ox1&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215332279884681217?ref_src=twsrc%5Etfw"&gt;January 9, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h6&gt;
  
  
  Javascript: the grumpy parts
&lt;/h6&gt;

&lt;p&gt;... with Rob Rich &lt;a href="https://twitter.com/rob_rich"&gt;@rob_rich&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Watch the recording here: &lt;a href="https://www.pluralsight.com/courses/codemash-session-80"&gt;https://www.pluralsight.com/courses/codemash-session-80&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am SO fond of javascript... and this session really affirmed my love of it (especially while hearing all of the groans throughout the room). We ran through some lines of code as the compiler, but adjusted on order of lines or usage of var/let/const: the vast differences of expected vs reality shines a light on the grumpy parts of javascript.&lt;/p&gt;

&lt;p&gt;Fun fact: Javascript was created in 10 days.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;"What's the difference between Java and JavaScript? Well, it's like the difference between Car and Carpet." &lt;a href="https://twitter.com/rob_rich?ref_src=twsrc%5Etfw"&gt;@rob_rich&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215370824900804609?ref_src=twsrc%5Etfw"&gt;January 9, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h6&gt;
  
  
  App Deco: Applied Design Thinking for Secure Development
&lt;/h6&gt;

&lt;p&gt;... with Wolf Goerlich &lt;a href="https://twitter.com/jwgoerlich"&gt;@jwgoerlich&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wolf walked us through a few recent experiences as an advisory CISO in regards to app design. The biggest takeaway for me was, as I tweeted, "Constraints cause creative people...creative people cause security problems." I feel this sentence in the core of my being... being both that creative person AND the person who needs to defend against other creative people: this talk really hit home for me. Locking down processes or security and NOT causing those creative people to come out of the woodwork is a challenge that developers need to consider.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;"Constraints cause creative people... Creative people cause security problems." &lt;a href="https://twitter.com/jwgoerlich?ref_src=twsrc%5Etfw"&gt;@jwgoerlich&lt;/a&gt; 's talk about app design and security at &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; was excellent. &lt;a href="https://t.co/kKmwD7UWp0"&gt;pic.twitter.com/kKmwD7UWp0&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215399653514129408?ref_src=twsrc%5Etfw"&gt;January 9, 2020&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;The remaining of the evening was filled with events like casino and carnival games, dessert bar, karaoke, jam sessions and a full waterpark party... and for me: an evening of introverted quiet-time in my hotel room with some pizza and ice cream.&lt;/p&gt;

&lt;h2&gt;
  
  
  Day 4: The Last Day
&lt;/h2&gt;

&lt;h6&gt;
  
  
  The best code is code never written
&lt;/h6&gt;

&lt;p&gt;Watch the recording here: &lt;a href="https://www.pluralsight.com/courses/codemash-session-95"&gt;https://www.pluralsight.com/courses/codemash-session-95&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;... with Daniel Davis &lt;a href="https://twitter.com/daniel_davis"&gt;@daniel_davis&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I first started programming, I can remember bragging to my family "I wrote 1,200 lines of code today!!" -- I look at that statement today and I cringe!&lt;/p&gt;

&lt;p&gt;Daniel provided an awesome perspective with "You aren't gunna need it", "Not invented here" (beg, borrow, steal, cheat to win), "Keep it stupid simple", "Fake it till you make it" and more. Putting all of these ideas and techniques together in one session was fantastic.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Really excited for this talk.. the best code is code never written with &lt;a href="https://twitter.com/daniel_davis?ref_src=twsrc%5Etfw"&gt;@daniel_davis&lt;/a&gt; at &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; &lt;a href="https://t.co/E97B9KwT40"&gt;pic.twitter.com/E97B9KwT40&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215625521578545152?ref_src=twsrc%5Etfw"&gt;January 10, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h6&gt;
  
  
  Burn it down and start again: principles of modern javascript
&lt;/h6&gt;

&lt;p&gt;Watch the recording here: &lt;a href="https://www.pluralsight.com/courses/codemash-session-33"&gt;https://www.pluralsight.com/courses/codemash-session-33&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...with Joe Morgan (author of Simplifying Javascript)&lt;a href="https://twitter.com/Joesmorgan"&gt;@Joesmorgan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pairing this session with the "grumpy parts" session yesterday was excellent. Joe went in depth with some of the modern principles, ways to make your code predictable, readable, simple and flexible.&lt;/p&gt;

&lt;p&gt;Bottom line, though? The best code is the best code for your team.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Burning things down? JavaScript? You've got my interest for sure ... &lt;a href="https://twitter.com/joesmorgan?ref_src=twsrc%5Etfw"&gt;@joesmorgan&lt;/a&gt; at &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; &lt;a href="https://t.co/d9wtaNQfEW"&gt;pic.twitter.com/d9wtaNQfEW&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215644655590703104?ref_src=twsrc%5Etfw"&gt;January 10, 2020&lt;/a&gt;
&lt;/blockquote&gt; 


&lt;blockquote&gt;
&lt;p&gt;I'm loving this already... Starting with JavaScript and Picasso, side by side. As an art student AND a developer, this makes my soul sing. &lt;a href="https://twitter.com/joesmorgan?ref_src=twsrc%5Etfw"&gt;@joesmorgan&lt;/a&gt; at &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; &lt;a href="https://t.co/gqCRtMbpTo"&gt;pic.twitter.com/gqCRtMbpTo&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215647040136458241?ref_src=twsrc%5Etfw"&gt;January 10, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h6&gt;
  
  
  Explain it to me like I'm 5: Oauth2 and OpenID
&lt;/h6&gt;

&lt;p&gt;Watch the recording here: &lt;a href="https://www.pluralsight.com/courses/codemash-session-46"&gt;https://www.pluralsight.com/courses/codemash-session-46&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;... with Daniel Mikusa &lt;a href="https://twitter.com/dmikusa"&gt;@dmikusa&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the things on my "want to learn it" list is getting an OpenID SSO integrated in one of my personal projects. I'm not a security pro - so I wanted to start at base level to get some knowledge: Daniel was awesome with his session, comparing each step of security with a literal world of a 5 year old! Things like remembering my jacket, going to my locker, and even getting lunch from the lunch lady were all compared to authorization codes, grant types and scopes!&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Next up is going to be excellent.. I love that it's not "crash course", but instead "explain it to me kind I'm five" for Oauth 2&lt;a href="https://twitter.com/dmikusa?ref_src=twsrc%5Etfw"&gt;@dmikusa&lt;/a&gt; at &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; &lt;a href="https://t.co/zaPbhS6XkZ"&gt;pic.twitter.com/zaPbhS6XkZ&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215663436706779136?ref_src=twsrc%5Etfw"&gt;January 10, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h6&gt;
  
  
  Calculating insulin with automated carb counting using AI, ML and web bluetooth
&lt;/h6&gt;

&lt;p&gt;... by Todd Sharp &lt;a href="https://twitter.com/recursivecodes"&gt;@recursivecodes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Todd's session was excellent: design by necessity! When faced with a challenge like diabetes, and recognizing that it can be maintained via numbers &amp;amp; lifestyle awareness: tackle it with tech. I've said this before to my peers many times: we're clever, we're smart, and if we started to tackle issues with tech, I bet we could change the world. Todd is doing just that: and he's starting right at home.&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;This season by &lt;a href="https://twitter.com/recursivecodes?ref_src=twsrc%5Etfw"&gt;@recursivecodes&lt;/a&gt; about diabetes and tech really hit home for me... I've got many fam and friends that have diabetes... This is going to be an awesome session at &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; &lt;a href="https://t.co/sSMOnkibVp"&gt;pic.twitter.com/sSMOnkibVp&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215684820061343747?ref_src=twsrc%5Etfw"&gt;January 10, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h6&gt;
  
  
  Recognize programmer burnout: how to recognize and avoid it
&lt;/h6&gt;

&lt;p&gt;Watch the recording here: &lt;a href="https://www.pluralsight.com/courses/codemash-session-86"&gt;https://www.pluralsight.com/courses/codemash-session-86&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;... with &lt;a href="https://twitter.com/_s_hari"&gt;@_s_hari&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I feel like the meme "oh ha ha, I do that" could have been posted on the door as we all walked in. Something that stuck with me is a story that Santosh shared: He created an app that sent an alert via Slack whenever a bug came in... and that &lt;em&gt;chime&lt;/em&gt; haunts him to this day. That resonated with me so much..&lt;/p&gt;

&lt;p&gt;Some tips for reducing burnout?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand your role&lt;/li&gt;
&lt;li&gt;Reduce multitasking&lt;/li&gt;
&lt;li&gt;Learn to say NO&lt;/li&gt;
&lt;li&gt;Reduce social media usage and notifications&lt;/li&gt;
&lt;li&gt;Get a life outside of work&lt;/li&gt;
&lt;li&gt;Get exercise and sleep&lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;
&lt;p&gt;Full room for an awesome talk by &lt;a href="https://twitter.com/_s_hari?ref_src=twsrc%5Etfw"&gt;@_s_hari&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; ... The reality of burnout! This one really hits home for me... (And with people lined up along the wall, I know I'm not alone) &lt;a href="https://t.co/aurJo8Z2s2"&gt;pic.twitter.com/aurJo8Z2s2&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215722503873671169?ref_src=twsrc%5Etfw"&gt;January 10, 2020&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;I'm so excited that I was able to experience CodeMash 2020: I brought home a lot of knowledge (and a lot of swag) and I can't wait until next year!&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Parting is such sweet sorrow! See you next year, &lt;a href="https://twitter.com/hashtag/codemash?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#codemash&lt;/a&gt; !! &lt;a href="https://t.co/YHOKAraSNf"&gt;pic.twitter.com/YHOKAraSNf&lt;/a&gt;&lt;/p&gt;— Stephanie (@handsomezebra) &lt;a href="https://twitter.com/handsomezebra/status/1215772148557631488?ref_src=twsrc%5Etfw"&gt;January 10, 2020&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;Check out all of the other sessions that were recorded here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pluralsight.com/authors/codemash-conference"&gt;https://www.pluralsight.com/authors/codemash-conference&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
