<?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: Cameren Dolecheck</title>
    <description>The latest articles on DEV Community by Cameren Dolecheck (@camerenisonfire).</description>
    <link>https://dev.to/camerenisonfire</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%2F186751%2Fcb35f517-f60d-4914-a0c8-4dd3880cf83a.jpg</url>
      <title>DEV Community: Cameren Dolecheck</title>
      <link>https://dev.to/camerenisonfire</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/camerenisonfire"/>
    <language>en</language>
    <item>
      <title>Introducing A Quick Start Template for Using p5.js in Electron</title>
      <dc:creator>Cameren Dolecheck</dc:creator>
      <pubDate>Wed, 04 Sep 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/camerenisonfire/introducing-a-quick-start-template-for-using-p5-js-in-electron-8k5</link>
      <guid>https://dev.to/camerenisonfire/introducing-a-quick-start-template-for-using-p5-js-in-electron-8k5</guid>
      <description>&lt;p&gt;There is something uniquely enjoyable seeing the code you write come to life. That’s why many of my favorite projects to work on have been creative coding projects. Most of these have revolved around &lt;a href="https://p5js.org"&gt;p5.js&lt;/a&gt;, the Javascript library based on the &lt;a href="https://processing.org"&gt;Processing&lt;/a&gt; language.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is a cross-post from the blog I run, &lt;a href="https://imago.dev"&gt;Imago Dev&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal of the Processing Foundation is to make coding accessible for artists and designers. This library does so by providing an easy to understand API to draw and animate in a web browser. From learning programming by moving primitive shapes, to creating complex generative art, p5.js has got your back.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bumps in the road
&lt;/h3&gt;

&lt;p&gt;As neat as p5.js is, the web browser itself can throw up some limitations. You have to spin up a local server to retrieve assets, you don’t have access to the file system, you’re limited to one tab and window, and if you’re anything like me you’re likely to get distracted by that open Youtube tab.&lt;/p&gt;

&lt;p&gt;That’s where &lt;a href="https://electronjs.org"&gt;Electron&lt;/a&gt; comes in. By combining Chromium and Node.js, you fix all those problems (maybe not the Youtube distraction) with one tool.&lt;/p&gt;

&lt;p&gt;Electron and p5.js pair up great. Electron takes care of all your file system, window, and menu bar needs, leaving p5.js to do what it does best — create super cool art and designs. Sketches move from a little dinky webpage to a full blown local app.&lt;/p&gt;

&lt;p&gt;To help you get up and running creating p5.js sketches in Electron, I’ve built a quick start template — &lt;a href="https://github.com/camerenisonfire/p5-electron-quick-start"&gt;P5-Electron-Quick-Start Project Template&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;p&gt;This template comes pre-configured with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;p5.js&lt;/code&gt; npm module, rather than statically downloaded files. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Electron&lt;/code&gt; with pre-configured main and render process files.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Electron-reload&lt;/code&gt; to keep the sketch up-to-date as you make changes.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Mocha&lt;/code&gt; as the Node.js test suite.&lt;/li&gt;
&lt;li&gt;Example sketch that reacts to mouse movement and click.&lt;/li&gt;
&lt;li&gt;Examples of creating pure functions to drive your sketch.&lt;/li&gt;
&lt;li&gt;Examples tests for your sketch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For those of you familiar with p5.js sketches, you’ll notice that the &lt;code&gt;sketch.js&lt;/code&gt; file is setup a bit different. In order to keep P5 out of the global scope, it is instantiated inside &lt;code&gt;sketch.js&lt;/code&gt; rather than declared as a &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; in the &lt;code&gt;index.html&lt;/code&gt; file. This means that whenever you would call a p5 method, you must call it from the injected p5 instance. For example, in the &lt;code&gt;sketch()&lt;/code&gt; function, you must use &lt;code&gt;p.ellipse()&lt;/code&gt; rather than just &lt;code&gt;ellipse&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Only a button press away
&lt;/h3&gt;

&lt;p&gt;Github makes creating new repos from template projects simple with the &lt;code&gt;Use this template&lt;/code&gt; button. After that and a couple &lt;code&gt;npm&lt;/code&gt; commands, you’ll have skipped the annoying setup and can get straight to building awesome creative coding pieces with p5.js in Electron!&lt;/p&gt;

