<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts | arnie seong</title>
    <link>https://arnie.rbind.io/post/</link>
      <atom:link href="https://arnie.rbind.io/post/index.xml" rel="self" type="application/rss+xml" />
    <description>Posts</description>
    <generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Mon, 18 Jan 2021 00:00:00 +0000</lastBuildDate>
    <image>
      <url>https://arnie.rbind.io/images/icon_hue09a94db1ceef9e2e495d5b9a0dad46b_39524_512x512_fill_lanczos_center_2.png</url>
      <title>Posts</title>
      <link>https://arnie.rbind.io/post/</link>
    </image>
    
    <item>
      <title>Intro to datagoboop: pitch &amp; playback</title>
      <link>https://arnie.rbind.io/2021-01-18/datagoboop-intro/</link>
      <pubDate>Mon, 18 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://arnie.rbind.io/2021-01-18/datagoboop-intro/</guid>
      <description>
&lt;h1 id=&#34;introducing-datagoboop&#34;&gt;Introducing &lt;code&gt;datagoboop&lt;/code&gt; &lt;a href=&#34;#introducing-datagoboop&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;datagoboop&lt;/code&gt; is an R package for data sonification, or the audio version of data visualization.  This project started off while I was dreaming of representing data as a symphony &amp;mdash; our ears can with some training pick out each instrument in a symphony orchestra (maybe 15-20 instruments), whereas representing more than 4 or 5 variables in one plot is usually quite chaotic.&lt;/p&gt;
&lt;p&gt;I asked &lt;a href=&#34;http://sebwaz.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Sebastian Waz&lt;/a&gt; and &lt;a href=&#34;https://www.ics.uci.edu/~jaylenl/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Jaylen Lee&lt;/a&gt; to join me in putting together this first pass at an R package for data sonification.  While we haven&amp;rsquo;t quite gotten to symphonic sound &amp;mdash; turns out a library of high-quality audio files gets large fast, so most output from &lt;code&gt;datagoboop&lt;/code&gt; sounds more like 8-bit video game music 😜 &amp;mdash; we still think it sounds pretty neat!&lt;/p&gt;

&lt;h2 id=&#34;why-datagoboop&#34;&gt;Why &lt;code&gt;datagoboop&lt;/code&gt; &lt;a href=&#34;#why-datagoboop&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There are a few other data sonification packages for R, such as&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://cran.r-project.org/web/packages/sonify/index.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;sonify&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cran.r-project.org/web/packages/audiolyzR/index.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;audiolyzr&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://playitbyr.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;playitbyr&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(&lt;code&gt;audiolyzr&lt;/code&gt; in particular &lt;a href=&#34;https://www.r-bloggers.com/2013/01/audiolyzr-data-sonification-with-r/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;sounds pretty neat!&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The main difference between these packages and &lt;code&gt;datagoboop&lt;/code&gt; is that &lt;code&gt;datagoboop&lt;/code&gt; includes several built-in sonification versions of common plots, but also allows users to build audio plots piece by piece by providing a higher level of control and modular functions.&lt;/p&gt;

&lt;h1 id=&#34;setup&#34;&gt;Setup &lt;a href=&#34;#setup&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;nf&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;requireNamespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;devtools&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;install.packages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;devtools&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;devtools&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;install_github&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;akseong/datagoboop&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(You can also see &lt;a href=&#34;https://github.com/akseong/datagoboop&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;the repo here&lt;/a&gt;)&lt;/p&gt;

&lt;h1 id=&#34;ground-level-sonification&#34;&gt;Ground-level sonification &lt;a href=&#34;#ground-level-sonification&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;

&lt;h2 id=&#34;pitch&#34;&gt;Pitch &lt;a href=&#34;#pitch&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pitch in &lt;code&gt;datagoboop&lt;/code&gt; is parameterized as idealized piano key numbers, where the pitch frequency (hz) is given as a function of the piano key number $n$ by
$$f(n) = 2^{\big( \frac{n - 49}{12}\big)}  \times 440$$&lt;/p&gt;
&lt;div class=fyi&gt;
&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Piano_key_frequencies&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;The Wikipedia page for piano key frequencies&lt;/a&gt; is a useful reference.&lt;/p&gt;
&lt;p&gt;Note that &lt;code&gt;datagoboop&lt;/code&gt;&amp;rsquo;s implementation uses the equation above, so the (seemingly arbitrary) numbering for the extended keys on the Wikipedia page will not correspond correctly.&lt;/p&gt;
&lt;/div&gt;

&lt;h2 id=&#34;functions-cplay-wplay&#34;&gt;functions: &lt;code&gt;cplay()&lt;/code&gt;, &lt;code&gt;wplay()&lt;/code&gt; &lt;a href=&#34;#functions-cplay-wplay&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;To actually play audio, you&amp;rsquo;ll need to use either&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cplay()&lt;/code&gt;: audio playback with console controls (&amp;ldquo;control playback&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wplay()&lt;/code&gt;: audio playback better suited for .Rmd documents knitted to HTML.
&lt;ul&gt;
&lt;li&gt;&lt;hlt&gt;in console,&lt;/hlt&gt; &lt;code&gt;wplay()&lt;/code&gt; institutes a system timeout during playback.
&lt;ul&gt;
&lt;li&gt;use console controls instead: argument &lt;code&gt;wplay_controls = TRUE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;suppress playback completely: argument &lt;code&gt;wplayback = FALSE&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;hlt&gt; when knitting to html,&lt;/hlt&gt; &lt;code&gt;wplay()&lt;/code&gt; saves the audio output as a &lt;code&gt;.wav&lt;/code&gt; (named with timestamp), in a folder with the same name as your .Rmd file.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=fyi&gt;
&lt;p&gt;Set the optional arguments &lt;code&gt;wplay_controls&lt;/code&gt; and &lt;code&gt;wplayback&lt;/code&gt; for your entire R session by creating new variables with the same names.&lt;/p&gt;
&lt;p&gt;For example, you can just create a new variable by executing &lt;code&gt;wplayback &amp;lt;- FALSE&lt;/code&gt; to suppress playback globally from calls to &lt;code&gt;wplay()&lt;/code&gt;, for example when you are executing multiple code chunks.&lt;/p&gt;
&lt;p&gt;Just set it to &lt;code&gt;TRUE&lt;/code&gt; when you want to hear it again!&lt;/p&gt;
&lt;/div&gt;

