<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tools on vnykmshr</title><link>https://blog.vnykmshr.com/writing/tags/tools/</link><description>Recent content in Tools on vnykmshr</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 07 Jun 2014 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.vnykmshr.com/writing/tags/tools/index.xml" rel="self" type="application/rss+xml"/><item><title>Git history with Gource</title><link>https://blog.vnykmshr.com/writing/git-history-with-gource/</link><pubDate>Sat, 07 Jun 2014 00:00:00 +0000</pubDate><guid>https://blog.vnykmshr.com/writing/git-history-with-gource/</guid><description>&lt;p&gt;I&amp;rsquo;d been watching YouTube videos of &lt;a href="https://code.google.com/p/gource/"&gt;Gource&lt;/a&gt; visualizations &amp;ndash; &lt;a href="https://www.youtube.com/watch?v=GTMC3g2Xy8c"&gt;Git&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=ZX0xCWANfW4"&gt;Homebrew&lt;/a&gt;, &lt;a href="https://www.youtube.com/watch?v=vsMUTsFdzr4"&gt;Node.js&lt;/a&gt;. Each commit becomes a moment in time, files branch out like a digital organism, contributors appear and disappear. Months of development condensed into a few minutes of organic growth.&lt;/p&gt;
&lt;p&gt;I pointed it at my blog&amp;rsquo;s git repository. Here&amp;rsquo;s &lt;a href="https://www.youtube.com/watch?v=jubNs7aXEvQ"&gt;what came out&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="setup"&gt;Setup&lt;/h2&gt;
&lt;p&gt;On macOS, Homebrew handles everything:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install gource ffmpeg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The command that generates a video from a git repo:&lt;/p&gt;</description></item><item><title>Zero-downtime deploys</title><link>https://blog.vnykmshr.com/writing/zero-downtime-deploys/</link><pubDate>Mon, 15 Jul 2013 00:00:00 +0000</pubDate><guid>https://blog.vnykmshr.com/writing/zero-downtime-deploys/</guid><description>&lt;p&gt;I deploy everything from the terminal. No web interface, no CI service, no dashboard with green buttons. Just &lt;code&gt;deploy production&lt;/code&gt; from my laptop, and the code goes live.&lt;/p&gt;
&lt;p&gt;The setup is two pieces. A bash script that handles the remote work &amp;ndash; SSH in, pull the latest code, run hooks. And a Node.js process that watches a file on the server and reloads the app cluster when the file changes. Between them, they do zero-downtime deploys in under ten seconds.&lt;/p&gt;</description></item><item><title>Starting over</title><link>https://blog.vnykmshr.com/writing/starting-over/</link><pubDate>Tue, 05 Feb 2013 00:00:00 +0000</pubDate><guid>https://blog.vnykmshr.com/writing/starting-over/</guid><description>&lt;p&gt;Every now and then you want to start over. This blog was long overdue for it. Feels good to tear it down and rebuild.&lt;/p&gt;
&lt;p&gt;The old setup was WordPress on &lt;a href="http://nearlyfreespeech.net/"&gt;NearlyFreeSpeech.net&lt;/a&gt;. NFSN deserves credit &amp;ndash; their pay-as-you-go model is honest and the value is real. But WordPress started feeling like a constraint. I spend my days building custom solutions. Using a one-size-fits-all CMS for my own site felt wrong.&lt;/p&gt;
&lt;p&gt;So I built a blog engine.&lt;/p&gt;</description></item></channel></rss>