&lt;p&gt;Hopefully, this template serves you well in your next project. Please provide any feedback on ways this quick starter can be improved to help you.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>electron</category>
      <category>javascript</category>
    </item>
    <item>
      <title>10 Intriguing Public REST APIs For Your Next Project</title>
      <dc:creator>Cameren Dolecheck</dc:creator>
      <pubDate>Wed, 28 Aug 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/camerenisonfire/10-intriguing-public-rest-apis-for-your-next-project-2gbd</link>
      <guid>https://dev.to/camerenisonfire/10-intriguing-public-rest-apis-for-your-next-project-2gbd</guid>
      <description>&lt;p&gt;The notion of working on side projects gets thrown out a lot amongst the programming community. It can be intimidating sitting in front of a blank code editor wondering what to build. Hosts of blog posts have been written recommending building applications like calculators, to-do lists, and social media clones. While those can certainly be helpful for learning technology stacks, let’s face it — the word doesn’t need any more calculators or to-do list apps. Instead, we can build new and interesting applications around public facing REST APIs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is a cross-post from the blog I run, &lt;a href="https://imago.dev"&gt;Imago Dev&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What’s a REST API?
&lt;/h3&gt;

&lt;p&gt;A Representable State Transfer(REST) Application Programming Interface(API) provides a set of methods that a programmer can use via HTTP to send and receive data. Since these methods are over HTTP, any programming language can be used to employ REST APIs.&lt;/p&gt;

&lt;p&gt;There are thousands of REST APIs available on almost every different domain conceivable. Commonly used public data like weather or stock markets have dozens of APIs available for use. Many popular web platforms, like Facebook and Twitter, provide APIs to developers too. Some of the proprietary APIs have limitations to the number of times you can call. Many require signing up and receiving a private API Key. The most secure APIs require setting up OAuth for users to login securely.&lt;/p&gt;

&lt;p&gt;You can find a huge list of public apis &lt;a href="https://github.com/public-apis/public-apis"&gt;at this Github&lt;/a&gt; and an even grander list at &lt;a href="https://rapidapi.com"&gt;RapidAPI&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  10 Intriguing Public REST APIs
&lt;/h3&gt;

&lt;p&gt;This list is certainly not exhaustive of cool REST APIs, but simply some I find to be especially neat and worthy of some side projects. All of these are completely free and do not require any thing more than getting an API Key — no need to figure out how to handle OAuth or pay for their use.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://pokeapi.co"&gt;PokeAPI&lt;/a&gt; The largest media franchise of all time now has an easy way to get data on the 800+ Pokemon.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://api.nasa.gov/index.html"&gt;NASA API&lt;/a&gt; Space, the final frontier. Get data on astroids, galaxies, and more. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://world.openfoodfacts.org/data"&gt;Open Food Facts&lt;/a&gt; A huge amount of data on food products from around the world.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rapidapi.com/transloc/api/openapi-1-2"&gt;TransLoc OpenAPI&lt;/a&gt; Get live data of public transportation of cities and college campuses.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://rapidapi.com/community/api/urban-dictionary"&gt;Urban Dictionary API&lt;/a&gt; It’s amazing what slang people come up with. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dictionaryapi.com"&gt;Merriam-Webster Dictionary API&lt;/a&gt; For those that want real words’ definitions and synonyms. &lt;/li&gt;
&lt;li&gt;
&lt;a href="http://numbersapi.com"&gt;Numbers API&lt;/a&gt; Interesting facts and trivia on numbers.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.weatherbit.io/api"&gt;WeatherBit API&lt;/a&gt; Current and historical weather data. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.data.gov/developers/apis"&gt;US Government Data API&lt;/a&gt; A fairly big catch-all for dozens of United State data samples such as agriculture, health, and public safety.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://scripture.api.bible"&gt;Bible API&lt;/a&gt; The best selling book of all time. The greatest story ever told.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What To Do With Them
&lt;/h3&gt;

&lt;p&gt;All those public APIs are great, but having a list of interesting sources of data does not inherently help the initial problem of determining what to do for a new project.&lt;/p&gt;

&lt;p&gt;The best place to start is by simply getting and displaying data. Maybe that’s showing a Pokemon of the day or the definition of a typed in word. For the more creative types, try taking pieces of the data and mapping it to a visual element, such as temperature to color or drawing lines based on bus movement.&lt;/p&gt;