&lt;h2 id=&#34;function-note&#34;&gt;function: &lt;code&gt;note()&lt;/code&gt; &lt;a href=&#34;#function-note&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;nf&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;datagoboop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;n&#34;&gt;midC&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;note&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;nf&#34;&gt;wplay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;midC&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;file_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;index.en.Rmark/midC.wav&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;audio controls=&#34;&#34;&gt;
&lt;source src=&#34;index.en.Rmark/midC.wav&#34; type=&#34;audio/wav&#34;/&gt;
&lt;/audio&gt;
&lt;p&gt;&lt;code&gt;note()&lt;/code&gt; is the most basic function in &lt;code&gt;datagoboop&lt;/code&gt; &amp;mdash; most other functions in &lt;code&gt;datagoboop&lt;/code&gt; are built on top of it.  The only required argument is a &lt;code&gt;pkey&lt;/code&gt; (piano key); output is a .wav-format vector.&lt;/p&gt;
&lt;p&gt;The optional arguments in &lt;code&gt;note()&lt;/code&gt; are worth spending a moment on, since they appear frequently in &lt;code&gt;datagoboop&lt;/code&gt; functions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;optional arguments and defaults:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vol = 1&lt;/code&gt;, volume (values from 0 to 1);&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dur = 1&lt;/code&gt;, duration in seconds;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fs = 44100&lt;/code&gt;, sampling rate (varies by speaker hardware/audio driver);&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inst_lab = &amp;quot;sine&amp;quot;&lt;/code&gt;, instrument type
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;piano&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;string&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;wind&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;bass&amp;quot;&lt;/code&gt;, are built in, though as mentioned they sound like an 8-bit piano, string, flute, or bass&lt;/li&gt;
&lt;li&gt;You can also add sounds using &lt;code&gt;add_inst()&lt;/code&gt; if you don&amp;rsquo;t like our 8-bit sounds, then specify its label here;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;decay = FALSE&lt;/code&gt;, exponential decay of sound;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;decay_rate = 6&lt;/code&gt;, sound decay rate if &lt;code&gt;decay = TRUE&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;midC_bounce&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;note&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;pkey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;vol&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;dur&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;inst_lab&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;piano&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;decay&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;decay_rate&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;6&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;nf&#34;&gt;wplay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;midC_bounce&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;file_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;index.en.Rmark/midC_bounce.wav&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;audio controls=&#34;&#34;&gt;
&lt;source src=&#34;index.en.Rmark/midC_bounce.wav&#34; type=&#34;audio/wav&#34;/&gt;
&lt;/audio&gt;

&lt;h2 id=&#34;functions-notes--chords&#34;&gt;functions: &lt;code&gt;notes()&lt;/code&gt; &amp;amp; &lt;code&gt;chords()&lt;/code&gt; &lt;a href=&#34;#functions-notes--chords&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There is also a vectorized version &lt;code&gt;notes()&lt;/code&gt; &amp;hellip;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;pkeys&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;52&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;64&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;# piano keys for a 1 octave chromatic scale&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;vols&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;13&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;13&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;# increasing volume&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;durs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;24&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;96&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# slowing down&lt;/span&gt;

&lt;span class=&#34;n&#34;&gt;chrom&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;notes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;pkey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkeys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;vol&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vols&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;dur&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;durs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;decay&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;progbar&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;FALSE&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;nf&#34;&gt;wplay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;chrom&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;file_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;index.en.Rmark/chrom.wav&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;audio controls=&#34;&#34;&gt;
&lt;source src=&#34;index.en.Rmark/chrom.wav&#34; type=&#34;audio/wav&#34;/&gt;
&lt;/audio&gt;
&lt;p&gt;&amp;hellip;. and a single chord function &lt;code&gt;chord()&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;chord_prog&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;nf&#34;&gt;chord&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pkey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;54&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;57&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decay&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; 
  &lt;span class=&#34;nf&#34;&gt;chord&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pkey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;55&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;59&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decay&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; 
  &lt;span class=&#34;nf&#34;&gt;chord&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pkey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;54&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;57&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decay&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; 
  &lt;span class=&#34;nf&#34;&gt;chord&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pkey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;49&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;55&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;57&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decay&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; 
  &lt;span class=&#34;nf&#34;&gt;chord&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pkey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;54&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;57&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decay&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;nf&#34;&gt;wplay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;chord_prog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;file_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;index.en.Rmark/chords.wav&amp;#34;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;audio controls=&#34;&#34;&gt;
&lt;source src=&#34;index.en.Rmark/chords.wav&#34; type=&#34;audio/wav&#34;/&gt;
&lt;/audio&gt;

&lt;h1 id=&#34;example-audio-histogram--violinplot&#34;&gt;Example: audio histogram / violinplot &lt;a href=&#34;#example-audio-histogram--violinplot&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;One of the first things we did after creating some of the basic playback functions was to try making an audio version of a histogram.  A little modification turns it into something like a violinplot, which I think may convey the general shape a little more clearly.&lt;/p&gt;
&lt;p&gt;This is pretty different from the &lt;a href=&#34;#function-sonify_hist&#34;&gt;built-in function &lt;code&gt;sonify_hist()&lt;/code&gt; below&lt;/a&gt;, but the idea is to walk through construction of an audioplot using &lt;code&gt;datagoboop&lt;/code&gt;&amp;rsquo;s ground-level functions.&lt;/p&gt;
&lt;p&gt;Overall, we&amp;rsquo;re going to&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;hlt&gt; x-axis $\mapsto$ pitch: &lt;/hlt&gt; map histogram breakpoints to pitch;&lt;/li&gt;
&lt;li&gt;&lt;hlt&gt; y-axis $\mapsto$ duration: &lt;/hlt&gt; map counts/bar heights to duration;&lt;/li&gt;
&lt;li&gt;&lt;hlt&gt; y-axis $\mapsto$ volume: &lt;/hlt&gt; scale volume to counts/bar heights.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I think it&amp;rsquo;s a bit clearer when we start off hearing the highest count bars, and then allow the lower count bars to gradually emerge (so we&amp;rsquo;ll do that 👍).&lt;/p&gt;

&lt;h2 id=&#34;audio-histogram&#34;&gt;Audio Histogram &lt;a href=&#34;#audio-histogram&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;First, we generate the data, and create a histogram.  We&amp;rsquo;ll specify the breaks manually (16 breaks = 15 bins), and also store the histogram&amp;rsquo;s info.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;nf&#34;&gt;set.seed&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rnorm&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;breaks&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;seq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;nf&#34;&gt;floor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt; 
  &lt;span class=&#34;nf&#34;&gt;floor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;length.out&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;16&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;hist_info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;hist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;breaks&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;breaks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://arnie.rbind.io/2021-01-18/datagoboop-intro/index.en_files/figure-html/unnamed-chunk-1-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Next, we&amp;rsquo;ll select a C-major scale to map the breaks to.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;major_scale()&lt;/code&gt; generates a vector of piano key numbers corresponding to a major scale starting at the specified tonic and number of octaves.&lt;/li&gt;
