<?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>Forem: christa</title>
    <description>The latest articles on Forem by christa (@cweave_).</description>
    <link>https://forem.com/cweave_</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%2F83674%2Fd3cb7914-8352-407d-b4cc-3c2fac654bbd.png</url>
      <title>Forem: christa</title>
      <link>https://forem.com/cweave_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cweave_"/>
    <language>en</language>
    <item>
      <title>Highlight Console Warnings and Errors in iTerm2</title>
      <dc:creator>christa</dc:creator>
      <pubDate>Tue, 06 Sep 2022 20:38:15 +0000</pubDate>
      <link>https://forem.com/cweave_/highlight-console-warnings-and-errors-in-iterm2-1mae</link>
      <guid>https://forem.com/cweave_/highlight-console-warnings-and-errors-in-iterm2-1mae</guid>
      <description>&lt;h1&gt;
  
  
  The Issue
&lt;/h1&gt;

&lt;p&gt;Have you ever had the issue of scrolling through long blocks of output in your terminal and miss &lt;strong&gt;errors&lt;/strong&gt; and &lt;strong&gt;warnings&lt;/strong&gt; entirely. This kept happening to me frequently until I finally had enough and took it to Google.&lt;/p&gt;

&lt;p&gt;iTerm2 has a text highlighting feature that offers the solution needed to stop missing those errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://iterm2.com/documentation/2.1/documentation-highlights.html" rel="noopener noreferrer"&gt;Highlight Text&lt;/a&gt; offers a wide variety of features and abilities, but today we're going to utilize it to use regular expressions to check for different kind of messaging.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enable Highlighting
&lt;/h3&gt;

&lt;p&gt;In your iTerm2 Profile settings (&lt;strong&gt;iTerm2 Preferences =&amp;gt; Profiles&lt;/strong&gt;) switch to &lt;strong&gt;Advanced&lt;/strong&gt; and look for the &lt;strong&gt;Triggers&lt;/strong&gt; section. Click &lt;strong&gt;Edit&lt;/strong&gt; to add your own triggers. Select the '&lt;strong&gt;+&lt;/strong&gt;' symbol at the bottom left to create a new one.&lt;/p&gt;

&lt;p&gt;Add the following regular expression to react on lines containing the text "error":&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="o"&gt;(&lt;/span&gt;?i:.&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;error|fatal&lt;span class="o"&gt;)&lt;/span&gt;.&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;Flags are placed at the start of the regex. We use the case insensitive flag &lt;code&gt;i&lt;/code&gt; so the regex starts with &lt;code&gt;?i:&lt;/code&gt;. After the colon, the regular expression begins.&lt;/p&gt;

&lt;p&gt;Select &lt;strong&gt;Highlight Text&lt;/strong&gt; as an action and customize the text color and background as needed. You can either create multiple triggers or define multiple words in your pattern to highlight. &lt;/p&gt;

