Goodbye, Disqus! Hello, Utterances!

October 1, 2019
By

[This article was first published on Posts on Maëlle's R blog, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Removing Disqus from my blogdown blog had been on my mind for a while,
ever since I saw Bob Rudis’ tweet enjoining Noam Ross to not use
it
for his
brand-new website
.
The same Twitter thread introduced me to
Utterances, a “lightweight
comments widget built on GitHub issues”, which I have at last installed
to my blog in lieu of Disqus. How did I manage to not lose anything of
value? How easy was it to switch tools? Read on to learn more!

Was saying goodbye to Disqus hard?

Removing Disqus was neither emotionally nor technically hard.

Comments I (kinda) let go of

To deal with my fear of loss, I exported all the comments to an
XML
.
It means I have a backup, that in theory I could explore within R! I’ll
show some XML wrangling a bit later. The export does contain Disqus
usernames and names which means I’m now responsible for person
identifying information that Disqus collected.

Thanks a lot to commenters in the past system for taking the time to
leave me a note: it helped me keep blogging!

The Disqus XML contains information about

  • posts that are in fact comments, not blog posts, along with
    their threading information i.e. both whose blog post the comment
    was on, and if relevant, which comment the comment is an answer to;

  • threads, one thread per comment but not necessarily one comment
    per thread, and potentially more than one thread per blog post. Each
    top-level comment is a thread, but a website page with no comment
    also gets a thread, obviously empty.

In the code below, I shall
rectangle the
information about threads (id, title) and about comments (message,
author name, date, thread id, was it spam, was it deleted) using the
xml2
package
.

export <- xml2::read_xml("data/disqus-export.xml")
export
## {xml_document}
## 
##  [1] \n  masalmon\n  Ge ...
##  [2] <thread dsq:id="5169974011">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [3] <thread dsq:id="5177145143">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [4] <thread dsq:id="5192091523">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [5] <thread dsq:id="5490361085">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [6] <thread dsq:id="5490455492">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [7] <thread dsq:id="5496622766">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [8] <thread dsq:id="5496655533">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [9] <thread dsq:id="5499530252">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [10] <thread dsq:id="5499566886">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [11] <thread dsq:id="5503605733">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [12] <thread dsq:id="5503629818">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [13] <thread dsq:id="5519522381">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [14] <thread dsq:id="5521172753">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [15] <thread dsq:id="5523856167">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [16] <thread dsq:id="5523862926">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [17] <thread dsq:id="5544585525">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [18] <thread dsq:id="5544919490">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [19] <thread dsq:id="5544919711">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [20] <thread dsq:id="5544920033">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## ...
</code></pre>
<p>Explaining how to parse XML is beyond the scope of this blog post, but<br />
let me just mention I used a search engine to answer questions such as<br />
“XPath extract nodes by name”, “xml2 namespace”. I reckon my code could<br />
be more elegant if I knew more XPath.</p>
<p>Let me start with threads.</p>
<pre><code class="language-r"># extract nodes corresponding to comments
threads_nodes <- xml2::xml_find_all(export, "d1:thread")
threads_nodes
</code></pre>
<pre><code>## {xml_nodeset (283)}
##  [1] <thread dsq:id="5169974011">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [2] <thread dsq:id="5177145143">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [3] <thread dsq:id="5192091523">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [4] <thread dsq:id="5490361085">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [5] <thread dsq:id="5490455492">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [6] <thread dsq:id="5496622766">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [7] <thread dsq:id="5496655533">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [8] <thread dsq:id="5499530252">\n  <id/>\n  <forum>masalmon</forum>\n  ...
##  [9] <thread dsq:id="5499566886">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [10] <thread dsq:id="5503605733">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [11] <thread dsq:id="5503629818">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [12] <thread dsq:id="5519522381">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [13] <thread dsq:id="5521172753">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [14] <thread dsq:id="5523856167">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [15] <thread dsq:id="5523862926">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [16] <thread dsq:id="5544585525">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [17] <thread dsq:id="5544919490">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [18] <thread dsq:id="5544919711">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [19] <thread dsq:id="5544920033">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## [20] <thread dsq:id="5544931944">\n  <id/>\n  <forum>masalmon</forum>\n  ...
## ...
</code></pre>
<pre><code class="language-r"># extract interesting information from each node,
# information that is potentially nested
threads <- tibble::tibble(
  thread_id = xml2::xml_attr( threads_nodes, 
                              "id"),
  title = xml2::xml_text(
    xml2::xml_find_all(threads_nodes, "d1:title")
    ))
</code></pre>
<p>Now on to comments…</p>
<pre><code class="language-r"># extract nodes corresponding to comments
comments_nodes <- xml2::xml_find_all(export, "d1:post") 
comments_nodes
</code></pre>
<pre><code>## {xml_nodeset (206)}
##  [1] <post dsq:id="2916181700">\n  <id/>\n  <message><![CDATA[<p>La poss ...
##  [2] <post dsq:id="3118121105">\n  <id/>\n  <message><![CDATA[<p>Great b ...
##  [3] <post dsq:id="3118236082">\n  <id/>\n  <message><![CDATA[<p>Nice Ma ...
##  [4] <post dsq:id="3118757895">\n  <id/>\n  <message><![CDATA[<p>Thanks  ...
##  [5] <post dsq:id="3118758593">\n  <id/>\n  <message><![CDATA[<p>Thanks  ...
##  [6] <post dsq:id="3118783826">\n  <id/>\n  <message><![CDATA[<p>I love  ...
##  [7] <post dsq:id="3118785805">\n  <id/>\n  <message><![CDATA[<p>Thanks! ...
##  [8] <post dsq:id="3121124991">\n  <id/>\n  <message><![CDATA[<p>Chouett ...
##  [9] <post dsq:id="3121137475">\n  <id/>\n  <message><![CDATA[<p>Oops qu ...
## [10] <post dsq:id="3121945521">\n  <id/>\n  <message><![CDATA[<p>I poste ...
## [11] <post dsq:id="3122653372">\n  <id/>\n  <message><![CDATA[<p>Another ...
## [12] <post dsq:id="3122759373">\n  <id/>\n  <message><![CDATA[<p>Thank y ...
## [13] <post dsq:id="3123851616">\n  <id/>\n  <message><![CDATA[<p>Great s ...
## [14] <post dsq:id="3126340152">\n  <id/>\n  <message><![CDATA[<p>Once ag ...
## [15] <post dsq:id="3126343942">\n  <id/>\n  <message><![CDATA[<p>Thank y ...
## [16] <post dsq:id="3140125477">\n  <id/>\n  <message><![CDATA[<p>The ide ...
## [17] <post dsq:id="3140136118">\n  <id/>\n  <message><![CDATA[<p>Thank y ...
## [18] <post dsq:id="3140161542">\n  <id/>\n  <message><![CDATA[<p>Not rel ...
## [19] <post dsq:id="3140329480">\n  <id/>\n  <message><![CDATA[<p>Yes def ...
## [20] <post dsq:id="3150961786">\n  <id/>\n  <message><![CDATA[<p>That's  ...
## ...
</code></pre>
<pre><code class="language-r"># extract interesting information from each node,
# information that is potentially nested
comments <- tibble::tibble(
  thread_id = xml2::xml_attr(
    xml2::xml_find_all(comments_nodes, "d1:thread"), 
    "id"),
  message = xml2::xml_text(
    xml2::xml_find_all(comments_nodes, "d1:message")
    ),
  date =  xml2::xml_text(
    xml2::xml_find_all(comments_nodes, "d1:createdAt")
    ),
  deleted = xml2::xml_text(
    xml2::xml_find_all(comments_nodes, "d1:isDeleted")
    ),
  spam = xml2::xml_text(
    xml2::xml_find_all(comments_nodes, "d1:isSpam")
    ),
  author = xml2::xml_text(
    xml2::xml_find_all(
    xml2::xml_find_all(comments_nodes, "d1:author"), 
    "d1:name")))
  
comments <- dplyr::mutate(comments,
                          date = anytime::anydate(date),
                          deleted = deleted == "true",
                          spam = spam == "true")
</code></pre>
<p>I was then able to join the two tables.</p>
<pre><code class="language-r">comments <- dplyr::left_join(comments, threads,
                             by = "thread_id")
readr::write_csv(comments, "comments.csv")

comments[2:12, c("message", "title")]
</code></pre>
<pre><code>## # A tibble: 11 x 2
##    message                                        title                    
##    <chr>                                          <chr>                    
##  1 "<p>Great blog post, thank you! I really appr… French villages and a so…
##  2 <p>Nice Maëlle!</p><p>Good, interesting quest… French villages and a so…
##  3 <p>Thanks Nick!</p>                            French villages and a so…
##  4 <p>Thanks Lisa! Toponomy is quite fascinating… French villages and a so…
##  5 "<p>I love this! I wonder, would it be possib… French villages and a so…
##  6 <p>Thanks! I got a similar question on Twitte… French villages and a so…
##  7 "<p>Chouette! Mais la mer c'est \"sea\", \"se… French villages and a so…
##  8 <p>Oops quelle faute de frappe idiote, je la … French villages and a so…
##  9 "<p>I posted an update! <a href=\"http://www.… rel="nofollow" target="_blank">Another good one, Maëlle! It's a great exa… More water, a bit more a…
## 11 <p>Thank you! Lol on ninja grep skills, I wis… More water, a bit more a…
</code></pre>
<p>I got a pretty nice rectangle in the end, that could be used for some<br />
text analysis, but in my case, I mostly view it as memorabilia. I hope<br />
any comment warranting action had been tackled. I wrote 93<br />
(<code>sum(comments$author == "Maëlle Salmon")</code>) out of the 206 comments<br />
(Disqus classified a few comments as spam, 15 to be exact, of which a<br />
few were informative comments. ), because I tend to answer comments, if<br />
only with a simple thank you! Now that I have GitHub issues as comments,<br />
I could also answer with emojis.</p>
<p>It was fun because I didn’t even remember about some notes I had gotten.<br />
I hope you don’t feel slighted, dear reader, now that I keep these old<br />
comments to myself! Be happy you’re no longer tracked.</p>
<h2 id="getting-rid-of-disqus">Getting rid of Disqus</h2>
<p>I removed Disqus from my website, and my website from Disqus!</p>
<p>To remove Disqus from a Hugo website, one can, depending on the<br />
website’s theme:</p>
<ul>
<li>
<p>use <a href="https://gohugo.io/about/hugo-and-gdpr/" rel="nofollow" target="_blank">Hugo’s Disqus GDPR<br />
setting</a> if the website<br />
theme uses Hugo’s built-in Disqus template (i.e. if there’s a<br />
mention of a <a href="https://gohugo.io/templates/internal/#use-the-disqus-template" rel="nofollow" target="_blank">internal Disqus<br />
partial</a>,<br />
not of a Disqus partial stored somewhere in the theme files);</p>
</li>
<li>
<p>or remove one’s Disqus username from the config file, or remove the<br />
Disqus partial mention in the post template. To do that, the best<br />
process is not to edit the e.g. post/single.html file in the theme<br />
folder, but instead to save it and edit it under<br />
layouts/post/single.html. <a href="https://bookdown.org/yihui/blogdown/custom-layouts.html" rel="nofollow" target="_blank">Refer to the blogdown book for more<br />
information</a>.</p>
</li>
</ul>
<p>After that, there should be no mention of Disqus scripts in your website<br />
source.</p>
<p>Then, to delete my website from my Disqus account, following <a href="https://help.disqus.com/en/articles/1717289-how-do-i-remove-my-site" rel="nofollow" target="_blank">Disqus<br />
guidance</a>,<br />
I logged into my account and, <em>after exporting my website’s comments</em>,<br />
confirmed I wanted to do that and voilà!</p>
<h1 id="adding-utterances">Adding Utterances</h1>
<p>To add Utterances, a “lightweight comments widget built on GitHub<br />
issues”, I also followed <a href="https://utteranc.es/#configuration" rel="nofollow" target="_blank">official<br />
guidance</a>:</p>
<ul>
<li>
<p>I installed the app to my website GitHub repo.</p>
</li>
<li>
<p>In my custom single.html layout for posts (again, <a href="https://bookdown.org/yihui/blogdown/custom-layouts.html" rel="nofollow" target="_blank">refer to the<br />
blogdown book for clear information on the<br />
topic</a>), I<br />
added the script tag corresponding to Utterances. The docs linked<br />
above help you configure the appearance of the widget.</p>
</li>
</ul>
<p>Here’s the Utterances script tag for my blog. The label needs to <a href="https://help.github.com/en/articles/creating-a-label" rel="nofollow" target="_blank">have been created for your website repo</a>tterances can only use existing issue labels.</p>
<pre><code class="language-html"><script src="https://utteranc.es/client.js"
        repo="maelle/simplymaelle"
        issue-term="title"
        label="comments :speech_balloon:"
        theme="github-light"
        crossorigin="anonymous"
        async>
</script>
</code></pre>
<p>I then wrote a comment under <a href="https://masalmon.eu/2019/01/25/uptodate/" rel="nofollow" target="_blank">one of my<br />
posts</a> to make sure things<br />
worked. I also took a few seconds to <a href="https://utteranc.es/#sites-using-utterances" rel="nofollow" target="_blank">add my site to the list of sites<br />
using Utterances</a>. Overall,<br />
I found the process easy, as I had the first time I installed Utterances<br />
<a href="https://blog.r-hub.io/" rel="nofollow" target="_blank">on a blogdown website</a>.</p>
<p>I am aware that a downside of Utterances is that it is tied to GitHub.<br />
However, I am not afraid of switching to yet another tool in the future,<br />
and hope not too many potential commenters will be turned off by the<br />
necessity to use a GitHub account to comment.</p>
<h1 id="conclusion">Conclusion</h1>
<p>In this post I explained how I removed Disqus from my blog and vice<br />
versa, and how I installed Utterances instead. What I did not do was<br />
analyzing the Disqus data. I moreover did not try to <em>transfer</em> old<br />
comments to the new system, partly because that’d mean removing<br />
commenters’ ownership on what they had written.</p>
<p>In <a href="https://twitter.com/hrbrmstr/status/1135915244532822018" rel="nofollow" target="_blank">his tweet that motivated me to say goodbye to<br />
Disqus</a>, Bob<br />
wrote <em>“Yet another service where you and your site visitors are the<br />
product. Plus it acts like malicious javascript.”</em>. I therefore feel a<br />
bit better about this website! Now, I didn’t have a ton of comments, and<br />
I don’t have a real need for moderating comments, so maybe you’ll make a<br />
different decision for your website. I’d be glad to hear about it… in<br />
the comments section below! Also feel free to tell me if you explore<br />
your own Disqus data in a more thorough way than I!</p>

		<script type='text/javascript'>
		  var vglnk = { key: '949efb41171ac6ec1bf7f206d57e90b8' };

		  (function(d, t) {
			var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;
			s.src = '//cdn.viglink.com/api/vglnk.js';
			var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r);
		  }(document, 'script'));
		</script>		
		
