Thursday, August 25, 2011

20 Years of linux - a humoristic view

From an Israeli Linux forum:

<KingYes> Today, 20 years ago, Linus announced he is working on a new operating system
<KingYes> http://groups.google.com/group/comp.os.minix/browse_thread/thread/76536d1fb451ac60/b813d52cbc5a044b?pli=1
<KingYes> This is Great, how time passes by.
<Haimn> WOW I didn't know his post still exists.
<Guest> In windows it would not happen...
<KingYes> What would not happen?
<Guest> Your lack of sense of humor.


Credit: Original Link in Hebrew


I found it amusing, so I think it was worth a translation. I tried submitting to bash.org, but it does not work ...

Wednesday, August 03, 2011

A Usefull PyGTK Example

I have been looking for a good pygtk tutorial for a very long time. I have found a few tutorials which where an overkill, so I don't link to them. By over kill I mean that they where full with details which prevented me from actually having an application working.
I found this nice pygtk tutorial, which is actually more a capabilities demonstration. After reading for a few hours, I got intrigued. But I was very frustrated since the tutorial does not produce any real life example. For example, I would have expand the calculator example to working one. I did a Google search and bumped into this pygtk calculator working example. After a couple of more hours, I have managed to produce the following "Hello World!" pygtk application which demonstrates some basic pygtk principles:

#!/usr/bin/python

# A Usefull and Active PyGTK Example
#
# This example demonstrates a few Widgets which actually do 
# some stuff, and interact with each other.
#
# oz nahum
# linuxpixies.blogspot.com 
# August 2011

import gtk

class PyApp(gtk.Window):

    def __init__(self):
        super(PyApp, self).__init__()
        
        self.set_title("Entry")
        self.set_size_request(250, 200)
        self.set_position(gtk.WIN_POS_CENTER)

        self.fixed = gtk.Fixed()

        self.label = gtk.Label("Please Enter Your Name below")
        self.fixed.put(self.label, 60, 40)
        
        self.entry = gtk.Entry()
        self.entry.add_events(gtk.gdk.KEY_RELEASE_MASK)
        self.fixed.put(self.entry, 60, 100)
        
        self.entry.set_text("bla")
        self.UserName=self.entry.get_text()  

        self.outlabel=gtk.Label('name')
        self.fixed.put(self.outlabel, 60,180)
        
        self.button = gtk.Button("Greeting:")
        self.fixed.put(self.button, 60,140)
        self.button.connect("clicked",self.greeting)
        
        self.clearbutton = gtk.Button("Clear")
        self.fixed.put(self.clearbutton, 140,140)
        self.clearbutton.connect("clicked",self.cleartxt)
       
        self.button = gtk.Button("Close")
        self.button.connect("clicked",gtk.main_quit)
        self.fixed.put(self.button, 200,140)

        self.connect("destroy", gtk.main_quit)
        self.add(self.fixed)
        self.show_all()
        
    def greeting(self, event):
        self.outlabel.set_text("Hello "+self.UserName)
        self.entry.set_text('Hello '+self.UserName)
        
    def cleartxt(self, event):
        self.entry.set_text("")

PyApp()
gtk.main()

Tuesday, July 05, 2011

GNOME Fork revisited

Since I posted in my blog about GNOME 2 fork, I have seen numerous hits. In 4 months since than,
this single post had more than 3 times hit compared to my second most popular post about TMUX copy mode.
Yesterday, I bumped into a young fork of GNOME 2, called matte. Named after the Argentinian herb infusion. Let's hope this project will not have a bitter end like the drink, and rather long sweet life. The odd choices of developers are sometimes annoying. While it might seems narrow minded of me, I do expect a project that aims to be the size of GNOME2, to write a document or two in English. He, but what do I know there are actually more Spanish speaking people. I should learn Spanish instead of blogging...
I will try Mate sometimes probably.But in the mean while, thanks to GNOME developers I have been looking into alternatives and found my own peace within DWM, and now I am building my Desktop from Scratch.


Friday, June 24, 2011

dwm Baby, Hell Yeah I am becoming a SUPER GEEK!

F#!k yeah! I am using a tiling window manager called DWM, and it is the best thing I have seen lately. Easy to compile, easy to use, and there is no mouse involved, my hands are not painful anymore after a work day (well, they do, if I go climbing...).

That said, I am also using Pentadactyl which negated the mouse usage also in side Firefox.
My hands will thank me for that in 40 years. No more painful joints....


Tuesday, June 21, 2011

The best latex editor Kile 2.1 Released!

This should be really bigger news! Although I don't use KDE at all, Kile is the best editor for Latex, I have tried. The developers released 5 beta versions before, which never gave me any problem.
11 Days ago, kile 2.1 was finally released, here is the release announcement .
I love how simple Kile is, although it is full with goodies and options. I love how it is out of the way when you want it. I tried contributing to Gummi-latex editor. But eventually, I found it useless.
I love the VIM mode in Kile, and I wish it was possible in some GTK+ Editor. Yeah, I know I can use vim-latex-suite. But I am too lazy to learn it :-). So, I use vim for all other programming, and Kile for Latex.
So, bottom line, I really recommend to download and install latest Kile!

Sunday, June 19, 2011

One more python learning resource

This one is pretty cool. It is a learning environment, which allows you also to create more learning environment. I wish I had more time to play with it!
Python Crucny: http://code.google.com/p/crunchy/

Have fun!


Monday, June 06, 2011

TMUX - copy mode and how to control multiple servers at once

Two tips which needs to be documented:

The first one is how to copy in tmux, which had me struggling a lot. Most places say that you need to type the following sequence:
CTRL+a,[ (note my prefix is CTRL+a instead if CTRL+b).
Then something tricky happens:
In some servers I found out that selection of text is initiated with either SPACE or CTRL+SPACE. So, try one of them.
Navigate with the ARROWS to select the text.
Than, copy the selected text with CTRL+W (or ALT+W if that does not work).
Now, navigate to the desired place where you want to paste the text and type the following sequence:
CTRL+a,].


The second tip is how to control multiple servers with TMUX:
First, export a variable called HOSTS holding your servers list, e.g.:
HOSTS="host1 host2 host3 host4 host5"
then run the following script in your BASH:
#!/bin/bash
# ssh-everywhere.sh

# a script to ssh multiple servers over multiple tmux panes 

usage() {
    echo
    echo
    echo "Application Call: "
    echo
    echo "$BNAME sessionname"
    echo "before calling the script do: export HOSTS='host1 host2 host3'"
    echo "as a list of hosts to work on, or you will be promted to type"
    echo "the list in." 
}

starttmux() {
    echo 
    echo $HOSTS
    if [ -z "$HOSTS" ]; then
       echo -n "Please provide of list of hosts separated by spaces [ENTER]: "
       read HOSTS
    fi
    
    tmux new-session -d -s $sessionname 
    for i in $HOSTS
    do
    tmux split-window -v -t $sessionname "ssh $i"
    tmux select-layout tiled
    done
    #tmux set-window-option synchronize-panes on
    tmux attach -t $sessionname 
}

BNAME=`basename $0`
if  [ $# -lt 1 ]; then
    usage
    exit 0
fi

sessionname=$1
starttmux

That is all about TMUX for now.

P.S.
After a long struggle again, I found out how to copy paste in VI mode with tmux:
SPACE, stars selection.
CTRL+m copies to buffer.
CTRL+a,] pastes the buffer.