&lt;p&gt;The hardest part is simply getting started. Once you’ve gotten past the initial hurdle of fetching and displaying the information, I’m sure you’ll think of plenty of next steps for your project!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>api</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Book Review - If Hemingway Wrote Javascript</title>
      <dc:creator>Cameren Dolecheck</dc:creator>
      <pubDate>Wed, 21 Aug 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/camerenisonfire/book-review-if-hemingway-wrote-javascript-gfm</link>
      <guid>https://dev.to/camerenisonfire/book-review-if-hemingway-wrote-javascript-gfm</guid>
      <description>&lt;p&gt;What would computer code look like if it was created by history’s greatest writers? How would some of the most creative linguistic minds take to writing Javascript? Angus Troll attempts to answer those questions in &lt;a href="https://nostarch.com/hemingway"&gt;“If Hemingway Wrote Javascript”&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is a cross-post from the blog I run, &lt;a href="https://imago.dev"&gt;Imago Dev&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This book takes an entirely different approach to coding and style. Croll solves a handful of common programming challenges, such as finding Fibonacci or prime numbers, in a matter fitting a wide variety of famous writer’s styles. Some solutions, like the first example by Hemingway, are down right elementary; however, some like Italo Calvino turn functional programming on its head.&lt;/p&gt;

&lt;p&gt;Often times, comments in the code work to tell a story more so than simply describe the lines of code. Some authors throw out form all together, combining code and comment into one string of thought. For instance, the beat generation writer Jack Kerouac’s solution to factorial, writes the whole program as essentially a single line.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/*...the only numbers for me are the mad ones, take forty-three like a steam engine with a talky caboose at the end*/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;43&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="cm"&gt;/*and that lanky fellow in a cocked fedora*/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cm"&gt;/*then back to our number, our mad number, mad to become one*/&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cm"&gt;/*mad to descend*/&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="cm"&gt;/*mad to multiply*/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="cm"&gt;/*and at the end, you see the blue center-light pop, and everybody goes 1.4050061177528801e+51…*/&lt;/span&gt;
&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s so wonky that I had to turn off my Prettier VS Code extension just to save the snippet properly. You’ll also notice that he totally disregards any factorial except for that of the number 43.&lt;/p&gt;

&lt;p&gt;Croll does an excellent job of providing a brief bio on each writer in order to set up the reasoning behind a given solution. Even if you hardly understand Javascript, you’ll walk away with a greater understanding of 25 brilliant writers. If you’re like me, this book will probably stuff up the urge to dive into some of the authors’ actual literary work.&lt;/p&gt;

&lt;p&gt;When most folks who create code are the technical engineering types, having an artist play with the “language” part of “programming language” truly provides a fresh take on coding style. That is not to say you should emulate the topsy-turvy nature of these authors when starting the next project, but it certainly will push you to think outside the box.&lt;/p&gt;

&lt;p&gt;Overall, this book is an excellently playful read that is worth your time.&lt;/p&gt;

&lt;p&gt;Have you reader this book? What were your thoughts?&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>books</category>
      <category>bookreview</category>
      <category>programming</category>
    </item>
    <item>
      <title>Simple Internet Radio Music Visualizer</title>
      <dc:creator>Cameren Dolecheck</dc:creator>
      <pubDate>Wed, 14 Aug 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/camerenisonfire/simple-internet-radio-music-visualizer-4n</link>
      <guid>https://dev.to/camerenisonfire/simple-internet-radio-music-visualizer-4n</guid>
      <description>&lt;p&gt;Creating animations that react to music is a fun way to get started learning how to build generative art and design. There is something extremely satisfying in seeing shapes dance around the screen to the music. This tutorial will walk you through how to get started creating reactive music visualizer based on an Internet radio stream. This tutorial will stick to web technologies and is based on my &lt;a href="https://github.com/camerenisonfire/radio-visualizer-starter"&gt;Radio Visualizer Starter Project&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is a cross-post from the blog I run, &lt;a href="https://imago.dev"&gt;Imago Dev&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Keeping Time
&lt;/h3&gt;

