Inspirated

 
 

July 23, 2009

Microsoft’s open-source contribution traced back to GPL violation

Filed under: Blog — krkhan @ 11:36 pm

(Or: Things still make sense.)

Last week — just as Wayne Rosso stopped comparing RIAA to Stalin — M$ did its own volte-face and not only stopped calling GPL a “cancer” but decided to release some 20,000 lines of code carrying the plague itself. Pigs started flying. Some of the open-source evangelists started fantasizing about Microsoft as an ally suddenoutbreakofcommonsense and the cautious ones — who suspected some ulterior motive behind the move — were declared by them to be paranoid and rabid haters.

The storm didn’t last long though, as it was later reported that the change of heart was prompted by a GPL violation in Hyper-V. Some see this as a win for GPL. Some see this as a perfect backdrop for FUD against open-source (“it’s so goddamned viral it even infected us when we wanted interoperablity”) while some see this as a failure at M$’ part for not honestly explaining the reasons behind the code release. Whichever category you belong to, it’s nice to know that swine still have their feet firmly on ground.

Tags: , , , ,

July 5, 2009

The top 5 worst mistakes on command-line

Filed under: Blog — krkhan @ 10:58 pm

I could start off with an intro paragraph here but I’ll prefer keeping it sweet and simple: command-line is addictive.

For many kinds of tasks — ranging from system administration to organizing folders — I find CLI to be extraordinarily more productive than GUI clicking. For example, vim-ing through a code, if I decide I need to lookup a particular symbol in the current directory, I can quickly do a recursive grep without even taking my hands off the keyboard. Similarly, I find utilities such as mv or cp to be significantly faster than GUI file managers’ equivalent features. The learning curve is definitely steep and I also am not implying that everyone should find it equally productive but for me at least, it works like a charm.

It wouldn’t be an exaggeration to say that CLI provides a terrible amount of power at fingertips of its users. While that power is tremendous fun, it also can be a source of epic fails if not handled with caution. The fact of the matter is, as one grows accustomed to quickly doing work through text-based input, overlooking those cautions almost becomes second nature. It’s not uncommon to find a commandaholic holding his head in his hands while staring at the screen in disbelief. GUI does get credit for being a little more prone to accidental mistakes by consistently providing a visual view of what’s about to happen.

Moving on from the ill-starred mischief that I posted about last week, I thought I should compile a list of all time worst incidents of me cursing my fingers for being so familiar with the CLI. Here they are:

  1. Ctrl-C

    Sometimes, I blame Christopher Sholes for putting the Z and C keys so close on the keyboard. ‘Nuff said.

  2. Deleting the wrong partition in parted

    (parted) help rm                                                          
      rm NUMBER                                delete partition NUMBER
    
    	NUMBER is the partition number used by Linux.  On MS-DOS disk labels,
            the primary partitions number from 1 to 4, logical partitions from 5
            onwards.

    If you’re wondering why deleting a partition is placed so low on the list, the answer is TestDisk. Mere seconds after I deleted my primary partition containing all my data, I stopped all activities, booted into a rescue mode and used the God-sent utility to restructure my partition table like before with a cumulative data-loss of 0%.

  3. e2fscking e2fucking a mounted file-system

    [root@orthanc ~]# e2fsck /dev/sda2
    e2fsck 1.41.4 (27-Jan-2009)
    /dev/sda2 is mounted.  
    
    WARNING!!!  Running e2fsck on a mounted filesystem may cause
    SEVERE filesystem damage.
    
    Do you really want to continue (y/n)? 

    See that SHOUTING WARNING? I did too. But back then, I ignored it as casually as anyone ignores licensing agreements. Needless to say, the results weren’t as inconsequential as clicking “I accept” and moving on without a hint of doing something legally binding.

  4. rm -rfing the wrong directory

           -f, --force
                  ignore nonexistent files, never prompt
    
           -r, -R, --recursive
                  remove directories and their contents recursively
    

    If the last tool had the F-word in its title as the warning, this one should be read as rm --recursive-fuck. The H-bomb of command-line tools, once you detonate it on a directory you didn’t mean to set it upon, even CTRL-C won’t be able keep you in one piece because of rm‘s ruthless speed and efficiency. The only ray of hope is ext3grep, but depending on numerous factors (partition structure, number of files, file types, alignment of stars etc.) your recovery prospects would range anywhere from ±100% to ±100%. You read that right.

  5. mkfsing the wrong partition

           mkfs  is  used to build a Linux file system on a device, usually a hard
           disk partition.  filesys is either the device  name  (e.g.   /dev/hda1,
           /dev/sdb2).   blocks  is  the  number of blocks to be used for the file
           system.

    The granddaddy of all command-line fuckups. If you have confused /dev/sdb for /dev/sda (an easy slip up — as I learned the hard way), it’s time to move on. Sure, you will find people selling tools for recovering data from formatted Ext3 partitions; expecting those tools to work would be a lot like expecting the King of Pop to miraculously pop up from his coffin on Tuesday and perform a ground-breaking reenactment of 83′s Motown performance.