&lt;li&gt;The second line selects every other note in order to avoid dissonance.  (There will still be some!)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;Cmajor&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;major_scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tonic_pkey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n_octaves&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;pkeys&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Cmajor[2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;breaks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now we need to construct each &amp;ldquo;bar&amp;rdquo; of the audio histogram &amp;mdash; each bar gets a note.  Some calculations are required, since we need to fill in each note with silence to start, then the pitch of the note for a duration that expresses bar height.&lt;/p&gt;
&lt;p&gt;We use the sampling rate and desired total duration to calculate total length of each note (each note is a &lt;code&gt;.wav&lt;/code&gt; vector, playable on its own).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;fs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;44100&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;total_dur&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;wave_length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;total_dur&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fs&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;# scale the durations and volume to reflect counts&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;# i.e. the longest note is the bin with the highest counts&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;scaling&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hist_info&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;counts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hist_info&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;counts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;vols&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scaling&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;.25&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;durs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scaling&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;total_dur&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;fill_durs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wave_length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;durs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fs&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=fyi&gt;
&lt;p&gt;Representing variables using volume can be a bit tricky, because volume is a combination of different sound wave characteristics &amp;mdash; not just amplitude.  For example, higher frequencies/pitches sound louder than lower frequencies with the same amplitude.&lt;/p&gt;
&lt;p&gt;In the code above, I&amp;rsquo;ve also added a small nugget &lt;code&gt;+ 0.25&lt;/code&gt; so that the volume doesn&amp;rsquo;t get too quiet.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Last, we construct each note in a loop, and sum each note&amp;rsquo;s sound wave together to construct the audio histogram&amp;rsquo;s sound wave.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;audiohist&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wave_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;nf&#34;&gt;for &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;durs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)){&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;wave_i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
    &lt;span class=&#34;c1&#34;&gt;# notes begin with silence&lt;/span&gt;
    &lt;span class=&#34;nf&#34;&gt;rep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fill_durs[i]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
    &lt;span class=&#34;c1&#34;&gt;# audible portion of note &lt;/span&gt;
    &lt;span class=&#34;nf&#34;&gt;note&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pkey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pkeys[i]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
         &lt;span class=&#34;n&#34;&gt;dur&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;durs[i]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
         &lt;span class=&#34;n&#34;&gt;vol&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vols[i]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;audiohist&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;audiohist&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wave_i[1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wave_length]&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=note&gt;
&lt;p&gt;Summing note vectors to construct the sound wave is OK even though the vectors will exceed [-1, 1] because &lt;code&gt;wplay()&lt;/code&gt; normalizes the .wav vector prior to save/playback.&lt;/p&gt;
&lt;/div
&lt;p&gt;The same histogram is shown again below.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;nf&#34;&gt;wplay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;audiohist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;file_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;index.en.Rmark/hist.wav&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;audio controls=&#34;&#34;&gt;
&lt;source src=&#34;index.en.Rmark/hist.wav&#34; type=&#34;audio/wav&#34;/&gt;
&lt;/audio&gt;
&lt;p&gt;&lt;img src=&#34;https://arnie.rbind.io/2021-01-18/datagoboop-intro/index.en_files/figure-html/unnamed-chunk-6-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;

&lt;h2 id=&#34;audio-violinplot&#34;&gt;Audio Violinplot &lt;a href=&#34;#audio-violinplot&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I like the overall effect of the histogram &amp;mdash; sort of like an island emerging out of the water.  But the tails are &lt;em&gt;very&lt;/em&gt; hard to hear.  So, let&amp;rsquo;s try a violin plot, which we can do simply by reversing the sound vector and placing it back to back.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;nf&#34;&gt;wplay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;nf&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;audiohist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;rev&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;audiohist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;file_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;index.en.Rmark/violin.wav&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;audio controls=&#34;&#34;&gt;
&lt;source src=&#34;index.en.Rmark/violin.wav&#34; type=&#34;audio/wav&#34;/&gt;
&lt;/audio&gt;
&lt;p&gt;(A small happy accident if you listen closely: around 5 seconds in, you can hear a progression in there that sounds &amp;mdash; just for a moment &amp;mdash; like the opening to Debussy&amp;rsquo;s &lt;em&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=wv8iHEM4g7Q&amp;amp;ab_channel=Adagietto&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;La Fille Aux Cheveux De Lin&lt;/a&gt;&lt;/em&gt;)&lt;/p&gt;
&lt;div class=note&gt;
&lt;p&gt;The optional argument &lt;code&gt;file_path&lt;/code&gt; is specified in calls to &lt;code&gt;wplay()&lt;/code&gt; in this post in order to place the .wav file in the folder containing files for this post (see the &lt;a href=&#34;#functions-cplay-wplay&#34;&gt;previous note&lt;/a&gt;).&lt;/p&gt;
&lt;/div&gt;

&lt;h2 id=&#34;function-sonify_hist&#34;&gt;function: &lt;code&gt;sonify_hist()&lt;/code&gt; &lt;a href=&#34;#function-sonify_hist&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;datagoboop&lt;/code&gt; also has a built-in audio histogram function:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;counts/bar height $\mapsto$ pitch&lt;/li&gt;
&lt;li&gt;x-axis $\mapsto$ time&lt;/li&gt;
&lt;li&gt;static bursts mark quartiles&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# requires dataframe as input&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;df&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;data.frame&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;nf&#34;&gt;wplay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;nf&#34;&gt;sonify_hist&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;df&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
    &lt;span class=&#34;n&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;y&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
    &lt;span class=&#34;n&#34;&gt;breaks&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
    &lt;span class=&#34;n&#34;&gt;duration&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;file_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;index.en.Rmark/sonifyhist.wav&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;audio controls=&#34;&#34;&gt;
&lt;source src=&#34;index.en.Rmark/sonifyhist.wav&#34; type=&#34;audio/wav&#34;/&gt;
&lt;/audio&gt;

&lt;h1 id=&#34;next-up-built-in-audio-plot-analogues&#34;&gt;Next up: built-in audio plot analogues &lt;a href=&#34;#next-up-built-in-audio-plot-analogues&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Next post will cover some of the basic plot types built-into &lt;code&gt;datagoboop&lt;/code&gt;, for example, a scatterplot, in which the lower register indicates rising values in the $x$-variable, and the higher register indicates the value of the $y$-variable.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;nf&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ggplot2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;nf&#34;&gt;ggplot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;mtcars&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;nf&#34;&gt;aes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
    &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mpg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
    &lt;span class=&#34;n&#34;&gt;size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;factor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gear&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;color&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;factor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gear&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; 
  &lt;span class=&#34;nf&#34;&gt;geom_point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;alpha&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; 
  &lt;span class=&#34;nf&#34;&gt;labs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mtcars&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://arnie.rbind.io/2021-01-18/datagoboop-intro/index.en_files/figure-html/unnamed-chunk-8-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;mtcars_audio&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;sonify_scatter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mtcars&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;x_var&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mpg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;y_var&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;disp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;factor_var&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;gear&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;volume&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;gear&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;vol_scaling&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;binned 3 exp 2&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;# output suppressed; shows progress bar in console&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;nf&#34;&gt;wplay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;mtcars_audio&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; 
  &lt;span class=&#34;n&#34;&gt;file_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;index.en.Rmark/mtc.wav&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;audio controls=&#34;&#34;&gt;
&lt;source src=&#34;index.en.Rmark/mtc.wav&#34; type=&#34;audio/wav&#34;/&gt;
&lt;/audio&gt;

&lt;h1 id=&#34;a-small-parting-gift&#34;&gt;A small parting gift &lt;a href=&#34;#a-small-parting-gift&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;bp2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;bach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;nf&#34;&gt;wplay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;bp2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
  &lt;span class=&#34;n&#34;&gt;file_path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;index.en.Rmark/bach.wav&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;audio controls=&#34;&#34;&gt;
&lt;source src=&#34;index.en.Rmark/bach.wav&#34; type=&#34;audio/wav&#34;/&gt;
&lt;/audio&gt;
</description>
    </item>
    
    <item>
      <title>Making a website with blogdown &amp; Academic Theme for Hugo 1: setup to basic customization</title>
      <link>https://arnie.rbind.io/2020-12-28/website-setup/</link>
      <pubDate>Mon, 28 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://arnie.rbind.io/2020-12-28/website-setup/</guid>
      <description>&lt;p&gt;This is the first post in a series on building a website with R, &lt;strong&gt;blogdown&lt;/strong&gt;, and the Academic Theme for Hugo.  The next post will cover quality-of-life tweaks, and more advanced customization.&lt;/p&gt;

&lt;h1 id=&#34;update-jan-3-2021&#34;&gt;Update: Jan 3, 2021: &lt;a href=&#34;#update-jan-3-2021&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The main reason I thought this post was worth writing was that Alison Hill&amp;rsquo;s last published guide preceded major updates to the Academic theme for Hugo.  But she has &lt;a href=&#34;https://alison.rbind.io/post/new-year-new-blogdown/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;a new post on setting up your website using &lt;strong&gt;blogdown&lt;/strong&gt; and Academic Theme for Hugo&lt;/a&gt;, i.e. the topic of this post.&lt;/p&gt;
&lt;p&gt;You should use hers as your primary guide &amp;mdash; there is like 90% overlap and she&amp;rsquo;s the expert &amp;mdash; and maybe check here if you need a beginner&amp;rsquo;s perspective on particular topics.&lt;/p&gt;

&lt;h1 id=&#34;intro&#34;&gt;Intro: &lt;a href=&#34;#intro&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;This is less a guide I wrote and more a mixture of guides/info from different sources (mostly by Alison Hill and Yihui Xie) annotated with my observations as &lt;strong&gt;a first-time user&lt;/strong&gt;.  If you want a more streamlined guide, &lt;a href=&#34;https://arm.rbind.io/slides/blogdown.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Alison Hill&amp;rsquo;s 2019 slides on starting a website with &lt;strong&gt;blogdown&lt;/strong&gt; and Hugo&lt;/a&gt; are the bees&#39; knees, though not specific to the Academic Theme.&lt;/p&gt;
&lt;p&gt;A few reasons you might want to use these guides anyways: it&amp;rsquo;s the most recent as of this writing 😎, I&amp;rsquo;ll detail some tricks / workarounds / failures, and I borrow &lt;hlt&gt; heavily &lt;/hlt&gt; from Alison Hill&amp;rsquo;s guide anyways.&lt;/p&gt;
&lt;div class=fyi&gt;
Regarding recentness: it&#39;s actually a little important if using Academic Theme for Hugo --- it seems to have had a breaking update last year (2019).  
&lt;/div&gt;

&lt;h2 id=&#34;who-is-this-meant-for&#34;&gt;Who is this meant for? &lt;a href=&#34;#who-is-this-meant-for&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Essentially, this guide is meant for people like me a week ago: I use R, &lt;strong&gt;rmarkdown&lt;/strong&gt;, and GitHub daily, but I had roughly, oh, about exactly zero experience with HTML, Hugo, or the &lt;strong&gt;blogdown&lt;/strong&gt; package.&lt;/p&gt;
&lt;p&gt;I decided to write this in large part to document what I did so that I can work on my website in the future, particularly because &lt;strong&gt;blogdown&lt;/strong&gt; + Hugo &lt;a href=&#34;https://yihui.org/en/2018/02/marie-dussault/#:~:text=BTW&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;can be finicky&lt;/a&gt;.  Hopefully these posts can save you some pain and frustration if you are also a first-time user.&lt;/p&gt;

&lt;h2 id=&#34;caveats&#34;&gt;Caveats &lt;a href=&#34;#caveats&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I am not an expert on any of this!  I just started using these tools and, basically, if it worked, I moved on.  So some of the suggestions here are likely sub-optimal.  I tried to do my research, but please feel free to let me know if you have better ways to do any of this!&lt;/p&gt;

&lt;h1 id=&#34;preliminaries&#34;&gt;Preliminaries: &lt;a href=&#34;#preliminaries&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;

&lt;h2 id=&#34;note-on-changes-to-academic-theme&#34;&gt;Note on changes to Academic Theme &lt;a href=&#34;#note-on-changes-to-academic-theme&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As mentioned earlier, Academic Theme for Hugo had a big update last year: it became part of something called Wowchemy, and this appears to have broken things for some people, or required different settings, because&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;its folder structure changed, and&lt;/li&gt;
&lt;li&gt;how it, um, handles some stuff is like, different.  (I really have no idea 🤷)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;On my first attempt building this site, I followed an older guide; the discrepancy in folder structure was confusing, and I ended up messing around with the actual theme files 😟.  Then plotting broke 😳.  Then the site didn&amp;rsquo;t deploy &amp;hellip; and I ended up starting over 😖.&lt;/p&gt;
&lt;p&gt;So follow a recent guide.&lt;/p&gt;

&lt;h2 id=&#34;resources&#34;&gt;Resources &lt;a href=&#34;#resources&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;(ordered from most used to least used)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://arm.rbind.io/slides/blogdown.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;slides by Alison Hill&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;These are for a different theme, but she literally wrote the book (along with Yihui Xie) on &lt;strong&gt;blogdown&lt;/strong&gt;, and it&amp;rsquo;s easy to follow steps in this presentation format.  Her slides are also purty.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://alison.rbind.io/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Her website&lt;/a&gt; and &lt;a href=&#34;https://github.com/rbind/apreshill&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;website repo&lt;/a&gt; were also frequently useful to me when troubleshooting.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://bookdown.org/yihui/blogdown/hugo.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;blogdown&lt;/strong&gt; documentation by Yihui Xie&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yihui Xie is basically the Gandalf of the Fellowship of R Users.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://wowchemy.com/docs/customization/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Wowchemy customization guide&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It was a little difficult as a first-time user to find the info I needed here, but if/once I found it, it was helpful!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&#34;starting-up&#34;&gt;Starting up: &lt;a href=&#34;#starting-up&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;This section is almost all from &lt;a href=&#34;https://arm.rbind.io/slides/blogdown.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Alison Hill&amp;rsquo;s slides&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;install-latest-__blogdown__-and-hugo&#34;&gt;Install latest &lt;strong&gt;blogdown&lt;/strong&gt; and Hugo: &lt;a href=&#34;#install-latest-__blogdown__-and-hugo&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;nf&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;requireNamespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;devtools&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;install.packages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;devtools&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;devtools&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;install_github&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;rstudio/blogdown&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;blogdown&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;install_hugo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;make a repo on GitHub.&lt;/li&gt;
&lt;li&gt;create a new Rproject and connect it to the repo.
&lt;ul&gt;
&lt;li&gt;in Rstudio: File &amp;ndash;&amp;gt; New Project &amp;ndash;&amp;gt; Version Control &amp;ndash;&amp;gt; Git&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;if you don&amp;rsquo;t know how to do these things, follow &lt;a href=&#34;https://arm.rbind.io/slides/blogdown.html#9&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;the links in Alison&amp;rsquo;s slides&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=fyi&gt;
If you plan to host your website from GitHub, you will probably want to host it from a repository with the name &lt;code&gt;`yourGitHubusername.github.io`&lt;/code&gt;.  So you can&#39;t use that for this step.
&lt;/div&gt;

&lt;h2 id=&#34;initialize-site-with-academic-theme&#34;&gt;Initialize site with Academic Theme &lt;a href=&#34;#initialize-site-with-academic-theme&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;nf&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;blogdown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;nf&#34;&gt;new_site&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;theme&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;gcushen/hugo-academic&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
         &lt;span class=&#34;n&#34;&gt;sample&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
         &lt;span class=&#34;n&#34;&gt;theme_example&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
         &lt;span class=&#34;n&#34;&gt;empty_dirs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
         &lt;span class=&#34;n&#34;&gt;to_yaml&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;TRUE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After that finishes, see if the site builds locally.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the &amp;ldquo;Addins&amp;rdquo; dropdown (end of the 2nd row of Rstudio&amp;rsquo;s menu bar) to select &amp;ldquo;Serve site&amp;rdquo; or use&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;blogdown&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;serve_site&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&#34;gitignore&#34;&gt;.gitignore &lt;a href=&#34;#gitignore&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Add the &lt;code&gt;resources/&lt;/code&gt; and &lt;code&gt;public/&lt;/code&gt; folders to your &lt;code&gt;.gitignore&lt;/code&gt; file so that it looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;.Rproj.user&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;.Rhistory&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;.RData&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;.Ruserdata&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;resources&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&#34;check-deployment&#34;&gt;Check deployment &lt;a href=&#34;#check-deployment&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Don&amp;rsquo;t skip this step!  It will help you detect problems as you move forward.&lt;/p&gt;
&lt;p&gt;Two common options for hosting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#option-1-continuous-deployment-via-netlify-recommended&#34;&gt;continuous deployment via Netlify (via GitHub)&lt;/a&gt;: awesome.  Auto-updates website when you push changes to your repo, and you can also preview/deploy branches to test changes you make to the website before putting them out into the world..&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#option-2-github-deployment&#34;&gt;GitHub&lt;/a&gt;: simpler at first, but a few more steps required for deployment every time you update.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;option-1-continuous-deployment-via-netlify-recommended&#34;&gt;option 1: continuous deployment via Netlify (recommended) &lt;a href=&#34;#option-1-continuous-deployment-via-netlify-recommended&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Push everything to your GitHub repo (you already added &lt;code&gt;resources/&lt;/code&gt; and &lt;code&gt;public/&lt;/code&gt; folders to your &lt;code&gt;.gitignore&lt;/code&gt;, right?).&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;I love RStudio&amp;rsquo;s Git tab, but don&amp;rsquo;t use it for this unless you like clicking, and waiting, and clicking, and waiting, and&amp;hellip;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=img&gt;
&lt;p&gt;&lt;img src=&#34;../media/anguish_startrek.gif&#34; alt=&#34;staging many files in Rstudio&amp;rsquo;s Git tab&#34; title=&#34;...or debugging a hugo website&#34;&gt; staging many files in Rstudio&amp;rsquo;s Git tab&lt;/p&gt;
&lt;/div&gt;  
&lt;ul&gt;
&lt;li&gt;Instead, in the RStudio terminal (the tab next to your console), type:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;git add -A               # stages everything
git commit -m &amp;quot;init&amp;quot;     # commit with message &amp;quot;init&amp;quot;
git push  
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;While that&amp;rsquo;s going, set up an account at &lt;a href=&#34;netlify.com&#34;&gt;netlify.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Click &amp;ldquo;New site from Git&amp;rdquo; &amp;ndash;&amp;gt; &amp;ldquo;Github&amp;rdquo; &amp;ndash;&amp;gt; &amp;ldquo;Only select repositories&amp;rdquo; &amp;ndash;&amp;gt; select your website repo.
&lt;ul&gt;
&lt;li&gt;If you end up switching repos for some reason, you can always &lt;a href=&#34;https://docs.netlify.com/configure-builds/repo-permissions-linking/#troubleshoot-repository-linking&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;give Netlify access to another repo&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Your url will be something oddly delightful like &lt;code&gt;drowsy-koala-d7ce09.netlify.app&lt;/code&gt;.
&lt;ul&gt;
&lt;li&gt;Change it: &amp;ldquo;Site settings&amp;rdquo; link &amp;ndash;&amp;gt; &amp;ldquo;Change site name&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;You can always change the site name, or set up hosting on a new domain.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://support.rbind.io/about/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;rbind.io&lt;/code&gt; is a recommended, and free, option&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Cool!&lt;/strong&gt;  Now whenever you push to your repo, netlify will build it and serve your website.&lt;/p&gt;
&lt;div class=note&gt;
&lt;p&gt;Use the &lt;em&gt;branch deploy&lt;/em&gt; feature to preview changes (such as a new post)!  All you have to do now is create a branch &lt;strong&gt;AND make a pull request&lt;/strong&gt;, and netlify will let you preview it!  &lt;a href=&#34;https://www.garrickadenbuie.com/blog/blogdown-netlify-new-post-workflow/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;More details + suggested workflow here&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;

&lt;h3 id=&#34;option-2-github-deployment&#34;&gt;option 2: Github deployment &lt;a href=&#34;#option-2-github-deployment&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Build the site: either use &lt;code&gt;blogdown::build_site()&lt;/code&gt; or the &amp;ldquo;Build&amp;rdquo; tab (next to Environment, History, Connections) &amp;ndash;&amp;gt; Build Website
&lt;ul&gt;
&lt;li&gt;This builds your website locally, in a new folder named &lt;code&gt;public&lt;/code&gt; in your project root directory.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Push the contents of the &lt;code&gt;public&lt;/code&gt; folder (not the folder itself, just what&amp;rsquo;s inside) to a GitHub repo named &lt;code&gt;&amp;lt;yourGitHubusername&amp;gt;.github.io&lt;/code&gt;.  For example, my repo would be named &lt;code&gt;akseong.github.io&lt;/code&gt;, and that would also be the url of my website.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Done!&lt;/strong&gt;  Super easy, but unfortunately, whenever you want to update your website or add content, you will need to follow these same steps.&lt;/p&gt;

&lt;h1 id=&#34;folder-structure-a-short-tour&#34;&gt;Folder structure: a short tour &lt;a href=&#34;#folder-structure-a-short-tour&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Alison Hill gives you &lt;a href=&#34;https://arm.rbind.io/slides/blogdown.html#24&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;a short assignment&lt;/a&gt; to figure out your folder structure, and I found it helpful to go through.  Your folders / files are going to look a little different, though (updates since 2019, different theme).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Your&lt;/em&gt; folder structure will look like this (unless it has changed yet again!):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;├───archetypes
├───assets            # CSS, icons
├───config            
│   └───_default      # site customization
├───content           
│   ├───authors       # modify about page info in the &amp;#39;admin&amp;#39; folder
│   ├───courses
│   ├───home          # home page
│   ├───post
│   ├───project
│   ├───publication
│   ├───slides
│   └───talk
├───data              
│   ├───fonts         
│   ├───themes        # &amp;#34;themes&amp;#34; = color scheme
├───layouts           # overrides theme templates
├───R
├───resources         # intermediary build files - delete often
├───static            # place for files that do not need to get &amp;#34;built&amp;#34; by Hugo
│   ├───admin
│   └───media         # images used with posts/projects
└───themes            # NO TOUCH!  
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The comments above should be fairly self-explanatory, but the &lt;code&gt;content&lt;/code&gt; folder is worth discussing further.&lt;/p&gt;
&lt;p&gt;The general idea is that the folders inside the &lt;code&gt;content&lt;/code&gt; folder either&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;are a separate page in the website
&lt;ul&gt;
&lt;li&gt;these folders contain an &lt;code&gt;index.md&lt;/code&gt; file + widget &lt;code&gt;.md&lt;/code&gt; files&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;or contain info used by widgets
&lt;ul&gt;
&lt;li&gt;these folders usually contain a subfolder for each piece of content, e.g. each post or project&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is a little loose (e.g. the &lt;code&gt;contents/home/gallery&lt;/code&gt; folder doesn&amp;rsquo;t fit so neatly in here) but I find it useful to think of it this way.&lt;/p&gt;

&lt;h2 id=&#34;new-page-folders&#34;&gt;New page folders &lt;a href=&#34;#new-page-folders&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;content/home&lt;/code&gt; folder is the only &amp;ldquo;separate page&amp;rdquo;-type folder here right now &amp;mdash; the Academic Theme by default generates a 1-page website.  Inside &lt;code&gt;content/home&lt;/code&gt;, you&amp;rsquo;ll see a file &lt;code&gt;index.md&lt;/code&gt;; open it up.  It should say:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
# Homepage
type: widget_page

# Homepage is headless, other widget pages are not.
headless: true
---
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type: widget page&lt;/code&gt; indicates that the page initialized by this &lt;code&gt;index.md&lt;/code&gt; file (the home page) is composed of widgets.&lt;/li&gt;
&lt;li&gt;The other &lt;code&gt;.md&lt;/code&gt; files inside this folder (&lt;code&gt;content/home/&lt;/code&gt;) are the different widgets on the home page: an &amp;ldquo;about&amp;rdquo; widget, an &amp;ldquo;accomplishments&amp;rdquo; widget, etc.&lt;/li&gt;
&lt;li&gt;You can add new folders like this to create new pages in your website, but you have to mimic this structure.  More on this in a later post.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;widget-info-folders&#34;&gt;Widget info folders &lt;a href=&#34;#widget-info-folders&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Folders containing info used by widgets will contain a file &lt;code&gt;_index.md&lt;/code&gt; &amp;mdash; note the underscore &amp;mdash; and typically subfolders for entries.&lt;/p&gt;
&lt;p&gt;For example, the folder &lt;code&gt;content/post/&lt;/code&gt; is where your blog posts go by default, and each post gets its own subfolder inside &lt;code&gt;content/post/&lt;/code&gt;.  The widget that uses the content in &lt;code&gt;content/post/&lt;/code&gt; is actually &lt;code&gt;contents/home/posts.md&lt;/code&gt; (a widget on the &lt;strong&gt;home&lt;/strong&gt; page) which contains the lines&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;widget&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pages&lt;/span&gt;              
&lt;span class=&#34;kc&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;other&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;options&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;...&lt;/span&gt; 
&lt;span class=&#34;n&#34;&gt;page_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;post&lt;/span&gt;            
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;widget:pages&lt;/code&gt; indicate that this is a &amp;ldquo;pages&amp;rdquo; widget&lt;/li&gt;
&lt;li&gt;&lt;code&gt;page_type: post&lt;/code&gt; indicates that this widget draws its content from the folder &lt;code&gt;content/post/&lt;/code&gt;.  (Scroll down to the &amp;ldquo;Recent Posts&amp;rdquo; section on the homepage, and compare the posts to the folders inside &lt;code&gt;content/post/&lt;/code&gt;.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&#34;basic-customization&#34;&gt;Basic customization &lt;a href=&#34;#basic-customization&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Now to make your website yours!&lt;/p&gt;

&lt;h2 id=&#34;use-livereload&#34;&gt;Use LiveReload &lt;a href=&#34;#use-livereload&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If it&amp;rsquo;s not already running, use &lt;code&gt;blogdown::serve_site()&lt;/code&gt; to serve/host your website locally, i.e. see your website in RStudio&amp;rsquo;s viewer pane.  You can also open the site in a browser tab using the &amp;ldquo;show in new window&amp;rdquo; icon in the viewer pane menu bar.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;This is &lt;a href=&#34;https://bookdown.org/yihui/blogdown/livereload.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;LiveReload&lt;/a&gt; &amp;mdash; an awesome feature!  The site refreshes on save, so you can see how your changes affect the website&amp;hellip;. or if they broke something, which is unfortunately always a concern here.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If changes you make do not seem to be appearing, stop and restart the local server by running &lt;code&gt;blogdown::stop_server()&lt;/code&gt;, then &lt;code&gt;blogdown::serve_site()&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You might encounter an error message about not being able to stop the server when you run &lt;code&gt;blogdown::stop_server()&lt;/code&gt;, but just executing it again always stops the server for me &amp;mdash; so far at least 🤞&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If your site blows up over nothing like a low-blood-sugar toddler, try stopping the local server, deleting the &lt;code&gt;resources/&lt;/code&gt; and &lt;code&gt;public/&lt;/code&gt; folders in your project&amp;rsquo;s root directory, and then starting the local server again.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=fyi&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;resources/&lt;/code&gt; contains intermediary build files, and will be auto-generated as needed.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;public/&lt;/code&gt; is generated when you build the website using the &amp;ldquo;Build&amp;rdquo; tab.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;h2 id=&#34;site-config&#34;&gt;Site config &lt;a href=&#34;#site-config&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;There are 3 main files you&amp;rsquo;ll want to edit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;config.yaml&lt;/code&gt;: general site configuration (next section).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config/_default/params.toml&lt;/code&gt;: personal info + site feature configuration, e.g. syntax highlighting.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config/_default/menus.toml&lt;/code&gt;: navbar configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With LiveReload, you shouldn&amp;rsquo;t have too much trouble figuring out &lt;code&gt;params.toml&lt;/code&gt; (heavily commented) and &lt;code&gt;menus.toml&lt;/code&gt; (fairly straightforward) &amp;mdash; and if in doubt about a particular setting in &lt;code&gt;params.toml&lt;/code&gt; or &lt;code&gt;menus.toml&lt;/code&gt;, leave it for now.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;config.yaml&lt;/code&gt; requires a bit more care, however.&lt;/p&gt;

&lt;h3 id=&#34;configyaml&#34;&gt;config.yaml &lt;a href=&#34;#configyaml&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In your root directory, change the following fields in &lt;code&gt;config.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;title:&lt;/code&gt; site name (your name if this is a personal website)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;baseurl:&lt;/code&gt; set it to the url (in quotes) your site has been deployed to.
&lt;ul&gt;
&lt;li&gt;you didn&amp;rsquo;t skip that step, did you?  If you did, you can also change it to &amp;lsquo;/&amp;rsquo;.  For now.  But it must be specified.&lt;/li&gt;
&lt;li&gt;include &amp;ldquo;https://&amp;rdquo; in the url.  Also, see &lt;a href=&#34;https://yihui.org/en/2017/11/301-redirect/#an-application-redirect-http-links-to-to-https&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Yihui Xie&amp;rsquo;s post on redirecting HTTP to HTTPS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ignoreFiles:&lt;/code&gt; add the following to the default list under &lt;code&gt;ignoreFiles&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;    &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;\.knit\.md&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;
    &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;\.utf8\.md&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;$&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=fyi&gt;
&lt;p&gt;I have seen some guides recommend including &lt;code&gt;&amp;quot;_files$&amp;quot;&lt;/code&gt; in &lt;code&gt;ignoreFiles&lt;/code&gt;, &lt;strong&gt;but this will break plotting in code chunks in .Rmd-generated posts&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Almost done.  Add the lines:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span class=&#34;n&#34;&gt;relativeURLs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;yes&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;canonifyURLs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;relativeURLs: yes&lt;/code&gt; is necessary for cloud setup.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cannonifyURLs: yes&lt;/code&gt;: consolidates duplicate URLs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Last, beneath &lt;code&gt;permalinks&lt;/code&gt;, I suggest adding &lt;code&gt;post: /:year-:month-:day/:slug/&lt;/code&gt; (follow indents; this modifies post urls, e.g. &amp;ldquo;&amp;hellip;/2020-12-29/making-of-1/&amp;rdquo; rather than &amp;ldquo;&amp;hellip;/post/making-of-1/&amp;quot;).&lt;/p&gt;

&lt;h2 id=&#34;your-info&#34;&gt;Your info &lt;a href=&#34;#your-info&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=fyi&gt;
&lt;p&gt;For ease of editing, bring the &lt;code&gt;about.md&lt;/code&gt; widget to the top of the page (deactivate the &lt;code&gt;hero.md&lt;/code&gt; and &lt;code&gt;demo.md&lt;/code&gt; widgets in &lt;code&gt;content/home/&lt;/code&gt; by changing set &lt;code&gt;active: false&lt;/code&gt;, or make these widgets come after the &lt;code&gt;about.md&lt;/code&gt; widget by setting &lt;code&gt;weight:&lt;/code&gt; &amp;gt; 20).  It will just be easier to see (using &lt;code&gt;blogdown::serve_site()&lt;/code&gt;) the changes you&amp;rsquo;re making.  You can always reactivate/reorder these widgets later.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;about.md&lt;/code&gt; widget in &lt;code&gt;content/home/&lt;/code&gt; uses info from the folder &lt;code&gt;content/authors/admin/&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For the text, edit &lt;code&gt;_index.md&lt;/code&gt; with your info.  &lt;em&gt;Quick note:&lt;/em&gt; the &lt;code&gt;bio:&lt;/code&gt; field in the header is what appears next to your name at the end of posts, not in the section generated by the &amp;ldquo;about&amp;rdquo; widget.&lt;/li&gt;
&lt;li&gt;Add your picture by placing a .jpg image into &lt;code&gt;content/authors/admin/&lt;/code&gt; and naming it &lt;code&gt;avatar.jpg&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&#34;other-widgets&#34;&gt;Other widgets &lt;a href=&#34;#other-widgets&#34;&gt;&lt;i class=&#34;fa fa-hashtag&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Poke around &lt;code&gt;content/home/&lt;/code&gt; and modify the content of the different widgets with your info.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;deactivate the widgets you don&amp;rsquo;t want by setting &lt;code&gt;active: false&lt;/code&gt;.  In general I would not delete these, as they are useful templates.&lt;/li&gt;
&lt;li&gt;modify the order in which widgets appear using the &lt;code&gt;weight:&lt;/code&gt; parameter (lower numbers = higher on page)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Hello World!</title>
      <link>https://arnie.rbind.io/2020-12-15/post-section-under-construction-plans/</link>
      <pubDate>Tue, 15 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://arnie.rbind.io/2020-12-15/post-section-under-construction-plans/</guid>
      <description>
&lt;script src=&#34;https://arnie.rbind.io/2020-12-15/post-section-under-construction-plans/index.en_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;Hey! I made a web thingamabob! &lt;span style=&#34;color:grey;&#34;&gt; &amp;lt;polishes fingernails on shoulder&amp;gt; &lt;/span&gt; Spiffy!&lt;/p&gt;
&lt;p&gt;So I just wanted to take a moment to put down what I have planned thus far for my very own web thingamabob. My plan for this blog is to be a mix of statistics, data vis appreciation, and practical / quality-of-life-type code snippets — and likely all three at the same time.&lt;/p&gt;
&lt;p&gt;Subject to change, of course!&lt;/p&gt;
&lt;div id=&#34;table-of-contents&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Table of Contents:&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#planned-posts&#34;&gt;planned posts:&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#stuff-ive-picked-up-along-the-way&#34;&gt;stuff I’ve picked up along the way&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#other-stuff&#34;&gt;other stuff:&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#testing-.rmd-features&#34;&gt;testing .Rmd features&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#divtips&#34;&gt;divtips&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#including-plots&#34;&gt;including plots&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;planned-posts&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;planned posts:&lt;/h1&gt;
&lt;div id=&#34;stuff-ive-picked-up-along-the-way&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;stuff I’ve picked up along the way&lt;/h2&gt;
&lt;ol style=&#34;list-style-type: decimal&#34;&gt;
&lt;li&gt;Building this site with HUGO + wowchemy Academic theme + lots of code-lifting + selectorGadget.
&lt;ul&gt;
&lt;li&gt;Or &#34;HUGO + wowchemy is a finicky #*!% GAHHH&#34;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Lots of posts on this basic topic, but not many people have written about this &lt;strong&gt;after Academc theme became part of Wowchemy&lt;/strong&gt; and that made things hard to figure out for a first-timer.&lt;/li&gt;
&lt;li&gt;Also will help me remember what I did and where it goes.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Having babies while doing a PhD.
&lt;ul&gt;
&lt;li&gt;tl;dr: don’t do it if you can help it. Otherwise: coffeeeeeeeeee!&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Posts on &lt;code&gt;datagoboop&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;Intro to &lt;code&gt;datagoboop&lt;/code&gt;’s built-in audioplotting functions&lt;/li&gt;
&lt;li&gt;Intro to basic data &lt;span class=&#34;math inline&#34;&gt;\(\mapsto\)&lt;/span&gt; sound functions in &lt;code&gt;datagoboop&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Building an audioplot from scratch with &lt;code&gt;datagoboop&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Development plans for &lt;code&gt;datagoboop&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Regression with penalized splines&lt;/li&gt;
&lt;li&gt;Custom &lt;code&gt;.rstheme&lt;/code&gt; + colored parens&lt;/li&gt;
&lt;li&gt;Common penalty contours + P-spline penalty&lt;/li&gt;
&lt;li&gt;Bayesian model selection basics&lt;/li&gt;
&lt;li&gt;Parallelizing R scripts on a PC.
&lt;ul&gt;
&lt;li&gt;don’t forget about using source as local job in RStudio!&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Articles of interest&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div id=&#34;other-stuff&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;other stuff:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.c82.net/blog/?id=72&#34; class=&#34;uri&#34;&gt;https://www.c82.net/blog/?id=72&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://seeing-theory.brown.edu/&#34; class=&#34;uri&#34;&gt;https://seeing-theory.brown.edu/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://seeingdata.org/&#34; class=&#34;uri&#34;&gt;http://seeingdata.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://networkofthrones.wordpress.com/a-primer-on-network-analysis/&#34; class=&#34;uri&#34;&gt;https://networkofthrones.wordpress.com/a-primer-on-network-analysis/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;testing-.rmd-features&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;testing .Rmd features&lt;/h1&gt;
&lt;p&gt;i.e. making sure stuff ain’t broke&lt;/p&gt;
&lt;div id=&#34;divtips&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;divtips&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://desiree.rbind.io/post/2019/making-tip-boxes-with-bookdown-and-rmarkdown/&#34;&gt;desiree de leon’s post&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;puzzle&#34;&gt;
&lt;p&gt;puzzle divtip&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;fyi&#34;&gt;
&lt;p&gt;fyi divtip&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;demo&#34;&gt;
&lt;p&gt;demo divtip&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;testing &amp;lt;- TRUE
hey &amp;lt;- &amp;quot;it works!&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&#34;note&#34;&gt;
&lt;p&gt;note divtip&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;including-plots&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;including plots&lt;/h2&gt;
&lt;div id=&#34;base-r&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;base R&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://arnie.rbind.io/2020-12-15/post-section-under-construction-plans/index.en_files/figure-html/unnamed-chunk-3-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;ggplot2&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;ggplot2&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://arnie.rbind.io/2020-12-15/post-section-under-construction-plans/index.en_files/figure-html/unnamed-chunk-4-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    
  </channel>
</rss>