&lt;p&gt;Music acts as an easy to use and constantly changing data set for generative animations. Both sound and animation share a common variable — time. While words or images are locked into place once created, both sound and animation must be experienced over time. It is this shared parameter that allows such an easy link between the two mediums.&lt;/p&gt;

&lt;p&gt;The strong bond of time allows for easier mappings of the parameters that do differ between sound and animation. For sound, commonly employed parameters are volume, frequency, and tempo. These intuitively map to an object’s size, position, color, and speed in the animation. Since changing these parameters over time is what creates animation, having the music control the various values is an ideal way to drive the animation.&lt;/p&gt;

&lt;p&gt;While this connection between music and animation can be done with any piece of music, doing so against a radio stream provides a practically unlimited amount of music to play with. Given that even the lamest radio stations do not play the exact same song 24/7, it has the benefit of providing a wider range of sound parameters to build your animation around. Not only that, but you the developer also have the benefit of not hearing the same first 20 seconds of a song hundreds of times as you refresh the animation while building.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bring On The Sound
&lt;/h3&gt;

&lt;p&gt;To start, we first need to receive and analyze the radio stream. There are many great sound libraries for a variety of languages. Modern web browsers come equipped with the &lt;code&gt;&amp;lt;audio&amp;gt;&lt;/code&gt; node and &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API"&gt;Web Audio API&lt;/a&gt;. This API gives easy to use methods to connect and analyze our audio source. First, we need to define our audio source. In the example, I use &lt;a href="https://wknc.org"&gt;NC State University’s radio station, WKNC Raleigh&lt;/a&gt;. As long as the stream allows Cross Origin sharing, you can replace the &lt;code&gt;src&lt;/code&gt; with the station of your liking.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;audio&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;preload=&lt;/span&gt;&lt;span class="s"&gt;"auto"&lt;/span&gt; &lt;span class="na"&gt;crossorigin=&lt;/span&gt;&lt;span class="s"&gt;"anonymous"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"http://sc8.streammystation.com:7430/stream"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/audio&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that the audio node is defined, it needs to be told to play. Chrome, and likely more browsers, now enforces that the user interacts with the page before allowing audio to begin playing. To handle this, we must put our call to the &lt;code&gt;play()&lt;/code&gt; method inside an event listener. In the starter project, this is contained inside of the &lt;code&gt;radio.js&lt;/code&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Uses the WebAudio API to analyze streaming audio&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;analyser&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;source&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;audioElement&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;radio&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//gets the element in the HTML document with the id="radio"&lt;/span&gt;

&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Start playing the radio stream when document is clicked&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;defaultCanvas0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;audioElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;play&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="c1"&gt;//TODO: hook up the analyzer&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But wait, what is this &lt;code&gt;defaultCanvas0&lt;/code&gt; element? Now is when we get to the animation side of this tutorial. The starter project employs p5js to create our animations. The initial &lt;code&gt;setup()&lt;/code&gt; function creates our &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; which gets the id of &lt;code&gt;defaultCanvas&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Until we get the audio stream going and hook it up to the API that will analyze the audio for us, we need the &lt;code&gt;draw()&lt;/code&gt; p5js function to tell us to click the &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; to get started. Since we have not created our analyzer yet, we will just have p5js draw the background and start text, and then not run any of the rest of our draw function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;drawBackground&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;analyser&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;//we haven't started the audio yet&lt;/span&gt;
  &lt;span class="nx"&gt;showStartText&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&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 need to hook up the analyzer, which our entire animation hinges on. This is where the Web Audio API really shines. All of the hooking up of audio nodes happens inside the click event listener, immediately following our &lt;code&gt;audioElement.play();&lt;/code&gt; call.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AudioContext&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;webkitAudioContext&lt;/span&gt;&lt;span class="p"&gt;)();&lt;/span&gt; &lt;span class="c1"&gt;//Tells the browser we want to use Audio for out analyser&lt;/span&gt;

&lt;span class="nx"&gt;source&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createMediaElementSource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;audioElement&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//Set the context to be our radio stream&lt;/span&gt;
&lt;span class="nx"&gt;analyser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createAnalyser&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;source&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;analyser&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//Connect up the radio stream to the audio analyser&lt;/span&gt;

