<?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: may arden</title>
    <description>The latest articles on DEV Community by may arden (@mayarden).</description>
    <link>https://dev.to/mayarden</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%2F498975%2F09078ba4-a1d2-4dac-a63d-c6c7797b9c4f.png</url>
      <title>DEV Community: may arden</title>
      <link>https://dev.to/mayarden</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mayarden"/>
    <language>en</language>
    <item>
      <title>ZenDesk Customer Help Application </title>
      <dc:creator>may arden</dc:creator>
      <pubDate>Thu, 10 Feb 2022 00:54:25 +0000</pubDate>
      <link>https://dev.to/mayarden/zendesk-customer-help-application-gmh</link>
      <guid>https://dev.to/mayarden/zendesk-customer-help-application-gmh</guid>
      <description>&lt;p&gt;The need here is for there to be a platform upon which Clients can contact Customer Support directly regarding their ticket purchases. In order to achieve this, there must be a client-facing UI which offers message board-like functionality for the Customer Support to respond to Client comments and complaints.&lt;/p&gt;

&lt;p&gt;The solution this ZenDesk Course offers is a &lt;a href="https://training.zendesk.com/elearning-the-zendesk-apps-developer"&gt;Customer Help Application&lt;/a&gt; on the ZenDesk Application Framework (ZAF) which uses HTML, CSS, Ruby and async JavaScript. &lt;/p&gt;

&lt;p&gt;In order to build this application, one must first confirm that one has the latest version of Ruby installed on their machine &lt;code&gt;ruby -v&lt;/code&gt;, &lt;code&gt;gem install rake&lt;/code&gt; for database management, install ZAT &lt;code&gt;gem install zendesk_app_tools&lt;/code&gt; and initialize a new application on the ZenDesk framework using the command &lt;code&gt;zat new&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;There are three crucial elements: the &lt;code&gt;manifest.json&lt;/code&gt; file is located in the &lt;code&gt;root&lt;/code&gt; directory and includes administrator information and validations. The &lt;code&gt;assets&lt;/code&gt; directory includes the logo files and the &lt;code&gt;iframe.html&lt;/code&gt; which is the Document Object Model. The third crucial element is the &lt;code&gt;translations&lt;/code&gt; folder located in the &lt;code&gt;root&lt;/code&gt; directory. &lt;/p&gt;

&lt;p&gt;The first step is to create an instance of the ZAF Client Object &lt;code&gt;ZAFClient.init()&lt;/code&gt; by assigning it to the variable &lt;code&gt;client&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;var client = ZAFClient.init();&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The following steps include adding &lt;code&gt;event listeners&lt;/code&gt;, &lt;code&gt;fetch&lt;/code&gt;ing information about tickets from external APIs, building the &lt;code&gt;user interface&lt;/code&gt; using CSS, and packaging, validating and uploading the application to the ZenDesk Marketplace.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>controlled forms in react</title>
      <dc:creator>may arden</dc:creator>
      <pubDate>Mon, 25 Oct 2021 17:58:15 +0000</pubDate>
      <link>https://dev.to/mayarden/final-project-blog-post-25jn</link>
      <guid>https://dev.to/mayarden/final-project-blog-post-25jn</guid>
      <description>&lt;p&gt;&lt;strong&gt;A &lt;em&gt;controlled form&lt;/em&gt; is&lt;/strong&gt; used to submit data to be persisted to a database that derives its input value from &lt;code&gt;state&lt;/code&gt;. The alternative to a &lt;em&gt;controlled form&lt;/em&gt; is an &lt;em&gt;uncontrolled form&lt;/em&gt;, in which the data is handled not by &lt;code&gt;state&lt;/code&gt; but, instead, by the DOM. Simply put, in a controlled form, &lt;code&gt;state&lt;/code&gt; is aware of the characters being typed into any given form field at any given time. If a &lt;em&gt;controlled form&lt;/em&gt; had a parenting style, it would be a helicopter parent, where an &lt;em&gt;uncontrolled form&lt;/em&gt; would be a mega-chill and sort of 'hands off' parent, not totally paying attention but still kinda' there. &lt;/p&gt;

