ExMan 0.5 released

I’ve just released ExMan 0.5. Actually, the code was in git master for quite some time now, but I got around of building RPMs only today. The source tar ball and RPMs are available at the usual Sourceforge.net download space.

Most notable changes are:

  • ExMan now conforms to XDG specification for storing data. Which means, the backend data files is now stored in $HOME/.local/share/data/ExManFile.txt instead of $HOME/.ExManFile.txt. The Qt API QDesktopServices::DataLocation provides platform/operating system agnostic location, so this works fine on GNU/Linux, Windows and MacOS X.
  • The old data file is automatically migrated to the new location so that you don’t have to manually do anything.

ExMan now available for MacOS X

Couple of days ago a mail from Softpedia Editorial Team greeted me with the surprising news that ExMan is now included in the Softpedia Mac software database.

They have reviewed, audited for malwares/spywares, built and tested ExMan. See http://mac.softpedia.com/get/Finance/ExMan.shtml. They have also provided some nice screenshots of ExMan running on Mac – everybody loves screenshots and here’s one of them:

The VM bug that delayed Linux-2.6.34-rc4

Arguably, the most complex area in Operating Systems is – memory management. i.e, managing the Virtual Memory (VM).

Linux-2.6.34-rc3 had been out on March 30 and after nearly 2 weeks, -rc4 has not yet appeared.And the reason? Well, we are going to look at it.

The anon_vma scalability patches submitted by Rik Van Riel was merged in the -rc1 phase. Borislav Petkov using -rc3 has hit on a bug causing crash while suspending to disk(hibernate). Linus chimed in suspecting this could be caused by the new scalable anon_vma linking code by Rik. The bug usually appears under severe memory pressure – Borislav explains that the procedure to consistently trigger the bug is to run 3 KVM guests, open firefox and load a huge html file, and try to s2disk – kaboom! Though he himself doubted that this could be a hardware issue since not many people observed it, Linus refused to agree with that because he himself has seen a similar OOPS in the Mac Mini his kids are using. So it is likely a real bug which needed to be identified and fixed. And the anon_vma code is very complex with various levels of locking and RCU usages, Linus wants to simplify mm/rmap.c considerably.

So the bug hunting began by Linus Torvalds and Rik Van Riel, joined by Johannes Wiener, Kosaki Motohiro and Minchan Kim – and every patch being tested by Borislav Petkov. After 10 days of debugging, flying many patches around, {,in}validating various theories, finding and fixing 3 other independent bugs (1, 2, 3) in the VM area (though second one may not be required), Linus came up with a new theory which he explains along with small patch. And, Borislav confirmed that his Netbook just survived more than 20 suspend cycles even under severe memory pressure.

Had the bug not been isolated and fixed, Linus was planning to revert the whole anon_vma scalability patches, which didn’t sound good and that they’d drop their effort to fix it even when feeling so close to fixing it, didn’t sound good either. The whole 4 patches can now be found here – 1, 2, 3, 4. And with that, -rc4 is out in the wild.

Awesome.

Update: The-as-usual-excellent LWN.net article:http://lwn.net/Articles/383162/

ExMan 0.4.5 released!

The new release of ExMan – 0.4.5 – is packed with shiny new features. Source code, RPMs and DEB for Ubuntu can be found at the sf.net project page.

ExMan with formula

Features added in this release are:

  • Support for Formula: I’ve been looking for a simple expression evaluator which could do the purpose. I looked into KOffice source code et al, and they were all complex because they were supposed to handle such complex things. I had a pretty old expression tree evaluator C++ class which I had written when I was in college, but it was literally building a tree of expression and then evaluates it. So I had this option if I couldn’t find anything simpler and cleaner. Thanks to the dvisvgm program which is also part of the LaTeX source code, found a simple expression evaluator implemented as a Recursive Descent Parser (which I guess is the most suitable one for arithmetic expressions), and the credit goes to my friend Deepak Lukose for pointing me to dvisvgm.
    Note: The grammar rules of a recursive descent parser is pretty simple and straight forward, and it is appropriate for the expression evaluation.
    expr: [+|-] term {+|- term}
    term: prim {*|/ prim}
    prim: [ident|number|(expr)]
  • Status Bar: Well, it took me a while to get this incorporated, because the main window of ExMan is not a QMainWindow class, but a QWidget. And there’s no option to drag and drop a QStatusBar in QtCreator. So, just edit the exmanwindow.ui file to add the tag <widget name=”statusBar”/> inside the ExManWindow QWidget. This will make the status bar to appear in the ui design section of QtCreator, and then it can be arranged appropriately.
  • What’s Next? I couldn’t find a way to make the QFrame to adjust its size automatically when the parent QWidget is resized, even though the sizePolicy is set to {Preferred, Preferred}.

++Dell

So, recently I saw this Dell++ in Fedora planet. And just over a week ago, my Dell Vostro 1520 started to give trouble with internal audio speakers. A lot of crackling noise and high treble, which was annoying considering the fact that I finish 2-3 movies over a weekend. Then the right internal speaker decided to go completely mute. And then the left speakers also started to fail.

