<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Linux on Life</title><link>/tags/linux/</link><description>Recent content in Linux on Life</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 21 Sep 2018 08:16:00 +0530</lastBuildDate><atom:link href="/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>Fixing GlusterFS Geo-Replication Failure on Fedora</title><link>/post/2018/2018-09-21-glusterfs-on-fedora-on-break-geo-replication/</link><pubDate>Fri, 21 Sep 2018 08:16:00 +0530</pubDate><guid>/post/2018/2018-09-21-glusterfs-on-fedora-on-break-geo-replication/</guid><description>&lt;p&gt;GlusterFS geo-replication can fail on Fedora due to a missing dynamic library symlink.&lt;/p&gt;
&lt;p&gt;Checking &lt;code&gt;/var/log/glusterfs/geo-replication/gv0_node1/gsyncd.log&lt;/code&gt; reveals:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Changes&lt;/span&gt;(object):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; File &lt;span style="color:#e6db74"&gt;&amp;#34;/usr/libexec/glusterfs/python/syncdaemon/libgfchangelog.py&amp;#34;&lt;/span&gt;, line &lt;span style="color:#ae81ff"&gt;19&lt;/span&gt;, &lt;span style="color:#f92672"&gt;in&lt;/span&gt; Changes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; use_errno&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; File &lt;span style="color:#e6db74"&gt;&amp;#34;/usr/lib64/python2.7/ctypes/__init__.py&amp;#34;&lt;/span&gt;, line &lt;span style="color:#ae81ff"&gt;361&lt;/span&gt;, &lt;span style="color:#f92672"&gt;in&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;__init__&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;_handle &lt;span style="color:#f92672"&gt;=&lt;/span&gt; _dlopen(self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;_name, mode)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;OSError&lt;/span&gt;: &lt;span style="color:#f92672"&gt;/&lt;/span&gt;usr&lt;span style="color:#f92672"&gt;/&lt;/span&gt;lib64&lt;span style="color:#f92672"&gt;/&lt;/span&gt;libgfchangelog&lt;span style="color:#f92672"&gt;.&lt;/span&gt;so: cannot open shared object file: No such file &lt;span style="color:#f92672"&gt;or&lt;/span&gt; directory
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Looking at &lt;code&gt;/usr/libexec/glusterfs/python/syncdaemon/libgfchangelog.py&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Changes&lt;/span&gt;(object):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; libgfc &lt;span style="color:#f92672"&gt;=&lt;/span&gt; CDLL(&lt;span style="color:#e6db74"&gt;&amp;#34;/usr/lib64/libgfchangelog.so&amp;#34;&lt;/span&gt;, mode&lt;span style="color:#f92672"&gt;=&lt;/span&gt;RTLD_GLOBAL,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; use_errno&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On Fedora and RHEL, bare &lt;code&gt;.so&lt;/code&gt; library symlinks (as opposed to versioned sonames like &lt;code&gt;.so.0&lt;/code&gt;) are provided by the &lt;code&gt;-devel&lt;/code&gt; development packages. To resolve this error, install the development package:&lt;/p&gt;</description></item><item><title>Building the Canon MF3010 Printer Driver on Fedora 25</title><link>/post/2016/2016-11-16-building-canon-mf3010-driver-on-fedora25/</link><pubDate>Wed, 16 Nov 2016 14:49:00 +0530</pubDate><guid>/post/2016/2016-11-16-building-canon-mf3010-driver-on-fedora25/</guid><description>&lt;p&gt;To build the Canon imageCLASS MF3010 Linux driver from source, download the &amp;ldquo;UFR II/UFR II LT Printer Driver for Linux V3.20&amp;rdquo; archive from Canon&amp;rsquo;s support website.&lt;/p&gt;
&lt;p&gt;On Fedora 25, you need two adjustments to build the RPM cleanly:&lt;/p&gt;
&lt;h3 id="1-spec-file-patch-cndrvcups-commonspec"&gt;1. Spec File Patch (&lt;code&gt;cndrvcups-common.spec&lt;/code&gt;)&lt;/h3&gt;
&lt;p&gt;Exclude internal dependency requirements and apply the &lt;code&gt;gmodule&lt;/code&gt; patch:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;--- cndrvcups-common.spec.orig 2016-11-16 14:37:13.341877857 +0530
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;+++ cndrvcups-common.spec 2016-11-16 14:34:40.674461102 +0530
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;@@ -1,5 +1,6 @@
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; %define VERSION 3.60
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; %define RELEASE 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;+%global __requires_exclude ^libcaiousb.so$
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; %ifarch x86_64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; %define libs32 /usr/lib
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;@@ -19,6 +20,7 @@ Vendor: CANON INC.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Group: Applications/Publishing
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Source: cndrvcups-common-%{version}-%{release}.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;+Patch0: cndrvcups-common-gmodule.patch
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; BuildRoot: %{_tmppath}/%{name}-root
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;@@ -27,6 +29,8 @@ BuildRoot: %{_tmppath}/%{name}-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; %prep
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; %setup -q
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;+%patch0 -p1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;+
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cd buftool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ./autogen.sh --prefix=%{_prefix} --enable-progpath=%{_bindir} --libdir=%{_libdir} --disable-shared --enable-static
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-add-gmodule-dependency-patch"&gt;2. Add &lt;code&gt;gmodule&lt;/code&gt; Dependency Patch&lt;/h3&gt;
&lt;p&gt;In modern Fedora releases, &lt;code&gt;gmodule&lt;/code&gt; must be explicitly included in &lt;code&gt;PKG_CHECK_MODULES&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Running Sky (tel.red) on Fedora 25</title><link>/post/2016/2016-09-01-running-sky-from-tel-red-on-fedora25/</link><pubDate>Thu, 01 Sep 2016 13:41:00 +0530</pubDate><guid>/post/2016/2016-09-01-running-sky-from-tel-red-on-fedora25/</guid><description>&lt;p&gt;On Fedora 25, the Sky Skype for Business client crashes on launch inside its bundled Qt 5 runtime:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Program received signal SIGABRT, Aborted.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;0x00007ffff112692f in raise () from /lib64/libc.so.6
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(gdb) bt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#0 0x00007ffff112692f in raise () at /lib64/libc.so.6
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#1 0x00007ffff112852a in abort () at /lib64/libc.so.6
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#2 0x00007ffff200dcb1 in () at /usr/lib/sky/lib/libQt5Core.so.5
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#3 0x00007ffff24ee835 in QGuiApplicationPrivate::createPlatformIntegration() () at /usr/lib/sky/lib/libQt5Gui.so.5
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#4 0x00007ffff24ee955 in QGuiApplicationPrivate::createEventDispatcher() () at /usr/lib/sky/lib/libQt5Gui.so.5
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#5 0x00007ffff21cea64 in QCoreApplicationPrivate::init() () at /usr/lib/sky/lib/libQt5Core.so.5
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#6 0x00007ffff24f2340 in QGuiApplicationPrivate::init() () at /usr/lib/sky/lib/libQt5Gui.so.5
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#7 0x00007ffff2be62b9 in QApplicationPrivate::init() () at /usr/lib/sky/lib/libQt5Widgets.so.5
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#8 0x0000000000434e41 in main ()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The issue stems from incompatible bundled Qt libraries. A reliable workaround is to force Sky to use Fedora&amp;rsquo;s system-provided &lt;code&gt;qt5&lt;/code&gt; packages:&lt;/p&gt;</description></item><item><title>Installing Splunk Universal Forwarder Using Ansible</title><link>/post/2016/2016-08-07-installing-splunkforwarder-using-ansible/</link><pubDate>Sun, 07 Aug 2016 21:58:00 +0530</pubDate><guid>/post/2016/2016-08-07-installing-splunkforwarder-using-ansible/</guid><description>&lt;p&gt;Here is an automated approach to installing and initializing the Splunk Universal Forwarder with Ansible.&lt;/p&gt;
&lt;h3 id="variables"&gt;Variables&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;splunk_home&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;/opt/splunkforwarder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;splunk_exec&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;{{ splunk_home }}/bin/splunk&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="playbook-tasks"&gt;Playbook Tasks&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Install Splunk Universal Forwarder package&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;yum&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;splunkforwarder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;state&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;become&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Check for first-time-run marker file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;stat&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;path&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;{{ splunk_home }}/ftr&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;register&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;result_splunk_ftr_stat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Configure Splunk forwarder on initial installation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;block&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Ensure existing running splunkd process is stopped&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;shell&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;ps aux | grep -v grep | grep splunkd &amp;amp;&amp;amp; pkill -9 splunkd || true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Accept license agreement and start service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;shell&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;{{ splunk_exec }} start --accept-license --answer-yes --no-prompt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#f92672"&gt;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Enable Splunk forwarder boot-start service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;shell&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;{{ splunk_exec }} enable boot-start&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;when&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;result_splunk_ftr_stat.stat.exists&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;become&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Run the playbook, and your forwarder is initialized and configured to start on boot.&lt;/p&gt;</description></item><item><title>phpIPAM Behind a Load Balancer with SSL Offloading</title><link>/post/2016/2016-05-07-phpipam-behind-a-load-balancer-which-handles-ssl-offloading/</link><pubDate>Sat, 07 May 2016 10:06:00 +0530</pubDate><guid>/post/2016/2016-05-07-phpipam-behind-a-load-balancer-which-handles-ssl-offloading/</guid><description>&lt;p&gt;phpIPAM supports SSL offloading via standard &lt;code&gt;X-Forwarded-Proto&lt;/code&gt; and &lt;code&gt;X-Forwarded-For&lt;/code&gt; HTTP request headers:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;createURL&lt;/span&gt; () {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// Reset URL for base
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; ($_SERVER[&lt;span style="color:#e6db74"&gt;&amp;#39;SERVER_PORT&amp;#39;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;443&amp;#34;&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $url &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://&lt;/span&gt;&lt;span style="color:#e6db74"&gt;$_SERVER[HTTP_HOST]&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// Reverse proxy doing SSL offloading
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;elseif&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;isset&lt;/span&gt;($_SERVER[&lt;span style="color:#e6db74"&gt;&amp;#39;HTTP_X_FORWARDED_PROTO&amp;#39;&lt;/span&gt;]) &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; $_SERVER[&lt;span style="color:#e6db74"&gt;&amp;#39;HTTP_X_FORWARDED_PROTO&amp;#39;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;https&amp;#39;&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $url &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://&lt;/span&gt;&lt;span style="color:#e6db74"&gt;$_SERVER[SERVER_NAME]&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;elseif&lt;/span&gt; (&lt;span style="color:#a6e22e"&gt;isset&lt;/span&gt;($_SERVER[&lt;span style="color:#e6db74"&gt;&amp;#39;HTTP_X_SECURE_REQUEST&amp;#39;&lt;/span&gt;]) &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; $_SERVER[&lt;span style="color:#e6db74"&gt;&amp;#39;HTTP_X_SECURE_REQUEST&amp;#39;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;true&amp;#39;&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $url &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://&lt;/span&gt;&lt;span style="color:#e6db74"&gt;$_SERVER[SERVER_NAME]&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// Custom port
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;elseif&lt;/span&gt; ($_SERVER[&lt;span style="color:#e6db74"&gt;&amp;#39;SERVER_PORT&amp;#39;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;!=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;80&amp;#34;&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $url &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;http://&lt;/span&gt;&lt;span style="color:#e6db74"&gt;$_SERVER[SERVER_NAME]&lt;/span&gt;&lt;span style="color:#e6db74"&gt;:&lt;/span&gt;&lt;span style="color:#e6db74"&gt;$_SERVER[SERVER_PORT]&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// Normal HTTP ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, if your load balancer does not forward this header or SSL offloading is misconfigured, phpIPAM may generate broken HTTP redirect loops or fail to load CSS and JavaScript assets.&lt;/p&gt;</description></item><item><title>Disabling SSL Verification in pyVmomi with Python</title><link>/post/2016/2016-03-31-python-disabling-ssl-verification-on-pyvmomi-on-python/</link><pubDate>Thu, 31 Mar 2016 23:39:00 +0530</pubDate><guid>/post/2016/2016-03-31-python-disabling-ssl-verification-on-pyvmomi-on-python/</guid><description>&lt;p&gt;Working with self-signed vCenter certificates in an enterprise environment (such as RHEL 6 running mixed Python 2.6/2.7 and &lt;code&gt;pyvmomi&lt;/code&gt; 5.5+) often leads to this error:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;File &amp;#34;/usr/lib/python2.6/site-packages/requests/adapters.py&amp;#34;, line 447, in send
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; raise SSLError(e, request=request)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;requests.exceptions.SSLError: [Errno 1] _ssl.c:492: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you need a quick workaround to bypass certificate verification in development scripts:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; ssl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; requests
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; pyVim.connect &lt;span style="color:#f92672"&gt;import&lt;/span&gt; SmartConnect
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;context &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;try&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Disable SSL certificate verification via standard library&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; context &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ssl&lt;span style="color:#f92672"&gt;.&lt;/span&gt;SSLContext(ssl&lt;span style="color:#f92672"&gt;.&lt;/span&gt;PROTOCOL_SSLv3)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; context&lt;span style="color:#f92672"&gt;.&lt;/span&gt;verify_mode &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ssl&lt;span style="color:#f92672"&gt;.&lt;/span&gt;CERT_NONE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;except&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;AttributeError&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Fallback monkey-patch for older Python/requests environments&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rget &lt;span style="color:#f92672"&gt;=&lt;/span&gt; requests&lt;span style="color:#f92672"&gt;.&lt;/span&gt;get
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; requests&lt;span style="color:#f92672"&gt;.&lt;/span&gt;get &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;lambda&lt;/span&gt; obj, &lt;span style="color:#f92672"&gt;*&lt;/span&gt;args, &lt;span style="color:#f92672"&gt;**&lt;/span&gt;kwargs: rget(obj, verify&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; requests&lt;span style="color:#f92672"&gt;.&lt;/span&gt;packages&lt;span style="color:#f92672"&gt;.&lt;/span&gt;urllib3&lt;span style="color:#f92672"&gt;.&lt;/span&gt;disable_warnings()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Connect to ESXi / vCenter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;si &lt;span style="color:#f92672"&gt;=&lt;/span&gt; SmartConnect(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; host&lt;span style="color:#f92672"&gt;=&lt;/span&gt;args&lt;span style="color:#f92672"&gt;.&lt;/span&gt;host,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user&lt;span style="color:#f92672"&gt;=&lt;/span&gt;user,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pwd&lt;span style="color:#f92672"&gt;=&lt;/span&gt;args&lt;span style="color:#f92672"&gt;.&lt;/span&gt;password,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; port&lt;span style="color:#f92672"&gt;=&lt;/span&gt;int(args&lt;span style="color:#f92672"&gt;.&lt;/span&gt;port),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sslContext&lt;span style="color:#f92672"&gt;=&lt;/span&gt;context
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This bypasses certificate validation issues so you can get back to writing your automation scripts.&lt;/p&gt;</description></item><item><title>Fixing BSNL DNS Redirection to domain-error.com</title><link>/post/2016/2016-03-28-bsnl-redirecting-to-http-domain-error-com/</link><pubDate>Mon, 28 Mar 2016 17:18:00 +0530</pubDate><guid>/post/2016/2016-03-28-bsnl-redirecting-to-http-domain-error-com/</guid><description>&lt;p&gt;BSNL&amp;rsquo;s default DNS servers hijack unresolved domain queries and redirect users to ad-laden spam pages like &lt;code&gt;http://domain-error.com&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To prevent this ISP hijacking, configure NetworkManager to ignore ISP-assigned DNS servers and use Google Public DNS instead.&lt;/p&gt;
&lt;p&gt;Edit your NetworkManager connection profile in &lt;code&gt;/etc/NetworkManager/system-connections/&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[ipv4]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;dns&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;8.8.8.8;8.8.4.4;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;dns-search&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;method&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;auto&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ignore-auto-dns&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Alternatively, you can configure this graphically or via the terminal interface with &lt;code&gt;nmtui&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nmtui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="references"&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/speed/public-dns/"&gt;Google Public DNS Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://askubuntu.com/questions/708762/redirecting-to-http-domain-error-com"&gt;Ask Ubuntu: Redirecting to http://domain-error.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Using Zabbix 3.0 on Enterprise Linux 6 (EL6)</title><link>/post/2016/2016-03-23-using-zabbix-3-0-on-el6/</link><pubDate>Wed, 23 Mar 2016 17:47:00 +0530</pubDate><guid>/post/2016/2016-03-23-using-zabbix-3-0-on-el6/</guid><description>&lt;p&gt;Zabbix 3.0 requires PHP 5.4 or above and is consequently not officially available in base RHEL/CentOS 6 repositories.&lt;/p&gt;
&lt;p&gt;To run Zabbix 3.0 with MariaDB 10.1 and PHP 5.6 (&lt;code&gt;php56u&lt;/code&gt;), I built packages for EL6 on Fedora COPR:
&lt;a href="https://copr.fedorainfracloud.org/coprs/ritz/zabbix30/"&gt;COPR: ritz/zabbix30&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These RPMs are built for Zabbix 3.0.1 linked against MariaDB 10.1.x and PHP 5.6.19.&lt;/p&gt;
&lt;h3 id="useful-resources"&gt;Useful Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.zabbix.com/documentation/3.0/manual/installation/install_from_packages"&gt;Official Zabbix 3.0 Installation Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zabbix.org/wiki/Get_Zabbix"&gt;Zabbix Database Creation SQL Scripts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Using C++ REST SDK (Casablanca) on Fedora Linux</title><link>/post/2016/2016-03-13-using-c-rest-on-fedora-linux/</link><pubDate>Sun, 13 Mar 2016 17:23:00 +0530</pubDate><guid>/post/2016/2016-03-13-using-c-rest-on-fedora-linux/</guid><description>&lt;p&gt;Microsoft has open-sourced Casablanca (the C++ REST SDK) on &lt;a href="https://github.com/Microsoft/cpprestsdk/"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To make it easy to use on Fedora, I packaged and published RPMs on Fedora COPR:
&lt;a href="https://copr.fedorainfracloud.org/coprs/ritz/cpprestsdk/"&gt;COPR: ritz/cpprestsdk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To enable the repository and install:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dnf copr enable ritz/cpprestsdk
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dnf install cpprest-devel
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Happy compiling with &lt;code&gt;-lcpprest&lt;/code&gt;!&lt;/p&gt;</description></item><item><title>Lync on Linux</title><link>/post/2015/2015-07-13-lync-on-linux/</link><pubDate>Mon, 13 Jul 2015 20:58:00 +0530</pubDate><guid>/post/2015/2015-07-13-lync-on-linux/</guid><description>&lt;p&gt;If you are looking to run Microsoft Lync (aka Skype for Business) on Linux, you&amp;rsquo;re in luck: &lt;a href="http://fisil.com/"&gt;Fisil&lt;/a&gt; maintains a Linux client hosted at &lt;a href="http://tel.red/"&gt;tel.red&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, I ran into an issue running the client on Fedora 23 (Rawhide), as the Sky package bundles its own older X11 libraries:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sky
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/opt/sky_linux/sky: symbol lookup error: /lib64/libXxf86vm.so.1: undefined symbol: _XEatDataWords
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;_XEatDataWords&lt;/code&gt; was added to fix an upstream X.Org vulnerability (&lt;a href="http://cgit.freedesktop.org/xorg/lib/libXxf86vm/commit/id=284a88e21fc05a63466115b33efa411c60d988c9"&gt;commit details&lt;/a&gt;). The workaround is to preload your distribution&amp;rsquo;s native &lt;code&gt;libX11&lt;/code&gt; library:&lt;/p&gt;</description></item><item><title>Closing Apps in Window Picker Mode in GNOME Shell</title><link>/post/2011/2011-12-25-closing-apps-in-quot-window-pickermode-quot-in-gnome-shell/</link><pubDate>Sun, 25 Dec 2011 21:20:00 +0530</pubDate><guid>/post/2011/2011-12-25-closing-apps-in-quot-window-pickermode-quot-in-gnome-shell/</guid><description>&lt;p&gt;One of the pain points when using a touchscreen device is closing applications while in window picker (overview) mode.&lt;/p&gt;
&lt;p&gt;Why not add a &amp;ldquo;Trash Can&amp;rdquo; target to the dash or dock where windows can simply be dragged and dropped to close them? It would only need to be visible while in the window picker overview.&lt;/p&gt;
&lt;p&gt;Thoughts?&lt;/p&gt;
&lt;p&gt;&lt;img alt="GNOME Shell Window Picker" loading="lazy" src="../../post/2011/images/gnome-shell-window-picker.png"&gt;&lt;/p&gt;</description></item><item><title>Tablets: Unity and GNOME Shell</title><link>/post/2011/2011-12-24-tablets-unity-and-gnome-shell/</link><pubDate>Sat, 24 Dec 2011 08:17:00 +0530</pubDate><guid>/post/2011/2011-12-24-tablets-unity-and-gnome-shell/</guid><description>&lt;p&gt;I have been thinking about writing this down for quite a while: my hands-on experiences testing Ubuntu Unity and GNOME Shell on the WeTab tablet.&lt;/p&gt;
&lt;h3 id="unity"&gt;Unity&lt;/h3&gt;
&lt;p&gt;Unity makes a fine netbook interface, but tablet support feels underdeveloped. After configuring auto-login, I was greeted by the standard desktop and launcher. However, launching an application and maximizing it hides the dock launcher entirely, making it awkward to bring back with a finger. Furthermore, scrollbars are difficult to grab, and multi-touch gestures like drag-to-scroll aren&amp;rsquo;t yet implemented. Aside from those tablet friction points, the interface shows potential.&lt;/p&gt;</description></item><item><title>FUDCon 2011: Here I Come!</title><link>/post/2011/2011-11-01-fudcon-2011-here-i-come/</link><pubDate>Tue, 01 Nov 2011 00:04:00 +0530</pubDate><guid>/post/2011/2011-11-01-fudcon-2011-here-i-come/</guid><description>&lt;p&gt;&lt;a href="http://fudcon.in/" title="FUDCon Pune 2011"&gt;&lt;img alt="FUDCon Pune 2011 Banner" loading="lazy" src="../../post/2011/images/fudcon-pune-2011-banner.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I am heading to FUDCon Pune this year! I hope to present a talk to help newcomers get started with contributing to open source, specifically within the GNOME project.&lt;/p&gt;
&lt;p&gt;Please check out and vote for my session here:
&lt;a href="http://fudcon.in/sessions/contributing-opensource"&gt;Contributing to Open Source (FUDCon Session)&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Changing Brightness from GNOME Shell</title><link>/post/2011/2011-09-07-changing-brightness-from-gnome-shell/</link><pubDate>Wed, 07 Sep 2011 23:23:00 +0530</pubDate><guid>/post/2011/2011-09-07-changing-brightness-from-gnome-shell/</guid><description>&lt;p&gt;&lt;code&gt;gnome-power-manager&lt;/code&gt; was rewritten for GNOME 3.2 and merged directly into &lt;code&gt;gnome-settings-daemon&lt;/code&gt; (g-s-d) as a plugin responsible for system power policy. Most power management is handled by UPower, with backlight brightness being a key exception. Backlight is managed at the session level by &lt;code&gt;gnome-settings-daemon&lt;/code&gt; via its power plugin using XRandR or standard &lt;code&gt;sysfs&lt;/code&gt;, depending on hardware and driver support.&lt;/p&gt;
&lt;p&gt;To read screen brightness over D-Bus:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gdbus call --session &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --dest org.gnome.SettingsDaemon &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --object-path /org/gnome/SettingsDaemon/Power &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --method org.gnome.SettingsDaemon.Power.Screen.GetPercentage
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Why bother with this? On a tablet device (such as the WeTab), brightness settings were buried deep in system menus and cumbersome to reach. With the custom GNOME Shell brightness extension (&lt;a href="http://people.redhat.com/rkhadgar/personal/gnome3-tablet/brightness.tar.xz"&gt;download archive&lt;/a&gt;), you can adjust screen brightness directly from the top bar. This requires patching &lt;code&gt;gnome-settings-daemon&lt;/code&gt; to emit the &lt;code&gt;Changed&lt;/code&gt; signal (&lt;a href="https://bugzilla.gnome.org/show_bug.cgi?id=658493"&gt;GNOME Bug 658493&lt;/a&gt;).&lt;/p&gt;</description></item><item><title>Linux and the Desktop</title><link>/post/2011/2011-08-07-linux-and-desktop/</link><pubDate>Sun, 07 Aug 2011 00:38:00 +0530</pubDate><guid>/post/2011/2011-08-07-linux-and-desktop/</guid><description>&lt;p&gt;It&amp;rsquo;s been a blast—Linux on the desktop never ceases to amaze me.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.desktopsummit.org/"&gt;&lt;img alt="Desktop Summit 2011 Banner" loading="lazy" src="../../post/2011/images/desktop-summit-2011-banner.png"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The Year 2038 Problem (Y2038)</title><link>/post/2011/2011-06-14-y2038/</link><pubDate>Tue, 14 Jun 2011 16:22:00 +0530</pubDate><guid>/post/2011/2011-06-14-y2038/</guid><description>&lt;p&gt;Why should you migrate to &lt;code&gt;x86_64&lt;/code&gt; over 32-bit?&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/Year_2038_problem"&gt;Year 2038 Problem&lt;/a&gt; is not something you want to run into. Do your part: ensure your applications build and run cleanly on 64-bit systems, and move to &lt;code&gt;x86_64&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Looking at you, Flash and Skype: ಠ_ಠ)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Running 32-bit Flash on 64-bit Fedora with 64-bit Chrome</title><link>/post/2011/2011-06-14-flash-i686-on-fedora-linux-x86-64-with-chrome-x86-64/</link><pubDate>Tue, 14 Jun 2011 13:53:00 +0530</pubDate><guid>/post/2011/2011-06-14-flash-i686-on-fedora-linux-x86-64-with-chrome-x86-64/</guid><description>&lt;p&gt;To set up 32-bit Flash in 64-bit Chrome on Fedora &lt;code&gt;x86_64&lt;/code&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download and install the &lt;code&gt;adobe-release&lt;/code&gt; RPM package from &lt;a href="http://get.adobe.com/flashplayer/"&gt;Adobe Flash Player&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Install the Flash plugin and 32-bit compatibility wrapper packages:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo yum install flash-plugin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo yum install alsa-plugins-pulseaudio.i686 nspluginwrapper.i686 nspluginwrapper.x86_64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;Link the wrapped plugin into your 64-bit Mozilla plugins directory:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /usr/lib64/mozilla/plugins
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ln -s ../plugins-wrapped/nswrapper_32_64.libflashplayer.so .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Restart Chrome, and you are done!&lt;/p&gt;</description></item><item><title>Dell ST2220T Touchscreen Monitor on Linux</title><link>/post/2011/2011-06-14-dell-st2220t-on-linux/</link><pubDate>Tue, 14 Jun 2011 12:20:00 +0530</pubDate><guid>/post/2011/2011-06-14-dell-st2220t-on-linux/</guid><description>&lt;p&gt;Good news: the Dell ST2220T multi-touch monitor works on Fedora Linux using &lt;code&gt;evdev&lt;/code&gt; under Xorg!&lt;/p&gt;
&lt;p&gt;&lt;img alt="Dell ST2220T" loading="lazy" src="../../post/2011/images/dell-st2220t.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Special thanks to Gopal for tracing and testing this. Additional hardware diagnostic info is posted in &lt;a href="https://bugzilla.redhat.com/703118"&gt;Red Hat Bugzilla 703118&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Pushing for xchat-gnome 0.26.3</title><link>/post/2011/2011-04-15-pushing-for-xchat-gnome-0-26-3/</link><pubDate>Fri, 15 Apr 2011 16:49:00 +0530</pubDate><guid>/post/2011/2011-04-15-pushing-for-xchat-gnome-0-26-3/</guid><description>&lt;p&gt;&lt;code&gt;xchat-gnome&lt;/code&gt; 0.26.2 has been tagged, though it hasn&amp;rsquo;t yet been uploaded to &lt;code&gt;ftp.gnome.org&lt;/code&gt;. Instead, I am pushing for an immediate 0.26.3 release—hopefully the final release in the GTK+ 2.x series—followed by &lt;code&gt;xchat-gnome&lt;/code&gt; 0.3.0 targeting GNOME 3.&lt;/p&gt;</description></item><item><title>GNOME Legacy and GNOME 3</title><link>/post/2011/2011-02-25-gnome-legacy-and-gnome-3/</link><pubDate>Fri, 25 Feb 2011 22:02:00 +0530</pubDate><guid>/post/2011/2011-02-25-gnome-legacy-and-gnome-3/</guid><description>&lt;p&gt;For anyone who prefers to stick with &amp;ldquo;GNOME Legacy&amp;rdquo; (Fallback mode) rather than GNOME 3 with GNOME Shell, you can configure your default session by running:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /usr/share/gnome-session/sessions
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mv gnome.session gnome-new.session
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mv gnome-fallback.session gnome.session
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Evolution Evolved</title><link>/post/2010/2010-11-23-evolution-evovled/</link><pubDate>Tue, 23 Nov 2010 18:07:00 +0530</pubDate><guid>/post/2010/2010-11-23-evolution-evovled/</guid><description>&lt;p&gt;Notable improvements expected with the release of Evolution 3.0:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Migration of local mail storage from &lt;code&gt;mbox&lt;/code&gt; to the faster, more resilient &lt;code&gt;maildir&lt;/code&gt; format.&lt;/li&gt;
&lt;li&gt;Built-in duplicate email detection and removal.&lt;/li&gt;
&lt;li&gt;Significant memory usage and leak optimizations.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>RHEL 6 Is Out</title><link>/post/2010/2010-11-15-rhel6-is-out/</link><pubDate>Mon, 15 Nov 2010 14:29:00 +0530</pubDate><guid>/post/2010/2010-11-15-rhel6-is-out/</guid><description>&lt;p&gt;Red Hat Enterprise Linux 6 (RHEL 6) is out, and it brings a huge set of improvements over RHEL 5 for desktop users. Here is a curated list of highlights that I find particularly useful on an EL6 workstation:&lt;/p&gt;
&lt;h3 id="core-system--filesystems"&gt;Core System &amp;amp; Filesystems&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Upstart:&lt;/strong&gt; Replaces traditional SysV init (&lt;a href="http://upstart.ubuntu.com/wiki/"&gt;Upstart Wiki&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dracut:&lt;/strong&gt; Modern event-driven initramfs generator (&lt;a href="http://fedoraproject.org/wiki/Dracut"&gt;Dracut Wiki&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ext4:&lt;/strong&gt; Default robust filesystem (&lt;a href="http://fedoraproject.org/wiki/Features/Ext4"&gt;Fedora ext4 Feature&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Btrfs:&lt;/strong&gt; Available as a technology preview (&lt;a href="http://fedoraproject.org/wiki/Btrfs_in_Fedora_13"&gt;Btrfs in Fedora&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="boot--graphics"&gt;Boot &amp;amp; Graphics&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Plymouth:&lt;/strong&gt; Smooth graphical boot flicker-free animations (&lt;a href="http://www.freedesktop.org/wiki/Software/Plymouth"&gt;Plymouth&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kernel Mode Setting (KMS):&lt;/strong&gt; Native resolution and smooth transitions during boot (&lt;a href="http://fedoraproject.org/wiki/Features/KernelModesetting"&gt;KMS&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Xorg 1.7:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nouveau&lt;/code&gt; open-source driver for NVIDIA cards (&lt;a href="http://nouveau.freedesktop.org/wiki/"&gt;Nouveau&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;R600 3D hardware acceleration for AMD/ATI Radeon (&lt;a href="http://fedoraproject.org/wiki/Features/R600Accel"&gt;R600 Accel&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xrandr 1.3&lt;/code&gt; dynamic monitor handling (&lt;a href="http://lwn.net/Articles/319897/"&gt;LWN Article&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Native DisplayPort audio and video support&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="performance--security"&gt;Performance &amp;amp; Security&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tickless Kernel:&lt;/strong&gt; Significant power savings on idle systems (&lt;a href="http://fedoraproject.org/wiki/Releases/FeatureTicklessKernel"&gt;Tickless Kernel&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tuned:&lt;/strong&gt; Adaptive power management profiles (&lt;a href="http://fedoraproject.org/wiki/Features/PowerManagement"&gt;Power Management&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PolicyKit &amp;amp; XACE:&lt;/strong&gt; Fine-grained privilege management without root elevation (&lt;a href="http://hal.freedesktop.org/docs/polkit/"&gt;Polkit&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="desktop--multimedia"&gt;Desktop &amp;amp; Multimedia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GDM PAM Stacks:&lt;/strong&gt; Support for multiple authentication backends (&lt;a href="http://fedoraproject.org/wiki/Features/MultiplePAMStacksInGDM"&gt;Multiple PAM in GDM&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ConsoleKit Fast User Switching:&lt;/strong&gt; Seamless desktop switching (&lt;a href="http://fedoraproject.org/wiki/Desktop/FastUserSwitching"&gt;Fast User Switching&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PulseAudio:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Unified volume control across applications (&lt;a href="http://fedoraproject.org/wiki/Features/VolumeControl"&gt;Volume Control&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Glitch-free audio playback via timer-based scheduling (&lt;a href="http://fedoraproject.org/wiki/Features/GlitchFreeAudio"&gt;Glitch-Free Audio&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IBus:&lt;/strong&gt; Modern input method framework replacing SCIM (&lt;a href="http://fedoraproject.org/wiki/Features/IBus"&gt;IBus&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evolution 2.28:&lt;/strong&gt; Native support for Microsoft Exchange 2007+ via OpenChange (&lt;a href="http://fedoraproject.org/wiki/Features/OpenChange"&gt;OpenChange&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenOffice.org 3.x:&lt;/strong&gt; Native support for reading and writing Office Open XML (&lt;code&gt;.docx&lt;/code&gt;, &lt;code&gt;.xlsx&lt;/code&gt;) documents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NetworkManager:&lt;/strong&gt; System-wide connection profiles managed independently of user logins (&lt;a href="http://fedoraproject.org/wiki/Features/NetworkManagerSystemConnections"&gt;System Connections&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="desktop-environments"&gt;Desktop Environments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GNOME 2.28&lt;/strong&gt; (major upgrade from 2.16 in RHEL 5)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KDE 4.3&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Xfce&lt;/strong&gt; available via EPEL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SPICE:&lt;/strong&gt; High-performance remote desktop protocol support&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Official Press Release:&lt;/strong&gt; &lt;a href="http://www.redhat.com/about/news/prarchive/2010/flexibility-and-portability.html"&gt;Red Hat Flexibility and Portability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Product Overview:&lt;/strong&gt; &lt;a href="http://www.redhat.com/rhel/desktop/"&gt;Red Hat Enterprise Linux Desktop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>HP TouchSmart tx2</title><link>/post/2010/2010-02-22-hp-touchsmart-tx2/</link><pubDate>Mon, 22 Feb 2010 18:48:00 +0530</pubDate><guid>/post/2010/2010-02-22-hp-touchsmart-tx2/</guid><description>&lt;p&gt;I am the not-so-proud owner of an HP tx2 convertible tablet, and it has been quite a headache. It came preloaded with Windows Vista, along with an optional upgrade to Windows 7 available on request. The convertible laptop is heavy, has abysmal battery life, and heats up faster than a toaster.&lt;/p&gt;
&lt;p&gt;On the positive side, the tx2 is relatively compact with its 12&amp;quot; display, easy to carry around, includes an optical drive (which I still use occasionally), and features mostly Linux-compatible hardware. The touchscreen works under Linux, although I&amp;rsquo;ve currently misconfigured something there.&lt;/p&gt;</description></item><item><title>BSNL Internet Connection and Security</title><link>/post/2009/2009-06-09-bsnl-inet-connection-and-security/</link><pubDate>Tue, 09 Jun 2009 11:25:00 +0530</pubDate><guid>/post/2009/2009-06-09-bsnl-inet-connection-and-security/</guid><description>&lt;p&gt;In short: it&amp;rsquo;s terrible. Here is the longer story.&lt;/p&gt;
&lt;h3 id="the-modem"&gt;The Modem&lt;/h3&gt;
&lt;p&gt;The ISP-provided modem is a DNA A211. By default, it uses &lt;code&gt;admin&lt;/code&gt;/&lt;code&gt;admin&lt;/code&gt; credentials, and the web management console is accessible over Wi-Fi!&lt;/p&gt;
&lt;p&gt;It appears to run a Linux 2.6.8 kernel, likely with a GNU-based userland stack. However, I haven&amp;rsquo;t been able to locate the GPL source code published anywhere on their website.&lt;/p&gt;
&lt;p&gt;The modem requires a daily reboot to maintain a stable internet connection—I still haven&amp;rsquo;t figured that one out.&lt;/p&gt;</description></item><item><title>xchat-GNOME Fullscreen</title><link>/post/2009/2009-05-08-xchat-gnome-fullscreen/</link><pubDate>Fri, 08 May 2009 19:56:00 +0530</pubDate><guid>/post/2009/2009-05-08-xchat-gnome-fullscreen/</guid><description>&lt;p&gt;You love chatting over IRC, IRC is life, and you need your IRC client to support fullscreen mode! Look no further: &lt;code&gt;xchat-gnome&lt;/code&gt; requires only a trivial patch to support fullscreen.&lt;/p&gt;
&lt;p&gt;For more information, see &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=445638"&gt;Fullscreen support for xchat-gnome (GNOME Bug 445638)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Yes, &lt;code&gt;xchat-gnome&lt;/code&gt; needs your love!&lt;/p&gt;</description></item><item><title>Building RPMs Without Root</title><link>/post/2009/2009-05-08-rpmbuild/</link><pubDate>Fri, 08 May 2009 19:26:00 +0530</pubDate><guid>/post/2009/2009-05-08-rpmbuild/</guid><description>&lt;p&gt;When building RPM packages, always avoid using the root account. Fedora 11 configures non-root building by default.&lt;/p&gt;
&lt;p&gt;For instructions on patching and rebuilding source RPMs as a regular user, see:
&lt;a href="http://sadiquepp.blogspot.com/2009/02/how-to-patch-and-recompile-source-rpm.html"&gt;How to patch and recompile a source RPM&lt;/a&gt;&lt;/p&gt;</description></item><item><title>RPM, rpmbuild, and Macros</title><link>/post/2009/2009-05-08-rpm-rpmbuild-and-macros/</link><pubDate>Fri, 08 May 2009 19:26:00 +0530</pubDate><guid>/post/2009/2009-05-08-rpm-rpmbuild-and-macros/</guid><description>&lt;p&gt;When building RPMs, avoid using the root account. Fedora 11 configures non-root packaging by default. On other systems, create a &lt;code&gt;.rpmmacros&lt;/code&gt; file in your home directory with the following line:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;%_topdir %{getenv:HOME}/rpmbuild&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As an added bonus for systems with multilib architectures (such as &lt;code&gt;x86_64&lt;/code&gt;), add this format string to &lt;code&gt;.rpmmacros&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;%_solve_name_fmt %{?_solve_pkgsdir}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Reference:&lt;/strong&gt;
&lt;a href="http://sadiquepp.blogspot.com/2009/02/how-to-patch-and-recompile-source-rpm.html"&gt;How to patch and recompile a source RPM&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Receiving Files from Phone to Computer</title><link>/post/2009/2009-03-25-receiving-files-from-phone-to-computer/</link><pubDate>Wed, 25 Mar 2009 04:18:00 +0530</pubDate><guid>/post/2009/2009-03-25-receiving-files-from-phone-to-computer/</guid><description>&lt;p&gt;&lt;img alt="File Sharing Preferences" loading="lazy" src="../../post/2009/images/file-sharing-preferences.png"&gt;&lt;/p&gt;
&lt;p&gt;Duh! To receive files from a phone or other Bluetooth-enabled device to a laptop running Linux, make sure to enable the &lt;strong&gt;&amp;ldquo;Receive files in Downloads folder over Bluetooth&amp;rdquo;&lt;/strong&gt; option in GNOME File Sharing Preferences.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt; &lt;a href="http://fedoraproject.org/wiki/Features/BluetoothFedora9#Receiving_files_from_remote_Bluetooth_devices"&gt;Bluetooth on Fedora&lt;/a&gt;&lt;/p&gt;</description></item><item><title>SQLite vs. libgda</title><link>/post/2009/2009-03-22-sqlite-over-libgda/</link><pubDate>Sun, 22 Mar 2009 23:50:00 +0530</pubDate><guid>/post/2009/2009-03-22-sqlite-over-libgda/</guid><description>&lt;p&gt;A few things I have learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DDL (Data Definition Language) varies significantly from one SQL implementation to another.&lt;/li&gt;
&lt;li&gt;It is much easier and faster to maintain an application for a single database backend rather than across many.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;libgda&lt;/code&gt; is great when you are designing an application specifically meant to manage arbitrary databases.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;libgda&lt;/code&gt; is overkill when all you need is to maintain a simple, local embedded database.&lt;/li&gt;
&lt;li&gt;SQLite is fast, lightweight, well-documented, and backed by an active IRC support community.&lt;/li&gt;
&lt;li&gt;Keep database-related code restricted to as few source files as possible.&lt;/li&gt;
&lt;li&gt;The SQLite source code is an excellent reference for understanding how to implement commands like &lt;code&gt;.import&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Using Git (or any modern version control system) saves an enormous amount of time.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>rt2860 on Fedora 11</title><link>/post/2009/2009-03-22-rt2860-on-fedora11/</link><pubDate>Sun, 22 Mar 2009 23:41:00 +0530</pubDate><guid>/post/2009/2009-03-22-rt2860-on-fedora11/</guid><description>&lt;p&gt;For anyone missing the wireless driver on the Asus Eee PC 1000H: &lt;code&gt;rt2860&lt;/code&gt; has made it into kernel staging and is not yet part of Fedora 11. To build it yourself, download the latest snapshot from the &lt;a href="http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=drivers/staging/rt2860"&gt;Linux kernel git staging tree&lt;/a&gt; using the &amp;ldquo;snapshot&amp;rdquo; link.&lt;/p&gt;
&lt;p&gt;Once downloaded, extract the archive and append the following line to the &lt;code&gt;Makefile&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-makefile" data-lang="makefile"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;obj-m &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; rt2860sta.o
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then run the command below to compile and install the module:&lt;/p&gt;</description></item><item><title>Linux Hosts That Use the evdev Driver for Keyboards Do Not Map Keys Correctly in Any Guest in VMware</title><link>/post/2008/2008-11-21-linux-hosts-that-use-the-evdev-driver-for-keyboards-do-not-map-keys-correctly-in-any-guest-in-vmware/</link><pubDate>Fri, 21 Nov 2008 16:17:00 +0530</pubDate><guid>/post/2008/2008-11-21-linux-hosts-that-use-the-evdev-driver-for-keyboards-do-not-map-keys-correctly-in-any-guest-in-vmware/</guid><description>&lt;p&gt;Some of the newer Linux distributions use Xorg 1.4, where the new &lt;code&gt;evdev&lt;/code&gt; driver manages all input devices, including keyboards. The &lt;code&gt;evdev&lt;/code&gt; driver causes the keyboard to send different keycodes. For example, the down arrow sends keycode 116, which other drivers interpret as Win+R. Consequently, keyboard mapping problems occur in all guest operating systems running in VMware.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; &lt;a href="http://kb.vmware.com/selfservice/viewContent.do?externalId=1007439&amp;amp;sliceId=1"&gt;VMware Knowledge Base Article 1007439&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Closing a Hung SSH Session</title><link>/post/2008/2008-11-21-close-ssh-session/</link><pubDate>Fri, 21 Nov 2008 15:51:00 +0530</pubDate><guid>/post/2008/2008-11-21-close-ssh-session/</guid><description>&lt;p&gt;How does one close an SSH session that has hung or disconnected from the server?&lt;/p&gt;
&lt;p&gt;Use the key sequence &lt;code&gt;~.&lt;/code&gt; (tilde followed by a dot, typed at the beginning of a new line). For more information, check the SSH manual:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;man ssh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="background"&gt;Background&lt;/h3&gt;
&lt;p&gt;I was happily working on my system, accessing my test box remotely. Suddenly, there was darkness—or what most people call a power outage. Since my UPS was in the repair shop, my machine shut down and left me with a frozen SSH session upon rebooting and reconnecting.&lt;/p&gt;</description></item><item><title>Recovering a Partition Table</title><link>/post/2008/2008-11-21-recover-partition-table/</link><pubDate>Fri, 21 Nov 2008 10:27:00 +0530</pubDate><guid>/post/2008/2008-11-21-recover-partition-table/</guid><description>&lt;p&gt;Oh no! You deleted, overwrote, or spilled coffee on your partition table! What&amp;rsquo;s next?&lt;/p&gt;
&lt;p&gt;For almost anything (except the spilled coffee), you can check out &lt;a href="https://www.cgsecurity.org/wiki/TestDisk"&gt;TestDisk&lt;/a&gt;, available in Fedora. Simply launch it and follow the on-screen instructions.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="story"&gt;Story&lt;/h3&gt;
&lt;p&gt;One fine day, with birds singing outside on a bright sunny afternoon, I decided to install Fedora on a test box. Incidentally, that machine had an old hard drive with lots of photos from my school and college days. And so, the saga began.&lt;/p&gt;</description></item><item><title>Key Mapping on RHEL 5</title><link>/post/2008/2008-07-14-key-mapping-on-rhel5/</link><pubDate>Mon, 14 Jul 2008 23:47:00 +0530</pubDate><guid>/post/2008/2008-07-14-key-mapping-on-rhel5/</guid><description>&lt;p&gt;&lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=450326"&gt;Multimedia keys&lt;/a&gt; [1] did not work on RHEL 5, which was missing the &lt;a href="http://people.freedesktop.org/%7Ehughsient/quirk/quirk-keymap-index.html"&gt;keymap quirk&lt;/a&gt; [2] patch written by rhughes. Backporting was fun while it lasted—now my life feels hollower than ever.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;[1] &lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=450326"&gt;https://bugzilla.redhat.com/show_bug.cgi?id=450326&lt;/a&gt;&lt;br&gt;
[2] &lt;a href="http://people.freedesktop.org/~hughsient/quirk/quirk-keymap-index.html"&gt;http://people.freedesktop.org/~hughsient/quirk/quirk-keymap-index.html&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>