&lt;span class="c1"&gt;// Connect the output of the analyser to the destination, so that the audio will play out speakers&lt;/span&gt;
&lt;span class="nx"&gt;analyser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;destination&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Basically, all the above code does is tell the Web Audio API where to find our audio source, connect that source up to the analyzer, and then connect the analyzer up to our &lt;code&gt;destination&lt;/code&gt;, which is really just our computer’s speakers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting The Frequency
&lt;/h3&gt;

&lt;p&gt;Everything is all hooked up and ready to be analyzed for our animation. To use our analyzer, we need to ask it for data every frame of animation. For the starter project, we will base the animation off of the sound frequencies. To do this, in the &lt;code&gt;draw()&lt;/code&gt; method of p5js, we have&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;frequencyData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Uint8Array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;analyser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frequencyBinCount&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//Tell the analyser in radio.js to fill our Array with the frequency data&lt;/span&gt;
&lt;span class="nx"&gt;analyser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getByteFrequencyData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;frequencyData&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This clears out the frequencyData from the previous animation frame and then fills it with the latest frequency data. This data is put into an array, which by default the analyzer fills with 1024 different values. The lower the index in the array, like &lt;code&gt;frequencyData[10]&lt;/code&gt;, the lower the audio frequency; thus, the higher the index, like &lt;code&gt;frequencyData[900]&lt;/code&gt;, the higher the audio frequency the cell represents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Driving The Animation
&lt;/h3&gt;

&lt;p&gt;The final step is to use this frequency data for our animation. This starter project simply adjusts the size of a circle based on a low frequency. The more the audio has that frequency, the bigger the circle will be.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Draw an ellipse in the center of our canvas that scales with the frequency data&lt;/span&gt;
&lt;span class="nx"&gt;ellipse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;frequencyData&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;frequencyData&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that’s it! Every frame, we have a new value for &lt;code&gt;frequencyData[10]&lt;/code&gt;, and thus a new size for our circle. One last minor effect to add is having the circle fade out. This gives a smoother animation as the circle changes size.&lt;/p&gt;

&lt;p&gt;The way we redraw our frame is by covering the previous frame with a new one. We do this by covering the last frame with the background of our new frame. If we keep our background with 100% opacity, every frame is drawn seemingly totally separate from the previous; however, if we lower the opacity to 10% then the frames bleed into each other, since the last frame is only a little bit obscured by the new background. This creates the desired fade out effect.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;drawBackground&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;//Sets the fill color of our shape red with low opacity&lt;/span&gt;
  &lt;span class="c1"&gt;//uses low opacity so the circle fades out on edges&lt;/span&gt;
  &lt;span class="nx"&gt;fill&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;//Draw a rectangle, which will be red with low opacity&lt;/span&gt;
  &lt;span class="nx"&gt;rect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that you’ve got the basics of building animation based on music, try linking other animation parameters, like position or the number of objects, to the frequency data!&lt;/p&gt;

</description>
      <category>p5js</category>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Code Editors Change Our Work</title>
      <dc:creator>Cameren Dolecheck</dc:creator>
      <pubDate>Wed, 07 Aug 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/camerenisonfire/code-editors-change-our-work-bgn</link>
      <guid>https://dev.to/camerenisonfire/code-editors-change-our-work-bgn</guid>
      <description>&lt;p&gt;Since the beginning, man has been finding ways to extend the ability of the individual with tools. We began using tools to create more advanced tools. Over the millennia, our technology compounded on itself. With the invention of computer software, our tools vent virtual. The growth of software has exploded faster than practically any other toolset man has created. With that explosion has come the evolution of one of the core tools one uses in making software, a source code editor.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is a cross-post from the blog I run, &lt;a href="https://imago.dev"&gt;Imago Dev&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Evolution of Editors
&lt;/h3&gt;

