Archive for July, 2009
Nice info on color-diff
Found a nice post on color diff for git/svn:
http://stefaanlippens.net/color_highlighted_diffs_with_git_svn_cvs
GIT:
$ git config –global alias.dic "diff –color"
$ git dic
CVS:
$ cvs diff -bup "$@" | colordiff | less -R
SVN:
$ svn diff –diff-cmd colordiff -x "-u -w -p" "$@" | less -R
Try denying this!
"My wife is a perpetual student, she has 2 bachelors degrees and 2 Masters. Oh, and she would be doing a Ph.D. if she hadn’t met me."
"Wow, your wife seems to like being challenge and she found a better challenge in you than Ph.D."
GUI Programming in Ruby
I am looking at exploring Linux GUI / GTK programming so I can attempt to build a decent blog client in ruby. Just found this code snippet which attempts a simple task of some network info.
In order to get it to run, I had to install ruby-gnome2 package:
$ suto apt-get install ruby-gnome2
And it worked. Simple, yet works.
Will look at the code now to figure out what it takes to build GUI in Ruby.
Any better references I can use?
Linux Blog Client: Bleezer
After trying and failing to blog successfully from Linux/Ubuntu using several clients like ScribeFire, BloGTK, Drivel, Zoundry Raven over Wine and BlogJet over Wine, I am try this blog using Java client – Bleezer.
Setting up was easy with wordpress. Just one gotcha, the default path for xml URL is /wpfolder/xmlrpc.php. It should be changed to just "/xmlrpc.php".
Just published the initial two lines and updated it. To begin with it already beats Scribefire in the fact that when updating an existing blog, it doesn’t post a new blog but updates an existing one.
Few things I don’t like about Bleezer: (already
)
- After posting each post, the edit window for the blog vanishes. You have to click "get posts" to continue editting.
- There isn’t a easy way to get to older posts without using "get posts", which sucks.
- When drafting a blog for later posting, it doesn’t automatically give it some unique name and store it in default folder. You have to manually select folder where to save and give it a name. Plus, each time you save, you can to reselect the file where you originally saved. Why can’t it know where I saved the file … It seems it was written as a very quick and dirty alternative. And I haven’t paid for it so can’t complain. This makes it a deal breaker for drafting blogs. Still survives for quick blogs though.
- The WYSIWYG editor is very primitive. It sometimes doesn’t understand newline very well.
- It stores configuration in a file called Bleezer.xml in "current" folder. This is pathetic because if you happen to be in a different folder when launching, your settings are all cleared.
- The log file prints the password in clear text! The configuration file stores the password in clear text!
Yes, it is an ugly ugly blog client. Can’t believe it still beats all the other ones out there, because it simply does the job.
Do you know any linux blog client you like?
What should a good iteration contain
set of tools like pair-programming, continuous integration, TDD etc.
I have been on about 10 different agile projects in last 2 years. As a hands on developer, the one area that is of special interest to me is what constitutes an iteration, what deliverables and progress metrics it contains? Sure they all contain a set of stories to be delivered and a working software in the end. However, the risk for over promising and under delivering or vice-versa always exists.
The goal is to promise enough (not under) and deliver on it while still taking on a few unknown. Or put it another way, minimize risk somehow. A quick search on internet couldn’t deliver a convincing set of traits that would do the same and I believe this area can use some refinement.
Here are a couple of things that, in my experience, constitutes a good mix of deliverables that minimizes risk and strives to deliver enough for a given iteration:
Deliverable user stories with varying estimates:
With experience, it is evident that delivering 5 stories worth 2 story-points (2+2+2+2+2=10) is very different from delivering 5+5=10. While 5 is usually broken into sub-stories, the crux here is to have a varying degree of complexity for stories in iteration. This allows for showing progress with long hanging fruits while dedicating more attention to relatively complex story. It also allows for shuffling items and pairs based to developers’ schedule during iteration.
Targeted research items or spikes:
Yes, the obvious here is to not take on too many research tasks. Such tasks have no promised outcomes and are hard to estimate. Here at pathfinder, we make strive to make such tasks as concrete as possible in terms of what approaches are planned and how much time we decide to dedicate for all the effort needed. The story point for such task depend on how much %age of iteration (in terms of time) such task is going to cost. A research task that takes 1 full day in a 2 week iteration will be worth 2 story points if iteration has 10 story points (assuming 10 working days in iteration). In short, identify concrete approaches and time-box such stories. And each iteration should have not more than one or two such stories.
Bug-fix and Refactoring items:
These are good low-cost items, meaning relatively more predictable in outcome. Refactoring stories are relatively easier to estimate accurately and act as filler tasks that can be performed while your pair is unavailable. Or you are sick working from home. Or can be postponed until end of iteration if things seem slipping into next iteration. Having a healthy supply of refactoring stories is not a bad thing, they can be picked up if iteration seems to be under-filled since they don’t require specifications or requirements and are targetted at improving quality of code.
Mid iteration demo and re-balancing:
Mid iteration demos are optional but we find those very helpful in showing on going progress. While scrums allow teams to be current about ongoing changes, mid-iteration demo is more for client update and re-balancing with clients. Showing progress with demo also helps with re-balancing of tasks with clients for the rest of the iteration.
Again the goal is to strive to be as concrete as possible in approach given the unknowns and minimize risk. What are some of the things in your experience that work?
Photo Credit: http://www.flickr.com/photos/27620885@N02/3018033419/
Habit
Not sure where this comes from but, a nice thought indeed.
Habit is hard to break.
Break H and you still have A BIT.
Break A, you still have BIT.
Break B, you still have IT!
Hey, even after you break the T in IT, there is still the ‘I’.
May be, that “I” the root cause of all the problems.
Cisco VPN client setup on ubuntu
There are a few gotchas when setting up cisco vpn client on ubuntu. For cisco vpn, you need 5 pieces of information from your server.
Host, groupId, groupPassword, Username, password
Usually these pieces of information is supplied by your company (or your vpn host) in the form of *.pcf file. This is a text file that you can open up and read. The passwords are usually stored in this file in encrypted format.
When setting up cisco vpn client on ubuntu, following steps are needed:
Detecting Ubuntu Version
The command is:
lsb_release -a
In order for this to work, you may need to install following package:
sudo apt-get install lsb-core
For any generic unix system, following commands can be used for other information such as machine, hardware, architecture, OS.
cat /proc/cpuinfo
cat /proc/version
uname -a #uname –help for more options
Enjoy!