Image viewer for Linux

Terrible. That's the only word I'd use to describe my experience with F-Spot. Any image viewer that moves files around on the filesystem, without my explicit permission each time, is just terrible. F-Spot's instability is legendary too.

Google's Picasa 3 for Linux is okay for the most part. Except of course, Google's choice to override my Alt+Ctrl key binding for full-screen mode is irritating, to say the least. Anyone who uses multiple desktops on GNOME knows my pain. And of course, you can't upload to Flickr from Picasa directly.

KDE's Digikam has most of the right components in place. Except, that it wants me to look at my entire collection in a Folder centric view. I can't view all Folders at once.

Is there any other image viewer I should try out?

Also, WHY cannot image viewers standardize on tagging formats? I have to tag and retag my pictures each time I change image viewers.

Enough of ranting for today, time to get some sleep.

Mood: Arrr!!!

Extra topping? Black olives please!

Everyone has their own personal favorite straw man argument. Some realize that its a straw man, most don't. Here's mine.

Human-Computer Interaction is all about intelligent interfaces that feel "natural" to a Human user. We would want the computer to figure out what we want to do and do it with minimal fuss. For instance, I would want the "Computer" to be able to understand exactly what I mean when I say "I think I want to watch a movie". It would also be really nice, if the "Computer" would guess exactly what mood I'm in, figure out what movie I'd like to watch right now and play it right away. While we're at it, figure out that I'd like to eat a personal pan pizza from Pizza Hut and order it online.

Notice something missing from the above story? There was the "Human" (me), the "Computer" was right there too. Oh that's right, no "Interaction" ! But the "Computer" did guess what you wanted and did it too, you say.

The "Interaction", that seems implicit in the above story, really is a one way street. The subservient "Computer" does what it been statistically trained to do. In technical terms, the "Human" emitted a signal, which was processed by the "Computer", interpolated it to figure out what movie I wanted to watch and extrapolated it to figure out that I might want a pizza and ordered it. Notice the absence of any affirmation or negation. The "Computer" has just been transformed to a fancy glorified signal processor.

Interaction is a two way street. Interaction , in the technical sense requires more than one participant (entity) , to receive, process, understand and emit signals. Imagine the same scenario as before, but replace the "Computer" with another "Human". The outcome, is no longer influenced just by the sheer observation of one participant : "I think I want to watch a movie". The outcome, is now the result of an Interaction, between the two participants. This Interaction, will likely entail speech, hand gestures, facial expressions, discussion of similar events from the past ("Oh that Spielberg guy can't direct for nuts, remember ET?") and possibly, a compromise on choices. It is very possible, that at the end of this scenario, both our participants decide to ditch the idea of watching a movie and play a game or go out on a drive.

In the first example, one participant generated a single verbal signal while the other participant was only passively involved in the Interaction. The passive participant only processed the only signal received and acted. In the second example, both participants were involved in active interaction. Both participants generated a wide range of signals, processed each others signals, analyzed them and emitted a reply signal.