&lt;p&gt;I first learned to code about 10 years ago in a high school course. Other than using Notepad for the first program or two, we used Turbo C++ by Borland. Looking at the interface now, it seems quite ugly and dated, and to be honest it looked dated even then. Once you get past the over-saturated blue editor pane and drab grey tool bar, you find a fairly decent integrated development environment for a beginner. It compiled and executed the code, syntax highlighted keywords, showed where compile time errors were located, and had a debugger to step through the code during runtime.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eqnFzqGl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imago.dev/static/21dc3488debd0706a2e9e427b1ea310d/0165f/Turbo_CPP_Compiler.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eqnFzqGl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imago.dev/static/21dc3488debd0706a2e9e427b1ea310d/0165f/Turbo_CPP_Compiler.webp" title="Turbo C++ Editor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In just the decade since I used Turbo C++, source code editors have grown substantially in their ability and scope. I have used a number of editors over the years, now landing on VS Code for web development and Intellij IDEA for Java, Scala, and heavier Javascript work. It is almost hard to believe how advanced these tools are when compared to Turbo. Between the huge number of features that come built into the editor and the vast array of available extensions available, the software developer has everything all in one comprehensive tool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fTOXknPQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imago.dev/static/737961f5ccf4967ff38bbb580aeaadf6/0c401/VSCode_Editor.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fTOXknPQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imago.dev/static/737961f5ccf4967ff38bbb580aeaadf6/0c401/VSCode_Editor.webp" title="VS Code Editor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed &amp;amp; Flow
&lt;/h3&gt;

&lt;p&gt;Putting all of the features a developer needs into one tool can drastically increase productivity. Powerful search functionality allows jumping to disparate sections of code in an instant. Refactoring convoluted components can be done with a click of a button. Building, testing, and deploying can be kicked off with a single hotkey.&lt;/p&gt;

&lt;p&gt;There is no doubt that source code editors have come a long way at supercharging the development process; however, one must be careful about speed for speed’s sake. Simply creating code faster, if not the correct code solving the correct problem, only puts you down the wrong path even quicker. The latest tips and extensions for your VS Code setup is not going to solve your poorly designed application architecture.&lt;/p&gt;

&lt;p&gt;Assuming what you are building and how you are building is sound, the less friction the developer runs into while constructing the better. Not only does the problem get solved faster, but the developer can think clearer with the limited amount of cognitive load. The less you have to think about superfluous tasks like how to build or where a function lives, the more you can focus on the real problem.&lt;/p&gt;

&lt;p&gt;Getting to the point where editor creates this speed and flow can take some up front investment. Advanced editors like Intellij can be so vast that knowing where the feature you need resides takes some searching. The editors may also require some third-party extensions for it to handle your project well. Even the most basic editors, like Vi, take deliberate effort to learn how to maneuver. Thankfully, many great tutorials exist, often by the editor’s creators, on how to master these powerful tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Evaluate
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. -Abraham Maslow&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tools change how we look at a problem. When used optimally, tools can make a task easier; however, a limited idea of when a tool is best used can cause us to approach the problem in the wrong way. This may not only make solving the problem harder, but cause additional problems. It is because of this importance that we must take the time to learn about our tools, both how to optimally use the ones we have and what other tools are available.&lt;/p&gt;

&lt;p&gt;Source code editors are no exception. With such a powerful tool that every developer will spend a vast amount of time using, these tools have a great impact on the resulting application.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How does your editor effect your work?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>tools</category>
      <category>programming</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Matters of Style</title>
      <dc:creator>Cameren Dolecheck</dc:creator>
      <pubDate>Wed, 31 Jul 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/camerenisonfire/matters-of-style-5097</link>
      <guid>https://dev.to/camerenisonfire/matters-of-style-5097</guid>
      <description>&lt;p&gt;What comes to your mind when you consider the word &lt;strong&gt;style&lt;/strong&gt;? Have you considered your style? Most people limit their idea of style to the clothes on their backs or to some design trends. Maybe, if they have thought a little more about it, they consider a fuller picture of their style — the way they communicate.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is a cross-post from the blog I run, &lt;a href="https://imago.dev"&gt;Imago Dev&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Understanding Style
&lt;/h1&gt;

&lt;p&gt;Our style is the conglomeration of all the ways we choose to reflect our inner-self to the outside world. This encompasses far more than simply what colors we pick or what words we use. Everything that expresses our values, emotions, interests, faith, knowledge, status, and skills adds up to the cumulative whole of style.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Style matters a lot.&lt;/em&gt; A well planned style can vastly improve your ability to communicate to others; however, how we communicate may need to be adjusted based on the context and audience. A white coat and stethoscope would likely help bring credibility to someone giving medical advice, but probably would seem strange for someone to wear while selling tractors. Writing an essay in Comic Sans while using slang and emojis probably will not earn a college scholorship, but that might be fun and enjoyable connect while texting your nephew.&lt;/p&gt;