“Blessed are the forgetful; for they get the better even of their blunder.” — Friedrich Nietzsche

Tags: , , , , , ,

July 2, 2009

Workaround for autostarting applications in a particular order on Xfce/GNOME/KDE

Filed under: Blog — krkhan @ 11:04 pm

Among many of freedesktop.org’s vital contributions to GUI computing on POSIX platforms, a divine one has been the uniform specification for automatically launching programs at initiation of a desktop session. Informally put (or theoretically at least), it means that you can add programs to startup in the appropriate settings, and they will be launched automatically at initiation of your session regardless of which desktop environment you use.

It’s been about 4 years since I migrated to Xfce for everyday work and it does come with a basic tool for managing startup entries (accessed through Application Menu > Preferences > Session and Startup). Still, if you need anything more than rudimentary addition/deletion of the entries you’re pretty much out of luck. For example, I wanted to start the applications in a particular order. I don’t know whether GNOME or KDE have the feature yet, but Xfce lacked the support for maintaining any such arrangement. The proper way to deal with the issue would have been to code the feature in the session manager myself, but since I barely get time to even read fortune-mod these days I instead had to rely on an ugly workaround. If you’re in the same sticky situation, here it is: Go to the autostart directory (usually ~/.config/autostart), open the startup script you’re concerned with, and edit the Exec line like this:

Before:
Exec=awn-autostart

After:
Exec=bash -c "sleep 3 && awn-autostart"

The ugliness arises from the fact that the new Exec line is merely launching the program with a delay of 3 seconds. Now, you can add another program with a delay of 4 and it will almost be guaranteed to start after the 3 seconds’ one across all desktop environments. I really hope that the specification itself would be revised soon to provide a uniform way of setting the startup order. But until that gets done, I can thank sleep for making my life simpler.

Tags: , , , , , ,

June 27, 2009

The highs and lows of Leonidas — This. Is. Fedora!

Filed under: Blog — krkhan @ 12:43 am

There is a reason why I never evangelize Fedora much: it’s far from perfect. There is also a reason why I use Fedora for my everyday Linux-ing: it’s good when it starts working. The two seemingly conflicting viewpoints are not mutually exclusive, since Fedora’s instability as well as its appeal can be termed in one word: bleeding-edge.

The biannual cycle of backup-reinstall-reconfigure for each new Fedora release works fine for me. It takes a day or two to get everything back to the way want them to be, but the trade-off is almost always worth it. Consider this, upgrading from a Fedora version to the next will almost never work seamlessly. Nevertheless, the re-installation mantra allowed me to use PulseAudio’s “perfect” setup much before most of the other distros’ users. The fact that I got a clean start for the new sound architecture also explains why I never had any incompatibility issues with it and consequently, my status as one of its huge fans.

Another reason why I’m still hanging on to Fedora is because of the familiarity factor, as I no longer have the ample time for trying out newer distributions just for the sake of it. Linux From Scratch was a mighty fun experience, but keeping it up-to-date was nothing short of a Herculean task. Gentoo sounds very appealing, but I don’t want to download a DVD, go through the hassle of installing and getting familiar with the new distro and then emerge a whole universe of updates on an internet connection as reliable as Fedora on Hurd. The perfect solution would be to install a new release of Gentoo but unfortunately, it’s been over an year now since I started waiting for one.

Which brings us to Fedora 11 — lovingly nicknamed after everyone’s favorite Spartan king.

The predominant aspects of the new release which affect me as a user are the Ext4 filesystem and the Kernel Modesetting feature. So far, I am not even using the former. Yes, yes, I know I bragged about bleeding-edge before, but let me explain why I did not go for it in this particular case:

  • Filesystem is the most critical aspect of a system for me. I can toy around and experiment with everything but this holy grail. If my audio fails, I can try fixing it. If X stops working, ditto. If my data is corrupted, I’m FUBAR.
  • Anaconda crashed when I tried to update the boot-loader configuration for a system with Ext4 partitions.
  • I couldn’t find a way to use Ext4 without using the Logical Volume Manager. I like my partitions as /dev/sdaX and entries such as /dev/mapper/yourmom/blahblahblah/finallythedrive in the fstab file turn me off.