Clearly, the second form of Interaction transferred a lot more information. We could model two-participant Interaction to be a control process (Disclaimer: I don't know enough of control theory or signal processing to be certain though). It could be said, that the choices and opinions of both participants in the second example, were different at the end of the Interaction than before. Some would even use the adjective "enriched".

In either case, it can be certainly expected, that this Interaction would have a very strong influence on future Interactions. This is a critical difference between modeling HCI as signal processing, versus modeling HCI as a control system (see disclaimer above). The essence I'm trying to capture, is that for HCI to be successful, we should expect and _demand_ that the "Human" actually interact with the "Computer". Every software that incorporates AI in some form, has a "training phase", where the explicit interaction is the "Human" teaching the "Computer". I would argue, that this really isn't HCI.

[ I work on "intelligent" [1] Sketch recognition systems, with a special interest in collaborative sketch interfaces. I'm certainly no expert though.]

Brandon Paulson and Tracy Hammond of the Sketch Recognition Lab at Texas A&M argue in their paper, [2] that forcing users to learn the system, rather than the system learn the user's intentions places constraints on the user. I would think that both extremes are undesirable, but a balance between the two is important. When both the user and the system are able to understand each other, the equilibrium achieved is termed "natural", in the sense used in the very first line of this post.

Do I have a straw man? I don't know.

[1] I wish I knew what "intelligent" meant, with respect to sketch recognition. I suspect no one knows either.
[2] This isn't an attack on their work, but an example of the sentiment I seem to encounter in many HCI publications. To add, the SRL at Texas A&M produces some awesome sketch recognition work.

Coercion, bribe or ... election promises?

A big problem, in any election (electronic or off line), is the problem of coerced or bought-out votes. In general, no elections system or electoral authority can completely eliminate voter-coercion. If a voter chooses to sell his vote and actually carry out his end of the deal, then it must be considered part of the due process of election and his vote must be honored. If on the other hand, the agent of coercion is unable to convince the voter , then a forced vote is anomalous in the process.

Although not evident at first, the line between a "valid and freely chosen vote" and "invalid and coerced vote" is very thin. Finally, how does one different between coercion and campaigning? Try the following two statements:

"If you vote for me, I will pay you $100."
"If you vote for me, I will cut your taxes by $100."

Are they different? If so, how?

Steve and Barry's closing out

If you look carefully, you'll see a "Store Closing" banner on the left, and a "New Styles Arriving" banner on the right. They're the same store, mind you!

Java and Scientific Computing

Lately, I've been using Java for something I never imagined I would: Running time bound simulations and collecting statistics. This started from an Advanced AI homework, which required us to evaluate different strategies for solving the 8 Puzzle.

Depth First and Breadth First search -- the most brute force of them all -- are real processor hogs. They take a good amount of time to get through solutions. I set up my simulations to try 8 puzzle combinations in groups. Each group had members which were an equal number of moves away from the solution. I'll call this the "distance" of a group from the solution. I started looking at groups with distances 1 through 10. The idea was to see how depth first search scaled with distance, while using multiple boards to average out the time (since boards were randomly generated). The simulation started out fine, but somewhere half way through, Java ran out of heap space causing me to lose half an hour worth of simulations. Terrific. So I fixed the heap space with a JVM switch to allocate 768 M. This time, Java didn't seem to die on space, but for some reason, started halting randomly. Here's a section of the simulation output. The first column is the distance of the board and the second is the run time in microseconds.


4 4.265305
4 0.399163

4 8058.812957

4 0.495941

4 4.762955

Now, the simulation is set up, to repeat a given run 5 times, to average out run times. So, the same board configuration is run 5 times for a given algorithm. The numbers above are the run times of the same algorithm on the same damn board! What gives!? A 4 microsecond difference is probably justifiable, but a full 8000 microseconds?


Now, I'm not sure if Java / the JVM is entirely to blame for such random spikes. In order to validate that, I'd have to rewrite this simulation in C++ and post similar numbers. Somehow, I doubt that the deviation in run times will not be this high. As of now, I'm treating this as an open problem. I'm certainly not assigning blame to Java, but its definitely complicit!

More to come.

[And no, there were no other CPU hogging processes running on the box at simulation run time. Certainly none that would cause such spikes.]

Are you a wanna-be Buffet?

Buy low, Sell high.

a.k.a Buy now.

Cubaholics Anonymous

Lately, I've been involved with a 3 dimensional species of puzzle that involves moving square shaped tiles around. Also known in technical parlance as "The Rubik's Cube". Up, down, right, away and right inverse goes my head. My fingers accordingly flex, extend, adduct, abduct and rarely circumduct (If you didn't understand those terms, go look up a kinesiology book (no I'm not a kinesiology major (and no, I do not like Lisp))). Such motion is usually accompanied by the creaking sounds of my aging cube.

Recently however, said creaking sounds have been replaced by their more intellectually acoustic cousins, called "speech".

"Hey, look at that guy. Think he's he okay?"
"You think he's gesturing at me?"
"Oh gosh, the poor fellow must be suffering from one of those diseases I heard about on TV!"
"You keep doing that son and next time, even if you have a cube with you, I'll give you a ticket." [1]

Yes, I am now a victim of Imaginary Cubesolveritis. To cut a long story short, if my fingers aren't already solving a cube, scribbling equations on a sheet of paper, typing away at a keyboard or stuffing food down my throat, then they're restlessly trying to solve an imaginary cube.

Its almost as though the urge to twist and turn faces and slices in a cube, is a wholly natural and evolutionary response to huge stacks of work lying right in front of me. The larger my pending work gets, the more I want to solve the cube. Till now, the only levee that deterred me from expending large swathes of time on the cube, was the fact that I did needed the cube to work on it.

This Saturday however, disaster struck this little home in Houghton, MI. The levee broke, releasing large amounts of solution attempts at my fingers. Who would have known? Katrina, Gustav, Ike and then ... Rubik. Tragedy I tell you, Tragedy.

... to be continued.

[1] The comment therein, is a result of a wholly unfortunate interaction between me, an imaginary cube, my car, a police officer and a stop sign (in that order) late Sunday night.
Note to self: Never take the stop sign overly seriously again. Not serious enough to wait a little more than a minute anyway.

Perhaps...

... I should just continue blogging here? Yes, all previous attempts of mine to work on my own blog scripts have been a terrific disaster. I hardly ever remember any of them leaving pre-alpha stages even.

Just perhaps.

Cluster for Coffee?

Came across this link which explains how to build a cluster in your drawing room in minutes!
Got to try it out sometime!

6000+ page views in 20 days!

That's right!
My photogallery views, and bandwidth consumption have gone through the roof!
6000+ views, and nearly 1000 MB of bandwidth!
If you haven't already, then check it at http://srichand.net.in/photos !

Free from Mukthi!

Finally!

Mukthi 6.03 was a grand success!
I've captured it in pictures at http://srichand.net.in/

Over 250 participants from in and around Bangalore and Mysore took part.
The overwhelming response should have finally silenced some critics...

My talk went pretty well, or so I think. I gave a very short talk (we were behind schedule by over an hour!), and gave away cds to the crowd at the end of. I asked 10 questions, and those who could answer them, got the CDs.
Its a lot of fun talking to an interactive audience!

I've also finally managed the time to throw a CMS onto my main page. Using an interesting javascript based theme with menu rollups and things for the main site now. Head over to http://srichand.net.in/ and check it out for yourself!

I've also added some resources useful for Computer Networks and UNIX system programming at the same site.

Mukthi 6.03 is finally underway!
Yesterday Swaroop's talk was a *big* hit! Bigger than anyone could have imagined!
Typing from the Hi-Tech seminar hall, even as the Manojit Majumdar from IBM, the Premium sponsors is speaking.
Atul Chitnis' talk was outstanding as usual, Biju Chacko enthralled the crowds with his knowledge of FOSS Licenses.
The crowd did start getting a bit un easy as Biju was talking, thanks to the 5th semester results, which came around at a very wrong time!
In any case, I got 66%, and passed all subjects! :D

More when I can post from here. My talk is at 3:30 PM. But will mostly get delayed by about half an hour.

Pictures come on Monday!

New website!

Yay! I've finally got my new website!
Head off to http://srichand.net.in/ right away!

Just the photogallery is up right now. Next thing to put up is drupal for the main page.
Then a class scrap book.
Other apps like CodeView will come soon.

Java Web Start a breeze?

I've been trying to get Java web start working on Breezy, but no dice...


srichand@krypton:~$ javaws
Java Web Start splash screen process exiting .....
Splash: sysCreateListenerSocket failed: No such file or directory



!!??

Its the DPI silly!

Finally got the brochure printed. (More like, vatsa got it printed for me.)
Two major boo boos.
One glaring blunder was the fact that we got an older draft version printed, while a newer improved version lay aimlessly on NAND gates in a plastic enclosure...
The other one was, that we (I!) made it at 72 dpi, all the while not realising that print demanded at least 96 dpi!
The result: Something that we're not quite happy with.

Mood: Contemplative

Sponsorship?

Mukthi 6.03 is in urgent need of sponsors! Know any company willing to sponsor Mukthi? Let me know too!
You may download the event brochure from http://srichand.net/mukthi.pdf

Mukthi 6.03

This I would guess is the first of many "official" announcements of Mukthi 6.03
We're still in very preliminary stages of planning, but trust me when I tell you its going to be *big* this time!
Slated for 17th and 18th March (tentative)

For those of you who've just joined us, Mukthi is a FOSS event aimed at students, by students.
The numbers after the name indicate the month and year. 03 for March, and 6 for 2006!
Last time's event was Mukthi 5.11.

Want to know more?


Wait a bit. ;)

Krypton Fuzz!


Introducing my own brand of Guitar Distortion Fuzz boxes!
The picture you see on the left is my first polished (literally) prototype of a fuzz box, and I must say, it sounds good!

Construction details are quite simple: Just put in a two level hard clipper circuit (silicon diodes are good) in the negative feedback loop of a 741 op-amp! That's it!

And when they tell you that the 741 produces very little noise, believe them!

This also marks my transition from transistor based preamps to op-amp based ones. Op-amps are so much easier to use, and have *much* lesser ambient noise!

The toughst part of it all was to cut the stainless steel box! Nails barely made a dent in it, while my hand drill couldn't even scratch it! I finally gave in, and chopped out an entire vertical section using shears (a wire cutter actually).

The metal box has two main advantages. Firstly its stable. It doesn't get thrown about too much even if you're the Kurt Cobain type. Secondly, and more importantly, it eliminates effects of interference from the surroundings.

Do we need mods?

Complain about the moderation system, and what do you know? You're a mod next!
So, is moderation good for a mailing list? In theory, its against free speech, so it can't be. But then, spamming and virus attacks leave us no choice.
So, should the solution be total and absolute moderation? Not in my opinion. I believe a more useful approach would be to allow certain trusted members, to post their messages through unmoderated. Got something to say about it? Say it!

Two decades

This is going to be one long post folks, so you may want to get your fish and chips now!

Twenty years.
Thats the time I've been around on this little planet of ours.
Thats twenty birthday parties. Twenty (at least) cakes cut. 210 candles blown (summation i=1 to 20).
Never mind that.

Utter turmoil.
That describes the past week. My return from Hyderabad was uneventful. I can't say the same for the days following that though.

Firstly my college has promised us 50% (5k in absolute amounts) of the money we asked for, towards sponsorship of our trip to Kolkata for the ACM ICPC. Which basically means, we run around for a couple of weeks, going from pillar to post, at the end of which, we hopefully get our money.

I've now officially started reading up on Data Mining. All I know of Data Mining, is that its a misnomer.

This week also marks my GRE preparation. I scored a 1200 on my diagnostic test. Which means an improvement of 300+ is in order.

Additionally, February is the FOSS month. On the 17th, Neel and her gang are holding a FOSS event at MCC. They seem to be doing this with a level of unsurpassed professionalism. If you're an FOSS enthusiast, you *want* to be there!

And while we're in the FOSS month, I'll tell you about Mukthi 6.03 thats coming up. Its tentatively planned for 25th March. Its going to be bigger and better than last time. Watch this space for more details!

And then there's our college alumni website that requires working on. The initial template designs are more or less designed. The backends are ready. We only need to glue up the whole thing and most importantly, document it all.

In addition to all this, there's my pet personal project: The LED interface board! The idea was initially to write an XMMS plugin using the parapin library, to get the LEDs to dance to the song. The board has only 3 for now. I need to buy another 5. Now, I just hope writing an XMMS plugin is easy...

Added of course, the personal turmoil that I've been through, but I'll let that pass.

College reopens 20th. Exactly two weeks from now. Nothing accomplished yet.