<div id='jp-relatedposts' class='jp-relatedposts' >
	<h3 class="jp-relatedposts-headline"><em>Related</em></h3>
</div><aside class="mashsb-container mashsb-main mashsb-stretched"><div class="mashsb-box"><div class="mashsb-buttons"><a class="mashicon-facebook mash-small mash-center mashsb-noshadow" href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.r-bloggers.com%2Fgoodbye-disqus-hello-utterances%2F" target="_blank" rel="nofollow"><span class="icon"></span><span class="text">Share</span></a><a class="mashicon-twitter mash-small mash-center mashsb-noshadow" href="https://twitter.com/intent/tweet?text=Goodbye%2C%20Disqus%21%20Hello%2C%20Utterances%21&url=https://www.r-bloggers.com/goodbye-disqus-hello-utterances/&via=Rbloggers" target="_blank" rel="nofollow"><span class="icon"></span><span class="text">Tweet</span></a><div class="onoffswitch2 mash-small mashsb-noshadow" style="display:none;"></div></div>
            </div>
                <div style="clear:both;"></div></aside>
            <!-- Share buttons by mashshare.net - Version: 3.6.9-->
<p class="syndicated-attribution"><div style="border: 1px solid; background: none repeat scroll 0 0 #EDEDED; margin: 1px; font-size: 13px;">
<div style="text-align: center;">To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="https://masalmon.eu/2019/10/02/disqus/"> Posts on Maëlle's R blog</a></strong>.</div>
<hr />
<a href="https://www.r-bloggers.com/" rel="nofollow">R-bloggers.com</a> offers <strong><a href="https://feedburner.google.com/fb/a/mailverify?uri=RBloggers" rel="nofollow">daily e-mail updates</a></strong> about <a title="The R Project for Statistical Computing" href="https://www.r-project.org/" rel="nofollow">R</a> news and tutorials about <a title="R tutorials" href="https://www.r-bloggers.com/how-to-learn-r-2/" rel="nofollow">learning R</a> and many other topics. <a title="Data science jobs" href="https://www.r-users.com/" rel="nofollow">Click here if you're looking to post or find an R/data-science job</a>.

<hr>Want to share your content on R-bloggers?<a href="https://www.r-bloggers.com/add-your-blog/" rel="nofollow"> click here</a> if you have a blog, or <a href="http://r-posts.com/" rel="nofollow"> here</a> if you don't.
</div></p><hr /><hr />
<div style="border: 1px solid #EB9349; background: none repeat scroll 0 0 #FDEADA; text-align: center; margin: 10px; font-size: 16px;">
If you got this far, why not <strong><u>subscribe for updates</u> </strong>from the site?  Choose your flavor: <a href="http://feedburner.google.com/fb/a/mailverify?uri=RBloggers" rel="nofollow">e-mail</a>, <a href="https://twitter.com/#!/rbloggers" rel="nofollow">twitter</a>, <a href="http://feeds.feedburner.com/RBloggers" rel="nofollow">RSS</a>, or <a href="http://www.facebook.com/pages/R-bloggers/191414254890" rel="nofollow">facebook</a>...
</div><div class="social4i" style="height:29px;"><div class="social4in" style="height:29px;float: left;"><div class="socialicons s4fblike" style="float:left;margin-right: 10px;"><div class="fb-like" data-href="https://www.r-bloggers.com/goodbye-disqus-hello-utterances/" data-send="true"  data-layout="button_count" data-width="100" data-height="21"  data-show-faces="false"></div></div><div class="socialicons s4twitter" style="float:left;margin-right: 10px;"><a href="https://twitter.com/share" data-url="https://www.r-bloggers.com/goodbye-disqus-hello-utterances/" data-counturl="https://www.r-bloggers.com/goodbye-disqus-hello-utterances/" data-text="Goodbye, Disqus! Hello, Utterances!" class="twitter-share-button" data-count="horizontal" data-via="rbloggers"></a></div><div class="socialicons s4linkedin" style="float:left;margin-right: 10px;"><script type="in/share" data-url="https://www.r-bloggers.com/goodbye-disqus-hello-utterances/" data-counter="right"></script></div></div><div style="clear:both"></div></div></div>

	</div><!-- #post-## -->



   				<div id="comments">


<div id="comment-user-details">





		<p class="nocomments">Comments are closed.</p>



</div>

</div><!-- #comments -->

       
	</div>
    <!-- begin second sidebar -->
    <div id="secondsidebar">

		
		<div class="widget_text side-widget"><h2>Search R-bloggers</h2><div class="textwidget custom-html-widget">

<div class="top-search" style="padding-left: 15px;">
	<form id="searchform" action="http://www.google.com/cse" target="_blank">
		<div>
			<input type="hidden" name="cx" value="005359090438081006639:paz69t-s8ua" />
			<input type="hidden" name="ie" value="UTF-8" />
			<input type="text" value="" name="q" id="q" autocomplete="on" style="font-size:16px;" placeholder="Search.." />
			<input type="submit" id="searchsubmit" name="sa" value="Go" style="font-size:16px;" />
		</div>
	</form>