Nevertheless, KMS made up for the Ext4 — or lack thereof.

  • Booting is now prettier.
  • Working in runlevel 3 is so much more efficient because of all the extra space provided by higher resolution.
  • Switching virtual terminals and X sessions is a breeze.
  • Suspend/Resume is a bit more stable.

Other significant changes include Xfce 4.6, Firefox 3.5 and the reworked volume management in Pulse. Overall, I’m pretty satisfied with my decision to upgrade, and here’s to the hoping that the next 6 months will go as smooth as the previous ones.

Tags: , , , , , ,

April 7, 2009

HOWTO: Log Pidgin conversations selectively

Filed under: Blog — krkhan @ 7:32 pm

Pidgin is a multi-protocol instant-messaging client which I use for all my MSN/Google Talk/IRC communication. Apart from offering adept support for all of these protocols (and plenty others as well), Pidgin also provides decent logging support. However, I’m not at all interested in having my daily MSN conversations recorded. On the other hand, I prefer having my previous IRC chats with me for reference. Right now, Pidgin does not support any options in the Preferences which would allow me to selectively turn on logging based on the protocols I’m using. If I turn it on for chat windows, it also starts producing logs for every MSN chat I participate in.

Most of the people wouldn’t/don’t see any issue with this behavior. For those who do want to keep a history of their conversations only for particular protocols, here’s a quick workaround for doing it:

  • Check the appropriate options under the “Logging” tab in Preferences window.
  • Have a few chats the likes of which you’d prefer being logged.
  • Go to the directory containing Pidgin logs (default is ~/.purple/logs):
    [user@host ~]$ cd ~/.purple/logs/
  • See whether the protocols you want to be logged have a directory named for them:
    [user@host logs]$ ls

    irc msn

  • Remove the protocols you do not want to have logs for (in my case, MSN):
    [user@host logs]$ rm -rf msn
  • Change directory permissions to stop new protocols from getting logged:
    [user@host logs]$ chmod 500 .

And you’re done. Now, whenever you start a conversation in a protocol which does not have a respective directory in ~/.purple/logs, you’ll see a “Logging failed” error message in the conversation window. For other (allowed) protocols, logging will work as expected. To turn off selective logging, reset directory permissions with:

[user@host ~]$ chmod 600 ~/.purple/logs/

It is also possible to apply the same workaround on contacts. For example … :

  • [user@host ~]$ cd ~/.purple/logs/msn/
    [user@host msn]$  ls

    bestbuddy@live.com ignorantmoron@live.com

  • [user@host msn]$ rm -rf ignorantmoron@live.com
  • [user@host msn]$ chmod 500 .

… will disable logging for all MSN contacts including ignorantmoron@live.com, but will record everything communicated with bestbuddy@live.com. Like the previous example, you just have to reset directory permissions to re-enable nondiscriminatory logging:

[user@host ~]$ chmod 600 ~/.purple/logs/msn/
Tags: , , , , , , , , , ,

March 19, 2009

Video: The Centenary Rant — X11tasy

Filed under: Blog — krkhan @ 7:10 pm

The 100th post, and considering that the most popular ones on the blog so far have been screencasts, there wouldn’t have been a better way to commemorate the occasion than editing a short music-video which would demonstrate the prowess of Linux on desktop.

Tags: , , , , , , , , , ,

March 15, 2009

HOWTO: Use USB devices in Virtual Machine Manager with QEMU

Filed under: Blog — krkhan @ 3:09 pm

Every once a while, I need to take the backup of my Nokia N72 using PC Suite. Since the task had to be performed on Windows, I expected my virtualized machine to be able to do so. Unfortunately, Virtual Machine Manager does not provide any option in its interface which would allow me to use my USB devices in virtualized machines. Going through the documentation though, here’s the method through which I was able to solve my issue.

First of all, you should have the vendor and product ID’s of the USB device you want to use. Sounds alien? Use the command:

[user@host ~]$ lsusb

Which will show you something like:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 003: ID 0421:04c4 Nokia Mobile Phones
Bus 003 Device 002: ID 09da:000a A4 Tech Co., Ltd Port Mouse
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

The bold numbers in the line containing “Nokia Mobile Phones” are the vendor and product IDs respectively. Once you’ve noted them down for your required device (in my case: 0x421 and 0x4c4), list the virtual machines’ configuration files:

[user@host ~]$ sudo ls /etc/libvirt/qemu

