<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/atom.xsl" type="text/xsl"?><feed
	xmlns="http://www.w3.org/2005/Atom"
	xmlns:thr="http://purl.org/syndication/thread/1.0"
	xml:lang="en-US"
	><title>Sacha Chua - tag - random</title>
	<subtitle>Emacs, sketches, and life</subtitle>
	<link rel="self" type="application/atom+xml" href="https://sachachua.com/blog/tag/random/feed/atom/index.xml" />
  <link rel="alternate" type="text/html" href="https://sachachua.com/blog/tag/random" />
  <id>https://sachachua.com/blog/tag/random/feed/atom/index.xml</id>
  <generator uri="https://11ty.dev">11ty</generator>
	<updated>2016-02-21T02:19:00Z</updated>
<entry>
		<title type="html">Listing random npmjs.com packages updated today</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2016/02/listing-random-npmjs-com-packages-updated-today/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2016-02-21T07:20:58Z</updated>
    <published>2016-02-21T02:19:00Z</published>
    <category term="geek" />
		<id>https://sachachua.com/blog/?p=28625</id>
		<content type="html"><![CDATA[<p>I was looking for a way to randomly learn about packages hosted at npmjs.com so that I can come across libraries I might not have thought of searching for. The <a href="https://docs.npmjs.com/misc/registry">registry data</a> is available at <a href="https://registry.npmjs.org/">https://registry.npmjs.org/</a>, and there's a public CouchDB mirror at <a href="https://skimdb.npmjs.com/registry">https://skimdb.npmjs.com/registry</a> . Someday, when I know more about CouchDB, I might be able to query it and do other things.</p>
<p>In the meantime, this <a href="https://github.com/npm/npm-registry-couchapp/issues/242">Github issue</a> pointed me to a view of <a href="https://registry.npmjs.org/-/all/static/today.json">all packages modified today</a>, which is a good-enough proxy for what I'm interested in.</p>
<p>Here's an AngularJS app that displays the list and highlights a random item.</p>
<p><a href="https://sachachua.com/blog/wp-content/uploads/2016/02/Screenshot_2016-02-20_21-09-21.png" rel="attachment wp-att-28626"><img loading="lazy" class="alignnone size-medium wp-image-28626" src="https://sachachua.com/blog/wp-content/uploads/2016/02/Screenshot_2016-02-20_21-09-21-640x235.png" alt="Screenshot_2016-02-20_21-09-21" width="640" height="235" srcset="https://sachachua.com/blog/wp-content/uploads/2016/02/Screenshot_2016-02-20_21-09-21-640x235.png 640w, https://sachachua.com/blog/wp-content/uploads/2016/02/Screenshot_2016-02-20_21-09-21-280x103.png 280w, https://sachachua.com/blog/wp-content/uploads/2016/02/Screenshot_2016-02-20_21-09-21-768x282.png 768w, https://sachachua.com/blog/wp-content/uploads/2016/02/Screenshot_2016-02-20_21-09-21.png 1322w" sizes="(max-width: 640px) 100vw, 640px"></a></p>
<div class="org-src-container">
<pre class="src src-html">&lt;<span class="org-function-name">html</span> <span class="org-variable-name">ng-app</span>=<span class="org-string">"myApp"</span>&gt;
  &lt;<span class="org-function-name">head</span>&gt;
    &lt;<span class="org-function-name">script</span> <span class="org-variable-name">type</span>=<span class="org-string">"text/javascript"</span>
      <span class="org-variable-name">src</span>=<span class="org-string">"https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0/angular.min.js"</span>&gt;&lt;/<span class="org-function-name">script</span>&gt;
    &lt;<span class="org-function-name">script</span>&gt;
     // https://registry.npmjs.org/-/all/static/today.json
     // from https://github.com/npm/npm-registry-couchapp/issues/242
     var app = angular.module('myApp', []);
     app.controller('npmTodayCtrl', function($scope, $http) {
       $scope.randomize = function() {
         $scope.random = $scope.packages[Math.floor(Math.random() * $scope.packages.length)];
       }
       $http.get('https://registry.npmjs.org/-/all/static/today.json').then(function(info) {
         $scope.packages = info.data;
         $scope.randomize();
       });
     });
    &lt;/<span class="org-function-name">script</span>&gt;
  &lt;/<span class="org-function-name">head</span>&gt;
  &lt;<span class="org-function-name">body</span> <span class="org-variable-name">ng-controller</span>=<span class="org-string">"npmTodayCtrl"</span>&gt;
    &lt;<span class="org-function-name">div</span>&gt;&lt;<span class="org-function-name">a</span> <span class="org-variable-name">href</span>=<span class="org-string">""</span> <span class="org-variable-name">ng-click</span>=<span class="org-string">"randomize()"</span>&gt;Random highlight:&lt;/<span class="org-function-name">a</span>&gt;&lt;/<span class="org-function-name">div</span>&gt;
    &lt;<span class="org-function-name">div</span> <span class="org-variable-name">ng-if</span>=<span class="org-string">"random"</span> <span class="org-variable-name">style</span>=<span class="org-string">"margin-top: 1em; font-size: x-large"</span>&gt;
      &lt;<span class="org-function-name">strong</span>&gt;&lt;<span class="org-function-name">a</span> <span class="org-variable-name">ng-href</span>=<span class="org-string">"https://npmjs.com/package/\{\{random.name\}\}"</span>&gt;\{\{random.name\}\}&lt;/<span class="org-function-name">a</span>&gt;&lt;/<span class="org-function-name">strong</span>&gt;
      \{\{random.description\}\}
    &lt;/<span class="org-function-name">div</span>&gt;
    &lt;<span class="org-function-name">hr</span>&gt;
    &lt;<span class="org-function-name">table</span>&gt;
      &lt;<span class="org-function-name">tr</span> <span class="org-variable-name">ng-repeat</span>=<span class="org-string">"package in packages"</span>&gt;
        &lt;<span class="org-function-name">td</span>&gt;&lt;<span class="org-function-name">a</span> <span class="org-variable-name">ng-href</span>=<span class="org-string">"https://npmjs.com/package/\{\{package.name\}\}"</span>&gt;\{\{package.name\}\}&lt;/<span class="org-function-name">a</span>&gt;&lt;/<span class="org-function-name">td</span>&gt;
        &lt;<span class="org-function-name">td</span>&gt;\{\{package.description\}\}&lt;/<span class="org-function-name">td</span>&gt;
      &lt;/<span class="org-function-name">tr</span>&gt;
    &lt;/<span class="org-function-name">table</span>&gt;
  &lt;/<span class="org-function-name">body</span>&gt;
&lt;/<span class="org-function-name">html</span>&gt;
</pre>
</div>
<p>You can <a href="https://sachachua.com/blog/2016/02/listing-random-npmjs-com-packages-updated-today/#comment">view 1 comment</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2016%2F02%2Flisting-random-npmjs-com-packages-updated-today%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry>
</feed>