&lt;p&gt;Create a highlight for warnings:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="o"&gt;(&lt;/span&gt;?i:.&lt;span class="k"&gt;*&lt;/span&gt;warn|warning.&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;To learn more about the regular expressions, check out &lt;a href="https://regex101.com/" rel="noopener noreferrer"&gt;regex101&lt;/a&gt; to get more details.&lt;/p&gt;

&lt;p&gt;When you are done, your triggers may look something like this:&lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zr8ixsk63307ygsb7dq.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3zr8ixsk63307ygsb7dq.png" alt="Defined triggers in iTerm2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the output:&lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkhrvmme2pmex1t2dtgfk.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkhrvmme2pmex1t2dtgfk.png" alt="iTerm2 window with console log messages: console log (this is a regular console log) in plain text, console warning (this is a warning) in yellow text, and console error (this is an error) in red text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>iterm2</category>
      <category>console</category>
    </item>
    <item>
      <title>Automating iTerm2</title>
      <dc:creator>christa</dc:creator>
      <pubDate>Fri, 25 Mar 2022 22:40:18 +0000</pubDate>
      <link>https://forem.com/cweave_/automating-iterm2-ba8</link>
      <guid>https://forem.com/cweave_/automating-iterm2-ba8</guid>
      <description>&lt;h2&gt;
  
  
  TLDR
&lt;/h2&gt;

&lt;p&gt;Working with localhost and multiple repos can be tedious - Apple has a way to automate opening multiple terminal windows and tabs, navigating to the directories that you need, and starting up those services. This is a tutorial to show you how to set up that process.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;TLDR&lt;/li&gt;
&lt;li&gt;Why Automate?&lt;/li&gt;
&lt;li&gt;&lt;a href=""&gt;came in for the save!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Start with the Basics&lt;/li&gt;
&lt;li&gt;
Creating Multiple Sessions

&lt;ul&gt;
&lt;li&gt;What is happening?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Adding to the Script

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tell &amp;lt;SESSION&amp;gt; to write text "&amp;lt;COMMANDS&amp;gt;"&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create a New Tab&lt;/li&gt;
&lt;li&gt;
Miscellaneous Settings

&lt;ul&gt;
&lt;li&gt;Adding Tab Names&lt;/li&gt;
&lt;li&gt;Open the Terminal in Fullscreen&lt;/li&gt;
&lt;li&gt;Add as a a &lt;code&gt;.zsh&lt;/code&gt; alias&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Wrapping Up&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why Automate?
&lt;/h2&gt;

&lt;p&gt;For me, automation is just about speeding up the process. An example of my work flow looks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Opening up iTerm&lt;/li&gt;
&lt;li&gt;Navigating to my frontend directory

&lt;ul&gt;
&lt;li&gt;start the frontend server&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Split the terminal vertically, navigate the the frontend directory

&lt;ul&gt;
&lt;li&gt;start webpack&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Open a new tab, navigate to the reporting directory

&lt;ul&gt;
&lt;li&gt;start the reporting service&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Open a new tab, navigate to the engine directory 

&lt;ul&gt;
&lt;li&gt;start the engine service (this is a Docker service, with the help of aliases, has been reduced to smaller commands)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;It may not seem like a whole lot, but it becomes a pain whenever I have to restart my computer and have to restart each of those services needed to run the application. When I discovered that it could be automated, it changed everything.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="noopener noreferrer"&gt;Applescript&lt;/a&gt; came in for the save!&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the Basics
&lt;/h2&gt;

&lt;p&gt;Let's start with a simple script to get the hang of the syntax.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a file &lt;code&gt;hello_world.scpt&lt;/code&gt; with the content below:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/osascript
tell application "iTerm2"
  tell current session of current tab of current window
    write text "echo 'hello world!'"
  end tell
end tell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;From the directory you created &lt;code&gt;hello_world.scpt&lt;/code&gt;, Run the script like this: &lt;code&gt;osascript hello_world.scpt&lt;/code&gt;. You should see:&lt;/li&gt;
&lt;/ul&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fud8sx7q3rbfju9gnibhj.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fud8sx7q3rbfju9gnibhj.png" alt="Echoing hello world in iTerm with Applescript automation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why does it appear twice? Echoing added the command to the terminal history. If you hit up in the terminal, &lt;code&gt;echo 'hello world!&lt;/code&gt; will appear as the last command.&lt;/p&gt;

&lt;p&gt;If you hit up again, you'll get your first command, &lt;code&gt;osascript hello_world.scpt&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Multiple Sessions
&lt;/h2&gt;

&lt;p&gt;Now for the workflow automation. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a new script file called &lt;code&gt;create_sessions.scpt&lt;/code&gt; with the content below:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/osascript
tell application "iTerm2"
  set serverSession to current session of current window

  tell serverSession
    set webpackSession to (split vertically with default profile)
  end tell
end tell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;From the directory you created &lt;code&gt;create_sessions.scpt&lt;/code&gt;, Run the script like this: &lt;code&gt;osascript create_sessions.scpt&lt;/code&gt;. You should see the terminal window spilt vertically.&lt;/li&gt;
&lt;/ul&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39a8at8mof46ahk4fhnj.gif" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39a8at8mof46ahk4fhnj.gif" alt="New terminal session and splitting the window vertically"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is happening?
&lt;/h3&gt;

&lt;p&gt;Let's break it down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;tell application "iTerm2"&lt;/code&gt;: which application we're sending commands to. In this case, iTerm2 (this can also be iTerm).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;set serverSession to current session of current window&lt;/code&gt;: is creating a new variable name for the current active window. In this case, &lt;code&gt;serverSession&lt;/code&gt; is being assigned to the current window. I used &lt;code&gt;serverSession&lt;/code&gt; since this will be the window that I used to run my server.

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;set &amp;lt;NAME&amp;gt; to current session of current window&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;set webpackSession to (split vertically with default profile)&lt;/code&gt;: sets a new variable &lt;code&gt;webpackSession&lt;/code&gt;, and splits the window vertically (&lt;code&gt;vertically&lt;/code&gt; can be swapped for &lt;code&gt;horizontally&lt;/code&gt; to match your needs).&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;end tell&lt;/code&gt;: "closing tag" for the function&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Adding to the Script
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/osascript
tell application "iTerm2"
  set serverSession to current session of current window

  tell serverSession
    write text "cdkwhub"
    set webpackSession to (split vertically with default profile)
  end tell

  tell webpackSession
    write text "cdkwhub"
  end tell
end tell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;tell &amp;lt;SESSION&amp;gt; to write text "&amp;lt;COMMANDS&amp;gt;"&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Here's where the automation fun happens. With each &lt;code&gt;write text&lt;/code&gt;, we can pass in the commands that we need. For me, &lt;code&gt;cdkwhub&lt;/code&gt; is an alias that &lt;code&gt;cd&lt;/code&gt;'s into my codebase directory. &lt;/p&gt;

&lt;p&gt;In the next tell block, we reference the new tab that was created and write a command to that window.&lt;/p&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiajzbb017a3tjw3bocjh.gif" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiajzbb017a3tjw3bocjh.gif" alt="Writing commands to each tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a New Tab
&lt;/h2&gt;

&lt;p&gt;Continuing to add to the script,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  tell current window
    create tab with default profile
    set tab2 to current session
  end tell

  tell tab2
    write text "put a command here"
  end tell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;tell current window&lt;/code&gt;: with the vertical tab selected

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;create tab with default profile&lt;/code&gt;: iTerm will create a new tab &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;set tab2 to current session&lt;/code&gt;: creates a new variable called &lt;code&gt;tab2&lt;/code&gt; and sets it to the new session&lt;/li&gt;

&lt;li&gt;
&lt;code&gt;tell tab2&lt;/code&gt;: in the new tab, it writes text &lt;/li&gt;

&lt;/ul&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fox79eh9petoqvrl0meb9.gif" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fox79eh9petoqvrl0meb9.gif" alt="Opening split tab and new tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Miscellaneous Settings
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Adding Tab Names
&lt;/h3&gt;

&lt;p&gt;One thing you can do to make your tabs more organized is to set a tab to them. To set a name, use &lt;code&gt;set name to "name"&lt;/code&gt;. You can do that like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
  tell serverSession
    set name to "SERVER" # Add this line 
    write text "cdkwhub"
    set webpackSession to (split vertically with default profile)
  end tell
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside of each tell statement you can set a name.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open the Terminal in Fullscreen
&lt;/h3&gt;

&lt;p&gt;Another thing you can automate with this script is having it open your window in fullscreen. You can do that by adding the following to the top of the script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
tell application "iTerm2"
  # Open window in full screen
  tell application "System Events"
    keystroke "f" using {control down, command down}
  end tell
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Add as a &lt;code&gt;.zsh&lt;/code&gt; alias
&lt;/h3&gt;

&lt;p&gt;You can really put your automation in overdrive by creating an alias to run your new script. Using an alias can simplify your command into one single word. An example of my use looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export SCRATCH_DIR=~/codebase/scratch
alias cdscratch='cd $SCRATCH_DIR';
alias startrepos='cdscratch; osascript create_sessions.scpt'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;&lt;a href="https://linuxhint.com/configure-use-aliases-zsh/" rel="noopener noreferrer"&gt;Creating &lt;code&gt;zsh&lt;/code&gt; aliases&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a variable to the directory that has my script&lt;/li&gt;
&lt;li&gt;Create an alias that navigates into that directory
and finally, the whole thing&lt;/li&gt;
&lt;li&gt;Create an alias that uses the &lt;code&gt;cd&lt;/code&gt;ing alias, and then add the &lt;code&gt;osascript&lt;/code&gt; command followed by the name of the file &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you open a terminal window, entering &lt;code&gt;startrepos&lt;/code&gt; followed by enter will fire off the automation script.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;Hopefully this helps you save some time. You can also use the &lt;a href="https://support.apple.com/guide/script-editor/welcome/mac" rel="noopener noreferrer"&gt;Script Editor&lt;/a&gt; application to write the script and export it as an executable application, as well as other miscellaneous things. You can also use it to automate other aspects of your day to day processes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Helpful Likes
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/cweave/1d654415ef95eda3293883ee6298cfb5" rel="noopener noreferrer"&gt;Final script&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="noopener noreferrer"&gt;Applescript&lt;/a&gt; documentation &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://iterm2.com/documentation-scripting.html" rel="noopener noreferrer"&gt;iTerm2 Applescript&lt;/a&gt; documentation &lt;/li&gt;
&lt;li&gt;&lt;a href="https://linuxhint.com/configure-use-aliases-zsh/use-aliases-zsh/" rel="noopener noreferrer"&gt;Creating &lt;code&gt;zsh&lt;/code&gt; aliases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>terminal</category>
      <category>applescript</category>
      <category>osascript</category>
      <category>automation</category>
    </item>
    <item>
      <title>Nevertheless, Christa Continued to Slay 🔥</title>
      <dc:creator>christa</dc:creator>
      <pubDate>Tue, 08 Mar 2022 17:33:11 +0000</pubDate>
      <link>https://forem.com/cweave_/nevertheless-christa-continued-to-slay-3k1l</link>
      <guid>https://forem.com/cweave_/nevertheless-christa-continued-to-slay-3k1l</guid>
      <description>&lt;p&gt;From 2019 to now...&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/cweave_" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TQkH-1xP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://media.dev.to/cdn-cgi/image/width%3D150%2Cheight%3D150%2Cfit%3Dcover%2Cgravity%3Dauto%2Cformat%3Dauto/https%253A%252F%252Fdev-to-uploads.s3.amazonaws.com%252Fuploads%252Fuser%252Fprofile_image%252F83674%252Fd3cb7914-8352-407d-b4cc-3c2fac654bbd.png" alt="cweave_"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/cweave_/nevertheless-christa-coded--17j2" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Nevertheless, christa Coded&lt;/h2&gt;
      &lt;h3&gt;christa ・ Mar 9 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#wecoded&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Since I wrote my first and only post in 2019 I've:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;relocated from Michigan to South Carolina&lt;/li&gt;
&lt;li&gt;went from a User Interface Developer to a Frontend Engineer&lt;/li&gt;
&lt;li&gt;survived a pandemic&lt;/li&gt;
&lt;li&gt;got laid off (not because of said pandemic) and took over 2 months to find a new job&lt;/li&gt;
&lt;li&gt;and now I'm crushing it as a Software Engineer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My interests have shifted slightly from being only frontend focused to being interested in full-stack development, mainly because my job presented me with the opportunity. I am now working with React, Node, Express, and different types of databases on the daily. &lt;/p&gt;

&lt;h2&gt;
  
  
  My biggest technical goals are…
&lt;/h2&gt;

&lt;p&gt;Advancing further in my career. Right now, that means becoming a Senior Engineer. From a technical standpoint, becoming more comfortable with backend development in relation to JavaScript and understanding databases and data structures better. &lt;/p&gt;

&lt;h2&gt;
  
  
  My biggest technical achievements are…
&lt;/h2&gt;

&lt;p&gt;Really stepping into that full-stack role and embracing challenges. I used to be so scared of taking on things that were challenging, and now I fully embrace them. I truly enjoy that challenge and watching myself grow from the experience of working through something difficult (even if I want to rip out most of my hair throughout the process).&lt;/p&gt;

&lt;h2&gt;
  
  
  Throughout my career (as a software developer, in tech, etc), I have overcome…
&lt;/h2&gt;

&lt;p&gt;Myself more than anything. Imposter syndrome is real, and it's hard. Knowing that I belong where I am and that I am smart and capable as my peers is a huge hurtle. &lt;/p&gt;

&lt;h2&gt;
  
  
  Advocating for myself looks like…
&lt;/h2&gt;

&lt;p&gt;Asking for help when I need it, never being ashamed. Knowing what my needs are and finding the avenues to obtain it.&lt;/p&gt;

&lt;h2&gt;
  
  
  I pledge to support women, non-binary folks, and other minorities in tech by…
&lt;/h2&gt;

&lt;p&gt;Being the voice for the voiceless. In many ways I am that person for my team now - speaking out when there are concerns and advocating for change. I have privilege of being white, and if I can use that to help lift someone else, then that is privilege well served. &lt;/p&gt;

&lt;h2&gt;
  
  
  I’m excited about…
&lt;/h2&gt;

&lt;p&gt;What my future holds and where my career takes me. I don't necessarily have a "five year plan" - all I know is that I want to continue to grow my skills and build cool stuff. I love what I do and I want to keep doing it.&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>career</category>
      <category>womenintech</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Nevertheless, christa Coded</title>
      <dc:creator>christa</dc:creator>
      <pubDate>Sat, 09 Mar 2019 01:19:39 +0000</pubDate>
      <link>https://forem.com/cweave_/nevertheless-christa-coded--17j2</link>
      <guid>https://forem.com/cweave_/nevertheless-christa-coded--17j2</guid>
      <description>&lt;h2&gt;
  
  
  I continued to code in 2019 because...
&lt;/h2&gt;

&lt;p&gt;Simply because I love it. It's an ever changing world and I'm forever grateful that I decided to be a part of it. Solving front end problems in a creative way breathes life into my soul.&lt;/p&gt;

&lt;h2&gt;
  
  
  I deserve credit for...
&lt;/h2&gt;

&lt;p&gt;Persistence and never being afraid of a challenge. I always jump into things with both feet, and I'm never afraid to reach for help. &lt;/p&gt;

&lt;h2&gt;
  
  
  I hope to see my school/work/developer/tech community...
&lt;/h2&gt;

&lt;p&gt;Keep evolving. There's a lot of diversity, but still a lot of discrimination. &lt;/p&gt;

&lt;h3&gt;
  
  
  nevertheless, she persisted.
&lt;/h3&gt;

</description>
      <category>wecoded</category>
    </item>
  </channel>
</rss>