networks windoze.xml

My virtual machine was named “windoze”, so windoze.xml is the file that I need to edit:

[user@host ~]$ sudo gedit /etc/libvirt/qemu/windoze.xml

In the editor, add the highlighted hostdev lines under the devices section (replacing the vendor and product IDs with the ones noted down from lsusb output):

<devices>
<emulator>/usr/bin/qemu-kvm</emulator>
<hostdev mode='subsystem' type='usb'>
<source>
<vendor id='0x0421' />
<product id='0x04c4' />
</source>
</hostdev>

Save and close the file. Restart the service:

[user@host ~]$ sudo service libvirtd restart

If everything went smoothly, the USB device should now be accessible from within the virtual machine:

Screenshot of Nokia PC Suite connected to a USB device in virtualized Windows
(Click on the thumbnail for larger version.)

Tags: , , , , , , , , , , , ,

March 9, 2009

HOWTO: Access Windows machines by their names on Eee PC

Filed under: Blog — krkhan @ 8:25 pm

More often than not, Linux users will end up in a situation where they’d need to access their Windows neighbors on LAN. This can easily be accomplished using IP addresses, but using NetBIOS names is just too convenient to be overlooked.

The Xandros distro on Asus’ Eee PC does not resolve NetBIOS names by default. To make it perform that, you can do the following:

[user@host ~]$ sudo apt-get install samba samba-common smbclient winbind
[user@host ~]$ sudo kwrite /etc/nsswitch.conf

Once the editor opens, spot the line:

hosts: files dns

And append “wins” at its end, making it:

hosts: files dns wins

Save the file, exit the text-editor, back on command-line:

[user@host ~]$ sudo /etc/init.d/samba start
[user@host ~]$ sudo /etc/init.d/networking restart

Reconnect your network, and viola — easy peasy, Eee PC!

Screenshot of Eee PC accessing a Windows PC on LAN by name
(Click on the thumbnail for larger version.)

Tags: , , , , , , , , , , ,

March 6, 2009

Using Cisco Packet Tracer on Linux

Filed under: Blog — krkhan @ 6:15 pm

(Or: Using Wine where plain-water should have been more than enough.)

Packet Tracer is a network simulator for Cisco devices. Caveat: It runs only on Windoze. Hence, there are three possible solutions for someone in need of using Cisco simulation on Linux:

  • Wine: Wine’s setup varies from distribution to distribution. If you’re using Ubuntu, following commands should do the trick:
    [user@host ~]$ sudo apt-get install wine
    [user@host ~]$ winecfg

    Alternatively, for Fedora/RHEL/CentOS, use:

    [user@host ~]$ sudo yum install wine
    [user@host ~]$ winecfg

    Followed by:

    [user@host ~]$ wine /path/to/PacketTracerSetup.exe

    Once installed, you end up with:

    Screenshot of Packet Tracer running in Wine
    (Click on the thumbnail for larger version.)

    Pretty much usable. Although, fonts appear hideously ugly on default settings. Fortunately, you can change their sizes by going to Options >> Preferences >> Fonts from the Main Menu.

  • GNS3: Setting up this particular piece of software is considerably difficult and definitely an overkill for newbies. This blog attempts to bridge the difficulty by providing video tutorials for installation, but that does not make GNS3 any lesser intimidating for users not already familiar with Cisco terminology or network simulation. For example, you’ll have to scavenge the Internet for IOS images you want to use, something you’d never have to think about in Packet Tracer for its supported devices.
  • Pursue Cisco to release Packet Tracer on Linux: I was a bit surprised when I spotted that Packet Tracer is actually based on the cross-platform Qt GUI toolkit which would make porting it to Linux a trivial task for developers. Regrettably, knocking some sense in Cisco execs’ head is likely to be a far more laborious task than either of the solutions before.

“Sparrows who emulate peacocks are likely to break a thigh.” — Burmese Proverb Some geek Buddha annoyed at the trend of software developers relying on emulation for portability

Update: Cisco had after all started providing a native Linux version of Packet Tracer since last summer which I somehow missed because of its lack of appearances in my initial Google search. Here are the download links:

Fedora RPM: Rapidshare Part 1, Rapidshare Part 2
Debian/Ubuntu Installer: Rapidshare Part 1, Rapidshare Part 2
Linux Addons: Rapidshare

Tags: , , , , , , , , , , ,

March 1, 2009

Top Five Improved Open-Source Projects

Filed under: Blog — krkhan @ 3:55 pm

“Evolution is God’s way of issuing upgrades.”