&lt;p&gt;One good way to tell the difference between a &lt;em&gt;controlled form&lt;/em&gt; or &lt;em&gt;uncontrolled form&lt;/em&gt;, is to check for &lt;code&gt;value&lt;/code&gt; or for &lt;code&gt;defaultValue&lt;/code&gt;. If the component has a &lt;code&gt;value&lt;/code&gt; &lt;code&gt;prop&lt;/code&gt;, it is a &lt;em&gt;controlled component&lt;/em&gt;. If it does not have a &lt;code&gt;value&lt;/code&gt; &lt;code&gt;prop&lt;/code&gt;, it is an &lt;em&gt;uncontrolled component&lt;/em&gt;. An &lt;em&gt;uncontrolled component&lt;/em&gt; can optionally have a &lt;code&gt;defaultValue&lt;/code&gt; &lt;code&gt;prop&lt;/code&gt; set to its initial value -- but -- if the component has a &lt;code&gt;value&lt;/code&gt; &lt;code&gt;prop&lt;/code&gt;, it is a &lt;em&gt;controlled component&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does it work, you ask?&lt;/strong&gt; Let's walk through. I arrive at a browser window which is rendering a &lt;em&gt;controlled form&lt;/em&gt;. It wants my first name. &lt;/p&gt;

&lt;p&gt;The current &lt;code&gt;state&lt;/code&gt; 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;   state = {
       name: '',
   }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I start to type my name, I hit the letter 'M' on my keyboard. Now, &lt;code&gt;state&lt;/code&gt; 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;   state = {
       name: 'M',
   }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I continue typing my name, but then I accidentally hit the wrong key. &lt;code&gt;state&lt;/code&gt; looks like this now&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   state = {
       name: 'Mau',
   }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I realize my error. &lt;code&gt;state&lt;/code&gt; 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;   state = {
       name: 'Ma',
   }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and I correct my mistake. &lt;code&gt;state&lt;/code&gt; 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;   state = {
       name: 'May',
   }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before I even press the 'submit' button on the form, &lt;code&gt;state&lt;/code&gt; already knows my name. That's accomplished through the following event handler&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;handleChange = e =&amp;gt; {
       const { name, value } = e.target
       this.setState({
           [name]: value
       })
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which is invoked inside of the &lt;em&gt;controlled form&lt;/em&gt; by the event listener on line five&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;form onSubmit={this.handleSubmit}&amp;gt;
      &amp;lt;label&amp;gt;your name:&amp;lt;/label&amp;gt;
      &amp;lt;input type="text"&amp;gt;
       value={this.state.name}
       onChange={this.handleChange}
       name="name"/&amp;gt;
      &amp;lt;br/&amp;gt;
      &amp;lt;input type="submit" value="submit"/&amp;gt;
    &amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These guys work together and say &lt;em&gt;"as soon as there is a change in the form field, we're going to handle that change by passing and destructuring the data provided in the form field and setting it equal to the current&lt;/em&gt; &lt;code&gt;state&lt;/code&gt;". &lt;/p&gt;

&lt;p&gt;Pretty cool. &lt;/p&gt;

