<?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>Ilya's blog</title>
	<atom:link href="http://ilya-sher.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://ilya-sher.org/blog</link>
	<description>A13F3BBB1F25347775112B56DBC19072</description>
	<lastBuildDate>Mon, 21 Feb 2011 21:43:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Is it so hard to get the UI right, Youtube?</title>
		<link>http://ilya-sher.org/blog/post/youtube-obvious-ui-mistakes/</link>
		<comments>http://ilya-sher.org/blog/post/youtube-obvious-ui-mistakes/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 21:43:39 +0000</pubDate>
		<dc:creator>Ilya Sher</dc:creator>
				<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ilya-sher.org/blog/?p=24</guid>
		<description><![CDATA[Let&#8217;s keep it short. Obvious things Youtube got wrong: Can&#8217;t drag videos into playlist &#8211; WTF? Really? How hard could that be to implement? The home page with subscriptions and etc. The user does only one thing on all sites &#8211; chooses what to click next. (Well, and watches the videos if it&#8217;s Youtube). So [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s keep it short. Obvious things Youtube got wrong:</p>
<ol>
<li>Can&#8217;t drag videos into playlist &#8211; WTF? Really? How hard could that be to implement?</li>
<li>The home page with subscriptions and etc. The user does only one thing on all sites &#8211; chooses what to click next. (Well, and watches the videos if it&#8217;s Youtube). So why the f*ck you are making it so hard? Gray out the videos that were already watched! No one should scan all the page trying to spot new videos! Unjustified cognitive load. Other pages would certainly benefit from this too but the home page is really frustrating.</li>
<li>I wouldn&#8217;t complain if it was only this minor bug but since I&#8217;m posting anyway &#8230; &#8220;Added to queue&#8221; does not go away if you remove the video from the list. It goes away only if you reload the page after you remove the video from the queue</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ilya-sher.org/blog/post/youtube-obvious-ui-mistakes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Find one file of each kind (on Linux)</title>
		<link>http://ilya-sher.org/blog/post/find-one-file-of-each-kind-on-linux/</link>
		<comments>http://ilya-sher.org/blog/post/find-one-file-of-each-kind-on-linux/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 06:48:17 +0000</pubDate>
		<dc:creator>Ilya Sher</dc:creator>
				<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://ilya-sher.org/blog/?p=22</guid>
		<description><![CDATA[Suppose you have large number of files but most of them are identical. For example, the files&#8217; contents are: A A A B B C C C C . You&#8217;d like to find one of each kind and for example compare. mkdir cmp cd cmp/ find .. -name stupid-page.html &#124; xargs md5sum &#124; sort &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>Suppose you have large number of files but most of them are identical. For example, the files&#8217; contents are: A A A B B C C C C .<br />
You&#8217;d like to find one of each kind and for example compare.<br />
<code><br />
mkdir cmp<br />
cd cmp/<br />
find .. -name stupid-page.html | xargs md5sum | sort | awk '{print >$1}'<br />
head -1 -q [0-f]* | awk '{print $2}' | xargs diffuse<br />
</code><br />
Or if you just need the list, replace the last line with<br />
<code><br />
head -1 -q [0-f]* | awk '{print $2}'<br />
</code><br />
Note that you are left with the lists of files. Each list is named after MD5 of the content of the files listed in it.<br />
Like this:</p>
<pre>
> ls -1
09b37d3089b1c1837e4741973df1e67e
4d701e2420bf49c85dd21c9b1dbb10e1
6135d23fcb0113ab9a2f574d7f0bf703
> cat 09b37d3089b1c1837e4741973df1e67e
09b37d3089b1c1837e4741973df1e67e  ../some-folder/stupid-page.html
09b37d3089b1c1837e4741973df1e67e  ../some-other-folder/stupid-page.html
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ilya-sher.org/blog/post/find-one-file-of-each-kind-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google&#8217;s preview rant</title>
		<link>http://ilya-sher.org/blog/post/googles-preview-rant/</link>
		<comments>http://ilya-sher.org/blog/post/googles-preview-rant/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 22:37:10 +0000</pubDate>
		<dc:creator>Ilya Sher</dc:creator>
				<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://ilya-sher.org/blog/?p=21</guid>
		<description><![CDATA[Google have recently implemented site preview on it&#8217;s search results pages. Great feature! Implemented wrong. It feels completely wrong. I mean the behavior. I wonder how much time it will take to fix it.]]></description>
			<content:encoded><![CDATA[<p>Google have recently implemented site preview on it&#8217;s search results pages.</p>
<ul>
<li>Great feature!</li>
<li>Implemented wrong. It feels completely wrong. I mean the behavior.</li>
</ul>
<p>I wonder how much time it will take to fix it.</p>
]]></content:encoded>
			<wfw:commentRss>http://ilya-sher.org/blog/post/googles-preview-rant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache HTTP server configuration rant: Order / Allow / Deny</title>
		<link>http://ilya-sher.org/blog/post/apache-order-allow-deny/</link>
		<comments>http://ilya-sher.org/blog/post/apache-order-allow-deny/#comments</comments>
		<pubDate>Thu, 11 Nov 2010 22:30:37 +0000</pubDate>
		<dc:creator>Ilya Sher</dc:creator>
				<category><![CDATA[System administration]]></category>
		<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://ilya-sher.org/blog/?p=20</guid>
		<description><![CDATA[Seriously? What exactly they have been thinking? No wonder I&#8217;m always confused with all these Order, Allow, Deny. The documentation reads: Note that all Allow and Deny directives are processed, unlike a typical firewall Isn&#8217;t it like reinventing the wheel but making it square? Could anyone explain why would someone complicate such simple thing as [...]]]></description>
			<content:encoded><![CDATA[<p>Seriously?<br />
What exactly they have been thinking?<br />
No wonder I&#8217;m always confused with all these <code>Order</code>, <code>Allow</code>, <code>Deny</code>.<br />
<a href="http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order">The documentation</a> reads: </p>
<blockquote><p>Note that all Allow and Deny directives are processed, unlike a typical firewall</p></blockquote>
<p>Isn&#8217;t it like reinventing the wheel but making it square?<br />
Could anyone explain why would someone complicate such simple thing as access list? Please &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ilya-sher.org/blog/post/apache-order-allow-deny/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do not click here</title>
		<link>http://ilya-sher.org/blog/post/do-not-click-here/</link>
		<comments>http://ilya-sher.org/blog/post/do-not-click-here/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 18:39:44 +0000</pubDate>
		<dc:creator>Ilya Sher</dc:creator>
				<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">https://sshoverpci.com/blog/post/do-not-click-here/</guid>
		<description><![CDATA[Most of the sites use &#34;click here for/to &#8230;&#34; wording. That implies that: The user is too stupid to see it is a link (alternatively the webmaster made it impossible to see it is a link) The user has and uses a mouse The document is not going to be printed (it will look stupid [...]]]></description>
			<content:encoded><![CDATA[<p>Most of the sites use &quot;click here for/to &#8230;&quot; wording. That implies that: </p>
<ul>
<li>The user is too stupid to see it is a link (alternatively the webmaster made it impossible to see it is a link)</li>
<li>The user has and uses a mouse</li>
<li>The document is not going to be printed (it will look stupid then)</li>
<li>The webmaster has no imagination</li>
<li>The webmaster does not care how the site will be indexed by search engines</li>
</ul>
<p>See <a href="http://www.w3.org/TR/WAI-WEBCONTENT/#gl-facilitate-navigation">Web Content Accessibility Guidelines 1.0</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ilya-sher.org/blog/post/do-not-click-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Editing YAML with VI</title>
		<link>http://ilya-sher.org/blog/post/editing-yaml-with-vi/</link>
		<comments>http://ilya-sher.org/blog/post/editing-yaml-with-vi/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 16:30:45 +0000</pubDate>
		<dc:creator>Ilya Sher</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[System administration]]></category>

		<guid isPermaLink="false">https://sshoverpci.com/blog/post/editing-yaml-with-vi/</guid>
		<description><![CDATA[Put the following in your .vimrc file and you are set: au BufNewFile,BufRead *.yaml,*.yml set et ts=2 sw=2 When you will be editing YAML files, you&#8217;ll automatically have the following behaviour: et &#8211; expand tabs &#8211; puts spaces whenever you use tabs ts=2 &#8211; tab stop &#8211; 2 spaces per tab sw=2 &#8211; shift width [...]]]></description>
			<content:encoded><![CDATA[<p>Put the following in your .vimrc file and you are set:<br />
<code><br />
au BufNewFile,BufRead *.yaml,*.yml set et ts=2 sw=2<br />
</code><br />
When you will be editing YAML files, you&#8217;ll automatically have the following behaviour:</p>
<ul>
<li><strong>et</strong> &#8211; expand tabs &#8211; puts spaces whenever you use tabs</li>
<li><strong>ts=2</strong> &#8211; tab stop &#8211; 2 spaces per tab</li>
<li><strong>sw=2</strong> &#8211; shift width &#8211; 2 spaces to move with &lt; and &gt; commands</li>
</ul>
<p><img id="image18" src="http://ilya-sher.org/blog/wp-content/uploads/2009/10/yaml-in-vi.png" alt="YAML in VI" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ilya-sher.org/blog/post/editing-yaml-with-vi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian kernel upgrade to 2.6.30</title>
		<link>http://ilya-sher.org/blog/post/debian-kernel-2-6-30/</link>
		<comments>http://ilya-sher.org/blog/post/debian-kernel-2-6-30/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 10:55:46 +0000</pubDate>
		<dc:creator>Ilya Sher</dc:creator>
				<category><![CDATA[System administration]]></category>

		<guid isPermaLink="false">https://sshoverpci.com/blog/post/debian-kernel-2-6-30/</guid>
		<description><![CDATA[Debian testing just got kenrel 2.6.30. The previous version was 2.6.26. I will summarize here the new features for the upgrade but only the ones I will find interesting. 2.6.30 POHMELFS &#8211; kernel client for the developed distributed parallel internet filesystem DST &#8211; network block device storage LZMA/BZIP2 kernel image compression. The kernel size is [...]]]></description>
			<content:encoded><![CDATA[<p>Debian testing just got kenrel 2.6.30. The previous version was 2.6.26.<br />
I will summarize here the new features for the upgrade but only the ones I will find interesting.</p>
<h3>2.6.30</h3>
<ul>
<li><a href="http://www.ioremap.net/projects/pohmelfs">POHMELFS</a> &#8211; kernel client for the developed distributed parallel internet filesystem</li>
<li><a href="http://www.ioremap.net/projects/dst">DST</a> &#8211; network block device storage</li>
<li>LZMA/BZIP2 kernel image compression. The kernel size is about 10 per cent smaller with bzip2 in comparison to gzip, and about 33 per cent smaller with lzma. </li>
<li>SR-IOV support &#8211; PCI virtualization helper</li>
<li>Networking: Allowing more than 64k connections and heavily optimize bind(0) time.</li>
<li>Virtualization: virtio_net: Allow setting the MAC address of the NIC</li>
<li>Many <a href="http://kernelnewbies.org/Linux_2_6_30#head-30ee93a5d5589d30a19cbd6105dc630d530633fa">Bluetooth improvements</a></li>
</ul>
<h3>2.6.29</h3>
<ul>
<li>WiMAX (Intel Wireless WiMAX/Wi-Fi Link 5&#215;50 USB/SDIO devices)</li>
<li>Filesystem freeze (<a href="http://lwn.net/Articles/287435/">LWN has very technical article about this</a>)</li>
<li>Support for multiple instances of devpts</li>
<li>MD: Allow md devices to be created by name, make devices disappear when they are no longer needed</li>
<li>Xen: add xenfs to allow usermode and Xen interaction</li>
<li>USB: storage: recognizing and enabling Nokia 5200 cell phones</li>
<li>Bluetooth: Add suspend/resume support to btusb driver</li>
</ul>
<h3>2.6.28</h3>
<ul>
<li>Memory management Scalability improvements (<a href="http://lwn.net/Articles/286472/">technical details on LWN</a>)</li>
<li>NFS: authenticated deep mounting</li>
<li>Port redirection support for TCP</li>
<li>gre: Add Transparent Ethernet Bridging</li>
<li>Support discard requests on SSD devices to improve wear-leveling</li>
<li>Add generic ATA/ATAPI disk driver</li>
</ul>
<h3>2.6.27</h3>
<ul>
<li><a href="http://lwn.net/Articles/289137/">Multiqueue networking</a></li>
<li>ftrace, sysprof support &#8211; another tracing mechanism for kernel (not related to SystemTap)</li>
<li>Improved video camera support with the gspca driver. (<a href="http://lwn.net/Articles/291036/">List of devices is at LWN</a>)</li>
<li>Add HTC Shift Touchscreen Driver</li>
<li>Bluetooth: Track status of Simple Pairing mode and remote Simple Pairing mode</li>
<li>HP iLO driver</li>
</ul>
<h3>The sources (full lists of changes):</h3>
<ol>
<li><a href="http://kernelnewbies.org/Linux_2_6_30">http://kernelnewbies.org/Linux_2_6_30</a></li>
<li><a href="http://kernelnewbies.org/Linux_2_6_29">http://kernelnewbies.org/Linux_2_6_29</a></li>
<li><a href="http://kernelnewbies.org/Linux_2_6_28">http://kernelnewbies.org/Linux_2_6_28</a></li>
<li><a href="http://kernelnewbies.org/Linux_2_6_27">http://kernelnewbies.org/Linux_2_6_27</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ilya-sher.org/blog/post/debian-kernel-2-6-30/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>clive GUI</title>
		<link>http://ilya-sher.org/blog/post/clive-gui/</link>
		<comments>http://ilya-sher.org/blog/post/clive-gui/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 01:11:56 +0000</pubDate>
		<dc:creator>Ilya Sher</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">https://sshoverpci.com/blog/post/clive-gui/</guid>
		<description><![CDATA[Hi. Some time ago I started using clive. It was very frustrating without a GUI, which I could not find. Here is my hack, &#8220;clive gui&#8221;, that I thought I was not going to publish. It was only tested on my system. Use at your own risk!]]></description>
			<content:encoded><![CDATA[<p>Hi.</p>
<p>Some time ago I started using <a href="http://code.google.com/p/clive/">clive</a>. It was very frustrating without a GUI, which I could not find. <a href="http://ilya-sher.org/src/dl.py">Here is my hack, &#8220;clive gui&#8221;</a>, that I thought I was not going to publish. It was only tested on my system.</p>
<p>Use at your own risk!</p>
]]></content:encoded>
			<wfw:commentRss>http://ilya-sher.org/blog/post/clive-gui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web programmers should know</title>
		<link>http://ilya-sher.org/blog/post/web-programmers-should-know/</link>
		<comments>http://ilya-sher.org/blog/post/web-programmers-should-know/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 07:42:39 +0000</pubDate>
		<dc:creator>Ilya Sher</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">https://sshoverpci.com/blog/post/web-programmers-should-know/</guid>
		<description><![CDATA[Here is a checklist of knowledge and abilities which I consider a must for a good web programmer. HTML, w3.org standards and validator AJAX SQL: multiple column indexes, transactions The following programming languages exist: PHP, Python, Ruby. Program in at least one of the languages above Program in C at least a bit What is [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a checklist of knowledge and abilities which I consider a must for a <em>good</em> web programmer.</p>
<ul>
<li>HTML, w3.org standards and validator</li>
<li>AJAX</li>
<li>SQL: multiple column indexes, transactions</li>
<li>The following programming languages exist: PHP, Python, Ruby.</li>
<li>Program in at least one of the languages above</li>
<li>Program in C at least a bit</li>
<li>What is <a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine">JVM</a> and <a href="http://en.wikipedia.org/wiki/Bytecode">bytecode</a></li>
<li>What is SQL injection and how to prevent it</li>
<li>How <a href="http://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> works, at least in general &#8211; what server and clients do</li>
<li>How routing works, at least in general. <a href="http://en.wikipedia.org/wiki/Tunneling_protocol">Tunneling</a>. <a href="http://en.wikipedia.org/wiki/Network_address_translation">NAT</a>. <a href="http://en.wikipedia.org/wiki/Border_Gateway_Protocol">BGP</a> is a plus</li>
<li><a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP</a> and <a href="http://en.wikipedia.org/wiki/HTTPS">HTTPS</a></li>
<li><a href="http://en.wikipedia.org/wiki/Load_balancing_(computing)">Load balancing</a> and it&#8217;s session persistence problem and how it&#8217;s usually solved</li>
<li>HTTP <a href="http://en.wikipedia.org/wiki/Proxy_server">proxy</a>, what it solves and how it works</li>
<li>What&#8217;s <a href="http://en.wikipedia.org/wiki/File_Transfer_Protocol">FTP</a></li>
<li>What&#8217;s <a href="http://en.wikipedia.org/wiki/Revision_control">version control</a> and what it solves</li>
<li>How <a href="http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol">SMTP</a> works, at least in general. POP3 and IMAP a plus</li>
<li>What&#8217;s character encoding and why UTF-8 rules</li>
</ul>
<p>If it&#8217;s someone expected to work with Linux the following applies:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Secure_Shell">SSH</a></li>
<li><a href="http://en.wikipedia.org/wiki/Shell_script">Shell scripting</a>: bash, grep, sed, awk, find, netstat &#8230;</li>
<li>File-system permissions</li>
</ul>
<p>I&#8217;ll be adding to the list as soon as I remember anything important enough.<br />
Suggestions for additional points are welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://ilya-sher.org/blog/post/web-programmers-should-know/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What’s wrong with the Internet &#8211; SMTP</title>
		<link>http://ilya-sher.org/blog/post/inet-wrong-smtp/</link>
		<comments>http://ilya-sher.org/blog/post/inet-wrong-smtp/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 00:16:55 +0000</pubDate>
		<dc:creator>Ilya Sher</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[System administration]]></category>

		<guid isPermaLink="false">https://sshoverpci.com/blog/post/inet-wrong-smtp/</guid>
		<description><![CDATA[SMTP is a text based protocol. I already mentioned that text protocols are evil. It was phrased more nicely in previous posts. Well it can no more be phrased nice. This is stupid! In SMTP it means that binary attachments are encoded using base64 which is part of MIME. Any binary attachment (image, presentation, document, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol">SMTP</a> is a text based protocol. I already mentioned that text protocols are evil. It was phrased more nicely in previous posts. Well it can no more be phrased nice. This is stupid! In SMTP it means that binary attachments are encoded using <a href="http://en.wikipedia.org/wiki/Base64">base64</a> which is part of <a href="http://en.wikipedia.org/wiki/MIME">MIME</a>. Any binary attachment (image, presentation, document, &#8230;) you&#8217;ve ever sent takes more space in the email. That means it&#8217;s slower to send, slower to receive, and wastes more space on the server. The space some people still pay for. I have to remind the reader that such encoding requires additional CPU cycles to handle which in turn increases electricity bills&#8217; totals.</p>
<p>And the additional bonus: ever heard &#8220;I have 10M email box but I can&#8217;t get an email with 8M attachment from my friend. What&#8217;s the problem?&#8221;. The correct answer would be the stupidity. Wasted tech support time. They have to explain that 8M attachment can not fit in 10M email box. Try sometime to explain this to someone. Have fun. Extra bonus: Someone pays for this tech support wasted time. Exercise for the reader: figure out who&#8217;s paying.</p>
]]></content:encoded>
			<wfw:commentRss>http://ilya-sher.org/blog/post/inet-wrong-smtp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

