Friday Jul 11, 2008

Nostalgia and a lesson

Recently, I happened to stumble upon my old old home page. This was
created 10 or more years ago. In it, I had a list of software I like.
Finding how the list changed over time was an educating experience.

My original list:
- Linux
- Emacs
- Tcl/Tk
- Windowmaker

My current list:
- Emacs
- Windowmaker
- GNU (to a certain extend)

Emacs, no  uncertainties there.  Number one.  Learned more
about it, wrote more for it and converted a few unbelievers.
Switched to Gnus meanwhile and I spend horrendous amounts of
time there.

Windowmaker, tried xfce  and gnome and kde. After a little
while everything else started getting in the way. Got half
way to writing couple of applets. Windowmaker on Solaris
applet menagerie isn't anything to write home about.

GNU, even though not an absolute must, not having some of
the things  would cause  pain in the wrong place. Having
switched to Solaris, and spending the rest of my time in
Windows, means, other than for things like Gimp, I really
don't need most of it.

Linux, not in  the preferred list anymore.  The last happy
experience I had was installing DSL in a no good laptop and
finding the laptop come alive. Nothing against and nothing
for. As I mentioned, spending all my Unix time on Solaris is
a big reason. Still, I don't find anything driving me back
to Linux. Using it at home for example.

Tcl/Tk, absolutely  not in the  list. I can't for my life
think why it was in the list in the first place. I remember
being impressed with expect, but that is no excuse. I use
multixterm regularly but that is about it for Tcl.

Trying to explain the above to myself...

A few months back, me and a colleague were trying to burn a
DVD. He had just got his MacBook. The legendary usability of
Mac was put to test. After a futile 10 minutes with the Mac,
a few seconds with google put us right. It wasn't even worth
the question "How do I ..." after we found how to do it. The
lesson learned was, usability is as much about how much you
use it, as it is about how well it is designed.

Friday May 02, 2008

JES and another installer

JES installer in text mode. Ugliest, most useless of
all installers of all time. If there is a user surly
award, JES should surely get the award.

Yes and Y and Enter and 1 and A, it is a menagerie of
choices with the same meaning. But none of them can
be intermixed.

While I am in the topic of installers. Recently I had
to make a choice against my wish where installer could
use a new feature and using this feature would allow an
existing error to be eliminated. The install would use
the new feature and proceed. That would hide one more
question from the user and that I thought a good thing.

But surprise surprise. It was decided that the existing
error must be replaced by a screen to inform the user of
the alternative \*and\* get his confirmation to use the new
feature. If he says  "No" install would fail. The screen
would say

Error, can't install unless I use feature 'X'".
Use feature "Yes/No"?

I translate the second line as:

Fail install so I can throw an error "Yes/No"?

Logic? Existing customers could depend on the install
failing and hence we should not change the behavior.
All newcomers are lemmings anyway. \*We\* design only
for existing users!

With this excellent logic in place, I can foresee the
future where every new feature will need multiple menu
choices which says only "Fail/Succeed">.

Tuesday Mar 18, 2008

How to kill software

This is yet another rantish blog entry. Too many of them recently. Well..

Why some software dies while some survive? I have convinced myself
quality, usability and applicability has nothing to do with it. I use
Emacs, you may use vi or notepad or brief. brief? brief from underware
Inc. No longer out there. Notepad? alive, even my 2 year old has
accidentally launched it while "exploring". Windowmaker, dying. I
always come back to it because it gives me functionality I need and
nothing more unless I ask. You would have your own examples. I am not
talking about open software alone. TruCluster. I work on Solaris
Cluster and couldn't help hearing tales about how good it was - going
going. OS/2 - gone, Windows - very much around, eh?

Bad management. From inside Sun I have seen some wonderful products
die a horrible and prolonged death because of internal politics. I
have seen that happen outside Sun too. The usual reason - even a
failed new project helps in increased visibility. Old wonderful
products just bring in money, not promotions. Usually new projects
cannot happen unless an existing something is killed. Wait for an
ambitious enough person with sufficient lack of understanding to come
along and you can see the death of a fine piece of software. That will
not be a long wait usually.

Laziness and lack of neurons. It is highly unlikely that the same
person(s) who conceived and coded the first cut will continue to work
on some software for ever. Lisp, vi and Emacs anyone? The new person(s)
working on it have to be motivated and maybe \*better\* skilled than the
author(s). It takes skill to understand a piece of software well
enough to play it. More than that, it takes dedication and hard-work
to stick with it long enough to start understanding it well enough.

