<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Webmaster-Source</title>
	<atom:link href="https://www.webmaster-source.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.webmaster-source.com</link>
	<description>Useful Resources For Webmasters</description>
	<lastBuildDate>Thu, 24 Aug 2017 02:01:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Why Animated GIFs Suck</title>
		<link>https://www.webmaster-source.com/2014/04/28/why-animated-gifs-suck/</link>
		<comments>https://www.webmaster-source.com/2014/04/28/why-animated-gifs-suck/#comments</comments>
		<pubDate>Mon, 28 Apr 2014 23:57:56 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5293</guid>
		<description><![CDATA[Not only does the ever-popular animated GIF have an extremely limited color palette (256 colors), due to its roots in the 1980s, but its primitive compression is a colossal waste of bandwidth. A modern video format produces files a fraction of the size, and with far superior image quality. Take this clip as an example: [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Not only does the ever-popular animated GIF have an extremely limited color palette (256 colors), due to its roots in the 1980s, but its primitive compression is a <em>colossal waste of bandwidth.</em> A modern video format produces files a fraction of the size, and with far superior image quality.</p>
<p>Take this clip as an example:</p>
<h3>WebM (94KB) &amp; H.264 (141KB) Video</h3>
<p><video loop="loop" autoplay="autoplay"><source src="https://mattvh.github.io/gifnuke/gifs/dealwithit.webm" type="video/webm" /><source src="https://mattvh.github.io/gifnuke/gifs/dealwithit.mp4" type="video/mp4" /></video></p>
<h3>Animated GIF (1741KB)</h3>
<p><img src="https://mattvh.github.io/gifnuke/gifs/dealwithit.gif" /></p>
<p>The fancy HTML video loads in a fraction of the time, and plays more smoothly. Note that, in this example, there&#8217;s no quality difference because I converted an existing GIF into a video. (This is the same process <a href="http://gfycat.com/">GfyCat</a> uses.)</p>
<p>This is a pretty big deal in a world with slow connection speeds and puny cellular data caps. Watching about a thousand GIFs the size of this one (which is fairly modest as far as GIF file sizes ago) would easily put you over a 2GB data cap.</p>
<p>If you&#8217;re interested in converting GIFs to a proper image format, I made a fun command-line tool called <a href="https://github.com/mattvh/gifnuke">GIFnuke</a>. You can run it on a file, or a URL, and it will use ffmpeg to produce a tiny WebM file automatically. (No MP4 version yet, you&#8217;ll have to do that manually if you need it.)</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2014/04/28/why-animated-gifs-suck/feed/</wfw:commentRss>
		<slash:comments>145</slash:comments>
<enclosure url="https://mattvh.github.io/gifnuke/gifs/dealwithit.webm" length="96411" type="video/webm" />
<enclosure url="https://mattvh.github.io/gifnuke/gifs/dealwithit.mp4" length="144851" type="video/mp4" />
		</item>
		<item>
		<title>What You Need to Know About the Heartbleed Bug</title>
		<link>https://www.webmaster-source.com/2014/04/14/what-you-need-to-know-about-the-heartbleed-bug/</link>
		<comments>https://www.webmaster-source.com/2014/04/14/what-you-need-to-know-about-the-heartbleed-bug/#comments</comments>
		<pubDate>Mon, 14 Apr 2014 23:07:17 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[servers]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5289</guid>
		<description><![CDATA[If you haven&#8217;t already heard, a major exploit in OpenSSL was discovered recently. The Heartbleed Bug, which is as scary as it sounds, allows an attacker to capture potentially sensitive information from a server&#8217;s memory by exploiting a flaw in the implementation of the heartbeat function of OpenSSL&#8217;s SSL/TLS implementation. How it Works SSL/TLS, the [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-5290" alt="Heartbleed Logo" src="//www.webmaster-source.com/wp-content/uploads/2014/04/heartbleedbug.png" width="165" height="200" />If you haven&#8217;t already heard, a major exploit in OpenSSL was discovered recently. The <a href="http://heartbleed.com/">Heartbleed Bug</a>, which is as scary as it sounds, allows an attacker to capture potentially sensitive information from a server&#8217;s memory by exploiting a flaw in the implementation of the heartbeat function of OpenSSL&#8217;s SSL/TLS implementation.</p>
<h3>How it Works</h3>
<p>SSL/TLS, the encryption protocol commonly used for securing traffic between web browsers and servers, has a feature called a &#8220;heartbeat.&#8221; Every now and then, an exchange like this happens between the client and the server:</p>
<p><strong>Client:</strong> You still there? If so, send back &#8220;ALIVE,&#8221; which is five characters.</p>
<p><strong>Server:</strong> ALIVE</p>
<p>If the heartbeat succeeds, the connection stays open. This keeps happening, over and over, with a different value being passed each time.</p>
<p>Now here&#8217;s what happens if someone exploits the Heartbleed bug:</p>
<p><strong>Client:</strong> You still there? If so, send back &#8220;KITTEN,&#8221; which is 300 characters.</p>
<p><strong>Server</strong>: KITTEN, and here&#8217;s a block of random memory from RAM!</p>
<p>In this manner, an attacker can get a random 64KB chunk of data from memory <em>every time</em> a heartbeat is sent, thanks to a lack of validation of the length parameter. (So an attacker can just repeatedly make attempts.) Eventually, they&#8217;d get lucky and find something interesting. Such as the SSL certificate or users&#8217; passwords and data.</p>
<p>Exploiting this bug is trivial. (There were people posting scripts to test for the vulnerability minutes after it was announced. Just imagine how quickly malicious types got to work implementing exploits for the bug!) It&#8217;s also possible that <em>someone</em> knew about it months or even a couple years ago, and has been exploiting it ever since. <a href="http://www.bloomberg.com/news/2014-04-11/nsa-said-to-have-used-heartbleed-bug-exposing-consumers.html">Bloomberg even suggests</a> that the NSA has known about it for two years, and has been exploiting it rather than disclosing the problem.</p>
<h3>Is it Fixed?</h3>
<p>Yes! Your Linux distro should already have patched builds in their package manager, so it&#8217;s just a simple manner of running a couple of commands to update your <code>openssl</code> and <code>libssl1.0.0</code> packages, then restarting any services that depend on SSL. (Or just do a full reboot if you&#8217;re paranoid.) In the case of Ubuntu, you&#8217;d just do something like this to update the packages:</p>
<pre class="brush: plain; title: ; notranslate">
sudo apt-get update
sudo apt-get dist-upgrade
</pre>
<p>You should now revoke any SSL certificates and issue new ones, in case they were leaked in an exploit of the bug.</p>
<h3>What Should I Do, as a User?</h3>
<p>Change your passwords! For anything important—email, banking, etc.—you should consider picking a new password.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2014/04/14/what-you-need-to-know-about-the-heartbleed-bug/feed/</wfw:commentRss>
		<slash:comments>62</slash:comments>
		</item>
		<item>
		<title>Automating Repetitive Text Editing with Vim Macros</title>
		<link>https://www.webmaster-source.com/2014/02/05/automating-repetitive-text-editing-with-vim-macros/</link>
		<comments>https://www.webmaster-source.com/2014/02/05/automating-repetitive-text-editing-with-vim-macros/#comments</comments>
		<pubDate>Wed, 05 Feb 2014 14:36:05 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Software & Scripts]]></category>
		<category><![CDATA[text editors]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5281</guid>
		<description><![CDATA[Don&#8217;t you just hate it when you have to do some repetitive text editing, such as wrapping several lines of text in &#60;li&#62;...&#60;/li&#62; tags or just about anything involving tables? (Actually, HTML is a veritable goldmine of repetition&#8230;) If you use vim, you can whip up macros on-the-fly to reduce this sort of tedium. The [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Don&#8217;t you just hate it when you have to do some repetitive text editing, such as wrapping several lines of text in <code>&lt;li&gt;...&lt;/li&gt;</code> tags or just about anything involving tables? (Actually, HTML is a veritable goldmine of repetition&#8230;) If you use vim, you can whip up macros on-the-fly to reduce this sort of tedium.</p>
<p>The commands to know are:</p>
<ul>
<li><code>q</code> — Start or stop macro recording. When starting, it should be used with a letter from <code>a</code> to <code>z</code>, which is the register it will record into. (So you can have more than one macro in memory at once.) The command is used singularly to end recording.</li>
<li><code>@</code> — Play back the macro. Use it in the form of <code>@a</code> to play the macro in register a.</li>
<li><code>@@</code> — Play the last-played macro again.</li>
</ul>
<p>Rather than explain it in textual form, I recorded <a href="http://www.youtube.com/watch?v=lXrymNTLKdo">a short screencast</a> that illustrates the basics of using macros in vim.</p>
<p><iframe width="500" height="375" src="http://www.youtube.com/embed/lXrymNTLKdo?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2014/02/05/automating-repetitive-text-editing-with-vim-macros/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>Ghost 0.4 Drops, Plugin API Slated for 0.5 Release</title>
		<link>https://www.webmaster-source.com/2014/01/29/ghost-0-4-drops-plugin-api-slated-for-0-5-release/</link>
		<comments>https://www.webmaster-source.com/2014/01/29/ghost-0-4-drops-plugin-api-slated-for-0-5-release/#comments</comments>
		<pubDate>Wed, 29 Jan 2014 11:42:18 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Software & Scripts]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Ghost]]></category>
		<category><![CDATA[Node.js]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5277</guid>
		<description><![CDATA[Version 0.4 of Ghost, the lightweight Node.js blogging platform, went live this month. Some of the more interesting features include support for static pages, a new way to quickly edit posts by appending /edit to the URL, support for date-based permalinks (e.g. /2014/01/25/example-post instead of /example-post), support for uploading SVG images, and the ability to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-5201" alt="Ghost Logo" src="//www.webmaster-source.com/wp-content/uploads/2013/10/ghost-logo.png" width="196" height="135" /><a href="https://github.com/TryGhost/Ghost/wiki/Release-Notes:-0.4.0">Version 0.4</a> of <a href="http://ghost.org">Ghost</a>, the lightweight Node.js blogging platform, went live this month. Some of the more interesting features include support for static pages, a new way to quickly edit posts by appending <code>/edit</code> to the URL, support for date-based permalinks (e.g. <code>/2014/01/25/example-post</code> instead of <code>/example-post</code>), support for uploading SVG images, and the ability to put Ghost in a subdirectory.</p>
<p>With this update out of the way, we&#8217;re one closer to seeing the plugin API. That&#8217;s currently scheduled for version 0.5 (to be released <a href="https://github.com/TryGhost/Ghost/wiki/Roadmap">sometime this spring</a>).</p>
<p>The ability to extend Ghost is, in my opinion, what will make it a truly excellent platform. I really like the editor—which is reason enough to start using Ghost—but I can&#8217;t switch any of my sites over (not even my personal blog) until it&#8217;s possible for me to add in some features Ghost is missing. I do a bit of linkblogging on my personal blog (<a href="http://daringfireball.net/">Daring Fireball</a> style, with headlines that link to external sites), and Ghost doesn&#8217;t offer the ability to do that out of the box. I also have a couple posts on the blog that feature image galleries, originally with WordPress and later through <a href="https://github.com/redwallhp/JekyllGalleryTag">my Jekyll plugin</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2014/01/29/ghost-0-4-drops-plugin-api-slated-for-0-5-release/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>BlogBuzz January 25, 2014</title>
		<link>https://www.webmaster-source.com/2014/01/25/blogbuzz-january-25-2014/</link>
		<comments>https://www.webmaster-source.com/2014/01/25/blogbuzz-january-25-2014/#comments</comments>
		<pubDate>Sat, 25 Jan 2014 15:13:10 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[BlogBuzz]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5279</guid>
		<description><![CDATA[Which CSS Measurements To Use When Google BBS Terminal Vim: Revisited Why I Use VIM as My Editor of Choice for Front End Development Grunt for People Who Think Things Like Grunt are Weird and Hard Gmail blows up e-mail marketing by caching all images on Google servers VICE VERSA &#8211; diagonal UI optimized for [&#8230;]]]></description>
				<content:encoded><![CDATA[<ul>
<li><a href="http://demosthenes.info/blog/775/Which-CSS-Measurements-To-Use-When">Which CSS Measurements To Use When</a></li>
<li><a href="http://www.masswerk.at/googleBBS/">Google BBS Terminal</a></li>
<li><a href="http://mislav.uniqpath.com/2011/12/vim-revisited/">Vim: Revisited</a></li>
<li><a href="http://jameslaicreative.com/why-i-use-vim-as-my-editor-of-choice-for-front-end-development/">Why I Use VIM as My Editor of Choice for Front End Development</a></li>
<li><a href="http://24ways.org/2013/grunt-is-not-weird-and-hard/">Grunt for People Who Think Things Like Grunt are Weird and Hard</a></li>
<li><a href="http://arstechnica.com/information-technology/2013/12/gmail-blows-up-e-mail-marketing-by-caching-all-images-on-google-servers/">Gmail blows up e-mail marketing by caching all images on Google servers</a></li>
<li><a href="https://www.behance.net/gallery/VICE-VERSA-diagonal-UI-optimized-for-a-single-hand-IX/12419409">VICE VERSA &#8211; diagonal UI optimized for single hand IX</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2014/01/25/blogbuzz-january-25-2014/feed/</wfw:commentRss>
		<slash:comments>69</slash:comments>
		</item>
		<item>
		<title>Node.js the Right Way</title>
		<link>https://www.webmaster-source.com/2014/01/08/node-js-the-right-way/</link>
		<comments>https://www.webmaster-source.com/2014/01/08/node-js-the-right-way/#comments</comments>
		<pubDate>Wed, 08 Jan 2014 11:29:12 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Node.js]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5271</guid>
		<description><![CDATA[Looking to quickly get started with Node.js without learning bad habits? Node.js the Right Way is a short and concise—100 pages—book that you can easily read in an afternoon (maybe two if you&#8217;re following along with the examples), promising a focused, tutorial-based experience. The book makes the assumption that you&#8217;re already somewhat familiar with programming [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  class="alignright size-full wp-image-5272" alt="Node.js The Right Way" src="//www.webmaster-source.com/wp-content/uploads/2014/01/nodejs-right-way.png" width="160" height="197" />Looking to quickly get started with Node.js without learning bad habits? <em>Node.js the Right Way</em> is a short and concise—100 pages—book that you can easily read in an afternoon (maybe two if you&#8217;re following along with the examples), promising a focused, tutorial-based experience.</p>
<p>The book makes the assumption that you&#8217;re already somewhat familiar with programming and the JavaScript language in particular. Instead of wasting time with absolute basics, it dives right in to Node. The first two chapters explain what exactly Node is, and how the the event loop works. It covers the differences between synchronous and asynchronous tasks, illustrating the reason you want to avoid blocking I/O. The next two chapters deal with sockets, serializing data and message queues. Other sections deal with databases (using CouchDB as an example), unit tests, building and consuming RESTful APIs and single-page web apps.</p>
<p>If you work your way through the examples in the book, you&#8217;ll end up building a reasonably complex web app and batch-importing a bunch of data from Project Gutenberg.</p>
<p><em>Node.js the Right Way</em> is the best introduction to Node that I&#8217;ve seen so far. It&#8217;s concise enough it won&#8217;t take up a lot of your time, covers things more thorougly than a 500-word blog post or hour-long screencast, and there&#8217;s no magic &#8220;just copy and paste this, I&#8217;m not going to bother explaining it.&#8221; You should come out of it knowing where to go to keep learning. It&#8217;s easy enough to think &#8220;I used <a href="expressjs.com">Express</a> for this, and <a href="http://gruntjs.com/">Grunt</a> for that. Maybe I should search for more information about those tools.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2014/01/08/node-js-the-right-way/feed/</wfw:commentRss>
		<slash:comments>158</slash:comments>
		</item>
		<item>
		<title>Vim Tip: Sort Lines Alphabetically</title>
		<link>https://www.webmaster-source.com/2014/01/01/vim-tip-sort-lines-alphabetically/</link>
		<comments>https://www.webmaster-source.com/2014/01/01/vim-tip-sort-lines-alphabetically/#comments</comments>
		<pubDate>Wed, 01 Jan 2014 11:01:33 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Software & Scripts]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5268</guid>
		<description><![CDATA[Have a list that you need to alphabetize quickly? Vim has you covered. There&#8217;s a handy :sort command (:help sort for optional arguments) that will do just what it says on the box. All you have to do is select the lines in visual mode (v), and run :sort. What sort of arguments does it [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Have a list that you need to alphabetize quickly? Vim has you covered. There&#8217;s a handy <code>:sort</code> command (<code>:help sort</code> for optional arguments) that will do just what it says on the box. All you have to do is select the lines in visual mode (<code>v</code>), and run <code>:sort</code>.</p>
<p style="text-align: center;"><img style=' display: block; margin-right: auto; margin-left: auto;'  class="aligncenter size-medium wp-image-5269 imgborder" alt="vim :sort" src="//www.webmaster-source.com/wp-content/uploads/2013/12/vim-sort-600x83.png" width="600" height="83" /></p>
<p>What sort of arguments does it support? The most common are probably <code>!</code> and <code>i</code>, which reverse the sort order and ignore case, respectively. It supports some more advanced pattern-matching stuff, but I haven&#8217;t had cause to experiment with it yet.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2014/01/01/vim-tip-sort-lines-alphabetically/feed/</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
		<item>
		<title>Illustrating Keyboard Shortcuts with the &lt;kbd&gt; Tag and a Bit of CSS</title>
		<link>https://www.webmaster-source.com/2013/12/27/illustrating-keyboard-shortcuts-kbd-tag/</link>
		<comments>https://www.webmaster-source.com/2013/12/27/illustrating-keyboard-shortcuts-kbd-tag/#comments</comments>
		<pubDate>Fri, 27 Dec 2013 13:16:27 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[(x)html]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5259</guid>
		<description><![CDATA[The HTML spec has long had a (much underutilized) tag called kbd, which is intended to be used for marking up user input. For example, you could write something like this: The browser (by default) renders the kbd tags in a monotype font, just like code and pre. But if you&#8217;re already going to mark [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>The HTML spec has long had a (much underutilized) tag called <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/kbd">kbd</a>, which is intended to be used for marking up user input. For example, you could write something like this:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;p&gt;The most famous keyboard shortcut is probably &lt;kbd&gt;ctrl&lt;/kbd&gt;+&lt;kbd&gt;alt&lt;/kbd&gt;+&lt;kbd&gt;del&lt;/kbd&gt;.&lt;/p&gt;
</pre>
<p>The browser (by default) renders the <code>kbd</code> tags in a monotype font, just like <code>code</code> and <code>pre</code>. But if you&#8217;re already going to mark up keys like that for semantic reasons, why not apply a little styling and make it fancy? (I&#8217;ve seen a few sites do this, Stack Overflow being one of them.)</p>
<p><img style=' display: block; margin-right: auto; margin-left: auto;'  src="//www.webmaster-source.com/wp-content/uploads/2013/12/kbd-tag.png" alt=" Tag" width="491" height="44" class="aligncenter size-full wp-image-5260" /></p>
<pre class="brush: css; title: ; notranslate">
kbd {
	display: inline-block;
	border: 1px solid #ccc;
	border-radius: 3px;
	padding: 0.1em 0.5em;
	margin: 0 0.2em;
	box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2), 0 0 0 2px #ffffff inset;
	background-color: #f7f7f7;
}

</pre>
<p>While the tag isn&#8217;t solely meant for this use case—it can also be used for any user input, such as something you intend the reader to search on Google—I think it&#8217;s a great use. The <code>code</code> element tends to be used for the latter case more often, whether it&#8217;s considered appropriate or not, so styling it like so shouldn&#8217;t get in the way in most cases.</p>
<p>If you have need to display keyboard shortcuts periodically, it&#8217;s definitely a nice touch.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2013/12/27/illustrating-keyboard-shortcuts-kbd-tag/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Visualizing Directory Structures with the Tree Command</title>
		<link>https://www.webmaster-source.com/2013/12/18/visualizing-directory-structures-with-the-tree-command/</link>
		<comments>https://www.webmaster-source.com/2013/12/18/visualizing-directory-structures-with-the-tree-command/#comments</comments>
		<pubDate>Wed, 18 Dec 2013 11:41:04 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Software & Scripts]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[command-line]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5254</guid>
		<description><![CDATA[Sometimes good old ls just doesn&#8217;t cut it when you&#8217;re browsing directories from the command line. Sometimes you just need a more visual overview of the nested files and directories. Well, it turns out there&#8217;s a useful command for those cases, and it&#8217;s available for Linux, OS X, FreeBSD and just about any OS you [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Sometimes good old <code>ls</code> just doesn&#8217;t cut it when you&#8217;re browsing directories from the command line. Sometimes you just need a more visual overview of the nested files and directories. Well, it turns out there&#8217;s a useful command for those cases, and it&#8217;s available for Linux, OS X, FreeBSD and just about any OS you can think of. (Except Windows, of course.) It&#8217;s called <a href="http://mama.indstate.edu/users/ice/tree/"><code>tree</code></a>.</p>
<p>To install it on OS X, with <a href="http://brew.sh/">Homebrew</a>:</p>
<pre class="brush: plain; title: ; notranslate">brew install tree</pre>
<p>On Ubuntu/Debian, or other Linux distros that use Debian packages:</p>
<pre class="brush: plain; title: ; notranslate">apt-get install tree</pre>
<p>To use it, just navigate to a directory and type <code>tree</code>. It has various options (visible with <code>tree --help</code>), so you can limit how many levels down it will go, exclude items that match a pattern, adjust sorting, etc.. You get a spiffy diagram that looks something like this:</p>
<pre class="brush: plain; title: ; notranslate">
.
├── application.rb
├── boot.rb
├── database.yml
├── environment.rb
├── environments
│   ├── development.rb
│   ├── production.rb
│   └── test.rb
├── initializers
│   ├── backtrace_silencers.rb
│   ├── filter_parameter_logging.rb
│   ├── inflections.rb
│   ├── mime_types.rb
│   ├── secret_token.rb
│   ├── session_store.rb
│   └── wrap_parameters.rb
├── locales
│   └── en.yml
└── routes.rb
</pre>
<p>Is that cool or what? This should be quite useful for writing tutorials, since a plain-text directory tree is more accessible than a screenshot of a file manager window.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2013/12/18/visualizing-directory-structures-with-the-tree-command/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>List.js: Table and List Sorting in 5kb of JavaScript</title>
		<link>https://www.webmaster-source.com/2013/12/11/list-js-table-and-list-sorting-in-5kb-of-javascript/</link>
		<comments>https://www.webmaster-source.com/2013/12/11/list-js-table-and-list-sorting-in-5kb-of-javascript/#comments</comments>
		<pubDate>Wed, 11 Dec 2013 13:52:43 +0000</pubDate>
		<dc:creator><![CDATA[Matt]]></dc:creator>
				<category><![CDATA[Software & Scripts]]></category>
		<category><![CDATA[(x)html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.webmaster-source.com/?p=5252</guid>
		<description><![CDATA[List.js is a tiny (five kilobytes!) library that can add dynamic sorting, searching and pagination to HTML lists and tables. It requires no dependencies, and claims to be able to handle lists with &#8220;thousands of items.&#8221; It also includes a templating system that makes it possible to allow the addition and editing of items, a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://listjs.com/">List.js</a> is a tiny (five kilobytes!) library that can add dynamic sorting, searching and pagination to HTML lists and tables. It requires no dependencies, and claims to be able to handle lists with &#8220;thousands of items.&#8221;</p>
<p>It also includes a templating system that makes it possible to allow the addition and editing of items, a pagination plugin, and a plugin that adds <a href="http://listjs.com/examples/fuzzy-search">fuzzy search</a>. (Also, they get bonus points for using characters from <a href="http://en.wikipedia.org/wiki/The_Secret_of_Monkey_Island"><em>The Secret of Monkey Island</em></a> as an example.)</p>
<p>The script looks very promising, though there is one caveat about the file size claim: the minified version is 5kb when served with gzip compression. If, for whatever reason, your server is not configured to do so, then it&#8217;s more to the order of 15kb. Still small, but not quite as amazingly so.</p>
<p><a href="http://listjs.com">List.js</a> [listjs.com]</p>
]]></content:encoded>
			<wfw:commentRss>https://www.webmaster-source.com/2013/12/11/list-js-table-and-list-sorting-in-5kb-of-javascript/feed/</wfw:commentRss>
		<slash:comments>52</slash:comments>
		</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/


Served from: www.webmaster-source.com @ 2026-03-28 20:35:34 by W3 Total Cache
-->