<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>themacteppieces</title>
    <link>http://paulphilippov.com/articles</link>
    <description>Web log of Paul 'themactep' Philippov</description>
    <pubDate>Tue, 01 Jan 2013 12:48:21 GMT</pubDate>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/paulphilippov" /><feedburner:info uri="paulphilippov" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>54.7354</geo:lat><geo:long>20.5099</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
      <title>How to install SSL certificate in Apache</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/Afa_l7b_HL0/how-to-install-ssl-certificate-in-apache</link>
      <description>&lt;p&gt;Generate a secure key for the domain:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ openssl genrsa -out domain.key 1024
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Generate a self-signed certificate:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ openssl req -new -x509 -days 365 -key domain.key -out domain.crt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Generate a signed request if you want to have a valid certificate:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ openssl req -new -key domain.key -out domain.csr
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Submit the request to SSL certificate provider. Get signed certificate and save it to &lt;code&gt;domain.crt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Next, set up Apache to utilize the certificate.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;VirtualHost domain:443&amp;gt;
  ServerName             domain:443
  DocumentRoot           /srv/www/domain/public
  ErrorLog               /srv/www/domain/log/ssl_error.log
  CustomLog              /srv/www/domain/log/ssl_access.log combined
  SSLCertificateFile     /srv/www/domain/ssl/domain.crt
  SSLCertificateKeyFile  /srv/www/domain/ssl/domain.key
  SSLEngine              on
  SSLCipherSuite         ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=Afa_l7b_HL0:k6CsoJHJxyI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=Afa_l7b_HL0:k6CsoJHJxyI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=Afa_l7b_HL0:k6CsoJHJxyI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/Afa_l7b_HL0" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-install-ssl-certificate-in-apache</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Tue, 01 Jan 2013 22:59:53 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-install-ssl-certificate-in-apache</feedburner:origLink></item>
    <item>
      <title>How to resolve Gmail server through Google Public DNS</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/3vBIYTpkOA4/how-to-resolve-gmail-server-through-google-public-dns</link>
      <description>&lt;p&gt;If your exim suddenly stopped sending mail out through Google Mail smarthost, and you see these errors in mail.log&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;2012-04-27 17:33:00 1SNslw-0000aW-LK == *******@yahoo.com R=smarthost defer (-36): host lookup for smtp.gmail.com did not complete (DNS timeout?)
2012-04-27 17:33:04 1SNsm0-0000ah-N9 == *******@yandex.ru R=smarthost defer (-36): host lookup for smtp.gmail.com did not complete (DNS timeout?)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;add Google Public DNS servers into &lt;code&gt;/etc/resolv.conf&lt;/code&gt; before any already existing there&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;nameserver 8.8.8.8      # Google Public DNS, add this line
nameserver 8.8.4.4      # Google Public DNS, add this line
nameserver 12.34.56.78  # Hosting DNS
nameserver 12.34.56.79  # Hosting DNS
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;restart mail agent and force another queue run to deliver messages from queue&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo service exim4 restart
$ sudo exim -qff
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=3vBIYTpkOA4:pVF8aq-sNys:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=3vBIYTpkOA4:pVF8aq-sNys:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=3vBIYTpkOA4:pVF8aq-sNys:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/3vBIYTpkOA4" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-resolve-gmail-server-through-google-public-dns</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Fri, 27 Apr 2012 22:16:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-resolve-gmail-server-through-google-public-dns</feedburner:origLink></item>
    <item>
      <title>How to fix slow boot with ATA errors</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/i582ohGVVkA/how-to-fix-slow-boot-with-ata-errors</link>
      <description>&lt;p&gt;If you happen to own a weird TSSTcorp CDDVDW SH-S223C DVDRW device then your Linux probably takes a long time to boot, and if you boot without a splash screen you see a couple of errors like if your drive is faulty (which is not true since it’s a disc drive, not a hard drive):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
ata4.00: failed command: IDENTIFY PACKET DEVICE
ata4.00: cmd a1/00:01:00:00:00/00:00:00:00:00/00 tag 0 pio 512 in
ata4.00: status: { DRDY }
ata4: hard resetting link
ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata4.00: configured for PIO4
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On the Internet I read a suggestion to mess with udev rules in order to fix the issue. I found that you need to comment-out the following rule:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# ATA/ATAPI devices (SPC-3 or later) using the "scsi" subsystem
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{type}=="5", ATTRS{scsi_level}=="[6-9]*", IMPORT{program}="ata_id --export $tempnode"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Here’s the code to make it quick and painless:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo sed -i '/ATAPI/,+1s/^/#/' /lib/udev/rules.d/60-persistent-storage.rules
$ sudo update-initramfs -u
$ sudo reboot now
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=i582ohGVVkA:9oNsrUzC_Ig:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=i582ohGVVkA:9oNsrUzC_Ig:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=i582ohGVVkA:9oNsrUzC_Ig:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/i582ohGVVkA" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-fix-slow-boot-with-ata-errors</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Fri, 29 Jul 2011 05:55:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-fix-slow-boot-with-ata-errors</feedburner:origLink></item>
    <item>
      <title>How to fix uninitialized constant Rake::DSL error</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/n6lu_q5ui_c/how-to-fix-uninitialized-constant-rake-dsl-error</link>
      <description>&lt;p&gt;in Rakefile, add the following line:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;require 'rake/dsl_definition'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;right before&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;require 'rake'
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=n6lu_q5ui_c:0mDPXc6JttM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=n6lu_q5ui_c:0mDPXc6JttM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=n6lu_q5ui_c:0mDPXc6JttM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/n6lu_q5ui_c" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-fix-uninitialized-constant-rake-dsl-error</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Mon, 11 Jul 2011 13:22:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-fix-uninitialized-constant-rake-dsl-error</feedburner:origLink></item>
    <item>
      <title>How to fix mpdcron not sending information to last.fm</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/1iCs3QjyYiU/how-to-fix-mpdcron-not-sending-information-to-last-fm</link>
      <description>&lt;p&gt;After another system upgrade I realized that mpdcron daemon does not send out information to my scrobblers anymore. Running mpdcron from console with &lt;code&gt;-n&lt;/code&gt; option gave me the reason why:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Failed to execute hook player: Failed to execute child process "hooks/player" (No such file or directory)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Having no time nor desire to mess with debugging the code I just copied hook files to my home directory and made them executable:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cp -r /usr/share/doc/mpdcron/conf/hooks ~/.mpdcron/