</div>
<!-- thanks: https://stackoverflow.com/questions/14981575/google-cse-with-a-custom-form 
https://stackoverflow.com/questions/10363674/change-size-of-text-in-text-input-tag
--></div></div><div class="side-widget"><h2>Most visited articles of the week</h2>
<ol class='wppp_list'>
	<li><a href='https://www.r-bloggers.com/how-to-write-the-first-for-loop-in-r/' title='How to write the first for loop in R'>How to write the first for loop in R</a></li>
	<li><a href='https://www.r-bloggers.com/5-ways-to-subset-a-data-frame-in-r/' title='5 Ways to Subset a Data Frame in R'>5 Ways to Subset a Data Frame in R</a></li>
	<li><a href='https://www.r-bloggers.com/r-sorting-a-data-frame-by-the-contents-of-a-column/' title='R – Sorting a data frame by the contents of a column'>R – Sorting a data frame by the contents of a column</a></li>
	<li><a href='https://www.r-bloggers.com/using-apply-sapply-lapply-in-r/' title='Using apply, sapply, lapply in R'>Using apply, sapply, lapply in R</a></li>
	<li><a href='https://www.r-bloggers.com/date-formats-in-r/' title='Date Formats in R'>Date Formats in R</a></li>
	<li><a href='https://www.r-bloggers.com/installing-r-packages/' title='Installing R packages'>Installing R packages</a></li>
	<li><a href='https://www.r-bloggers.com/in-depth-introduction-to-machine-learning-in-15-hours-of-expert-videos/' title='In-depth introduction to machine learning in 15 hours of expert videos'>In-depth introduction to machine learning in 15 hours of expert videos</a></li>
	<li><a href='https://www.r-bloggers.com/loading-packages-efficiently/' title='Loading packages efficiently'>Loading packages efficiently</a></li>
	<li><a href='https://www.r-bloggers.com/r-tutorial-series-simple-linear-regression/' title='R Tutorial Series: Simple Linear Regression'>R Tutorial Series: Simple Linear Regression</a></li>
</ol>
</div><div class="side-widget"><h2>Sponsors</h2>			<div class="textwidget"><script data-cfasync="false" type="text/javascript">
// https://support.cloudflare.com/hc/en-us/articles/200169436-How-can-I-have-Rocket-Loader-ignore-my-script-s-in-Automatic-Mode-
// this must be placed higher. Otherwise it doesn't work.
// data-cfasync="false" is for making sure cloudflares' rocketcache doesn't interfeare with this
// in this case it only works because it was used at the original script in the text widget


function createCookie(name,value,days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}


async function readTextFile(file)
{
	// Helps people browse between pages without the need to keep downloading the same 
	// ads txt page everytime. This way, it allows them to use their browser's cache.
	var random_number = readCookie("ad_random_number_cookie");
	if(random_number == null) {
		var random_number = Math.floor(Math.random()*100*(new Date().getTime()/10000000000));
		createCookie("ad_random_number_cookie",random_number,1)
	}
	
    file += '?t='+random_number;
    var rawFile = new XMLHttpRequest();
    rawFile.onreadystatechange = function ()
    {
        if(rawFile.readyState === 4)
        {
            if(rawFile.status === 200 || rawFile.status == 0)
            {
                // var allText = rawFile.responseText;
                // document.write(allText);
                document.write(rawFile.responseText);
            }
        }
    }
    rawFile.open("GET", file, false);
    rawFile.send(null);
}

// readTextFile('https://raw.githubusercontent.com/Raynos/file-store/master/temp.txt');

readTextFile("https://www.r-bloggers.com/wp-content/uploads/text-widget_anti-cache.txt");

</script>




</div>
		</div><div class="side-widget"><h2><a class="rsswidget" href="https://feeds.feedburner.com/Rjobs"><img class="rss-widget-icon" style="border:0" width="14" height="14" src="https://www.r-bloggers.com/wp-includes/images/rss.png" alt="RSS" /></a> <a class="rsswidget" href="https://www.r-users.com/">Jobs for R users</a></h2><ul><li><a class='rsswidget' href='http://feedproxy.google.com/~r/RJobs/~3/TNxQw4JW1ys/'>(Junior) Data Analyst – Berlin</a></li><li><a class='rsswidget' href='http://feedproxy.google.com/~r/RJobs/~3/tO8iTE5WNH4/'>Associate Researcher (Data Analytics)</a></li><li><a class='rsswidget' href='http://feedproxy.google.com/~r/RJobs/~3/edvvnWrqyYo/'>Lead Data Scientist @ Stabio, Ticino, Switzerland</a></li><li><a class='rsswidget' href='http://feedproxy.google.com/~r/RJobs/~3/iFm_R5drl1I/'>Senior Scientist, Translational Informatics</a></li><li><a class='rsswidget' href='http://feedproxy.google.com/~r/RJobs/~3/41Y2rIRAmQc/'>Senior Scientist, Translational Informatics @ Vancouver, BC, Canada</a></li><li><a class='rsswidget' href='http://feedproxy.google.com/~r/RJobs/~3/wPXfQOHO6ns/'>Data Scientist @ New York, United States</a></li><li><a class='rsswidget' href='http://feedproxy.google.com/~r/RJobs/~3/Lb4AzU5Gv78/'>Empirical Research Librarian</a></li></ul></div><div class="side-widget">			<div class="textwidget"><strong><a href="https://www.r-bloggers.com/blogs-list/">Full list of contributing R-bloggers</a></strong></div>
		</div>    </div>
<!-- end second sidebar --></div>
<!-- begin footer -->
<div id="footer">
	<strong><a href="https://www.r-bloggers.com">R-bloggers</a></strong> was founded by <a href="http://www.r-statistics.com/about/">Tal Galili</a>, with gratitude to the <a href="http://www.r-project.org/">R</a> community.  <br />
    Is powered by <a href="http://www.wordpress.org">WordPress</a> using a <a href="http://themes.bavotasan.com" rel="nofollow">bavotasan.com</a> design.<br />
    Copyright © 2019 <strong>R-bloggers</strong>. All Rights Reserved. <a href="http://www.r-bloggers.com/terms/">Terms and Conditions</a> for this website<br />
</div>