It’s a wonderful age to live in as an open-source enthusiast. The warm feeling is especially accentuated in one’s mind after recalling countless hours of hair-pulling trying to make that goddamned VGA monitor work with Red Hat Linux 6. Software for GNU/Linux has improved at an exponential rate. There are still plenty which lack the user-friendliness and all, but technologically the overall rate of improvement has been nothing short of astounding.

Ask any newcomer to the GNU/Linux world about their favorite open-source projects, and there’s a strong likelihood that the answer will be one of the “prominent big-guns”; the likes of Compiz Fusion, Firefox, KDE or Gnome. Ask any veteran the same question and you’re much more likely to get a diverse stock of answers ranging from Vim to Anjuta or probably even some obscure Window Manager like Fluxbox. The opinion about the most “improved” projects would thus be highly polarizing. Still and all, there are few projects which have eased my life substantially with their progress. To compliment the ones that have almost made me kiss virtual bits of code at one point or other, I’ve decided to choose the top five:

  1. recordMyDesktop
    The Dark Ages: Recording a video of an X session was nothing less than a nightmare. With sound, all the more so. The popular method was to run a VNC server and then use a tool such as vnc2swf to capture the footage.
    The Messiah: Once you install recordMyDesktop and one of its GUI frontends, recording becomes as easy as launching it and selecting “Record”. Really, you don’t have to use multiple software now for doing something as simple as that.

  2. NetworkManager
    The Dark Ages: You went to your workplace, geared up your Linux distribution and tried get some connectivity and to your utter horror, the Wireless network used WPA encryption for passphrase. wpa_supplicant was the command-line utility you could’ve used for connecting to such networks after hours of tinkering around, but it sadly wouldn’t have prevented you from getting fired because the execs weren’t that much amicable with open-source evangelism in the first place.
    The Messiah: Red Hat, for all the criticisms it receives for RHEL, is still the caring patron figure for desperate Linux users crying out for help. Hence, it’s no co-incidence that this project as well as next two on the list were initiated by the same company. NetworkManager makes mobile connectivity as peachy as it could’ve been. You spend a few days with NM on your notebook and it starts choosing the best network for you wherever you go, that too with least possible intrusion in your workflow.

  3. SELinux Troubleshooter
    The Dark Ages: In this particular case, the dark ages don’t belong to that much a distant past since the cause of all the mess was also a recent innovation. Security Enhanced Linux, while obstinately preached by Red Hat and enabled by default on its shipped operating systems, was unanimously loathed by all system administrators who had at one point or other given up their hopes and had disabled it completely on their networks. The error messages it churned out on regular bases were not only cryptic, but also critically hampered regular everyday usage of their host operating systems.
    The Messiah: With improved default policies, the situation was somewhat resolved for general user. Nevertheless, irregularities still kept popping up occasionally and hence came SELinux Troubleshooter to the rescue. For every cryptic denial that SELinux now pops up, the Troubleshooter will analyze it and even suggest workarounds for them so that you don’t have to manually mess with policy modules every time something perfectly legitimate starts getting labeled as “unauthorized” access.

  4. PulseAudio
    The Dark Ages: The music player was playing a song and you tried having a voice-call or playing another video = epic fail. The audio device was usable by only one application at a time. In fact, sound was the Achilles’ heel for default setups of pretty much every Linux distribution that existed.
    The Messiah: Playing a soundtrack in one application with volume tuned to max and having a video run in another with volume at half is no longer a fantasy. And no, ESD doesn’t even come close to PulseAudio in “seamless” multiplexing of such sounds. If you want more, Pulse can combine multiple soundcards into one and also — hold your breath — redirect audio streams to different hardware on the fly.

  5. TrueCrypt
    The Dark Ages: Disk encryption had been an ultra-geek thing for quite a while, especially on Linux. Software that provided such features needed to have modules compiled manually and loaded into the running kernel which opened up a whole plethora of compatibility issues which almost always made newcomers decide against the whole idea per se.
    The Messiah: God bless the developer who had the idea of using FUSE in TrueCrypt for mounting encrypted containers. As a consequence, once a user has installed TrueCrypt, the whole thing doesn’t need to be recompiled again from time to time with updated kernels. Also, thanks to wxWidgets, the GUI has drastically improved too; making it easier for even Linux newbies to utilize disk encryption.

Fortunately, unlike commercial operating systems, GNU/Linux users don’t have to wait for decades before seeing actual new “innovations” in action. Who knows, maybe next year we’ll have LOLPython topping my list. Anything’s probable.

Tags: , , , , , , , , , , ,
« Previous PageNext Page »