&lt;p&gt;Now that I've entered my name, I'm ready to hit the 'submit' button. Here we have another event listener &amp;amp; handler ready to send the data from the form field to the database and reset state&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;handleSubmit = e =&amp;gt; {
    e.preventDefault();
    this.props.addPerson(this.state)

    this.setState({
        name: ''
    })
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This event handler is invoked inside of the &lt;em&gt;controlled form&lt;/em&gt; when I press the 'submit' button. My name is then couriered to the database, and &lt;code&gt;state&lt;/code&gt; looks like this again now, just like it did at the beginning&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   state = {
       name: '',
   }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why do we do it this way?&lt;/strong&gt; &lt;em&gt;Controlling forms&lt;/em&gt; makes it more convenient to share form values between components. Since the form values are stored in &lt;code&gt;state&lt;/code&gt;, they are easily passed down as &lt;code&gt;props&lt;/code&gt; or sent upward via a function supplied in &lt;code&gt;props&lt;/code&gt;. Another reason &lt;em&gt;controlled forms&lt;/em&gt; are preferred is that &lt;em&gt;uncontrolled forms&lt;/em&gt; typically yield code that is not DRY. In an &lt;em&gt;uncontrolled form&lt;/em&gt;, one may access the form data within the event -- that is to say, the data is available&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;handleSubmit = e =&amp;gt; {
 e.preventDefault()
 const carMake = e.target.children[0].value
 const carModel = e.target.children[1].value
 this.persistDataToDatabase({ carMake, carModel 
 })
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;but&lt;/em&gt;, it is just not quite as efficient, or elegant as the alternative, a &lt;em&gt;controlled component&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;handleSubmit = e =&amp;gt; {
 e.preventDefault()
 this.persistDataToDatabase(this.state)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>javascript, html, css, production design</title>
      <dc:creator>may arden</dc:creator>
      <pubDate>Fri, 21 May 2021 20:41:19 +0000</pubDate>
      <link>https://dev.to/mayarden/javascript-html-css-production-design-3nm2</link>
      <guid>https://dev.to/mayarden/javascript-html-css-production-design-3nm2</guid>
      <description>&lt;p&gt;I began learning JavaScript and immediately struggled to synthesize the concepts. I realized that I needed to further develop my understanding of HTML and CSS, because the three languages work together like a jigsaw puzzle. &lt;/p&gt;

&lt;p&gt;They are all components of styling and interactivity, similar to the design of a stage production. They are all integral parts of composing a compelling user experience which, at its essence, is storytelling. Just as in an opera or other type of stage production the set design, costuming, and lighting are all essential parts of bringing characters to life, the frontend languages of computer programming allow users to engage with the virtual realities we developers weave. &lt;/p&gt;

&lt;p&gt;The other metaphor I found myself delving deeply into is that of the DOM tree, and its nodes. The word node comes from the Latin nodus ‘knot’. It is in these knots where further branches extend, creating a veritable ecosystem which can easily grow into a brambly mess if you aren’t paying attention. For me, I found that when I lost track of my &lt;/p&gt;’s, things got messy. 

&lt;p&gt;Building, hedging, trimming and styling with attention and care proved to be the most effective way of managing front end development. Any time I began coding without intention or focus, I inevitably ended up making some kind of mistake or creating some type of bug, simply through inattention. Any time this happened I stepped away, took a breath, and reviewed my notes regarding the design narrative for my application. &lt;/p&gt;

&lt;p&gt;For this project, because JavaScript was developed in 1995 I wanted to use Times New Roman because it harkens back to those days. I wanted to use Millennial Pink as the background, because Millennials are into VaporWave and mid90s culture and aesthetic. I wanted the application to look clean, and minimal, and I wanted to make it look similar to Instagram. &lt;/p&gt;

&lt;p&gt;Just as it is with backend development, where you need to go in with a strategy to manage the way in which your data will be structured, so too must you approach front end development with a strategy to manage your narrative structure. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>miching</title>
      <dc:creator>may arden</dc:creator>
      <pubDate>Fri, 20 Nov 2020 18:48:12 +0000</pubDate>
      <link>https://dev.to/mayarden/miching-8g5</link>
      <guid>https://dev.to/mayarden/miching-8g5</guid>
      <description>&lt;p&gt;When I set out to build my command-line interface application, I knew I wanted to find an application programming interface which was related in some capacity to music. After some research, combing through lists of free API's, I still hadn't found something which resonated which me. A moment later, though, I typed in the words 'baroque music API' into the Google search box and lo! OpenOpus.org was one of the first results.&lt;/p&gt;

&lt;p&gt;As I began examining the metadata contained within the OpenOpus API, I recalled how struck I'd been in a recent lesson in which I discovered .sample -- a Ruby method which allows you to extract a random value from an array of data. I remember being moved by that particular concept, because as when one rolls dice, picks a random card, or flips a coin, what are the forces at play in determining what side of the coin falls, or which side of the dice is on top? Plainly, when a machine makes a random selection, how does it do that?&lt;/p&gt;

&lt;p&gt;Since Bach was a numerologist, deeply spiritual, but also intensely analytical, I decided to build a little cleromancy machine which would receive a genre name (chamber, keyboard, orchestral, or vocal) as user input, and then use .sample to spit out a 'random' title of a piece by Bach which fits into that genre. &lt;/p&gt;

&lt;p&gt;Another facet of random selection that interests me is the way one can use games or activities of chance within structured parameters to increase or enrich creativity, as with Brian Eno's Oblique Strategies -- a deck of cards, upon each is an insight or a directive for musicians and producers when they are working in the studio and get stuck. For instance, one might draw a card which says 'use an old idea', or 'honour thy error as hidden intention', or 'what would your closest friend do?'. These cards were inspired in part, I've read, by the I Ching, an ancient Chinese tradition of cleromancy. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>hello world</title>
      <dc:creator>may arden</dc:creator>
      <pubDate>Sat, 31 Oct 2020 06:55:48 +0000</pubDate>
      <link>https://dev.to/mayarden/hello-world-481</link>
      <guid>https://dev.to/mayarden/hello-world-481</guid>
      <description>&lt;p&gt;"unspoken feelings are unforgettable"&lt;br&gt;
andrey tarkovsky&lt;/p&gt;

&lt;p&gt;My romance with the computer started early. Entering commands into the MS DOS command portal, tapping with my chubby little fingers, not sure what was happening because it felt like magic. Next came the Logo Turtle, an early digital music production program called Sessions, Oregon Trail, Myst, Riven, X-Wing, and a little known (but wildly entertaining) game called Wrath of the Gods in which the lo fi pixelated player must inhabit the roles of various Greek heroes and amble about the Grecian countryside slaying Medusa, stealing the Golden Fleece, defeating the Minotaur and sleuthing his way between the clashing rocks. &lt;/p&gt;

&lt;p&gt;I took a class from a woman in college where we read PKD, Margaret Atwood, Ursula K. Le Guin and William Gibson all year long. She had a background in Medieval Literature, and her lectures tied Beowulf to Ridley Scott and back to Sappho. My excitement for futurism intensified.&lt;/p&gt;

&lt;p&gt;When I learned about Luigi Russolo, the Futurist movement of the early 20th century, and their intonarumori, the mechanical ancestors of the analogue and digital synthesizers we use today, I felt a yearning to dig my fingers into a machine and to use that as my instrument. &lt;/p&gt;

&lt;p&gt;I installed the program called Ableton Live on my Macbook, and when I opened it up it looked like a foreign language with a foreign alphabet. I had no idea how anything worked. Almost all of the terminology was new to me. There were dials, filters, inputs, outputs, dithering settings, amplitude adjustments, volume, gain ... I felt the weight of having so many choices, but more than anything I felt inspired that this elegant machine would aid me in my quest to make something beautiful. I just had to learn the rules, and solve the puzzle.  &lt;/p&gt;

&lt;p&gt;I felt that same way when I started learning how to code, sort of a majestic curiosity. I started to notice and think about how Bach's contrapuntal techniques and numerical symbols which he used to create his musical compositions of exquisite beauty are not unlike the languages and techniques we use today to commune with our machines. It sparked in me a longing to learn programming in much the same way I'd felt compelled to learn to make music, an intangible desire to collaborate with this object imbued with such deeply creative potential. At the root of my desire to code is my reverence for and curiosity about the systems we use to organize our selves, our thoughts, our ideas, our feelings, to express ourselves in this world. I seem to find systems of self-expression endlessly mysterious and engaging. &lt;/p&gt;

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