That’s when I decided to raise a support ticket. So I just went to the support link and filled up the form accordingly. The same day, I received their first response asking for more details and confirmation, and I replied to them. As with Yaakov’s case, I had bought the laptop in US and so they sent me another mail to initiate the process of transferring the ownership to India. The next day they just informed that a request to replace the motherboard and palmrest are raised and it would take 3-5 business days for me to receive them. In 2 days I received the replacement, and the hardware technician was ready to come the same day, but I had to leave to office, and they agreed to come over the weekend. On Saturday the guy came over and in half an hour he replaced it, and it works great.

There were no dumb explanations required over the phone, no arguments, no frustrations, no nothing. So, here’s a big thanks Dell, for handling the issue so nicely!

Simple File Sharing in Linux – revisited

Meiga, the lightweight and easy to use content sharing software appeared in Fedora updates (Fedora 11 and 12) as of November 30, 2009. Thanks to Enrique, maintainer of Meiga and  Thomas, who reviewed and approved Meiga for Fedora. So, now onwards just use the package manager to install Meiga on Fedora.

Furthermore, Enrique requested to send a patch for adding the SPEC file to the source, so that any user who obtain the source can also easily build the RPMs. The result is here, and another patch to modify the build script to include this feature is here. I have also created the DEB package for Ubuntu 9.10, which is yet to appear in the Meiga website.

Now, in my previous post detailing the necessity which resulted in the discovery and packaging of Meiga, I have mentioned that I couldn’t find a very easy Linux-to-Linux file sharing tool (as easy as you can do in Windows, using Samba). Enter Dolphin.

Since KDE 4.3, I’ve been ~exclusively using KDE as the primary desktop environment, and it is awesome. While wandering through the unknown and unexplored realms of the default file manager in KDE, I came across a handful of very useful features.

  1. Split View : Within the single window (rather, single tab) – two views of folders are possible. This is very handy when I want to compare and/or copy files from one folder to other.

    Dolphin Splitview

    Dolphin's Split View feature

  2. In-Shell access : Press “F4″ from any folder, another view with the terminal will open – now run your favourite rsync command from there and synchronize your personal files.

    Dolphin's In-Shell feature

    Dolphin's In-Shell feature

  3. Fish : Fish is the protocol to transfer files over SSH (or RSH). KDE/Dolphin implements and integrates the Fish protocol, which makes to share and/or copy files over the network damn easy. So, whenever you have two Linux boxes, start sshd (the OpenSSH daemon) on the system where files are to be shared, and just point to “fish://<ip_address_of_host>/” in the location bar of Dolphin. Dolphin will then ask the username/password for the host machine, and once logged in, browse all the files/folders the user has access to.
    Dolphin Fish authentication

    Fish asking for authentication

    Dolphin copying files over Fish

    Dolphin copying files over Fish

GNOME/Nautilus users can use the “sftp://” protocol for the same effect.

ExMan release 0.3

I have been hindered by some reasons for sometime and couldn’t give much attention to many projects, let alone writing blog posts. Good news is that I resumed working on them again, and have been fixing bugs and adding new features to ExMan.

ExMan is now tagged with version 0.3 which includes the following bug fixes and enhancements:

  • ExMan is now available as source tar ball, RPM, and DEB for Ubuntu. Ubuntu packages were requested by many, so tonight I went ahead and downloaded Ubuntu 9.10, installed it in VirtualBox on Fedora 12, then installed the qt-dev-tools packages and built ExMan, learned creating DEB packaging in an hour (it was much simpler compared to learning how to prepare RPMs), and created .deb for Ubuntu.
  • Drag-n-Drop capability: You have added an entry, now you just drag-n-drop it down, ExMan will automatically create a new row. If you dropped it into an existing row, the contents of the dragged columns are copied.
  • Drag and Drop to create a new entry

    Drag an existing row and drop into empty area

    Dropped into empty cell

    Dropping into empty area created a new row

    Drag and Drop contents

    Drag and Drop contents into existing entry copies them

  • Cut-Copy-Paste: Now you can do those fancy ‘cut-copy-paste’ with familiar keystrokes – Ctrl+X, Ctrl+C and Ctrl+V. [This was the toughest to implement, as QTableWidget or QTableWidgetItem do not implement them by default]
  • Proper Unicode storage support: Write entries in your native language. ExMan will store them and display them back properly now. There was a bug which prevents Unicode characters not being displayed back properly, which is fixed now.
  • ExMan used to crash while deleting some rows with the Delete (“X“) button. Fixed in this version.
  • There was a bug which didn’t modify the amount when it changed multiple times. Fixed in this version.

Go ahead and try it. If you find any bug, or want to add a cool new feature, do let me know. For developers, the git repository is available at git://exman.git.sourceforge.net/gitroot/exman/exman