<!--
TPC! Memory Usage (http://webjawns.com)
Memory Usage: 90651456
Memory Peak Usage: 90976080
WP Memory Limit: 820M
PHP Memory Limit: 800M
Checkpoints: 9
-->

		<div class="wpusb wpusb-buttons wpusb-fixed-right   wpusb-fixed wpusb-layout-buttons-content wpusb-fixed-position_fixed"
		     id="wpusb-container-fixed"
		     data-element-url="https%3A%2F%2Fwww.r-bloggers.com%2Fgoodbye-disqus-hello-utterances%2F%3Futm_source%3Dshare_buttons%26utm_medium%3Dsocial_media%26utm_campaign%3Dsocial_share"
		     data-element-title="Goodbye%2C%20Disqus%21%20Hello%2C%20Utterances%21"
		     data-attr-reference="187573"
		     data-is-term="0"
		     data-element="fixed"
		     data-attr-nonce="b4dc50dcc1"
		      data-disabled-share-counts="1" data-wpusb-component="counter-social-share">

			<div data-element="buttons" class="wpusb-fixed-right-container ">
						<div class="wpusb-item wpusb-facebook ">
				<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.r-bloggers.com%2Fgoodbye-disqus-hello-utterances%2F%3Futm_source%3Dshare_buttons%26utm_medium%3Dsocial_media%26utm_campaign%3Dsocial_share" target="_blank"
				   data-action="open-popup"
				   class="wpusb-layout-buttons wpusb-button wpusb-btn "
				   title="Share on Facebook"
				   
				   
				   rel="nofollow"
				>
				   			<svg class="wpusb-svg wpusb-facebook-buttons ">
				<use xlink:href="#wpusb-facebook" />
			</svg>
				</a>
			</div>			<div class="wpusb-item wpusb-twitter ">
				<a href="https://twitter.com/share?url=https%3A%2F%2Fwww.r-bloggers.com%2Fgoodbye-disqus-hello-utterances%2F%3Futm_source%3Dshare_buttons%26utm_medium%3Dsocial_media%26utm_campaign%3Dsocial_share&text=Goodbye%2C%20Disqus%21%20Hello%2C%20Utterances%21 #rstats #datascience&via=rbloggers" target="_blank"
				   data-action="open-popup"
				   class="wpusb-layout-buttons wpusb-button wpusb-btn "
				   title="Tweet"
				   
				   
				   rel="nofollow"
				>
				   			<svg class="wpusb-svg wpusb-twitter-buttons ">
				<use xlink:href="#wpusb-twitter" />
			</svg>
				</a>
			</div>			<div class="wpusb-item wpusb-linkedin ">
				<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.r-bloggers.com%2Fgoodbye-disqus-hello-utterances%2F%3Futm_source%3Dshare_buttons%26utm_medium%3Dsocial_media%26utm_campaign%3Dsocial_share&title=Goodbye%2C%20Disqus%21%20Hello%2C%20Utterances%21" target="_blank"
				   data-action="open-popup"
				   class="wpusb-layout-buttons wpusb-button wpusb-btn "
				   title="Share on Linkedin"
				   
				   
				   rel="nofollow"
				>
				   			<svg class="wpusb-svg wpusb-linkedin-buttons ">
				<use xlink:href="#wpusb-linkedin" />
			</svg>
				</a>
			</div>			<div class="wpusb-item wpusb-email ">
				<a href="mailto:?subject=Goodbye%2C%20Disqus%21%20Hello%2C%20Utterances%21&body=https%3A%2F%2Fwww.r-bloggers.com%2Fgoodbye-disqus-hello-utterances%2F%3Futm_source%3Dshare_buttons%26utm_medium%3Dsocial_media%26utm_campaign%3Dsocial_share
%0A%0AGoodbye%2C%20Disqus%21%20Hello%2C%20Utterances%21%0A%0ARemoving%20Disqus%20from%20my%20blogdown%20blog%20had%20been%20on%20my%20mind%20for%20a%20while%2C%0Aever%20since%20I%20saw%20Bob%20Rudis%E2%80%99%20tweet%20enjoining%20Noam%20Ross%20to%20not%20use%0Ait%20for%20his%0Abrand-new%20website.%0AThe%20same%20Twitter%20thread%20introduced%20me%20to%0AUtterances%2C%20a%20%E2%80%9Clightweight%0Acomments%20widget%20built%20on%20GitHub%20issues%E2%80%9D%2C%20which%20I%20have%20at%20last%20installed%0Ato%20my%20blog%20in%20lieu%20of%20Disqus.%20How%20did%20I%20manage%20to%20not%20lose%20anything%20of%0Avalue%3F%20How%20easy%20was%20it%20to%20switch%20tools%3F%20Read%20on%20to%20learn%20more%21%0A%0A%0A%0AWas%20saying%20goodbye%20to%20Disqus%20hard%3F%0A%0ARemoving%20Disqus%20was%20neither%20emotionally%20nor%20technically%20hard.%0A%0AComments%20I%20%28kinda%29%20let%20go%20of%0A%0ATo%20deal%20with%20my%20fear%20of%20loss%2C%20I%20exported%20all%20the%20comments%20to%20an%0AXML.%0AIt%20means%20I%20have%20a%20backup%2C%20that%20in%20theory%20I%20could%20explore%20within%20R%21%20I%E2%80%99ll%0Ashow%20some%20XML%20wrangling%20a%20bit%20later.%20The%20export%20does%20contain%20Disqus%0Ausernames%20and%20names%20which%20means%20I%E2%80%99m%20now%20responsible%20for%20person%0Aidentifying%20information%20that%20Disqus%20collected.%0A%0AThanks%20a%20lot%20to%20commenters%20in%20the%20past%20system%20for%20taking%20the%20time%20to%0Aleave%20me%20a%20note%3A%20it%20helped%20me%20keep%20blogging%21%0A%0AThe%20Disqus%20XML%20contains%20information%20about%0A%0A%0Aposts%20that%20are%20in%20fact%20comments%2C%20not%20blog%20posts%2C%20along%20with%0Atheir%20threading%20information%20i.e.%C2%A0both%20whose%20blog%20post%20the%20comment%0Awas%20on%2C%20and%20if%20relevant%2C%20which%20comment%20the%20comment%20is%20an%20answer%20to%3B%0A%0Athreads%2C%20one%20thread%20per%20comment%20but%20not%20necessarily%20one%20comment%0Aper%20thread%2C%20and%20potentially%20more%20than%20one%20thread%20per%20blog%20post.%20Each%0Atop-level%20comment%20is%20a%20thread%2C%20but%20a%20website%20page%20with%20no%20comment%0Aalso%20gets%20a%20thread%2C%20obviously%20empty.%0A%0A%0AIn%20the%20code%20below%2C%20I%20shall%0Arectangle%20the%0Ainformation%20about%20threads%20%28id%2C%20title%29%20and%20about%20comments%20%28message%2C%0Aauthor%20name%2C%20date%2C%20thread%20id%2C%20was%20it%20spam%2C%20was%20it%20deleted%29%20using%20the%0Axml2%0Apackage.%0A%0Aexport%20%26lt%3B-%20xml2%3A%3Aread_xml%28%26quot%3Bdata%2Fdisqus-export.xml%26quot%3B%29%0Aexport%0A%0A%0A%23%23%20%7Bxml_document%7D%0A%23%23%20%26lt%3Bdisqus%20schemaLocation%3D%26quot%3Bhttp%3A%2F%2Fdisqus.com%2Fapi%2Fschemas%2F1.0%2Fdisqus.xsd%20http%3A%2F%2Fdisqus.com%2Fapi%2Fschemas%2F1.0%2Fdisqus-internals.xsd%26quot%3B%20xmlns%3D%26quot%3Bhttp%3A%2F%2Fdisqus.com%26quot%3B%20xmlns%3Adsq%3D%26quot%3Bhttp%3A%2F%2Fdisqus.com%2Fdisqus-internals%26quot%3B%20xmlns%3Axsi%3D%26quot%3Bhttp%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%26quot%3B%26gt%3B%0A%23%23%20%20%20%26lt%3Bcategory%20dsq%3Aid%3D%26quot%3B5516420%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20%26lt%3Btitle%26gt%3BGe%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5169974011%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5177145143%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5192091523%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5490361085%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5490455492%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5496622766%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5496655533%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5499530252%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5499566886%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5503605733%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5503629818%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5519522381%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5521172753%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5523856167%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5523862926%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544585525%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544919490%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544919711%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544920033%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20...%0A%0A%0AExplaining%20how%20to%20parse%20XML%20is%20beyond%20the%20scope%20of%20this%20blog%20post%2C%20but%0Alet%20me%20just%20mention%20I%20used%20a%20search%20engine%20to%20answer%20questions%20such%20as%0A%E2%80%9CXPath%20extract%20nodes%20by%20name%E2%80%9D%2C%20%E2%80%9Cxml2%20namespace%E2%80%9D.%20I%20reckon%20my%20code%20could%0Abe%20more%20elegant%20if%20I%20knew%20more%20XPath.%0A%0ALet%20me%20start%20with%20threads.%0A%0A%23%20extract%20nodes%20corresponding%20to%20comments%0Athreads_nodes%20%26lt%3B-%20xml2%3A%3Axml_find_all%28export%2C%20%26quot%3Bd1%3Athread%26quot%3B%29%0Athreads_nodes%0A%0A%0A%23%23%20%7Bxml_nodeset%20%28283%29%7D%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5169974011%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5177145143%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5192091523%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5490361085%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5490455492%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5496622766%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5496655533%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5499530252%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5499566886%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5503605733%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5503629818%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5519522381%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5521172753%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5523856167%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5523862926%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544585525%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544919490%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544919711%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544920033%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544931944%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20...%0A%0A%0A%23%20extract%20interesting%20information%20from%20each%20node%2C%0A%23%20information%20that%20is%20potentially%20nested%0Athreads%20%26lt%3B-%20tibble%3A%3Atibble%28%0A%20%20thread_id%20%3D%20xml2%3A%3Axml_attr%28%20threads_nodes%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26quot%3Bid%26quot%3B%29%2C%0A%20%20title%20%3D%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28threads_nodes%2C%20%26quot%3Bd1%3Atitle%26quot%3B%29%0A%20%20%20%20%29%29%0A%0A%0ANow%20on%20to%20comments%E2%80%A6%0A%0A%23%20extract%20nodes%20corresponding%20to%20comments%0Acomments_nodes%20%26lt%3B-%20xml2%3A%3Axml_find_all%28export%2C%20%26quot%3Bd1%3Apost%26quot%3B%29%20%0Acomments_nodes%0A%0A%0A%23%23%20%7Bxml_nodeset%20%28206%29%7D%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B2916181700%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BLa%20poss%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118121105%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BGreat%20b%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118236082%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BNice%20Ma%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118757895%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThanks%20%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118758593%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThanks%20%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118783826%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BI%20love%20%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118785805%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThanks%21%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3121124991%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BChouett%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3121137475%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BOops%20qu%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3121945521%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BI%20poste%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3122653372%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BAnother%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3122759373%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThank%20y%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3123851616%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BGreat%20s%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3126340152%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BOnce%20ag%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3126343942%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThank%20y%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3140125477%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThe%20ide%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3140136118%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThank%20y%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3140161542%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BNot%20rel%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3140329480%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BYes%20def%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3150961786%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThat%27s%20%20...%0A%23%23%20...%0A%0A%0A%23%20extract%20interesting%20information%20from%20each%20node%2C%0A%23%20information%20that%20is%20potentially%20nested%0Acomments%20%26lt%3B-%20tibble%3A%3Atibble%28%0A%20%20thread_id%20%3D%20xml2%3A%3Axml_attr%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3Athread%26quot%3B%29%2C%20%0A%20%20%20%20%26quot%3Bid%26quot%3B%29%2C%0A%20%20message%20%3D%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3Amessage%26quot%3B%29%0A%20%20%20%20%29%2C%0A%20%20date%20%3D%20%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3AcreatedAt%26quot%3B%29%0A%20%20%20%20%29%2C%0A%20%20deleted%20%3D%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3AisDeleted%26quot%3B%29%0A%20%20%20%20%29%2C%0A%20%20spam%20%3D%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3AisSpam%26quot%3B%29%0A%20%20%20%20%29%2C%0A%20%20author%20%3D%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3Aauthor%26quot%3B%29%2C%20%0A%20%20%20%20%26quot%3Bd1%3Aname%26quot%3B%29%29%29%0A%20%20%0Acomments%20%26lt%3B-%20dplyr%3A%3Amutate%28comments%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20date%20%3D%20anytime%3A%3Aanydate%28date%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20deleted%20%3D%20deleted%20%3D%3D%20%26quot%3Btrue%26quot%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20spam%20%3D%20spam%20%3D%3D%20%26quot%3Btrue%26quot%3B%29%0A%0A%0AI%20was%20then%20able%20to%20join%20the%20two%20tables.%0A%0Acomments%20%26lt%3B-%20dplyr%3A%3Aleft_join%28comments%2C%20threads%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20by%20%3D%20%26quot%3Bthread_id%26quot%3B%29%0Areadr%3A%3Awrite_csv%28comments%2C%20%26quot%3Bcomments.csv%26quot%3B%29%0A%0Acomments%0A%0A%0A%23%23%20%23%20A%20tibble%3A%2011%20x%202%0A%23%23%20%20%20%20message%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%23%23%20%20%20%20%26lt%3Bchr%26gt%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bchr%26gt%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%23%23%20%201%20%26quot%3B%26lt%3Bp%26gt%3BGreat%20blog%20post%2C%20thank%20you%21%20I%20really%20appr%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%202%20%26lt%3Bp%26gt%3BNice%20Ma%C3%ABlle%21%26lt%3B%2Fp%26gt%3B%26lt%3Bp%26gt%3BGood%2C%20interesting%20quest%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%203%20%26lt%3Bp%26gt%3BThanks%20Nick%21%26lt%3B%2Fp%26gt%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%204%20%26lt%3Bp%26gt%3BThanks%20Lisa%21%20Toponomy%20is%20quite%20fascinating%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%205%20%26quot%3B%26lt%3Bp%26gt%3BI%20love%20this%21%20I%20wonder%2C%20would%20it%20be%20possib%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%206%20%26lt%3Bp%26gt%3BThanks%21%20I%20got%20a%20similar%20question%20on%20Twitte%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%207%20%26quot%3B%26lt%3Bp%26gt%3BChouette%21%20Mais%20la%20mer%20c%27est%20%5C%26quot%3Bsea%5C%26quot%3B%2C%20%5C%26quot%3Bse%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%208%20%26lt%3Bp%26gt%3BOops%20quelle%20faute%20de%20frappe%20idiote%2C%20je%20la%20%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%209%20%26quot%3B%26lt%3Bp%26gt%3BI%20posted%20an%20update%21%20%26lt%3Ba%20href%3D%5C%26quot%3Bhttp%3A%2F%2Fwww.%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%2010%20%26lt%3Bp%26gt%3BAnother%20good%20one%2C%20Ma%C3%ABlle%21%20It%27s%20a%20great%20exa%E2%80%A6%20More%20water%2C%20a%20bit%20more%20a%E2%80%A6%0A%23%23%2011%20%26lt%3Bp%26gt%3BThank%20you%21%20Lol%20on%20ninja%20grep%20skills%2C%20I%20wis%E2%80%A6%20More%20water%2C%20a%20bit%20more%20a%E2%80%A6%0A%0A%0AI%20got%20a%20pretty%20nice%20rectangle%20in%20the%20end%2C%20that%20could%20be%20used%20for%20some%0Atext%20analysis%2C%20but%20in%20my%20case%2C%20I%20mostly%20view%20it%20as%20memorabilia.%20I%20hope%0Aany%20comment%20warranting%20action%20had%20been%20tackled.%20I%20wrote%2093%0A%28sum%28comments%24author%20%3D%3D%20%26quot%3BMa%C3%ABlle%20Salmon%26quot%3B%29%29%20out%20of%20the%20206%20comments%0A%28Disqus%20classified%20a%20few%20comments%20as%20spam%2C%2015%20to%20be%20exact%2C%20of%20which%20a%0Afew%20were%20informative%20comments.%20%29%2C%20because%20I%20tend%20to%20answer%20comments%2C%20if%0Aonly%20with%20a%20simple%20thank%20you%21%20Now%20that%20I%20have%20GitHub%20issues%20as%20comments%2C%0AI%20could%20also%20answer%20with%20emojis.%0A%0AIt%20was%20fun%20because%20I%20didn%E2%80%99t%20even%20remember%20about%20some%20notes%20I%20had%20gotten.%0AI%20hope%20you%20don%E2%80%99t%20feel%20slighted%2C%20dear%20reader%2C%20now%20that%20I%20keep%20these%20old%0Acomments%20to%20myself%21%20Be%20happy%20you%E2%80%99re%20no%20longer%20tracked.%0A%0AGetting%20rid%20of%20Disqus%0A%0AI%20removed%20Disqus%20from%20my%20website%2C%20and%20my%20website%20from%20Disqus%21%0A%0ATo%20remove%20Disqus%20from%20a%20Hugo%20website%2C%20one%20can%2C%20depending%20on%20the%0Awebsite%E2%80%99s%20theme%3A%0A%0A%0Ause%20Hugo%E2%80%99s%20Disqus%20GDPR%0Asetting%20if%20the%20website%0Atheme%20uses%20Hugo%E2%80%99s%20built-in%20Disqus%20template%20%28i.e.%C2%A0if%20there%E2%80%99s%20a%0Amention%20of%20a%20internal%20Disqus%0Apartial%2C%0Anot%20of%20a%20Disqus%20partial%20stored%20somewhere%20in%20the%20theme%20files%29%3B%0A%0Aor%20remove%20one%E2%80%99s%20Disqus%20username%20from%20the%20config%20file%2C%20or%20remove%20the%0ADisqus%20partial%20mention%20in%20the%20post%20template.%20To%20do%20that%2C%20the%20best%0Aprocess%20is%20not%20to%20edit%20the%20e.g.%C2%A0post%2Fsingle.html%20file%20in%20the%20theme%0Afolder%2C%20but%20instead%20to%20save%20it%20and%20edit%20it%20under%0Alayouts%2Fpost%2Fsingle.html.%20Refer%20to%20the%20blogdown%20book%20for%20more%0Ainformation.%0A%0A%0AAfter%20that%2C%20there%20should%20be%20no%20mention%20of%20Disqus%20scripts%20in%20your%20website%0Asource.%0A%0AThen%2C%20to%20delete%20my%20website%20from%20my%20Disqus%20account%2C%20following%20Disqus%0Aguidance%2C%0AI%20logged%20into%20my%20account%20and%2C%20after%20exporting%20my%20website%E2%80%99s%20comments%2C%0Aconfirmed%20I%20wanted%20to%20do%20that%20and%20voil%C3%A0%21%0A%0AAdding%20Utterances%0A%0ATo%20add%20Utterances%2C%20a%20%E2%80%9Clightweight%20comments%20widget%20built%20on%20GitHub%0Aissues%E2%80%9D%2C%20I%20also%20followed%20official%0Aguidance%3A%0A%0A%0AI%20installed%20the%20app%20to%20my%20website%20GitHub%20repo.%0A%0AIn%20my%20custom%20single.html%20layout%20for%20posts%20%28again%2C%20refer%20to%20the%0Ablogdown%20book%20for%20clear%20information%20on%20the%0Atopic%29%2C%20I%0Aadded%20the%20script%20tag%20corresponding%20to%20Utterances.%20The%20docs%20linked%0Aabove%20help%20you%20configure%20the%20appearance%20of%20the%20widget.%0A%0A%0AHere%E2%80%99s%20the%20Utterances%20script%20tag%20for%20my%20blog.%20The%20label%20needs%20to%20have%20been%20created%20for%20your%20website%20repotterances%20can%20only%20use%20existing%20issue%20labels.%0A%0A%26lt%3Bscript%20src%3D%26quot%3Bhttps%3A%2F%2Futteranc.es%2Fclient.js%26quot%3B%0A%20%20%20%20%20%20%20%20repo%3D%26quot%3Bmaelle%2Fsimplymaelle%26quot%3B%0A%20%20%20%20%20%20%20%20issue-term%3D%26quot%3Btitle%26quot%3B%0A%20%20%20%20%20%20%20%20label%3D%26quot%3Bcomments%20%3Aspeech_balloon%3A%26quot%3B%0A%20%20%20%20%20%20%20%20theme%3D%26quot%3Bgithub-light%26quot%3B%0A%20%20%20%20%20%20%20%20crossorigin%3D%26quot%3Banonymous%26quot%3B%0A%20%20%20%20%20%20%20%20async%26gt%3B%0A%26lt%3B%2Fscript%26gt%3B%0A%0A%0AI%20then%20wrote%20a%20comment%20under%20one%20of%20my%0Aposts%20to%20make%20sure%20things%0Aworked.%20I%20also%20took%20a%20few%20seconds%20to%20add%20my%20site%20to%20the%20list%20of%20sites%0Ausing%20Utterances.%20Overall%2C%0AI%20found%20the%20process%20easy%2C%20as%20I%20had%20the%20first%20time%20I%20installed%20Utterances%0Aon%20a%20blogdown%20website.%0A%0AI%20am%20aware%20that%20a%20downside%20of%20Utterances%20is%20that%20it%20is%20tied%20to%20GitHub.%0AHowever%2C%20I%20am%20not%20afraid%20of%20switching%20to%20yet%20another%20tool%20in%20the%20future%2C%0Aand%20hope%20not%20too%20many%20potential%20commenters%20will%20be%20turned%20off%20by%20the%0Anecessity%20to%20use%20a%20GitHub%20account%20to%20comment.%0A%0AConclusion%0A%0AIn%20this%20post%20I%20explained%20how%20I%20removed%20Disqus%20from%20my%20blog%20and%20vice%0Aversa%2C%20and%20how%20I%20installed%20Utterances%20instead.%20What%20I%20did%20not%20do%20was%0Aanalyzing%20the%20Disqus%20data.%20I%20moreover%20did%20not%20try%20to%20transfer%20old%0Acomments%20to%20the%20new%20system%2C%20partly%20because%20that%E2%80%99d%20mean%20removing%0Acommenters%E2%80%99%20ownership%20on%20what%20they%20had%20written.%0A%0AIn%20his%20tweet%20that%20motivated%20me%20to%20say%20goodbye%20to%0ADisqus%2C%20Bob%0Awrote%20%E2%80%9CYet%20another%20service%20where%20you%20and%20your%20site%20visitors%20are%20the%0Aproduct.%20Plus%20it%20acts%20like%20malicious%20javascript.%E2%80%9D.%20I%20therefore%20feel%20a%0Abit%20better%20about%20this%20website%21%20Now%2C%20I%20didn%E2%80%99t%20have%20a%20ton%20of%20comments%2C%20and%0AI%20don%E2%80%99t%20have%20a%20real%20need%20for%20moderating%20comments%2C%20so%20maybe%20you%E2%80%99ll%20make%20a%0Adifferent%20decision%20for%20your%20website.%20I%E2%80%99d%20be%20glad%20to%20hear%20about%20it%E2%80%A6%20in%0Athe%20comments%20section%20below%21%20Also%20feel%20free%20to%20tell%20me%20if%20you%20explore%0Ayour%20own%20Disqus%20data%20in%20a%20more%20thorough%20way%20than%20I%21%0A" target="_self"
				   
				   class="wpusb-layout-buttons wpusb-button wpusb-btn "
				   title="Send by email"
				   
				   
				   rel="nofollow"
				>
				   			<svg class="wpusb-svg wpusb-email-buttons ">
				<use xlink:href="#wpusb-email" />
			</svg>
				</a>
			</div>			<div class="wpusb-item wpusb-gmail ">
				<a href="https://mail.google.com/mail/u/0/?view=cm&fs=1&su=Goodbye%2C%20Disqus%21%20Hello%2C%20Utterances%21&body=https%3A%2F%2Fwww.r-bloggers.com%2Fgoodbye-disqus-hello-utterances%2F%3Futm_source%3Dshare_buttons%26utm_medium%3Dsocial_media%26utm_campaign%3Dsocial_share
%0A%0AGoodbye%2C%20Disqus%21%20Hello%2C%20Utterances%21%0A%0ARemoving%20Disqus%20from%20my%20blogdown%20blog%20had%20been%20on%20my%20mind%20for%20a%20while%2C%0Aever%20since%20I%20saw%20Bob%20Rudis%E2%80%99%20tweet%20enjoining%20Noam%20Ross%20to%20not%20use%0Ait%20for%20his%0Abrand-new%20website.%0AThe%20same%20Twitter%20thread%20introduced%20me%20to%0AUtterances%2C%20a%20%E2%80%9Clightweight%0Acomments%20widget%20built%20on%20GitHub%20issues%E2%80%9D%2C%20which%20I%20have%20at%20last%20installed%0Ato%20my%20blog%20in%20lieu%20of%20Disqus.%20How%20did%20I%20manage%20to%20not%20lose%20anything%20of%0Avalue%3F%20How%20easy%20was%20it%20to%20switch%20tools%3F%20Read%20on%20to%20learn%20more%21%0A%0A%0A%0AWas%20saying%20goodbye%20to%20Disqus%20hard%3F%0A%0ARemoving%20Disqus%20was%20neither%20emotionally%20nor%20technically%20hard.%0A%0AComments%20I%20%28kinda%29%20let%20go%20of%0A%0ATo%20deal%20with%20my%20fear%20of%20loss%2C%20I%20exported%20all%20the%20comments%20to%20an%0AXML.%0AIt%20means%20I%20have%20a%20backup%2C%20that%20in%20theory%20I%20could%20explore%20within%20R%21%20I%E2%80%99ll%0Ashow%20some%20XML%20wrangling%20a%20bit%20later.%20The%20export%20does%20contain%20Disqus%0Ausernames%20and%20names%20which%20means%20I%E2%80%99m%20now%20responsible%20for%20person%0Aidentifying%20information%20that%20Disqus%20collected.%0A%0AThanks%20a%20lot%20to%20commenters%20in%20the%20past%20system%20for%20taking%20the%20time%20to%0Aleave%20me%20a%20note%3A%20it%20helped%20me%20keep%20blogging%21%0A%0AThe%20Disqus%20XML%20contains%20information%20about%0A%0A%0Aposts%20that%20are%20in%20fact%20comments%2C%20not%20blog%20posts%2C%20along%20with%0Atheir%20threading%20information%20i.e.%C2%A0both%20whose%20blog%20post%20the%20comment%0Awas%20on%2C%20and%20if%20relevant%2C%20which%20comment%20the%20comment%20is%20an%20answer%20to%3B%0A%0Athreads%2C%20one%20thread%20per%20comment%20but%20not%20necessarily%20one%20comment%0Aper%20thread%2C%20and%20potentially%20more%20than%20one%20thread%20per%20blog%20post.%20Each%0Atop-level%20comment%20is%20a%20thread%2C%20but%20a%20website%20page%20with%20no%20comment%0Aalso%20gets%20a%20thread%2C%20obviously%20empty.%0A%0A%0AIn%20the%20code%20below%2C%20I%20shall%0Arectangle%20the%0Ainformation%20about%20threads%20%28id%2C%20title%29%20and%20about%20comments%20%28message%2C%0Aauthor%20name%2C%20date%2C%20thread%20id%2C%20was%20it%20spam%2C%20was%20it%20deleted%29%20using%20the%0Axml2%0Apackage.%0A%0Aexport%20%26lt%3B-%20xml2%3A%3Aread_xml%28%26quot%3Bdata%2Fdisqus-export.xml%26quot%3B%29%0Aexport%0A%0A%0A%23%23%20%7Bxml_document%7D%0A%23%23%20%26lt%3Bdisqus%20schemaLocation%3D%26quot%3Bhttp%3A%2F%2Fdisqus.com%2Fapi%2Fschemas%2F1.0%2Fdisqus.xsd%20http%3A%2F%2Fdisqus.com%2Fapi%2Fschemas%2F1.0%2Fdisqus-internals.xsd%26quot%3B%20xmlns%3D%26quot%3Bhttp%3A%2F%2Fdisqus.com%26quot%3B%20xmlns%3Adsq%3D%26quot%3Bhttp%3A%2F%2Fdisqus.com%2Fdisqus-internals%26quot%3B%20xmlns%3Axsi%3D%26quot%3Bhttp%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%26quot%3B%26gt%3B%0A%23%23%20%20%20%26lt%3Bcategory%20dsq%3Aid%3D%26quot%3B5516420%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20%26lt%3Btitle%26gt%3BGe%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5169974011%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5177145143%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5192091523%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5490361085%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5490455492%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5496622766%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5496655533%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5499530252%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5499566886%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5503605733%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5503629818%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5519522381%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5521172753%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5523856167%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5523862926%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544585525%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544919490%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544919711%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544920033%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20...%0A%0A%0AExplaining%20how%20to%20parse%20XML%20is%20beyond%20the%20scope%20of%20this%20blog%20post%2C%20but%0Alet%20me%20just%20mention%20I%20used%20a%20search%20engine%20to%20answer%20questions%20such%20as%0A%E2%80%9CXPath%20extract%20nodes%20by%20name%E2%80%9D%2C%20%E2%80%9Cxml2%20namespace%E2%80%9D.%20I%20reckon%20my%20code%20could%0Abe%20more%20elegant%20if%20I%20knew%20more%20XPath.%0A%0ALet%20me%20start%20with%20threads.%0A%0A%23%20extract%20nodes%20corresponding%20to%20comments%0Athreads_nodes%20%26lt%3B-%20xml2%3A%3Axml_find_all%28export%2C%20%26quot%3Bd1%3Athread%26quot%3B%29%0Athreads_nodes%0A%0A%0A%23%23%20%7Bxml_nodeset%20%28283%29%7D%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5169974011%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5177145143%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5192091523%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5490361085%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5490455492%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5496622766%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5496655533%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5499530252%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5499566886%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5503605733%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5503629818%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5519522381%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5521172753%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5523856167%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5523862926%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544585525%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544919490%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544919711%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544920033%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20%20%26lt%3Bthread%20dsq%3Aid%3D%26quot%3B5544931944%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bforum%26gt%3Bmasalmon%26lt%3B%2Fforum%26gt%3B%5Cn%20%20...%0A%23%23%20...%0A%0A%0A%23%20extract%20interesting%20information%20from%20each%20node%2C%0A%23%20information%20that%20is%20potentially%20nested%0Athreads%20%26lt%3B-%20tibble%3A%3Atibble%28%0A%20%20thread_id%20%3D%20xml2%3A%3Axml_attr%28%20threads_nodes%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26quot%3Bid%26quot%3B%29%2C%0A%20%20title%20%3D%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28threads_nodes%2C%20%26quot%3Bd1%3Atitle%26quot%3B%29%0A%20%20%20%20%29%29%0A%0A%0ANow%20on%20to%20comments%E2%80%A6%0A%0A%23%20extract%20nodes%20corresponding%20to%20comments%0Acomments_nodes%20%26lt%3B-%20xml2%3A%3Axml_find_all%28export%2C%20%26quot%3Bd1%3Apost%26quot%3B%29%20%0Acomments_nodes%0A%0A%0A%23%23%20%7Bxml_nodeset%20%28206%29%7D%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B2916181700%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BLa%20poss%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118121105%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BGreat%20b%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118236082%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BNice%20Ma%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118757895%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThanks%20%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118758593%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThanks%20%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118783826%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BI%20love%20%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3118785805%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThanks%21%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3121124991%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BChouett%20...%0A%23%23%20%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3121137475%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BOops%20qu%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3121945521%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BI%20poste%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3122653372%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BAnother%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3122759373%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThank%20y%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3123851616%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BGreat%20s%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3126340152%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BOnce%20ag%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3126343942%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThank%20y%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3140125477%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThe%20ide%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3140136118%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThank%20y%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3140161542%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BNot%20rel%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3140329480%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BYes%20def%20...%0A%23%23%20%20%26lt%3Bpost%20dsq%3Aid%3D%26quot%3B3150961786%26quot%3B%26gt%3B%5Cn%20%20%26lt%3Bid%2F%26gt%3B%5Cn%20%20%26lt%3Bmessage%26gt%3B%26lt%3B%21%5BCDATA%5B%26lt%3Bp%26gt%3BThat%27s%20%20...%0A%23%23%20...%0A%0A%0A%23%20extract%20interesting%20information%20from%20each%20node%2C%0A%23%20information%20that%20is%20potentially%20nested%0Acomments%20%26lt%3B-%20tibble%3A%3Atibble%28%0A%20%20thread_id%20%3D%20xml2%3A%3Axml_attr%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3Athread%26quot%3B%29%2C%20%0A%20%20%20%20%26quot%3Bid%26quot%3B%29%2C%0A%20%20message%20%3D%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3Amessage%26quot%3B%29%0A%20%20%20%20%29%2C%0A%20%20date%20%3D%20%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3AcreatedAt%26quot%3B%29%0A%20%20%20%20%29%2C%0A%20%20deleted%20%3D%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3AisDeleted%26quot%3B%29%0A%20%20%20%20%29%2C%0A%20%20spam%20%3D%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3AisSpam%26quot%3B%29%0A%20%20%20%20%29%2C%0A%20%20author%20%3D%20xml2%3A%3Axml_text%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28%0A%20%20%20%20xml2%3A%3Axml_find_all%28comments_nodes%2C%20%26quot%3Bd1%3Aauthor%26quot%3B%29%2C%20%0A%20%20%20%20%26quot%3Bd1%3Aname%26quot%3B%29%29%29%0A%20%20%0Acomments%20%26lt%3B-%20dplyr%3A%3Amutate%28comments%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20date%20%3D%20anytime%3A%3Aanydate%28date%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20deleted%20%3D%20deleted%20%3D%3D%20%26quot%3Btrue%26quot%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20spam%20%3D%20spam%20%3D%3D%20%26quot%3Btrue%26quot%3B%29%0A%0A%0AI%20was%20then%20able%20to%20join%20the%20two%20tables.%0A%0Acomments%20%26lt%3B-%20dplyr%3A%3Aleft_join%28comments%2C%20threads%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20by%20%3D%20%26quot%3Bthread_id%26quot%3B%29%0Areadr%3A%3Awrite_csv%28comments%2C%20%26quot%3Bcomments.csv%26quot%3B%29%0A%0Acomments%0A%0A%0A%23%23%20%23%20A%20tibble%3A%2011%20x%202%0A%23%23%20%20%20%20message%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%23%23%20%20%20%20%26lt%3Bchr%26gt%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bchr%26gt%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%23%23%20%201%20%26quot%3B%26lt%3Bp%26gt%3BGreat%20blog%20post%2C%20thank%20you%21%20I%20really%20appr%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%202%20%26lt%3Bp%26gt%3BNice%20Ma%C3%ABlle%21%26lt%3B%2Fp%26gt%3B%26lt%3Bp%26gt%3BGood%2C%20interesting%20quest%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%203%20%26lt%3Bp%26gt%3BThanks%20Nick%21%26lt%3B%2Fp%26gt%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%204%20%26lt%3Bp%26gt%3BThanks%20Lisa%21%20Toponomy%20is%20quite%20fascinating%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%205%20%26quot%3B%26lt%3Bp%26gt%3BI%20love%20this%21%20I%20wonder%2C%20would%20it%20be%20possib%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%206%20%26lt%3Bp%26gt%3BThanks%21%20I%20got%20a%20similar%20question%20on%20Twitte%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%207%20%26quot%3B%26lt%3Bp%26gt%3BChouette%21%20Mais%20la%20mer%20c%27est%20%5C%26quot%3Bsea%5C%26quot%3B%2C%20%5C%26quot%3Bse%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%208%20%26lt%3Bp%26gt%3BOops%20quelle%20faute%20de%20frappe%20idiote%2C%20je%20la%20%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%20%209%20%26quot%3B%26lt%3Bp%26gt%3BI%20posted%20an%20update%21%20%26lt%3Ba%20href%3D%5C%26quot%3Bhttp%3A%2F%2Fwww.%E2%80%A6%20French%20villages%20and%20a%20so%E2%80%A6%0A%23%23%2010%20%26lt%3Bp%26gt%3BAnother%20good%20one%2C%20Ma%C3%ABlle%21%20It%27s%20a%20great%20exa%E2%80%A6%20More%20water%2C%20a%20bit%20more%20a%E2%80%A6%0A%23%23%2011%20%26lt%3Bp%26gt%3BThank%20you%21%20Lol%20on%20ninja%20grep%20skills%2C%20I%20wis%E2%80%A6%20More%20water%2C%20a%20bit%20more%20a%E2%80%A6%0A%0A%0AI%20got%20a%20pretty%20nice%20rectangle%20in%20the%20end%2C%20that%20could%20be%20used%20for%20some%0Atext%20analysis%2C%20but%20in%20my%20case%2C%20I%20mostly%20view%20it%20as%20memorabilia.%20I%20hope%0Aany%20comment%20warranting%20action%20had%20been%20tackled.%20I%20wrote%2093%0A%28sum%28comments%24author%20%3D%3D%20%26quot%3BMa%C3%ABlle%20Salmon%26quot%3B%29%29%20out%20of%20the%20206%20comments%0A%28Disqus%20classified%20a%20few%20comments%20as%20spam%2C%2015%20to%20be%20exact%2C%20of%20which%20a%0Afew%20were%20informative%20comments.%20%29%2C%20because%20I%20tend%20to%20answer%20comments%2C%20if%0Aonly%20with%20a%20simple%20thank%20you%21%20Now%20that%20I%20have%20GitHub%20issues%20as%20comments%2C%0AI%20could%20also%20answer%20with%20emojis.%0A%0AIt%20was%20fun%20because%20I%20didn%E2%80%99t%20even%20remember%20about%20some%20notes%20I%20had%20gotten.%0AI%20hope%20you%20don%E2%80%99t%20feel%20slighted%2C%20dear%20reader%2C%20now%20that%20I%20keep%20these%20old%0Acomments%20to%20myself%21%20Be%20happy%20you%E2%80%99re%20no%20longer%20tracked.%0A%0AGetting%20rid%20of%20Disqus%0A%0AI%20removed%20Disqus%20from%20my%20website%2C%20and%20my%20website%20from%20Disqus%21%0A%0ATo%20remove%20Disqus%20from%20a%20Hugo%20website%2C%20one%20can%2C%20depending%20on%20the%0Awebsite%E2%80%99s%20theme%3A%0A%0A%0Ause%20Hugo%E2%80%99s%20Disqus%20GDPR%0Asetting%20if%20the%20website%0Atheme%20uses%20Hugo%E2%80%99s%20built-in%20Disqus%20template%20%28i.e.%C2%A0if%20there%E2%80%99s%20a%0Amention%20of%20a%20internal%20Disqus%0Apartial%2C%0Anot%20of%20a%20Disqus%20partial%20stored%20somewhere%20in%20the%20theme%20files%29%3B%0A%0Aor%20remove%20one%E2%80%99s%20Disqus%20username%20from%20the%20config%20file%2C%20or%20remove%20the%0ADisqus%20partial%20mention%20in%20the%20post%20template.%20To%20do%20that%2C%20the%20best%0Aprocess%20is%20not%20to%20edit%20the%20e.g.%C2%A0post%2Fsingle.html%20file%20in%20the%20theme%0Afolder%2C%20but%20instead%20to%20save%20it%20and%20edit%20it%20under%0Alayouts%2Fpost%2Fsingle.html.%20Refer%20to%20the%20blogdown%20book%20for%20more%0Ainformation.%0A%0A%0AAfter%20that%2C%20there%20should%20be%20no%20mention%20of%20Disqus%20scripts%20in%20your%20website%0Asource.%0A%0AThen%2C%20to%20delete%20my%20website%20from%20my%20Disqus%20account%2C%20following%20Disqus%0Aguidance%2C%0AI%20logged%20into%20my%20account%20and%2C%20after%20exporting%20my%20website%E2%80%99s%20comments%2C%0Aconfirmed%20I%20wanted%20to%20do%20that%20and%20voil%C3%A0%21%0A%0AAdding%20Utterances%0A%0ATo%20add%20Utterances%2C%20a%20%E2%80%9Clightweight%20comments%20widget%20built%20on%20GitHub%0Aissues%E2%80%9D%2C%20I%20also%20followed%20official%0Aguidance%3A%0A%0A%0AI%20installed%20the%20app%20to%20my%20website%20GitHub%20repo.%0A%0AIn%20my%20custom%20single.html%20layout%20for%20posts%20%28again%2C%20refer%20to%20the%0Ablogdown%20book%20for%20clear%20information%20on%20the%0Atopic%29%2C%20I%0Aadded%20the%20script%20tag%20corresponding%20to%20Utterances.%20The%20docs%20linked%0Aabove%20help%20you%20configure%20the%20appearance%20of%20the%20widget.%0A%0A%0AHere%E2%80%99s%20the%20Utterances%20script%20tag%20for%20my%20blog.%20The%20label%20needs%20to%20have%20been%20created%20for%20your%20website%20repotterances%20can%20only%20use%20existing%20issue%20labels.%0A%0A%26lt%3Bscript%20src%3D%26quot%3Bhttps%3A%2F%2Futteranc.es%2Fclient.js%26quot%3B%0A%20%20%20%20%20%20%20%20repo%3D%26quot%3Bmaelle%2Fsimplymaelle%26quot%3B%0A%20%20%20%20%20%20%20%20issue-term%3D%26quot%3Btitle%26quot%3B%0A%20%20%20%20%20%20%20%20label%3D%26quot%3Bcomments%20%3Aspeech_balloon%3A%26quot%3B%0A%20%20%20%20%20%20%20%20theme%3D%26quot%3Bgithub-light%26quot%3B%0A%20%20%20%20%20%20%20%20crossorigin%3D%26quot%3Banonymous%26quot%3B%0A%20%20%20%20%20%20%20%20async%26gt%3B%0A%26lt%3B%2Fscript%26gt%3B%0A%0A%0AI%20then%20wrote%20a%20comment%20under%20one%20of%20my%0Aposts%20to%20make%20sure%20things%0Aworked.%20I%20also%20took%20a%20few%20seconds%20to%20add%20my%20site%20to%20the%20list%20of%20sites%0Ausing%20Utterances.%20Overall%2C%0AI%20found%20the%20process%20easy%2C%20as%20I%20had%20the%20first%20time%20I%20installed%20Utterances%0Aon%20a%20blogdown%20website.%0A%0AI%20am%20aware%20that%20a%20downside%20of%20Utterances%20is%20that%20it%20is%20tied%20to%20GitHub.%0AHowever%2C%20I%20am%20not%20afraid%20of%20switching%20to%20yet%20another%20tool%20in%20the%20future%2C%0Aand%20hope%20not%20too%20many%20potential%20commenters%20will%20be%20turned%20off%20by%20the%0Anecessity%20to%20use%20a%20GitHub%20account%20to%20comment.%0A%0AConclusion%0A%0AIn%20this%20post%20I%20explained%20how%20I%20removed%20Disqus%20from%20my%20blog%20and%20vice%0Aversa%2C%20and%20how%20I%20installed%20Utterances%20instead.%20What%20I%20did%20not%20do%20was%0Aanalyzing%20the%20Disqus%20data.%20I%20moreover%20did%20not%20try%20to%20transfer%20old%0Acomments%20to%20the%20new%20system%2C%20partly%20because%20that%E2%80%99d%20mean%20removing%0Acommenters%E2%80%99%20ownership%20on%20what%20they%20had%20written.%0A%0AIn%20his%20tweet%20that%20motivated%20me%20to%20say%20goodbye%20to%0ADisqus%2C%20Bob%0Awrote%20%E2%80%9CYet%20another%20service%20where%20you%20and%20your%20site%20visitors%20are%20the%0Aproduct.%20Plus%20it%20acts%20like%20malicious%20javascript.%E2%80%9D.%20I%20therefore%20feel%20a%0Abit%20better%20about%20this%20website%21%20Now%2C%20I%20didn%E2%80%99t%20have%20a%20ton%20of%20comments%2C%20and%0AI%20don%E2%80%99t%20have%20a%20real%20need%20for%20moderating%20comments%2C%20so%20maybe%20you%E2%80%99ll%20make%20a%0Adifferent%20decision%20for%20your%20website.%20I%E2%80%99d%20be%20glad%20to%20hear%20about%20it%E2%80%A6%20in%0Athe%20comments%20section%20below%21%20Also%20feel%20free%20to%20tell%20me%20if%20you%20explore%0Ayour%20own%20Disqus%20data%20in%20a%20more%20thorough%20way%20than%20I%21%0A&tf=1" target="_blank"
				   data-action="open-popup"
				   class="wpusb-layout-buttons wpusb-button wpusb-btn "
				   title="Send by Gmail"
				   
				   
				   rel="nofollow"
				>
				   			<svg class="wpusb-svg wpusb-gmail-buttons ">
				<use xlink:href="#wpusb-gmail" />
			</svg>
				</a>
			</div>				</div>
				<span class="wpusb-toggle" data-action="close-buttons">
								<svg class="wpusb-svg wpusb-angle-double-left ">
				<use xlink:href="#wpusb-angle-double-left" />
			</svg>
								<svg class="wpusb-svg wpusb-angle-double-right ">
				<use xlink:href="#wpusb-angle-double-right" />
			</svg>
				</span>
			</div>    <script>
        var snp_f = [];
        var snp_hostname = new RegExp(location.host);
        var snp_http = new RegExp("^(http|https)://", "i");
        var snp_cookie_prefix = '';
        var snp_separate_cookies = false;
        var snp_ajax_url = 'https://www.r-bloggers.com/wp-admin/admin-ajax.php';
		var snp_ajax_nonce = '3104883d75';
        var snp_ignore_cookies = false;
        var snp_enable_analytics_events = false;
        var snp_enable_mobile = false;
        var snp_use_in_all = false;
        var snp_excluded_urls = [];
        snp_excluded_urls.push('');    </script>
    <div class="snp-root">
        <input type="hidden" id="snp_popup" value="" />
        <input type="hidden" id="snp_popup_id" value="" />
        <input type="hidden" id="snp_popup_theme" value="" />
        <input type="hidden" id="snp_exithref" value="" />
        <input type="hidden" id="snp_exittarget" value="" />
        	<div id="snppopup-welcome" class="snp-pop-109583 snppopup"><input type="hidden" class="snp_open" value="scroll" /><input type="hidden" class="snp_show_on_exit" value="2" /><input type="hidden" class="snp_exit_js_alert_text" value="" /><input type="hidden" class="snp_exit_scroll_down" value="" /><input type="hidden" class="snp_exit_scroll_up" value="" /><input type="hidden" class="snp_open_scroll" value="50" /><input type="hidden" class="snp_optin_redirect_url" value="" /><input type="hidden" class="snp_show_cb_button" value="yes" /><input type="hidden" class="snp_popup_id" value="109583" /><input type="hidden" class="snp_popup_theme" value="theme6" /><input type="hidden" class="snp_overlay" value="disabled" /><input type="hidden" class="snp_cookie_conversion" value="30" /><input type="hidden" class="snp_cookie_close" value="180" /><div class="snp-fb snp-theme6">
    <div class="snp-subscribe-inner">
	<h1 class="snp-header"><i>Never miss an update! </i>
<br/>
<strong>Subscribe to R-bloggers</strong> to receive <br/>e-mails with the latest R posts.<br/>

<small>(You will not see this message again.)</small></h1>	<div class="snp-form">
	    <form action="https://feedburner.google.com/fb/a/mailverify?uri=RBloggers" method="post" class="snp-subscribeform snp_subscribeform">
				<fieldset>
		    <div class="snp-field">
			<input type="text" name="email" id="snp_email" placeholder="Your E-mail..." class="snp-field snp-field-email" />		
		    </div>
		    <button type="submit" class="snp-submit">Submit</button>
		</fieldset>
	    </form>
	</div>
	<a href="#" class="snp_nothanks snp-close">Click here to close (This popup will not appear again)</a>    </div>
    </div>
<style>.snp-pop-109583 .snp-theme6 { max-width: 700px;}
.snp-pop-109583 .snp-theme6 h1 {font-size: 17px;}
.snp-pop-109583 .snp-theme6 { color: #a0a4a9;}
.snp-pop-109583 .snp-theme6 .snp-field ::-webkit-input-placeholder { color: #a0a4a9;}
.snp-pop-109583 .snp-theme6 .snp-field :-moz-placeholder { color: #a0a4a9;}
.snp-pop-109583 .snp-theme6 .snp-field :-ms-input-placeholder { color: #a0a4a9;}
.snp-pop-109583  .snp-theme6 .snp-field input { border: 1px solid #a0a4a9;}
.snp-pop-109583 .snp-theme6 .snp-field { color: #000000;}
.snp-pop-109583 .snp-theme6 { background: #f2f2f2;}
</style><script>
jQuery(document).ready(function() {
});
</script>
</div>        <script type="text/javascript">
            var CaptchaCallback = function() {
                jQuery('.g-recaptcha').each(function(index, el) {
                    grecaptcha.render(el, {
                        'sitekey' : ''
                    });
                });
            };
        </script>
    </div>
    <script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushAS3.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushBash.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushColdFusion.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushClojure.js?ver=20090602'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCpp.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCSharp.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCss.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDelphi.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDiff.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushErlang.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushFSharp.js?ver=20091003'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGroovy.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJava.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJavaFX.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJScript.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushLatex.js?ver=20090613'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushMatlabKey.js?ver=20091209'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushObjC.js?ver=20091207'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPerl.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPhp.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPlain.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPowerShell.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPython.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushR.js?ver=20100919'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushRuby.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushScala.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSql.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushVb.js?ver=3.0.9b'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushXml.js?ver=3.0.9b'></script>
<script type='text/javascript'>
	(function(){
		var corecss = document.createElement('link');
		var themecss = document.createElement('link');
		var corecssurl = "https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b";
		if ( corecss.setAttribute ) {
				corecss.setAttribute( "rel", "stylesheet" );
				corecss.setAttribute( "type", "text/css" );
				corecss.setAttribute( "href", corecssurl );
		} else {
				corecss.rel = "stylesheet";
				corecss.href = corecssurl;
		}
		document.getElementsByTagName("head")[0].insertBefore( corecss, document.getElementById("syntaxhighlighteranchor") );
		var themecssurl = "https://www.r-bloggers.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeDefault.css?ver=3.0.9b";
		if ( themecss.setAttribute ) {
				themecss.setAttribute( "rel", "stylesheet" );
				themecss.setAttribute( "type", "text/css" );
				themecss.setAttribute( "href", themecssurl );
		} else {
				themecss.rel = "stylesheet";
				themecss.href = themecssurl;
		}
		//document.getElementById("syntaxhighlighteranchor").appendChild(themecss);
		document.getElementsByTagName("head")[0].insertBefore( themecss, document.getElementById("syntaxhighlighteranchor") );
	})();
	SyntaxHighlighter.config.strings.expandSource = '+ expand source';
	SyntaxHighlighter.config.strings.help = '?';
	SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n';
	SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: ';
	SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: ';
	SyntaxHighlighter.defaults['pad-line-numbers'] = false;
	SyntaxHighlighter.defaults['toolbar'] = false;
	SyntaxHighlighter.all();

	// Infinite scroll support
	if ( typeof( jQuery ) !== 'undefined' ) {
		jQuery( function( $ ) {
			$( document.body ).on( 'post-load', function() {
				SyntaxHighlighter.highlight();
			} );
		} );
	}
</script>
<link rel='stylesheet' id='wpusb-style-css'  href='https://www.r-bloggers.com/wp-content/plugins/wpupper-share-buttons/build/style.css?ver=1569067013' type='text/css' media='all' />
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/arscode-ninja-popups/js/jquery.ck.min.js?ver=5.2.1'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/arscode-ninja-popups/js/dialog_trigger.js?ver=5.2.1'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/arscode-ninja-popups/js/ninjapopups.min.js?ver=5.2.1'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/plugins/arscode-ninja-popups/fancybox2/jquery.fancybox.min.js?ver=5.2.1'></script>
<script type='text/javascript' src='https://c0.wp.com/c/5.2.1/wp-includes/js/comment-reply.min.js'></script>
<script type='text/javascript' src='https://www.r-bloggers.com/wp-content/themes/magazine-basic/js/effects.js?ver=5.2.1'></script>
<script type='text/javascript' src='https://c0.wp.com/p/jetpack/7.3.1/_inc/build/photon/photon.min.js'></script>
<script type='text/javascript' src='https://s0.wp.com/wp-content/js/devicepx-jetpack.js?ver=201941'></script>
<script type='text/javascript' src='https://c0.wp.com/p/jetpack/7.3.1/_inc/build/lazy-images/js/lazy-images.min.js'></script>
<script type='text/javascript' src='https://c0.wp.com/c/5.2.1/wp-includes/js/wp-embed.min.js'></script>
	<div id="fb-root"></div>
	<script type="text/javascript" src="https://platform.twitter.com/widgets.js"></script><script type="text/javascript" src="//connect.facebook.net/en_US/all.js#xfbml=1"></script><script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script><script type="text/javascript" src="https://platform.linkedin.com/in.js"></script><script type='text/javascript' src='https://stats.wp.com/e-201941.js' async='async' defer='defer'></script>
<script type='text/javascript'>
	_stq = window._stq || [];
	_stq.push([ 'view', {v:'ext',j:'1:7.3.1',blog:'11524731',post:'187573',tz:'-6',srv:'www.r-bloggers.com'} ]);
	_stq.push([ 'clickTrackerInit', '11524731', '187573' ]);
</script>
	<script type="text/javascript">
        jQuery(document).ready(function ($) {
            //$( document ).ajaxStart(function() {
            //});

			
            for (var i = 0; i < document.forms.length; ++i) {
                var form = document.forms[i];
				if ($(form).attr("method") != "get") { $(form).append('<input type="hidden" name="UoQjSlOB" value="KF3jhQiy" />'); }
if ($(form).attr("method") != "get") { $(form).append('<input type="hidden" name="mxNgaITriklGB" value="Kcx5sezpy0bwD" />'); }
if ($(form).attr("method") != "get") { $(form).append('<input type="hidden" name="yjohSdbNaRC" value="]AwKTNMQXh3" />'); }
if ($(form).attr("method") != "get") { $(form).append('<input type="hidden" name="EzAyFYBvCin" value="gyl_U[]1wxB" />'); }
            }

			
            $(document).on('submit', 'form', function () {
				if ($(this).attr("method") != "get") { $(this).append('<input type="hidden" name="UoQjSlOB" value="KF3jhQiy" />'); }
if ($(this).attr("method") != "get") { $(this).append('<input type="hidden" name="mxNgaITriklGB" value="Kcx5sezpy0bwD" />'); }
if ($(this).attr("method") != "get") { $(this).append('<input type="hidden" name="yjohSdbNaRC" value="]AwKTNMQXh3" />'); }
if ($(this).attr("method") != "get") { $(this).append('<input type="hidden" name="EzAyFYBvCin" value="gyl_U[]1wxB" />'); }
                return true;
            });

			
            jQuery.ajaxSetup({
                beforeSend: function (e, data) {

                    //console.log(Object.getOwnPropertyNames(data).sort());
                    //console.log(data.type);

                    if (data.type !== 'POST') return;

                    if (typeof data.data === 'object' && data.data !== null) {
						data.data.append("UoQjSlOB", "KF3jhQiy");
data.data.append("mxNgaITriklGB", "Kcx5sezpy0bwD");
data.data.append("yjohSdbNaRC", "]AwKTNMQXh3");
data.data.append("EzAyFYBvCin", "gyl_U[]1wxB");
                    }
                    else {
                        data.data =  data.data + '&UoQjSlOB=KF3jhQiy&mxNgaITriklGB=Kcx5sezpy0bwD&yjohSdbNaRC=]AwKTNMQXh3&EzAyFYBvCin=gyl_U[]1wxB';
                    }
                }
            });

        });
	</script>
	<script type="text/javascript" src="https://www.r-bloggers.com/wp-content/themes/magazine-basic/js/effects.js"></script> 
<script type="text/javascript">
/* <![CDATA[ */
jQuery(function(){
	jQuery("ul.sf-menu").supersubs({ 
		minWidth:    12,
		maxWidth:    27,
		extraWidth:  1
	}).superfish({ 
		delay:       100,
		speed:       250 
	});	});
/* ]]> */
</script>



</body>
</html>
<!-- Dynamic page generated in 1.192 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2019-10-13 05:27:14 -->

<!-- Compression = gzip -->