Lack of courage. The simple belief "if it breaks I will fix it" is
very hard to come by. Tweaks and blobs and nudges are all well and
good. I worked for sustaining for 5.5 years. The written and unwritten
law there is "lesser lines changed better the fix". That works only to
a certain extent. Every once in a while you have to rip out huge gobs
of code and replace it with something better, more elegant, more
scale-able more tuned to the present designs. Software must change to
survive. If you want proof, read this blog entry by Charles Suresh
(BTW, he was my mentor when I joined sustaining).

One last reason, lack of vision. If the software is conceived with a
limited scope it is guaranteed not to survive long. Over reaching and
over engineering all aside, when you are talking about surviving 20 or
30 years or more, the initial idea has to be grand enough and solid
enough to survive and kick butts of new kids on the block for all that
time. Take Emacs. Survives and kicks butt.

The above is not halfway to a complete list. Still, all said and done,
it hurts when a perfectly fine piece of software you like, is put on
the chopping block for any or some of the above reasons and you have
to watch it die.

Thursday Mar 06, 2008

Making money and panicing

Last week I was going through a gargantuan depression triggered by
economic depression and realization that life is not fair and that
everyone and everything is mortal. I lurked around like a an unhappy
pumpkin till I got Terry Pratchett's latest - "Making Money". It put a
smile on my face the moment I felt it in my hand.

I finished the book cackling, laughing and giggling while maintaining
the unhappy pumpkin look. "Recursive premonition" caused me some
thought. There were some almost page turning moments towards the end.
Overall not as good as Thud! even, enjoyable if you are a fan.
Finished it sans unhappy pumpkin face. Then it hit me that I should be
further depressed due to the "embuggerance" Terry was diagnosed
with. That should have tickled the mortality factor of my depression.

That didn't happen and once again a Pratchett creation worked for me
as the perfect anti-depressant. I am now fit enough to tackle bugs
that should not exist in the first place. The current one is that
Solaris tries it's utmost to write dirty pages after panic. The
comment in zfs_sync tells the problem as it is.

zfs_sync(vfs_t \*vfsp, short flag, cred_t \*cr)
	 \* Data integrity is job one.  We don't want a compromised kernel
	 \* writing to the storage pool, so we never sync during panic.
	if (panicstr)
		return (0);

That is not the only problem. After a panic there is only one cpu
running threads and there is no pre-emption. Perfectly normal calls
like mutex_enter() and delay() will behave differently after a panic.
Understandable. But does panic code account for all that? No!


It first asks filesystems to sync() by calling vfs_sync on all mounted
file systems. I can work around by returning immediately if a panic is
in progress as ZFS does. Added that to PxFS. But panic is not done.
It calls pageout on every dirty page. To workaround I have to add the
same panic-check in pxfs's putpage. Did that and the bug is fixed.

But why? Why would you want pages from a compromised and hobbled
system to be written out? With a non-local filesystem almost nothing
works. You can't trust the data any more. System behavior after panic
is different enough to not trust locks and timeouts. My conclusion is
this is a throwback from the age of no-logging in ufs and pushing out
pages at panic was needed to avoid file system corruption.

Tuesday Nov 06, 2007

saving the e-mail tag by tag

Is it only me who is stuck behind a not-very HTML friendly e-mail
mentality? Everyday I feel so. Many a time I have risked the enamel of
my teeth grinding away than ask the sender to please reduce HTML tags
to less than the message content. I confess I use XEmacs and gnus and
w3m to render HTML. While it can render HTML it is not as HTML
friendly as any of the holy browser based e-mail clients. Any time I
raise this issue the answer I get is "loose the looser e-mail client
looser!". After hearing that I get the feeling the sender didn't know
there is an option to disable HTML in his or her e-mail client.

Ever so often, instead of reading only the sentence "LOL, you \*are\* an
idiot" as a reply to a mail of mine, I end up reading pages of css and
HTML tags and the ancestry of the HTML e-mail composer which was used
to type in "LOL" in large red underlined font, oh, and it is centered
on the line and maybe justified too. Is anyone else irked by the large
amount of non-information e-mails contain? If I am reading my mail on
a poor man's terminal and if the client couldn't get correct colors, I
end up looking at black letters on a black background.

For me ASCII is rich enough to convey emphasis and rage and tantrums.
If holy wars could be wages on much poorer terminals, why use these
bells and whistles?

When conveyed in an e-mail, the message:


is as emphatic or more emphatic than


It is much easier on the eyes and I can also understand that I really
really should not have deleted the file. Contrary to the psychedelics,
shocking me into obeying, I know not deleting was important because
the sender didn't take time to change font colours and size.

Even more irksome is while deep into a e-mail thread with many
participants contributing, some of them insist on quoting with HTML
something or the other and indentation. I am attuned to reading this:

+---------------------                  +---------------------
| >> them                               |       them         
|                                       |                    
| > him                     and not     |    him                     
|                                       |                    
| " me now"                             |" me now"           
+---------------------                  +---------------------

I can understand indentation for delineating code blocks. But e-mail
as I remember did not depend on indentation alone for quoting. I still
don't believe e-mail is a web product. Leveraging web provided
services and features is fine. Over-use and mis-use is not the same as

That brings me to another story my father narrates...

The priest and his helper are walking along a river. This is a long
time ago and you should know that the priest is of a higher cast and
have rights which the helper does not. They are walking along and they
reach a place where the river stinks like rotten eggs.

The priest pinches his nose and walks on ahead. That is when he
notices his helper also pinching his nose.

The priest asks: "You Idiot, I am pinching my nose to keep the smell
out. Who gave you permission to pinch your nose?"

Helper: "Oh exalted one. It is below me to keep the smell from
entering my unworthy nostrils. I am pinching them to keep the smell
that came in from going out.".

The moral of the story is to not quote non-contextual stories.

Tuesday Apr 03, 2007

A rant for good english

I am not a compulsive essay writer. Never got the urge for verbal
diarrhea every day around morning or noon or even night. What gets my
goat or sheep or the whole flock is, any long standing irritant. The
equivalent of Chinese water torture without the water or the Chinese.
The water in this case is prose or what passes by with that name and
the Chinese is substituted by countless bloggers, article writers and
emailers. If I missed your favorite group feel free to add it
mentally. But what am I ranting about here? English. Plain, simple
English. Something that seems to exist rarely now-a-days.

"Whut u doin n d wknd man?" - babbles a friend on email. "That
experience was like awesome and stuff, you know?" - guzzles a product
reviewer. "Your making no sense!" - exactly! "There are three
configuration files are to be modified" - 'are' fetish ;)

Having been in this (computer/software) industry for 10 odd years I
can read variables of the kind - fls_idl_pkntr - without breaking
stride. There is some kind of justification for that; using 'i' and
'foo' and 'retval' too often can be injurious to health. But, I don't
see the extra effort of typing "t h e" instead of "d" bringing on RSI
or exhausting your alphabet quota for life. An apostrophe isn't a
mustn't, it is your choice, you are writing it.

Now for the big question. WHY? Why should I get all worked up over
this? Tolerance, allowance, extrapolation, experience and mind reading
is enough to get through all of the above and more. Then WHY am I
getting worked up? I feel insulted. I feel the other person isn't
serious about communicating. Heated rinse water from a suitable dish
is soup-ish, but is not exactly soup. You wouldn't wear a broad banana
leaf to office, though that too is clothing. (okay, I may some day.)
Why the difference there? Because you know there is a limit to the
deviance expected from a normal human being. Also because you are
showing respect to others in the same social/work circle.

Why shouldn't communicating in English follow the same principle?

To me, reading a well written article or a book or a blog is a joy. I
know everyone can't be a Steinbeck or O'Henry or Terry Pratchett. The
least you can do is complete your words, use words in the dictionary
and use words as they are meant to be used. Not like you know awful
stuff like 'like and stuff'. Punctuations aren't very difficult.  If
in doubt don't use don't - use do not. You're right, using you are is
your choice. One of them is less confusing.

Spell checking isn't rocket science unless you have the wrong
dictionary installed.  At least, when you are publishing something to
the big wide world, do a spell check. Weather you goat it rite will
depend on wot you rot. Read it after the initial spurt of adrenaline
that made your start has worn off.

Arrgg... now I sound prissy enough to be hated ;) But I'll tell you
this.  Writing about "how someone else should write" is fraught with
danger.  I would have to read the above many times to make sure there
are no silly grammar mistakes or non-deliberate spelling mistakes or
bad language or ... think before you write.

I will conclude with a story my father narrates (17 times as of last
month ;) ) whenever I deliver a well thought argument point.

There was a priest who was well respected in the village. One day, to
the horror of the villagers, they found him being dragged through the
paddy fields by a buffalo. Apparently the priest's head had got caught
between the buffalo's horns. They caught the buffalo and managed to
extricate the priest mostly unharmed.

The village elder asked: "Priest! What stupidity is this? Couldn't you
have thought a bit before doing something like this?"

The priest grew angry: "Who told you I didn't think? For the last
three weeks I have been watching this buffalo and it's perfectly
curved horns. It's after three weeks of deep thought that I decided to
put my head between it's horns. Don't you call me stupid!"

The moral of the story for me is to not argue with my father. For you
it is to do spell check or to think before you write.



« July 2016