&lt;h2&gt;
  
  
  Coding
&lt;/h2&gt;

&lt;p&gt;Writing software is, in large part, the art of communicating technical processes. It is no coicidence that software is written with programming &lt;em&gt;languages&lt;/em&gt;. Often times, how you write your code can arguably be more important than the resulting instructions the computer actually performs.&lt;/p&gt;

&lt;p&gt;It has been said that &lt;strong&gt;software development is mostly reading, not writing, code.&lt;/strong&gt; Trying to figure out a bug or how the new feature will fit into the existing code base starts by reading the existing code. The easier that code is to understand, the quicker these tasks can be completed. Because of this, organizations and languages build up style guidelines to follow. These guidelines create consistent patterns that aid in creating a cohesive codebase.&lt;/p&gt;

&lt;p&gt;Like the clothes or grooming of a person, a codebase’s style can be a big indicator for the quality of the code and the ability of its creator. If you were a manager or a hiring agent looking at someone’s work, who would you trust more:&lt;/p&gt;

&lt;p&gt;Person A&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let Thing1 = p(1, 2, 3, 4, "Lego");
let thing2 = p(1, 2, 3, 4, "connect");
console.log(Thing1 + " as compared to " + thing2);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or Person B&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const houseSides = [1, 2, 3, 4]; //length of house to build in inches
let legoBricksNeeded = perimeterLego(houseSides);
let connectPiecesNeeded = perimeterConnect(houseSides);
printComparison(legoBricksNeeded, connectPiecesNeeded);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Person B has put much more effort and thought into thinking up useful names for their variables and functions, keeping the capitilization consitent, and using data structures. Taking time to simply give things consistent and understandable names goes a long way in connecting the reader to what problem is being solved. It also drasticly improves other people's perception of not only the codebase, but its author.&lt;/p&gt;

&lt;p&gt;Maybe you, reader, at this point are thinking, “I am only writing these small personal projects for myself, no one else is even going to see my code.” It is easy to see something as private and let that quality falter, but the small personal victories build up to the large public ones. When you do write code that others will use, your style will have matured from the private changes you implemented.&lt;/p&gt;

&lt;p&gt;Even if it was true that you would only ever write something for themselves to read, you still need to understand it. The &lt;code&gt;p()&lt;/code&gt; function in the Person A example might make sense to the creator in that moment, but will it imediately a year later? Sure, it is easy enough to go to the &lt;code&gt;p()&lt;/code&gt; definition and read what it does, but that adds time, if even just a little. If that process needs to be done for every function written, hours have been added to making the change. Up-front time of crafting a clear and concise style would have saved hours later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Improving
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“On matters of style, swim with the current, on matters of principle, stand like a rock.” -Thomas Jefferson&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When starting a new language, it can be difficult to know what good style looks like. There are some general rules that always apply, like consistent capitolization or well named functions. Languages like Python enforce white space styling while others will let you write just about how ever you please. &lt;a href="https://google.github.io/styleguide/"&gt;Google has a repositoy of style guides&lt;/a&gt; for a wide variety of languages. Many of them even come with linters. Think of these as your personal stylist. They work as a set of rules that code editors use to autocorrect any styling issues.&lt;/p&gt;

&lt;p&gt;There are also many excellent books that focus on style. &lt;a href="https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882?SubscriptionId=AKIAILSHYYTFIVPWUY6Q&amp;amp;tag=duckduckgo-vivaldi-20&amp;amp;linkCode=xm2&amp;amp;camp=2025&amp;amp;creative=165953&amp;amp;creativeASIN=0132350882"&gt;Clean Code&lt;/a&gt; is a great resource, especially for object-oriented languages.&lt;/p&gt;

&lt;p&gt;If you already are working on a project that maybe is… less than great in code style, it is never to late to fix that. Refactoring is the optimal time to do large fixes of code style; however, the very next line of code you write can begin putting that codebase on track. It might be the smallest bug, but every little change can be a victory.&lt;/p&gt;

&lt;p&gt;Since this topic of style is such an vastly important one, there will certainly be more posts from Imago Dev on this matter. Stay tuned!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devtips</category>
      <category>learning</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