$ chmod +x ~/.mpdcron/hooks/*
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That made it!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=1iCs3QjyYiU:U07MkvHmNTI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=1iCs3QjyYiU:U07MkvHmNTI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=1iCs3QjyYiU:U07MkvHmNTI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/1iCs3QjyYiU" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-fix-mpdcron-not-sending-information-to-last-fm</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Mon, 16 May 2011 18:44:02 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-fix-mpdcron-not-sending-information-to-last-fm</feedburner:origLink></item>
    <item>
      <title>How to solve the Dropbox filesystem monitoring issue</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/PPNfnr7a7IM/how-to-solve-the-dropbox-filesystem-monitoring-issue</link>
      <description>&lt;p&gt;Once Dropbox throws you an error that reads “Unable to monitor filesystem. Please run: &lt;code&gt;echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches&lt;/code&gt; and restart Dropbox to correct the problem.” you’d better adjust settings in a system config file, to keep changes after reboot.&lt;/p&gt;

&lt;p&gt;Open system config (as superuser, of course) in your favorite text editor&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo vi /etc/sysctl.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;add just one line of code to the end of the file:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;fs.inotify.max_user_watches = 1048576
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;save the file (Shift-ZZ, if you are new to Vi), and reboot computer to apply settings and restart Dropbox.&lt;/p&gt;

&lt;p&gt;If you, by any chance, spent the last couple of years living under a rock thus still don’t use Dropbox, &lt;a href="http://db.tt/faUUp5U"&gt;create an account immidiately&lt;/a&gt;. You will get a regular 2GB free online storage, plus 250MB extra free space if you register via my referral link.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=PPNfnr7a7IM:qusLPqcf8hM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=PPNfnr7a7IM:qusLPqcf8hM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=PPNfnr7a7IM:qusLPqcf8hM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/PPNfnr7a7IM" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-solve-the-dropbox-filesystem-monitoring-issue</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Fri, 04 Feb 2011 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-solve-the-dropbox-filesystem-monitoring-issue</feedburner:origLink></item>
    <item>
      <title>How to fix "device not accepting address" error</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/l9xkwwx2QJE/how-to-fix-device-not-accepting-address-error</link>
      <description>&lt;p&gt;If Linux suddenly happen to fail to recognize a USB drive, check &lt;code&gt;dmesg&lt;/code&gt; for errors. Once you see a bunch of errors like&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;usb 1-5: device descriptor read/64, error -32  
usb 1-5: new high speed USB device using ehci_hcd and address 21  
usb 1-5: device not accepting address 21, error -32
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;most probably it’s a result of hardware failure rather than a driver or kernel bug. USB has an over-current protection, which gets triggered when power consumption from the port is too high.&lt;/p&gt;

&lt;p&gt;Unplug all USB devices from PC, turn power off, and wait a minute or two. Plug everything back and boot into Linux.&lt;/p&gt;

&lt;p&gt;I spent the whole morning, until found out why. I hope that this message will save someone a few hours, and nerves.&lt;/p&gt;

&lt;p&gt;PS: Actual errors may vary. You may see different port and/or error code. Ex.:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;usb 3-1: device descriptor read/64, error -62
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;usb 4-2: device descriptor read/64, error -71
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;usb 2-3: device descriptor read/64, error -101
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;but the root of the problem is the same.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=l9xkwwx2QJE:z87urgV2LA8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=l9xkwwx2QJE:z87urgV2LA8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=l9xkwwx2QJE:z87urgV2LA8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/l9xkwwx2QJE" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-fix-device-not-accepting-address-error</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Thu, 21 Oct 2010 04:45:04 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-fix-device-not-accepting-address-error</feedburner:origLink></item>
    <item>
      <title>How to upcase multibyte data in Rails</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/F7Wt9TyXvFc/how-to-upcase-multibyte-data-in-rails</link>
      <description>&lt;p&gt;In one of my projects I needed that all data sent to a model were converted in upper case prior they validated and then saved, once valid. I’ve chosen to keep them in upper case for better readability. There was no problem with converting ASCII data. Everything worked like a charm. Problem started when I tried to save data in Cyrillic. &lt;code&gt;upcase!&lt;/code&gt; just refused to modify non-ASCII characters. &lt;/p&gt;

&lt;p&gt;Here’s how I made it to work, finally.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;class Address &amp;lt; ActiveRecord::Base
  before_validation :uppercase_data

  def uppercase_data
    %w{street city state country}.each do |x|
      self.send("#{x}=", self.send(x).mb_chars.upcase.to_s)
    end
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Maybe someone will suggest a more elegant solution?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=F7Wt9TyXvFc:WK46NvRqCqY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=F7Wt9TyXvFc:WK46NvRqCqY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=F7Wt9TyXvFc:WK46NvRqCqY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/F7Wt9TyXvFc" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-upcase-multibyte-data-in-rails</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Wed, 21 Jul 2010 11:31:49 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-upcase-multibyte-data-in-rails</feedburner:origLink></item>
    <item>
      <title>Enumerable.each vs 'for' loops in Ruby</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/wPdJZLs8od4/enumerable-each-vs-for-loops-in-ruby</link>
      <description>&lt;p&gt;A few days ago I checked the code using the Ruby project &lt;a href="http://github.com/martinjandrews/roodi"&gt;roodi&lt;/a&gt;, and I received a warning saying &lt;em&gt;“Don’t use ‘for’ loops. Use Enumerable.each instead.”&lt;/em&gt; I personally do not see any difference between these two versions of cycles, and attributed the problem of choice to issues of personal faith. I asked people in the &lt;a href="http://identi.ca/conversation/23793302#notice-23707276"&gt;!ruby&lt;/a&gt; group of identi.ca, but the answers were not convincing. Google also did not shed light on this question.&lt;/p&gt;

&lt;p&gt;I changed the code to use Enumerable.each, just in case, and put the problem aside. But today, I found a sample code, that clearly demonstrates the difference:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;loop1 = []
loop2 = []

calls = ["one", "two", "three"]

calls.each do |c|
  loop1 &amp;lt;&amp;lt; Proc.new { puts c }
end

for c in calls
  loop2 &amp;lt;&amp;lt; Proc.new { puts c }
end

loop1[1].call #=&amp;gt; "two"
loop2[1].call #=&amp;gt; "three"
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=wPdJZLs8od4:y9SYW8M_08U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=wPdJZLs8od4:y9SYW8M_08U:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=wPdJZLs8od4:y9SYW8M_08U:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/wPdJZLs8od4" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/enumerable-each-vs-for-loops-in-ruby</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Mon, 08 Mar 2010 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/enumerable-each-vs-for-loops-in-ruby</feedburner:origLink></item>
    <item>
      <title>One link method fits all</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/xAheUYIXWtk/one-link-method-fits-all</link>
      <description>&lt;p&gt;Today I’ve created a universal rails helper to deal with multiple models of a multi-language project in a common way:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;def link_to_add(object, args={})
  return '' unless logged_in?
  object = [object] unless object.is_a?(Array)
  link = link_to(t("#{object.last.to_s}.add"), new_polymorphic_path(object, args))
  content_tag :p, link
end

def link_to_edit(object, args={})
  return '' unless logged_in?
  object = [object] unless object.is_a?(Array)
  return '' if object.last.new_record?
  node = object.last.class.to_s.underscore
  link = link_to(t("#{node}.edit"), edit_polymorphic_path(object, args))
  content_tag :p, link
end

def link_to_delete(object)
  return '' unless logged_in?
  object = [object] unless object.is_a?(Array)
  return '' unless object.last.persisted?
  node = object.last.class.to_s.underscore
  link = link_to(t("#{node}.delete"), object, 
    data: { method: 'delete', confirm: t("#{node}.delete?") })
  content_tag :p, link
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now all links to create, edit or delete an instance look nice and intuitive.&lt;/p&gt;

&lt;p&gt;I type short&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;%= link_to_add :post %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;instead of long&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;% if logged_in? %&amp;gt;
  &amp;lt;p&amp;gt;&amp;lt;%= link_to t('post.add'), new_post_path %&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;% end %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It handles nested routes. Just type&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;%= link_to_edit [@post, @comment] %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;instead of&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;% if logged_in? %&amp;gt;
  &amp;lt;p&amp;gt;&amp;lt;%= link_to t('comment.edit'), edit_post_comment_path(@post, @comment) %&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;% end %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And my favourite one:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;%= link_to_delete [@post, @comment] %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;instead of&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;% if logged_in? %&amp;gt;
  &amp;lt;p&amp;gt;&amp;lt;%= link_to t('comment.delete'), [@post, @comment],
    data: { method: 'delete', confirm: t('comment.delete?') } %&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;% end if @comment.persisted? %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=xAheUYIXWtk:JgtPCkIXP7Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=xAheUYIXWtk:JgtPCkIXP7Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=xAheUYIXWtk:JgtPCkIXP7Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/xAheUYIXWtk" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/one-link-method-fits-all</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Wed, 09 Dec 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/one-link-method-fits-all</feedburner:origLink></item>
    <item>
      <title>How to make ssh-copy-id without a headache</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/e-sWiGRKBG8/how-to-make-ssh-copy-id-without-a-headache</link>
      <description>&lt;p&gt;If you, like I today, cannot perform a passwordless login via ssh to a remote Linux server after copying a public key to the server with &lt;code&gt;ssh-copy-id&lt;/code&gt; command, please check if the key is actually presents among other authorized keys on the server. I found that sometimes it is not.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cat .ssh/authorized_keys
The agent has no identities.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To fix the problem just add the &lt;code&gt;-i&lt;/code&gt; argument like below:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ssh-copy-id -i user@server.tld
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=e-sWiGRKBG8:Z0Xmcwp9bkE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=e-sWiGRKBG8:Z0Xmcwp9bkE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=e-sWiGRKBG8:Z0Xmcwp9bkE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/e-sWiGRKBG8" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-make-ssh-copy-id-without-a-headache</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Mon, 19 Oct 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-make-ssh-copy-id-without-a-headache</feedburner:origLink></item>
    <item>
      <title>How to fix Andre Geokit timeout method error</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/SNBuFbC42mA/how-to-fix-andre-geokit-timeout-method-error</link>
      <description>&lt;p&gt;If you use &lt;a href="http://geokit.rubyforge.org/"&gt;Geokit&lt;/a&gt; plugin in a rails application, and it started to complain about undefined ‘timeout=’ method, the following command fired from the application root should help:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sed -i 's/Geocoders::timeout/Geocoders::request_timeout/' config/initializers/geokit_config.rb
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=SNBuFbC42mA:wLDTsYz5sdI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=SNBuFbC42mA:wLDTsYz5sdI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=SNBuFbC42mA:wLDTsYz5sdI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/SNBuFbC42mA" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-fix-andre-geokit-timeout-method-error</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sat, 03 Oct 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-fix-andre-geokit-timeout-method-error</feedburner:origLink></item>
    <item>
      <title>We've made it!</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/I58Io1M57CU/we-ve-made-it</link>
      <description>&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-Zq_CVyyITDs/SrEICTp_ShI/AAAAAAAAD3I/JANna0bnXb0/s320/dscf2759.jpg" alt="Canadian visas" /&gt;&lt;/p&gt;

&lt;p&gt;Today we’ve made it! 200 miles to Barnaul and back in less than four hours, running up the semi-empty highway like a hound-dog. Only to pick up passports from the Pony Express office. Only to make sure there are Canadian visas in them. Well yes, there are the visas. Along with a booklet for Canadian newcomers.&lt;/p&gt;

&lt;p&gt;Rephrasing Kurt Vonnegut, I’d say it all started when we were younger men - twenty-one months ago, 640 breakfasts ago, three cities ago…&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=I58Io1M57CU:3eaLa99c9_Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=I58Io1M57CU:3eaLa99c9_Y:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=I58Io1M57CU:3eaLa99c9_Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/I58Io1M57CU" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/we-ve-made-it</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Wed, 16 Sep 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/we-ve-made-it</feedburner:origLink></item>
    <item>
      <title>Grumblr goes public</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/1HMnJ1B9K_M/grumblr-goes-public</link>
      <description>&lt;p&gt;I’ve just committed another project of mine to Google code repository.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://lh4.ggpht.com/_Z4dmM6SRERg/Sq1pswVToWI/AAAAAAAADxo/1IclONQ5bco/s320/Grumblr2.png" alt="Grumblr" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://grumblr.org/"&gt;Grumblr&lt;/a&gt; - is a &lt;a href="http://www.tumblr.com/"&gt;Tumblr&lt;/a&gt; companion for GNOME. You can post text messages, links, quotes, conversation logs, even photos, video and audio clips to your tumbleblog directly from Linux desktop. You will need &lt;code&gt;ruby&lt;/code&gt;, &lt;code&gt;ruby-gtk2&lt;/code&gt;, &lt;code&gt;ruby-gconf2&lt;/code&gt;, &lt;code&gt;rubygems&lt;/code&gt; and &lt;code&gt;rest-client&lt;/code&gt; gem in order to run that software. Try it, hack it and send patches to improve.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=1HMnJ1B9K_M:Z8JQxjPP--E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=1HMnJ1B9K_M:Z8JQxjPP--E:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=1HMnJ1B9K_M:Z8JQxjPP--E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/1HMnJ1B9K_M" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/grumblr-goes-public</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Wed, 12 Aug 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/grumblr-goes-public</feedburner:origLink></item>
    <item>
      <title>TrueType font name extractor</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/Id43y5aCI6U/truetype-font-name-extractor</link>
      <description>&lt;p&gt;Found in archives. This short script can extract family name and style out of a True Type Font file. Useful for building a catalog of fonts and such.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/python
#
# Get font family and style from .ttf files
# Paul Philippov, paul@ppds.ws, 2008-10-05
#

import sys
import os.path
from PIL import ImageFont

if len(sys.argv) &amp;lt;= 1:
  print "Usage: %s &amp;lt;fontname&amp;gt;" % sys.argv[0]
  sys.exit()

filename = sys.argv[1]
if not os.path.exists(filename) or not os.path.isfile(filename):
  print "Error: %s is not a file" % filename
  sys.exit()

try:
  f = ImageFont.truetype(filename, 1)
except:
  print "Error: %s is not a Truetype font" % filename
  sys.exit()

print f.font.family + " " + f.font.style
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=Id43y5aCI6U:WFk4jf8IJj0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=Id43y5aCI6U:WFk4jf8IJj0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=Id43y5aCI6U:WFk4jf8IJj0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/Id43y5aCI6U" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/truetype-font-name-extractor</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Thu, 30 Jul 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/truetype-font-name-extractor</feedburner:origLink></item>
    <item>
      <title>Restricted modules in Ubuntu Karmic Koala</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/0x_XgPa61co/restricted-modules-in-ubuntu-karmic-koala</link>
      <description>&lt;p&gt;Upgrading my wife’s laptop I found out that Ubuntu Karmic Koala comes with Linux kernel version 2.6.30 which does not have linux-restricted-modules anymore. Instead you have to install DKMS (Dynamic Kernel Module Support) package to build required modules on demand. Below is how I solved problem with Broadcom Wifi card driver on the laptop:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo apt-get remove linux-restricted-modules
$ sudo apt-get install build-essential dkms bcmwl-kernel-source
$ sudo reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Don’t forget to load newly compiled module after rebooting.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo modprobe wl
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After that NetworkManager recognized the WiFi card and connected home WLAN in a blaze.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=0x_XgPa61co:vy-w9lM85WM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=0x_XgPa61co:vy-w9lM85WM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=0x_XgPa61co:vy-w9lM85WM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/0x_XgPa61co" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/restricted-modules-in-ubuntu-karmic-koala</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sat, 25 Jul 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/restricted-modules-in-ubuntu-karmic-koala</feedburner:origLink></item>
    <item>
      <title>How to make Epiphany to open PDF files with evince</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/BTkZ5XIsg28/how-to-make-epiphany-to-open-pdf-files-with-evince</link>
      <description>&lt;p&gt;Most GNOME users probably know that annoying behaviour of Epiphany web browser to open downloaded PDF files with GIMP image editor. The least to say that’s quite inappropriate. If you, like me, prefer to view PDF files in evince then run the following code in a terminal window:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo sed -i 's/pdf=gimp.desktop;evince.desktop;/pdf=evince.desktop;gimp.desktop;/' /usr/share/applications/mimeinfo.cache
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=BTkZ5XIsg28:cZHdkY-RYeo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=BTkZ5XIsg28:cZHdkY-RYeo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=BTkZ5XIsg28:cZHdkY-RYeo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/BTkZ5XIsg28" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-make-epiphany-to-open-pdf-files-with-evince</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Thu, 23 Jul 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-make-epiphany-to-open-pdf-files-with-evince</feedburner:origLink></item>
    <item>
      <title>Meet the Ramka</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/KtAJvGEJd68/meet-the-ramka</link>
      <description>&lt;p&gt;I’ve just commited another open source project to Google Code repository.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-q1XLeHvETwY/SmHcAvOXf-I/AAAAAAAAxjM/dQNtgQqhzLc/s320/ramka2.png" alt="Screenshot" /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://ramka.googlecode.com/"&gt;Ramka&lt;/a&gt; is a very easy to install PHP script to display images on a web site in a blaze. Just drop it somewhere within a web root at a PHP-enabled hosting server, add some images to images/ directory (configurable) and you are ready to display the album to your friends.&lt;/p&gt;

&lt;p&gt;A narrow mouse-scrollable list of photos appears on the right pane. Photos will be displayed at the rest available area, loading in background without re-loading the page itself. Titles get derived from file names, say, my_perfect_roma_vacations.png file name turns to “my perfect vaction” title and so on.&lt;/p&gt;

&lt;p&gt;Photos get resized (not actually resized but squeezed) to fit into available view area. (Note: fullsize image is loaded. If you wish to save traffic then resize images before uploading to server!)&lt;/p&gt;

&lt;p&gt;Background toggles from white to black and back with a click on image canvas.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=KtAJvGEJd68:k7BpwyM2o34:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=KtAJvGEJd68:k7BpwyM2o34:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=KtAJvGEJd68:k7BpwyM2o34:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/KtAJvGEJd68" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/meet-the-ramka</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sun, 19 Jul 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/meet-the-ramka</feedburner:origLink></item>
    <item>
      <title>Maemo Garage Git repo and Eclipse IDE</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/50Pr_QKU0g8/maemo-garage-git-repo-and-eclipse-ide</link>
      <description>&lt;p&gt;I like &lt;a href="http://eclipse.org/"&gt;Eclipse IDE&lt;/a&gt; for being flexible enough, free, and open source solution to handle several programming languages I write in. I also like &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt; - a distributed version control system. For being git to use, and keen to not shit its files and directories all over the workspace. And I like them working together with help of &lt;a href="http://git.or.cz/gitwiki/EclipsePlugin"&gt;EGit&lt;/a&gt; - an Eclipse Git plug-in (by Shawn Pearce).&lt;/p&gt;

&lt;p&gt;Tonight I was going to add &lt;a href="https://garage.maemo.org/projects/beats-applet"&gt;my recently emerged Maemo project&lt;/a&gt; to Eclipse workspace on my laptop. I started Eclipse, opened EGit, and tried to import my project from the Garage. But I can’t. I faced a problem to connect the repository since it was secured with SSL, but its certificate was not trusted by my system.&lt;/p&gt;

&lt;p&gt;Here is the solution that worked for me:&lt;/p&gt;

&lt;p&gt;First of all, get the public certificate used by Maemo Garage to protect connections. I wasn’t able to find the certificate on the server and ended dumping one to a file right from a session.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ openssl s_client -connect git.maemo.org:443 &amp;gt; dump.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Hit Ctrl-C to break the session otherwise you could wait forever.&lt;/p&gt;

&lt;p&gt;From the file remove all unnecessary lines, except the certificate part.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sed -ne '/----BEGIN/,/----END/p' dump.txt &amp;gt; cert.pem
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now you need to import the certificate to Java’s keystore.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo keytool -import -file cert.pem -alias git.maemo.org -keystore $JAVA_HOME/jre/lib/security/cacerts
Enter keystore password:  changeit
Trust this certificate? [no]: yes
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Restart Eclipse and try to connect the repository once more. This time it should work.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=50Pr_QKU0g8:Kp_hgu0WdEM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=50Pr_QKU0g8:Kp_hgu0WdEM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=50Pr_QKU0g8:Kp_hgu0WdEM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/50Pr_QKU0g8" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/maemo-garage-git-repo-and-eclipse-ide</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Mon, 09 Feb 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/maemo-garage-git-repo-and-eclipse-ide</feedburner:origLink></item>
    <item>
      <title>Swatch Internet Time applet for NIT</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/fu59uBuUlV4/swatch-internet-time-applet-for-nit</link>
      <description>&lt;p&gt;I love the idea of &lt;a href="http://en.wikipedia.org/wiki/Swatch_Internet_Time"&gt;decimal time&lt;/a&gt; emerged by &lt;a href="http://www.swatch.com/"&gt;Swatch corporation&lt;/a&gt; back in late 90’s. The concept is dead simple. A day is divided up into 1000 equal &lt;em&gt;“beats”&lt;/em&gt;. That’s it.&lt;/p&gt;

&lt;p&gt;Imagine what a bright feature it could be if everyone uses .beats. No more hours, minutes, seconds… No more boring 60 * 60 * 24 calculations in program sources. I have adopted beats for myself and encourage you to follow the trend. My laptop has &lt;a href="http://code.google.com/p/gnome-beats-applet/"&gt;Beats Applet for GNOME&lt;/a&gt; installed but I also wanted to have Internet Time with me on a go. Since original Swatch watches featured with .beats are ether ugly as hell or sold out, I came up with the small applet for my Nokia N800 running &lt;a href="http://maemo.org/"&gt;maemo Linux OS2008&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-zsyold5UXvY/SYmTzNYtt6I/AAAAAAAAxk8/21y8aI2svRQ/s320/Beats%252520applet.png" alt="screenshot" /&gt;&lt;/p&gt;

&lt;p&gt;Cairo-based Swatch Internet Time applet for Nokia Internet Tables is available for download from &lt;a href="https://garage.maemo.org/projects/beats-applet"&gt;maemo garage&lt;/a&gt;. You can adjust one to match your desktop theme, setting font face and size, background and foreground colors and opacity level. Grab it, install and send your suggestions to improve.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=fu59uBuUlV4:16Ia2BiQEBs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=fu59uBuUlV4:16Ia2BiQEBs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=fu59uBuUlV4:16Ia2BiQEBs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/fu59uBuUlV4" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/swatch-internet-time-applet-for-nit</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Wed, 04 Feb 2009 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/swatch-internet-time-applet-for-nit</feedburner:origLink></item>
    <item>
      <title>Ruby microblogging client sneak preview</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/_wqpE7f4_tY/ruby-microblogging-client-sneak-preview</link>
      <description>&lt;p&gt;I’m excited with the idea of &lt;a href="https://launchpad.net/gwibber"&gt;Gwibber&lt;/a&gt; microblogging client. But I’d like to change few things there to meet my requirements before adopting it as a desktop microblogging tool. Open source development and GPL licensing allow you to fork any project and change it as you like. But honestly I’m not fluent in Python, and I’m not willing to mess with &lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;. Instead, I’ve started to write my own client from scratch, with Gwibber in mind. My client is developed upon &lt;a href="http://ruby-gnome2.sourceforge.jp/"&gt;Ruby-GNOME2&lt;/a&gt; bindings to &lt;a href="http://www.gtk.org/"&gt;GTK+&lt;/a&gt; and &lt;a href="http://www.mozilla.org/"&gt;Mozilla&lt;/a&gt;. That is my first attempt to use Ruby with GTK, and so things go slow. Though I have lots of fun while working on the project. Below are few screenshots of the developing prototype under working title Porifera.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh6.googleusercontent.com/-9B7I4a2Q4TE/SVGY83_tWiI/AAAAAAAA3d0/bSc3KdBUyl4/s320/porifera.png" alt="Screenshot" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=_wqpE7f4_tY:asT3d9vykFE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=_wqpE7f4_tY:asT3d9vykFE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=_wqpE7f4_tY:asT3d9vykFE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/_wqpE7f4_tY" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/ruby-microblogging-client-sneak-preview</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Wed, 24 Dec 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/ruby-microblogging-client-sneak-preview</feedburner:origLink></item>
    <item>
      <title>Rails 2.2.2 I18n helper</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/nxSefJKRrrI/rails-2-2-2-i18n-helper</link>
      <description>&lt;p&gt;Since &lt;a href="http://rubyforge.org/projects/gettext/"&gt;Gettext plugin&lt;/a&gt; does not work with &lt;a href="http://weblog.rubyonrails.org/2008/11/21/rails-2-2-i18n-http-validators-thread-safety-jruby-1-9-compatibility-docs"&gt;Rails 2.2.2&lt;/a&gt; any more, and I don’t like the syntax of bundled I18n, I’ve made a mix-in to extend functionality of String class with &lt;code&gt;.t&lt;/code&gt; method:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;module Ppds
  module CoreExtensions
    module String
      module TextHelper
        def t(*args)
          I18n.t self, default: self.to_s, value: args
        end
      end
    end
  end
end

class String
  include Ppds::CoreExtensions::String::TextHelper
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now I can write&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;"Hello, world!".t
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and get either a translation if one exists, or the original phrase, like Gettext behaves.&lt;/p&gt;

&lt;p&gt;It also let you translate along with substitution:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;first_name = "Paul"
"My name is %s".t(first_name)
&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=nxSefJKRrrI:qBA7sKeswmo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=nxSefJKRrrI:qBA7sKeswmo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=nxSefJKRrrI:qBA7sKeswmo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/nxSefJKRrrI" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/rails-2-2-2-i18n-helper</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Wed, 03 Dec 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/rails-2-2-2-i18n-helper</feedburner:origLink></item>
    <item>
      <title>MovableType OpenID issue, resolved</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/kF-KCiO5Oh4/movabletype-openid-issue-resolved</link>
      <description>&lt;p&gt;Today, &lt;a href="http://www.flickr.com/photos/themactep/3049971663/"&gt;my lovely wife&lt;/a&gt; found &lt;a href="http://eugeniavlasova.com/"&gt;her weblog&lt;/a&gt; does not accept OpenID authorization anymore, and so runs out of comments. I believe that’s a result of upgrade to yet another “latest, bug fixed, and more secure (of course)” version of &lt;a href="http://movabletype.com/"&gt;MovableType&lt;/a&gt;. I can’t say which exact update made the OpenID stuff broken because I had to update several blogs several times lately. Anyway, I found that recent MT-4.21 fails to authorize one through OpenID URI. I tried my Yahoo! OpenID, and one from Blogger, but both failed. The best I got is the message on a plain dull web page: &lt;em&gt;An error occurred: The sign-in attempt was not successful; please try again.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you are reading this googled page looking to solve the same problem you’re facing on your own blog, then that’s the right place. Most probably your server does not have a necessary perl encryption module installed. If you have got a shell access to your server account then you’re half done (if you have not then complain to your hosting support service and they should install everything for you). Ok, with the shell access login to your account and install perl module &lt;code&gt;Crypt::SSLeay&lt;/code&gt; either from &lt;a href="http://search.cpan.org/dist/Crypt-SSLeay/"&gt;CPAN repository&lt;/a&gt; or from an official repository for your distro. To go with CPAN, you have to fire following command in shell:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cpan Crypt::SSLeay
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Read output from the installation script. If it says everything is OK then you are a lucky. Open a web browser and try to authorize on your blog with an OpenID. Bet it will work for you this time. But if you are as lucky as me, running a custom configured server, or just has a bad karma, then you will end up with the error:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CPAN.pm: Going to build D/DL/DLAND/Crypt-SSLeay-0.57.tar.gz

=======================================================
Only one OpenSSL installation found at /usr/local/ssl
Consider running 'perl Makefile.PL --default' the next
time Crypt::SSLeay is upgraded to select this directory
automatically thereby avoiding the following prompt.
=======================================================
Which SSL install path do you want to use? [/usr/local/ssl]

BUILD INFORMATION
================================================
ssl library: OpenSSL 0.9.8 in /usr/local/ssl
ssl header:  openssl/ssl.h
libraries:   -L/usr/local/ssl/lib -lssl -lcrypto -lgcc
include dir: -I/usr/local/ssl/include/openssl
================================================

...
In file included from SSLeay.xs:25:
crypt_ssleay_version.h:1:25: error: openssl/ssl.h: No such file or directory
crypt_ssleay_version.h:2:28: error: openssl/crypto.h: No such file or directory
crypt_ssleay_version.h:3:25: error: openssl/err.h: No such file or directory
crypt_ssleay_version.h:4:26: error: openssl/rand.h: No such file or directory
crypt_ssleay_version.h:5:28: error: openssl/pkcs12.h: No such file or directory
SSLeay.xs:43: warning: type defaults to 'int' in declaration of 'SSL'
... a lot of warnings thrown by SSLeay.c following
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I don’t know what made Makefile.PL to configure Makefile this way, but the file is wrong. Note the &lt;code&gt;include dir: -I/usr/local/ssl/include/openssl&lt;/code&gt; it should not have &lt;code&gt;openssl&lt;/code&gt; part in there. Because &lt;code&gt;SSLeay.xs&lt;/code&gt; already includes files out of openssl/ directory. Having that chunk in path is redundant and leads to the error we got above.&lt;/p&gt;

&lt;p&gt;I have absolutely no desire to dig perl code of Makefile.PL even that little. Instead I’ll show you how to fix Makefile itself. Go to the directory where the failed package extracted:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cd ~/.cpan/build/Crypt-SSLeay-0.57
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Open &lt;code&gt;Makefile&lt;/code&gt; file with your prefered text editor and change &lt;code&gt;INC = -I/usr/local/ssl/include/openssl&lt;/code&gt; to read like &lt;code&gt;INC = -I/usr/local/ssl/include&lt;/code&gt;. Or even better you could do it UNIX way, running following command in command prompt:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sed -i 's!include/openssl!include!' Makefile
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;after that run &lt;code&gt;make &amp;amp;&amp;amp; make install&lt;/code&gt; and test result in a web browser. Worked for me, should work for you.&lt;/p&gt;

&lt;p&gt;Please note, exact paths may differ on your system. Put it this way: now you’ve got the idea how to fix it, and you only have to find where =) Good luck with hacking!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=kF-KCiO5Oh4:RZVG6TltkfE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=kF-KCiO5Oh4:RZVG6TltkfE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=kF-KCiO5Oh4:RZVG6TltkfE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/kF-KCiO5Oh4" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/movabletype-openid-issue-resolved</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Thu, 27 Nov 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/movabletype-openid-issue-resolved</feedburner:origLink></item>
    <item>
      <title>All gem documentation within a click</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/q6NSs2c_hLA/all-gem-documentation-within-a-click</link>
      <description>&lt;p&gt;Tonight I came across &lt;a href="http://antono.info/ru/90"&gt;a useful bit of code&lt;/a&gt; made to ease your life as a ruby developer. It’s a shell script to browse documentation for installed gems through rubygems built-in web server. The script will check for running instance of the server, fire one if no running server found, and then open the server with the default web browser. Here’s the code with slight modifications from me:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/bin/sh

if [ $(ps aux | grep -c "gem\s*server") -ge 1 ]
then
  echo "Gem Server already running..."
  ps aux | grep -e "gem\s*server"
else
  /usr/bin/gem server --daemon
fi
xdg-open http://localhost:8808/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Grab the code and save it as /usr/local/bin/gemdocs. Don’t forget to run&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ chmod 755 /usr/local/bin/gemdocs
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;to make the script executable. To make it look pretty on Desktop or/and in Menu I’ve created an icon. Get it from &lt;a href="http://static.themactep.com/images/gemdocs.svg"&gt;here&lt;/a&gt; and put into /usr/share/pixmaps/ directory.&lt;/p&gt;

&lt;p&gt;Create file /usr/share/applications/gemdocs.desktop with the following contents:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[Desktop Entry]
Name=GemDocs
Comment=Browse gem documentation server
Exec=gemdocs
Icon=gemdocs
StartupNotify=true
Terminal=false
Type=Application
Categories=Documentation;Development;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;make a soft link or copy the file to your desktop:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cp /usr/share/applications/gemdocs.desktop ~/Desktop/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now you should see the gemdocs launcher on your desktop. Also GemDocs menu item should emerge in &lt;code&gt;Applications -&amp;gt; Programming&lt;/code&gt; menu (valid for GNOME desktop environment).&lt;/p&gt;

&lt;p&gt;Please note, you may need to become a superuser in order to get access to those directories.&lt;/p&gt;

&lt;p&gt;PS: Thanks to &lt;a href="http://antono.info/"&gt;Antono Vasiljev&lt;/a&gt; for the idea.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=q6NSs2c_hLA:D2r3OOpwtGQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=q6NSs2c_hLA:D2r3OOpwtGQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=q6NSs2c_hLA:D2r3OOpwtGQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/q6NSs2c_hLA" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/all-gem-documentation-within-a-click</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Wed, 26 Nov 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/all-gem-documentation-within-a-click</feedburner:origLink></item>
    <item>
      <title>Running RoR application on a NIT device</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/KqOF4dsQUE4/running-ror-application-on-a-nit-device</link>
      <description>&lt;p&gt;Last night my Nokia N800 Internet Tablet got a significant power-up. I’ve managed to install precompiled ruby, rubygems, rails, gcc (and other build-essintial packages). After that I’ve compiled sqlite3 and sqlite3-ruby extension, and run a sample RoR application with built-in WEBrick web server. Wow, quite impressive.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://lh4.googleusercontent.com/-R14knD3zMUw/SSH9Pbp9RsI/AAAAAAAAxk8/2FADeoIkhN0/s320/maemo-rails.png" alt="Ruby on Rails running on Nokia N800" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=KqOF4dsQUE4:kdEaIfSrXJM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=KqOF4dsQUE4:kdEaIfSrXJM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=KqOF4dsQUE4:kdEaIfSrXJM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/KqOF4dsQUE4" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/running-ror-application-on-a-nit-device</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Mon, 17 Nov 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/running-ror-application-on-a-nit-device</feedburner:origLink></item>
    <item>
      <title>Sending files via Bluetooth works again</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/qwbyw8y-XIk/sending-files-via-bluetooth-works-again</link>
      <description>&lt;p&gt;I’ve managed how to make bluez-gnome-1.8 to work with new obex-data-server-0.4 API. Now GNOME Bluetooth applet on my Gentoo laptop can send files again, instead of throwing the error &lt;em&gt;“Method “CreateBluetoohSession” with signature “ss” on interface “org.openobex.Manager” doesn’t exist”&lt;/em&gt;. I even can connect my Nokia N800, for some reason previously it didn’t work.&lt;/p&gt;

&lt;h3 id="laptop-side"&gt;Laptop side&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-QfWxi4ovGOk/SR2k3sn1IBI/AAAAAAAAxk8/R7IpoZiO5r0/s320/bluez-gnome-laptop.png" alt="screenshot" /&gt;&lt;/p&gt;

&lt;h3 id="nokia-tablet-side"&gt;Nokia Tablet side&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://lh5.googleusercontent.com/-yV2geamMgP4/SR2k3kiNejI/AAAAAAAAxk8/ut2Sx5ukxYE/s320/bluez-gnome-n800.png" alt="screenshot" /&gt;&lt;/p&gt;

&lt;p&gt;Check details, patches and ebuilds in &lt;a href="http://bugs.gentoo.org/show_bug.cgi?id=236357"&gt;Gentoo bugzilla&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=qwbyw8y-XIk:vsHpJQEBhZs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=qwbyw8y-XIk:vsHpJQEBhZs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=qwbyw8y-XIk:vsHpJQEBhZs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/qwbyw8y-XIk" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/sending-files-via-bluetooth-works-again</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Fri, 14 Nov 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/sending-files-via-bluetooth-works-again</feedburner:origLink></item>
    <item>
      <title>JSON of a tweet and all, all, all</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/RLArWTDIoB0/json-of-a-tweet-and-all-all-all</link>
      <description>&lt;p&gt;I’ve revamped my blog today. Some changes are pure cosmetic, others are fundamental whilst visual effect of them is not so much visible. And, of course, everything is pretty valid and standards-compliant (except Google Ads, but that’s another sad story).&lt;/p&gt;

&lt;p&gt;First of all, update requests to third-party services like Twitter and Flickr are shifted from server-side RoR libs to clients. That’s the most significant change, I guess. Pages became more static-like. An average response speed increased, and server load dropped dramatically, mostly because of better caching. Resulting pages (which are final flows of HTML code what running server-side scripts send to your web browser) do not contain any frequently changing snippets of information anymore. These pages now contain only placeholders for such snippets. And contents get filled in later in visitor’s web browser with help of Ajax/DHTML scripts.&lt;/p&gt;

&lt;p&gt;What I found out dealing with JSON format and public API of different social services is that not all of them are equally useful. Switching from Ruby/XML to Javascript/JSON was very easy for &lt;a href="http://www.flickr.com/services/api/"&gt;Flickr API&lt;/a&gt;. These guys never stop to bring joy to my life - their service if the best among others, API is great, and they’ve just added some new features to Flickr UI. I just love them!&lt;/p&gt;

&lt;p&gt;At a first glance &lt;a href="http://www.last.fm/api/"&gt;Last.fm API&lt;/a&gt; is very akin to the one Flickr does use. But unlike Flickr guys (please don’t laugh out too loud) Last.fm does not offer support of JSON format! So I have to use a third-party proxy service to convert provided XML responses to required JSON. Except this migration was not hard.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://apiwiki.twitter.com/"&gt;Twitter API&lt;/a&gt; gave me a real headache. Twitter API is BAD! First, it is very restrictive. You can’t get whatever you want through the API calls like you could get just screenscrapping HTML pages and extracting information from there. And I believe some people go this way just to avoid limits and restrictions you face while working with the API. Format of Twitter API responses is bloating. Time and date comes in fancy formats instead of short and useful timestamps. You also get tons of information per each user in a timeline asking only for messages. Imagin what you get in a timeline for one particular user. His profile will be repeated again with every single message! It does not look like API, it’s a damn dump of a Excel spreadsheet. But the most disgusting behaviour is caching. Results are cached! If you, say, use &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; (like I do), and fire a &lt;code&gt;$.getJSON()&lt;/code&gt; call to the API, your request will get a callback name randomly assigned by jQuery. Every next call will have a new unique callback name. But API server will keep returning the first cached response, making your script to fail with error. I had to fallback to more complex &lt;code&gt;$.ajax()&lt;/code&gt; call with custom assigned callback name (check sources if you need more details, or drop me a line to email). Finally it works.&lt;/p&gt;

&lt;p&gt;And one more rant. The final one. Microsoft Internet Explorer sucks, and should die in hell! Trust me. It has broken (by design) CSS rendering engine, non-standard Javascript Virtual Machine, versions prior 7 even can’t handle transparency of PNG images, and have no clue about multi-tab interface! Do you still use that crap?! If you DO, then take a free advice — go and grab yourself a USEFUL web browser. There are plenty of them: &lt;a href="http://www.mozilla.com/en-US/products/firefox/"&gt;Mozilla Firefox&lt;/a&gt;, &lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt;, &lt;a href="http://www.opera.com/"&gt;Opera&lt;/a&gt;, &lt;a href="http://www.apple.com/safari/"&gt;Apple Safari&lt;/a&gt;. You don’t have to wait till tomorrow. Do it right now. Are you still reading? Download and install! If your corporate policy limits you to have only IE on your PC, file a complaint! Visit &lt;a href="http://browsehappy.com/"&gt;Browse Happy&lt;/a&gt; and read it. Search Google for “&lt;a href="http://www.google.com/search?q=Why+does+IE+suck"&gt;Why does IE suck&lt;/a&gt;” and read it. Learn it for yourself, make your colleagues, you admin, his supervisor, CEO of your company, and even his grandma to know it, too. Be warned and prepared. And make web developers happy!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=RLArWTDIoB0:KsqdVZ2Puj0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=RLArWTDIoB0:KsqdVZ2Puj0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=RLArWTDIoB0:KsqdVZ2Puj0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/RLArWTDIoB0" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/json-of-a-tweet-and-all-all-all</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sun, 19 Oct 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/json-of-a-tweet-and-all-all-all</feedburner:origLink></item>
    <item>
      <title>How to compare floats in bash</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/7ljn6s5CGyg/how-to-compare-floats-in-bash</link>
      <description>&lt;p&gt;If you need to compare floats in &lt;code&gt;bash&lt;/code&gt;, I suggest to use a system call to &lt;code&gt;bc&lt;/code&gt;, and then check result. Below is a simple sample:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#/bin/bash

LIMIT=75.5
CPU_LOAD=`ps aux | awk '{s +=$3}; END {print s}'`
HOT=`echo "$CPU_LOAD &amp;gt; $LIMIT" | bc`
if [ "$HOT" -eq "1" ]; then
  echo "Oh, $CPU_LOAD%! My pants on fire!"
  exit 1;
else
  echo "Keep cool dude..., it's only $CPU_LOAD%"
fi
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note: first I thought to use &lt;code&gt;expr&lt;/code&gt;, but seems it’s buggy. Check it yourself:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ expr 36.25 \&amp;gt; 5
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Mine says result is false. Weird…&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=7ljn6s5CGyg:sbeS55dRz_4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=7ljn6s5CGyg:sbeS55dRz_4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=7ljn6s5CGyg:sbeS55dRz_4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/7ljn6s5CGyg" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-compare-floats-in-bash</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Tue, 07 Oct 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-compare-floats-in-bash</feedburner:origLink></item>
    <item>
      <title>How to fix sqlite3-ruby-1.2.2</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/282MFuIhjFs/how-to-fix-sqlite3-ruby-1-2-2</link>
      <description>&lt;p&gt;I’ve experienced the problem a month ago but as I see in others blogs people still face it while trying to install/upgrade sqlite3-ruby gem up to version 1.2.2. Being installed the gem raises error on an attempt to access sqlite3 database or fire &lt;code&gt;rake db:&lt;/code&gt; commands.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;rake aborted!
no such file to load -- sqlite3/database
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Here is how I’ve fixed the issue with the sqlite3-ruby-1.2.2 gem on my home Gentoo box and some production servers running CentOS and Debian.&lt;/p&gt;

&lt;p&gt;Add two following lines of code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#define RSTRING_PTR(s) (RSTRING(s)-&amp;gt;ptr)
#define RSTRING_LEN(s) (RSTRING(s)-&amp;gt;len)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;somewhere into file &lt;code&gt;/usr/lib/ruby/1.8/i686-linux/ruby.h&lt;/code&gt; (path may be slightly different depending on architecture of your system), and then re-install the gem:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo gem uninstall sqlite3-ruby
$ sudo gem install sqlite3-ruby
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Note!&lt;/strong&gt; Also, you may need to &lt;strong&gt;check and fix permissions&lt;/strong&gt; of the newly installed files. On my system they were set to &lt;code&gt;-rw-rw--w- (662)&lt;/code&gt; instead of &lt;code&gt;-rw-r--r-- (644)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Gem update to sqlite3-ruby 1.2.3 has broken my system again. The error is not fixed (or better say &lt;a href="http://groups.google.com/group/comp.lang.ruby/msg/6f4f5c890c90c065"&gt;not properly fixed&lt;/a&gt;) yet.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=282MFuIhjFs:f7Dguxdy-os:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=282MFuIhjFs:f7Dguxdy-os:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=282MFuIhjFs:f7Dguxdy-os:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/282MFuIhjFs" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/how-to-fix-sqlite3-ruby-1-2-2</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Thu, 31 Jul 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/how-to-fix-sqlite3-ruby-1-2-2</feedburner:origLink></item>
    <item>
      <title>Hacking Firefox key binding overlapping</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/iqIiruuxm3M/hacking-firefox-key-binding-overlapping</link>
      <description>&lt;p&gt;Open source &lt;a href="http://www.mozilla.com/en-US/firefox/"&gt;Firefox web browser&lt;/a&gt; equipped with a dozen of extensions is my main tool for everyday web development. After switching to Firefox 3 and updating all previously installed extensions I faced a regression of a very useful feature — &lt;code&gt;Ctrl-Shift-S&lt;/code&gt; shortcut for switching CSS styles on a web page provided by &lt;a href="http://chrispederick.com/work/web-developer/"&gt;WebDeveloper&lt;/a&gt; toolbar didn’t work any more. Instead, a sidebar with bookmarks gets opened in the browser.&lt;/p&gt;

&lt;p&gt;After a short investigation I found the shortcut was overridden by another extension I won’t reject to use — the &lt;a href="https://addons.mozilla.org/firefox/3615/"&gt;Delicious Bookmarks&lt;/a&gt;. Unfortunately, the extension did not provide an easy way to remap key bindings from its options panel. To change them I had to go directly to Firefox built-in configuration panel.&lt;/p&gt;

&lt;p&gt;I typed &lt;code&gt;about:config&lt;/code&gt; in the browser address bar and hit enter like I always do to open a web page. Agreed to be careful while working in the settings window I found a long list of available parameters. I typed &lt;code&gt;ybookmarks&lt;/code&gt; in a filter bar above these parameters and limited the long list to only display settings relevant to the desired extension. In the limited list of settings I found one named &lt;code&gt;extensions.ybookmarks@yahoo.original.keybindings.remap.secondary.sidebar.key&lt;/code&gt; and double-click it. In the modal window I changed &lt;code&gt;S&lt;/code&gt; to &lt;code&gt;D&lt;/code&gt; and saved it.&lt;/p&gt;

&lt;p&gt;After restarting the browser I’m able to switch CSS styles with &lt;code&gt;Ctrl-Shift-S&lt;/code&gt; shortcut again, and I have Delicious Bookmarks sidebar bound to the next key combination &lt;code&gt;Ctrl-Shift-D&lt;/code&gt; (for &lt;code&gt;D&lt;/code&gt;elicious).&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=iqIiruuxm3M:yNLgpig1wJY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=iqIiruuxm3M:yNLgpig1wJY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=iqIiruuxm3M:yNLgpig1wJY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/iqIiruuxm3M" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/hacking-firefox-key-binding-overlapping</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sat, 12 Jul 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/hacking-firefox-key-binding-overlapping</feedburner:origLink></item>
    <item>
      <title>Cerberus at the gate</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/x1YFd9rDWt0/cerberus-at-the-gate</link>
      <description>&lt;p&gt;Bureaucracy in the local Polish Consulate kills all my desire to visit this nice country once again. Every time it comes to applying for visas they lead me to the point when I’m ready to throw away invitation papers and advise officials to go fuck themselves in a backyard. This time they compel me to write an affidavit letter to my wife Eugenia, so I pledge that will cover all her expenses during our stay in Poland. Stupid morons! Despite the fact that both our passports are stamped with Polish visas on every other page, she’s my wife and shares the same banking account with me.&lt;/p&gt;

&lt;p&gt;As the last visit to U.S. Embassy in St.Petersburg is still fresh in my memory, I can compare both experiences happened in a short time. I’d say Polish visa requirements are worsened a lot after joining the Schengen zone. And I know for sure it is not because of the Schengen protocol. We never had such problems with getting visas in German Consulate, who is also a member of The Schengen Agreement.&lt;/p&gt;

&lt;p&gt;If not only the &lt;abbr title="International English Language Testing System"&gt;IELTS&lt;/abbr&gt; exam Eugenia’s going to pass in Krakow, I’d change my route immediately. To Prague, to Bratislava, to any other place. Do they really think tourists would still bring money to the country if kept treated like that?!&lt;/p&gt;

&lt;p&gt;Ugh, only big, hot and spicy Czarny stek with a tall glass of fresh cold Zywiec in a lovely &lt;a href="http://www.sphinx.pl/"&gt;Sphinx&lt;/a&gt; restaurant can turn me back to loyal.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=x1YFd9rDWt0:KHD01dFsKmc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=x1YFd9rDWt0:KHD01dFsKmc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=x1YFd9rDWt0:KHD01dFsKmc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/x1YFd9rDWt0" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/cerberus-at-the-gate</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Tue, 27 May 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/cerberus-at-the-gate</feedburner:origLink></item>
    <item>
      <title>Howdy y'all! We're back from Texas</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/CQ4Afw_hhUk/howdy-y-all-we-re-back-from-texas</link>
      <description>&lt;p&gt;We’ve been to Austin, Texas for a week and now got back home. But my heart is still crawling somewhere along Brazos and the Sixth streets. I never expected I’d like Texas so much. There was my first trip to America, Eugenia was there last year, in New York. But seems she’s amazed by Texas as much as me. We’ve got a lot of photos of beautiful Austin, you can view them on my &lt;a href="http://flickr.com/photos/themactep"&gt;flickr account&lt;/a&gt; and &lt;a href="http://flickr.com/photos/jane_vlasova"&gt;Eugenia’s one&lt;/a&gt; too. I’d like to put here the one I love the most:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/themactep/2511544802/in/set-72157605111912675"&gt;&lt;img src="http://farm3.staticflickr.com/2288/2511544802_5dea1377a2_n.jpg" alt="Austin, Texas" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=CQ4Afw_hhUk:IZ6DYpoYP8Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=CQ4Afw_hhUk:IZ6DYpoYP8Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=CQ4Afw_hhUk:IZ6DYpoYP8Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/CQ4Afw_hhUk" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/howdy-y-all-we-re-back-from-texas</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Thu, 22 May 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/howdy-y-all-we-re-back-from-texas</feedburner:origLink></item>
    <item>
      <title>Where is my privacy, dude?</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/xQFy6GjKypc/where-is-my-privacy-dude</link>
      <description>&lt;p&gt;Today I got a notice from a Russian Google-wannabe company that my free web hosting account registered while ago yet in stone ages does not show any activity for at least four months, and is going to be deleted soon. Furthermore the systems has already blocked access to the web site, and wants me to make changes to the content in order to unblock it. I’ve decided to just delete the useless web site instead. Quite soon I learned it won’t be easy. The system does not allow you to delete a hosting account while it is blocked. I’ve managed to reset password as I can’t remember the one assigned. I had to use a cellphone in order to perform the password change. Good Lord I’ve bought a new cell phone just yesterday, but what if I don’t have one at all?! Not everyone on the Earth does use a cell phone! Anyway, I got the PIN and put a new password and even  wiped off all content of the hosting. But I still can’t delete the hosting account nor the whole account associated with my login name (they call it a Passport). The account termination routine returns an error message, and offers you to repeat the attempt in a couple minutes. Needless to say it won’t work for you not in a couple minutes nor in a couple hours. My wife said she’s failed to delete her old account months ago too. Seems Yandex.passport is a good addition to the over-hyped Russian classmates resource rumored to be under control of Russian feds.&lt;/p&gt;

&lt;p&gt;So folks think twice before you bite a free cookie. In Russia cookie chews you.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=xQFy6GjKypc:94dVkgijSyY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=xQFy6GjKypc:94dVkgijSyY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=xQFy6GjKypc:94dVkgijSyY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/xQFy6GjKypc" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/where-is-my-privacy-dude</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sun, 20 Apr 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/where-is-my-privacy-dude</feedburner:origLink></item>
    <item>
      <title>The Kantor</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/kM8Npsp-rvo/the-kantor</link>
      <description>&lt;p&gt;&lt;img src="https://lh3.googleusercontent.com/-e22qp5O8g6g/Th1g9lgvdPI/AAAAAAAAxjM/Ks-01emwztc/s300/The%2520Kantor%252C%2520online%2520currency%2520converter%2520-%2520Google%2520Chrome_004.png" alt="thekantor.com" /&gt;&lt;/p&gt;

&lt;p&gt;I launched another web project called &lt;a href="http://thekantor.com/"&gt;The Kantor&lt;/a&gt;. It is an online currency calculator based on currency rates provided by &lt;a href="http://www.ecb.int/"&gt;European Central Bank&lt;/a&gt;. Feel free to use it and leave your feedback =)&lt;/p&gt;

&lt;p&gt;PS: Source code of the PHP-library used in this project to retrieve data from the European Central Bank is freely available as my contribution to open world of open source. Check links on the bottom of the calculator pane at the same web site.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=kM8Npsp-rvo:57XkxW5okxM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=kM8Npsp-rvo:57XkxW5okxM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=kM8Npsp-rvo:57XkxW5okxM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/kM8Npsp-rvo" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/the-kantor</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Wed, 19 Mar 2008 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/the-kantor</feedburner:origLink></item>
    <item>
      <title>Windows is a Living Nightmare</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/78DQIMMLJnM/windows-is-a-living-nightmare</link>
      <description>&lt;p&gt;— Adobe Photoshop requires 1GB RAM and 1.2GB disk space to install.&lt;/p&gt;

&lt;p&gt;— OK, I’ve got them. Go on.&lt;/p&gt;

&lt;p&gt;— Adobe Photoshop found updates and willing to download 250MB.&lt;/p&gt;

&lt;p&gt;— OK, do it.&lt;/p&gt;

&lt;p&gt;— Windows found 2 updates and willing to download 80MB.&lt;/p&gt;

&lt;p&gt;— Can we live without it? No? Okay…&lt;/p&gt;

&lt;p&gt;— Microsoft Internet Explorer has crashed while checking for updates. Do you want to send a report to developers?&lt;/p&gt;

&lt;p&gt;— Yes.&lt;/p&gt;

&lt;p&gt;— Windows application crashed while sending the report and does not respond. Do you want to destroy the application?&lt;/p&gt;

&lt;p&gt;— Yes, please.&lt;/p&gt;

&lt;p&gt;— Windows application does not respond. Do you want to destroy the application?&lt;/p&gt;

&lt;p&gt;— Yes, goddamn!&lt;/p&gt;

&lt;p&gt;— Windows application does not respond. Do you want to destroy the application?&lt;/p&gt;

&lt;p&gt;…Bang-bang!&lt;/p&gt;

&lt;p&gt;Gosh, people, how can you use that shit?!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=78DQIMMLJnM:92MpfV_aA2o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=78DQIMMLJnM:92MpfV_aA2o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=78DQIMMLJnM:92MpfV_aA2o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/78DQIMMLJnM" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/windows-is-a-living-nightmare</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sat, 29 Dec 2007 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/windows-is-a-living-nightmare</feedburner:origLink></item>
    <item>
      <title>Never give money to Russia</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/61tYT6Gl-_E/never-give-money-to-russia</link>
      <description>&lt;p&gt;Well, this could be a long story if it was not a sad story. I’m writing this post just as yet another reminder to all of you and to myself as well. Never Give Money To Russia!&lt;/p&gt;

&lt;p&gt;&lt;img src="http://paulphilippov.com/files/russia7-fraud.png" alt="Russia7 is a fraud!" /&gt;&lt;/p&gt;

&lt;p&gt;On the sunny morning (or was it a gloomy afternoon) of October 1st me and my wife have decided to buy new computer hardware to be even more mobile and prepared for work on the go — we thought we need new laptops (or notebooks as we say here in Russia). Before the day I’ve spend a week researching and comparing different brands and models, reading official reviews and learning from people in forums. My final choice was for Dell Inspiron 640m, 14” with high-resolution screen working at 1440x900. Good value for money, light enough to bring it with me in trips and comfortable for daily work with the spacy desktop. Besides, I knew Dell hardware is Linux-friendly so that was a good choice for our Windows-less family.&lt;/p&gt;

&lt;p&gt;That day Russian popular search engine Yandex threw me few relevant links to different computer shops in Moscow having the Dell Insiron 640m in their online price lists. I grab telephone and started to call to these shops and found most of their price lists are out of date and required model is out of stock. One shop told me they have the laptop and can ship it to Svetlogorsk (where we live) with help of a well-known logistic company I’m confident in. The manager on the phone, named Ivan, was not sure about delivery price and instead offered me to pay them only price of the laptop and then pay shipping fee to the courier upon delivery. That is a common practice so I agreed. Since the Dell model appeared to be rare in Russia and on the other hand it was good for both me and my wife I asked if they have a couple in stock and they had. In five minutes I got a photocopy of the shop’s invoice stamped with a blue stamp, and made immediate electronic transfer from my banking account to the shop. I got another confirmation from the manager thanking for prompt payment, he promised me to send a number of shipment order onto my email as soon as the purchased laptops are shipped so i could track the shipment. It never happened. The phone number mentioned on the web site is a cellphone with so-called “direct number” (it looks absolutely as land-line number and you’ll never know you are cheated). Some robot woman reports me the phone is disconnected or out of reach. Bank recipient of my payment refuse to give any information about the company (though they confirm my payment was received the next day as it has been sent). I feel myself fucked up and have a hole in our home budget of size of Greenland.&lt;/p&gt;

&lt;p&gt;Well, once again, for all of you and for me first — never buy from Russia! The shop’s name is Russia7 and it’s located at www.russia7.ru domain name. IT’S A FRAUD! Tell everyone, pass it on…&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=61tYT6Gl-_E:6very3Y0qr0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=61tYT6Gl-_E:6very3Y0qr0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=61tYT6Gl-_E:6very3Y0qr0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/61tYT6Gl-_E" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/never-give-money-to-russia</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Wed, 17 Oct 2007 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/never-give-money-to-russia</feedburner:origLink></item>
    <item>
      <title>Mistery of light</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/aWCP-KRQoC0/mistery-of-light</link>
      <description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/themactep/1100448812/in/set-844764"&gt;&lt;img src="http://farm2.staticflickr.com/1220/1100448812_c6e1561eca_n.jpg" alt="Foggy Night" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mistery of light in a foggy night&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=aWCP-KRQoC0:GKndROys03I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=aWCP-KRQoC0:GKndROys03I:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=aWCP-KRQoC0:GKndROys03I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/aWCP-KRQoC0" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/mistery-of-light</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sun, 19 Aug 2007 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/mistery-of-light</feedburner:origLink></item>
    <item>
      <title>nVidia fails on Gentoo</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/8opqgg6xols/nvidia-fails-on-gentoo</link>
      <description>&lt;p&gt;I’ve compiled new kernel for Gentoo Linux running on my wife’s computer and X server failed to start. In log I found:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(EE) NVIDIA(0): Failed to obtain a shared memory identifier.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It took me a couple of hours to bring it back to life. So if you experience similar issue here’s the quick answer:&lt;/p&gt;

&lt;p&gt;Probably System V IPC is not enabled in your kernel configuration. Enable it running make &lt;code&gt;menuconfig&lt;/code&gt; and checking&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;General setup —&amp;gt; [*] System V IPC
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;or just set&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CONFIG_SYSVIPC=y
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;in &lt;code&gt;/usr/src/linux/.config&lt;/code&gt; file manually.&lt;/p&gt;

&lt;p&gt;Recompile both kernel and nVidia driver and reboot. It worked for me.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=8opqgg6xols:qXspfYUG__o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=8opqgg6xols:qXspfYUG__o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=8opqgg6xols:qXspfYUG__o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/8opqgg6xols" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/nvidia-fails-on-gentoo</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Thu, 12 Jul 2007 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/nvidia-fails-on-gentoo</feedburner:origLink></item>
    <item>
      <title>Just Married</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/cSx3Yl0v9Nw/just-married</link>
      <description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/themactep/458643724/in/set-72057594059783875"&gt;&lt;img src="http://farm1.staticflickr.com/186/458643724_5285f322b8_n.jpg" alt="Just Married" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, finally… =)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=cSx3Yl0v9Nw:CTDe0iIRxto:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=cSx3Yl0v9Nw:CTDe0iIRxto:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=cSx3Yl0v9Nw:CTDe0iIRxto:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/cSx3Yl0v9Nw" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/just-married</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sat, 14 Apr 2007 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/just-married</feedburner:origLink></item>
    <item>
      <title>Poland</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/0XWxCXI-ZoM/poland</link>
      <description>&lt;p&gt;Last week, Eugenia and me had a wonderful trip to Poland, the country where my grandparents from father’s side originated from. We have got a chance to visit two interesting cities — Gdańsk and Kraków. Gdańsk is located at the North of Poland, on the Baltic sea. While Kraków is on the very deep South of the country. Both cities have many nice old buildings, churches, castles which lit up at night.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/themactep/428318300/in/set-72157600011667978"&gt;&lt;img src="http://farm1.staticflickr.com/172/428318300_8b59e6bdef.jpg" alt="Gdansk at night" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="krakw-cracow"&gt;Kraków (Cracow)&lt;/h2&gt;
&lt;p&gt;Cracow (or Kraków in Polish) is almost as old as Königsberg/Kaliningrad — it has received city rights under the Magdeburg Law in 1257, and there will be 750-th anniversary of Kraków Lokacjia this year.&lt;/p&gt;

&lt;p&gt;Nowadays, the city is a living holiday. There are millions of places to visit and spend time with pleasure. From hilarious museums to cosy cafe and bars with cheap and tasty food. It’s a city of smiles and good mood. Though this city has seen a lot of scary things during The World War II:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The Nazi German forces entered Kraków in September of that year. It became the capital of the General Government, a colonial authority under the leadership of Hans Frank. The occupation took a heavy toll, particularly on the city’s cultural heritage. On one occasion, over 150 professors and other academics of the Jagiellonian University were summoned to a meeting, arrested and dispatched to the concentration camp at Sachsenhausen (see also Sonderaktion Krakau). Many relics and monuments of national culture were destroyed and looted. Major concentration camps near Kraków included Plaszow and Auschwitz, to which many Polish Jews were sent. Specific events surrounding the Jewish ghetto in Kraków and the nearby concentration camps were famously portrayed in the film Schindler’s List, itself based on a book by Thomas Keneally entitled Schindler’s Ark.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Krak%C3%B3w"&gt;Krakow in Wikipedia&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stanisław Lem, one of the greatest science fiction writers, lived in Kraków. Such famous names as Władysław II Jagiełło, Nicolas Copernicus, Pope John Paul II are in relations with the city.&lt;/p&gt;

&lt;p&gt;We have stayed in a very cosy place called Honey Apartment, in historic Kazimierz district. The Honey Apartment on ul. Miodowa 21 is the right place to stay if you are going to visit Kraków. Please call Magdalena for prior booking, her number is +48-608-159-349 (mind the time difference).&lt;/p&gt;

&lt;h2 id="gdask"&gt;Gdańsk&lt;/h2&gt;
&lt;p&gt;On the way back home, we had a night to spend in Gdańsk while waiting for a train to Kaliningrad. Being located on Baltic sea Gdańsk is much more cold place than Kraków. I had a film roll in my camera, and I thought to make some photos of great Gothic churches of former Danzig of Ostpreußen. Though it was already dark outside, and cold wind from Wisła river made my whole body trembling, I made a couple dozen shots. They are still in photo lab yet, but keep your eyes on &lt;a href="http://flickr.com/photos/themactep"&gt;my Flickr photo stream&lt;/a&gt; to see them full size as soon as I get them developed.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Gda%C5%84sk"&gt;Gdańsk in Wikipedia&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I like Poland a lot. It’s a beautiful country full of friendly people, who, like we Russians, used to be under pressure of Soviets’ regime. But despites the hard times they had stepped over it and are moving forward, while Russia builds another Iron Curtain and praises Russia for Russians policy.&lt;/p&gt;

&lt;p&gt;Hey Poland, we love ya! We’ll be back! =)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=0XWxCXI-ZoM:IXC1gJgZtZU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=0XWxCXI-ZoM:IXC1gJgZtZU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=0XWxCXI-ZoM:IXC1gJgZtZU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/0XWxCXI-ZoM" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/poland</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Tue, 20 Mar 2007 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/poland</feedburner:origLink></item>
    <item>
      <title>Another Shuttle in da house</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/isaUtr4iW-s/another-shuttle-in-da-house</link>
      <description>&lt;p&gt;&lt;img src="http://paulphilippov.com/files/shuttle-sb81p.jpg" alt="Suttle SB81P" /&gt;&lt;/p&gt;

&lt;p&gt;We’ve got a new player in our team. It’s a Shuttle SB81P mini computer, silent and powerful. Almost as little as Eugenia’s Shuttle SS59G we have bought last August. Mine is black and its glossy front panel with matte silver elements perfectly matches exterior of ViewSonic VX2235wm LCD monitor. Now I’m looking for a black stylish keyboard to complete the orchestra =)&lt;/p&gt;

&lt;p&gt;The new computer has Intel P4 3GHz CPU (Prescott) with Hyper Threading technology and is almost twice more powerful than my previous AMD Athlon XP based system. I’ve installed Gentoo Linux with custom kernel compiled to support only existing hardware and now it runs lightning fast.&lt;/p&gt;

&lt;p&gt;If you are going to upgrade your PC visit Shuttle web site. I bet you’ll like what you see.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=isaUtr4iW-s:fpJ-mGAeaGI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=isaUtr4iW-s:fpJ-mGAeaGI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=isaUtr4iW-s:fpJ-mGAeaGI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/isaUtr4iW-s" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/another-shuttle-in-da-house</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sun, 11 Mar 2007 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/another-shuttle-in-da-house</feedburner:origLink></item>
    <item>
      <title>Happy New Year!</title>
      <link>http://feedproxy.google.com/~r/paulphilippov/~3/uFIGuyYX5AU/happy-new-year</link>
      <description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/themactep/339875416/in/set-72057594059783875"&gt;&lt;img src="http://farm1.staticflickr.com/150/339875416_9c9cc80ba7_n.jpg" alt="Happy New Year" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would like to thank everyone for visiting my photostream and blog.
Wishing you the Happiest New Year 2007!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=uFIGuyYX5AU:UKEQ_nV1dZc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=uFIGuyYX5AU:UKEQ_nV1dZc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/paulphilippov?a=uFIGuyYX5AU:UKEQ_nV1dZc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/paulphilippov?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/paulphilippov/~4/uFIGuyYX5AU" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://paulphilippov.com/articles/happy-new-year</guid>
      <author>paul@ppds.ws (Paul Philippov)</author>
      <pubDate>Sun, 31 Dec 2006 00:00:00 GMT</pubDate>
    <feedburner:origLink>http://paulphilippov.com/articles/happy-new-year</feedburner:origLink></item>
  </channel>
</rss>
