< December 2005 >
SuMoTuWeThFrSa
     1 2 3
4 5 6 7 8 910
11121314151617
18192021222324
25262728293031
Sat, 24 Dec 2005:

Dr Susan Blackmore wrote a very nice book called - The Meme Machine. Essentially it describes that the next form of self-replicating life to evolve are the memes which exist orthogonally from the carrier minds in just the same way organic life lives in comparison to the inorganic matter.

So let me follow up on the latest meme doing the circuit. Yes, the superhero quiz.

You are Batman
Batman
85%
Hulk
85%
Superman
60%
Robin
55%
Green Lantern
55%
The Flash
55%
Wonder Woman
45%
Supergirl
45%
Spider-Man
30%
Catwoman
30%
Iron Man
15%
You are dark, love gadgets and have vowed to help the innocent not suffer the pain you have endured.
And I get a super hero who has no super powers. Well, back to finishing that 'absolut anger' pic.
--
Now, release your anger! Only your hatred can destroy me!

posted at: 17:47 | path: /fun | permalink | Tags: ,

Disclaimer: I work at Yahoo! and opinions expressed here are truly my own except for the mails quoted, in which I had no part at all.

This is quoted from a thread about Guido Van Rossum joining Google and proves that some people have a sense of humour. This is starting from the fourth thread to spawn off. The subject line stays the same through out the thread.

> No, I take that back. The Most Serious Crime is not putting in "{"s,
> leaving out horizontal space, and adding gratuitous parens and spaces:
> 
> int foo( int bar )
> {
>      if(bar)
>          return(bar+1);
>      return (bar);
> }
> 

I sort of like:

int foo( int bar ) {
    if (bar) return(bar+1);
    return (bar);
}

That's my "gziped" indentation...

Reply #1: introducing the ternary operator

> I sort of like:
>
> int foo( int bar ) {
>     if (bar) return(bar+1);
>     return (bar);
> }
>

eww...

int foo (int bar) {
  return bar ? bar + 1 : bar;
}
> 
> int foo (int bar) {
>    return bar ? bar + 1 : bar;
> }

eww...

int
foo( ....

Then I can reliably locate the implementation with the find function
of my IDE:

$ grep -n '^foo(' *.c

reply: tools make a hacker

>
> $ grep -n '^foo(' *.c

man ctags

>
> man ctags
> 

ctags on steroids: man cscope

Of course by then the language wars started :-

All languages must be ultimately compared with The One True Language 
of course...

(defun foo (bar) (return (if bar bar bar+1)))
> (defun foo (bar) (return (if bar bar bar+1)))

(+ bar 1)

But again the C programmers prove that they rule ...

// golf ?

int foo(int bar) {
	return bar + !(! bar);
}

C++ programmers try to top the effort at simplification - I am too embarrassed to push that code here right now. It is a bunch of code with templates and operator overloading. And finally the killer discussion ...

> formatting. Try arguing with people about size of TAB (You can get 2, 4,
> 8 and even 3!!) or whether there should be space after an 'if'

A tab should be exactly one tab in length.  No more, no less.

Friday nights, eh ? It was as if the entire crowd said - who cares whom Google hired, let's discuss important things like where to put braces.

--
The reason why worry kills more people than work is that more people worry than work.

posted at: 17:29 | path: /fun | permalink | Tags: ,

I usually work on the command line. 80x25 columns are a lot easier to read than the X terminals with fonts. With my old box, I used to use mpg321 to play music on Alt+F6 terminal. mpg321 sucks totally here - but xmms works well, except for an application xmms uses obsolete OSS audio interface warning in the kernel. Also these days, a lot of what I have are .ogg files. I don't really like mplayer - mainly because it doesn't let me enqueue songs, like xmms does. I could use xmms easily, if I didn't have to switch back to X to skip a song or reduce the volume.

Necessity is the mother of invention, but I didn't have to invent an entire media player here. I had the xmms-remote code in my distfiles directory and I started poking in there. Before soon, I discovered that I had python bindings installed as well. The API is amazingly easy to use. I wrote the xmms code in about 10 minutes - doing curses without any documentation took some time (thank $deity for the test_curses.py)

You can get my original 100-odd lines of cxmms.py. It is pretty much self-explanatory, except for the gratuitous use of lambda. Also it is a good example of how to wait for user input while other screen updates are required. And I want to use the j search shortcut - any volunteers to hack that into the current code ?

It was now 4 AM saturday morning. Sleep is slowly starting to become an optional requirment for me. I went back to the bed and picked up the book to continue reading and the next page had these lines in it.

He was in the company of ... another man who would stay up all night 
in order to invent an alarm clock to wake him up in the morning.

I got distracted by this while I was hacking away in jit-interp.c trying to fix stack allocation ordering. Reminds me of the last chapter of So Long and Thanks for all the Fish.

Maybe I should trade in this life and ask for a refund ?

--
There was a point to this story, but it has temporarily escaped the chronicler's mind.
             -- Douglas Adams

posted at: 16:44 | path: /hacks | permalink | Tags: , ,

RAID-0 has been causing problems for me over the last few days. Finally I opened up the bloody box and re-connected the two 200 GiB hdds to the main SATA controller. Took some time to actually push all the data onto a borrowed 250 Gib usb hdd - before I broke up the RAID-0 setup. After all that, now the system is back to normal.

/dev/sdb1              47G   42G  4.9G  90% 
/dev/sdb2              47G   15G   33G  31% 
/dev/sdb3              92G   48G   40G  55% 
/dev/sdc1              48G   34G   15G  71% 
/dev/sdc2              48G   48G  159M 100% 
/dev/sdc3              90G   42G   44G  49%

Looks like I can finally throw out Fedora Core 3 out of the box.

posted at: 16:31 | path: /hardware | permalink | Tags: , ,