Thursday, November 24, 2005

Ten Essential Development Practices

Following is a list of good development practices from an article by Damian Conway. I am reproducing them here after slightly modifying them so as to make them applicable to programming in languages other than Perl too.

  1. Design the Module's Interface First
  2. Write the Test Cases Before the Code
  3. Create Standard Code Documentation Templates for Modules and Applications
  4. Use a Revision Control System
  5. Create Consistent User Interfaces
  6. Agree Upon a Coherent Layout Style and Automate it
  7. Code in Commented Paragraphs
  8. Throw Exceptions Instead of Returning Special Values or Setting Flags
  9. Add New Test Cases Before you Start Debugging
  10. Don't Optimize Code--Benchmark It


I guess most of these are obvious to many of us - developers but still only a few of us can honestly admit to following all of them stringently everytime. So I believe the real challenge lies in how religiously can you follow them even in the face of deadline pressures, unclear specs, and the other pain producing things that indirectly affect what you do when you write code using your favorite editor.

Read the original article by Damian Conway.

Extreme Learning

In software where things change incessantly at a high pace it is very important to know how to go about learning stuff that matters.

The natural sciences have a reputation for posing special challenges to the way we think and learn: they are a form of "extreme thinking". In this essay physicist Michael A. Nielsen discusses some of the challenges facing researchers in the natural sciences, and how those challenges shed light on other tough learning situations.

Read the essay to absorb some general principles of learning.

Tuesday, November 22, 2005

Tagyu Perl API version 0.02

I have incorporated support in the SuggestTags method of my Tagyu::Search Perl module to allow specifying options to modify its behavior when it contacts Tagyu.com servers. Thanks to Nathan McFarl for his comment.

So download Tagyu::Search v0.02 and do let me know how it works for you!

Thursday, November 17, 2005

Attending FOSS.IN/2005

I wanted to attend Linux Bangalore conference last year but couldn't. Well the conference has now been rechristened FOSS.IN and will cover all FOSS topics which is pretty exciting. Fortunately this year it seems I will be able to attend the conference and I am all excited about it. I will keep posting pictures to my moblog from there so if you wanna watch all the fun from the comfort of your $comfortable_place you know where to go.

Not only would I be able to attend some of the talks from this interesting list and learn about some stuff, this would hopefully also be an opportunity for me to meetup with some of the geeks in Bangalore whose blogs I have been reading regularly.

If you wanna meet up with me during the conference, just look for the guy with a halo on his head (no I am not bald) ;)

Creative Commons Cartoons

So I have decided to apply Creative Commons Attribution-NonCommercial-NoDerivs 2.5 (info) to all the cartoons that I release at CarryOnCoding.com. They've made choosing a license very simple which is really cool!

Oh I wish the process of choosing a license for software projects at SourceForge was similar but then stuff like this is helpful while making a choice.

Wednesday, November 16, 2005

Microsoft and Web 2.0

Robert Scoble recently posted 12 reasons he's heard why we don't find the recent Web 2.0 companies using Microsoft's web development technologies, but using Ruby on Rails, MySQL and Linux instead. (Via)

Tuesday, November 15, 2005

Got Ubuntu!

I received five Ubuntu Linux (version 5.10) CDs in mail today. If you happen to be in Hyderabad and need one, do let me know.

The CDs are free and you can order yours here. However you can also download a CD image on your own, provided your internet connection can handle it.

I would now be able to hopefully initiate the non-geeks (= human-beings?) in my family towards Linux.

Wednesday, October 19, 2005

Tagyu Perl API

Introduction

Tagyu is a service that can suggest you tags relevant to your content. They have a REST interface available so I quickly rolled up a simple Perl wrapper over it.

Simple to use

Using Tagyu Web Service from Perl is now very simple and all you need to do is:

use Tagyu::Search;

my @tags = Tagyu::Search->SuggestTags("[PUT YOUR TEXT HERE]");

SuggestTags method returns an array of strings containing the tags received from Tagyu for the specified text using its REST API.

Passing options

You can also specify options to the SuggestTags method of Tagyu::Search module as key-value pairs to modify its behavior when it dispatches requests to the Tagyu.com servers. Here's an example that sets the timeout parameter.

my @tags = Tagyu::Search->SuggestTags("[PUT YOUR TEXT HERE]",
(timeout => 600)
);
Tagyu::Search uses LWP::UserAgent behind the scenes. So for details of all supported options and their default values, please check the documentation of LWP::UserAgent's constructor.

Supports HTTP Basic Authentication

Tagyu imposes a limit of one request per minute from a single IP address and requests beyond this limit result in an error. However registered users have a soft cap of 1000 requests per day. Tagyu::Search package allows you to pass your username/password to Tagyu in the following manner:

# Instantiate a new Tagyu::Search object.
my $tagyu = Tagyu::Search->new(
username => "[YOUR-USERNAME]",
password => "[YOUR-PASSWORD]"
);

# Invoke the SuggestTags method on the Tagyu::Search object.
my @tags = $tagyu->SuggestTags("[YOUR-TEXT]");
You can register at Tagyu here.

Downloads

Need Ideas?

For some ideas on what you can do with Tagyu::Search, have a look here.

Comments and suggestions are welcome

Before posting my module to CPAN I have sent an RFC for my Perl module on comp.lang.perl.modules USENET group. So download the latest relase of Tagyu::Search and give it a try. Please share your feedback! Thanks.

Friday, September 23, 2005

Meebo - Web based IM

Check out Meebo, a Web based cross-protocol IM. It works with Jabber, AIM, Yahoo! and MSN.

Friday, September 16, 2005

Yahoo Collage Generator

My Yahoo! Image Search collage generator Perl script got a mention in Beta Hack 85 of Oreilly's Yahoo! Hacks which would come out around October 2005.



I am definitly going to buy that book now! :)

Wednesday, September 14, 2005

ASCII Star Wars

Telnet to towel.blinkenlights.nl to see Star Wars in ASCII. Ultimate!

Via.

Monday, August 29, 2005

Speeding up Firefox

Here is how you can tweak the configuration of your Firefox to make it run faster on your broadband connection.

EtherYatri.NET Blog

I had created a blog for EtherYatri.NET project quite a while ago, but due to the fact that I spend most of my time writing Perl for earning my bread and butter idli and sambhar, it had been devoid of any activity (Don't be mistaken, I don't have anything against Perl that makes me dislike it or anything like that; I think Perl is wonderful in its own unique way!).



Since I have a bunch of features in my head that I want to implement for EtherYatri.NET, well I thought a great way to build some momentum would be to respond to questions from the users at the blog. So to start, I picked some questions from Florian. Feel free to contribute your own views, suggestions, comments and questions!

Sunday, July 31, 2005

Measuring performance in organizations

Software organizations tend to reward programmers who (a) write lots of code and (b) fix lots of bugs. The best way to get ahead in an organization like this is to check in lots of buggy code and fix it all, rather than taking the extra time to get it right in the first place. When you try to fix this problem by penalizing programmers for creating bugs, you create a perverse incentive for them to hide their bugs or not tell the testers about new code they wrote in hopes that fewer bugs will be found. You can't win.
-- says Joel Spolsky


So there is an uncertainty principle of sorts at play here. You cannot measure both the source lines of code (SLOC) and code-quality simultaneously with absolute accuracy. A focus on SLOC is bound to disturb the quality of code and vice-versa.

Can we really not win?

Friday, July 29, 2005

Fogcreek Open House

JD attended Fogcreek Open House on July 14 and got to meet Joel Spolsky in person.

Wow! That’s the word which came out of my mouth when I saw Fogcreek office full of geeks! [Normally, I give this 'Wow!' reaction only when I see hot chicks in clubs! ]

He has uploaded some pictures from the meet too.

Wednesday, June 22, 2005

Got Odeo

Came in this morning to find an invitation to use Odeo (beta) sitting in my inbox. What a great start to a day! But I didn't win an iPod Mini, so boo! :-)

Anyways, I downloaded OdeoSyncr but couldn't get the setup to work for me because I do not have admin rights on the machine I want to install it on, and the setup insists on writing to "C:\Program Files" and doesn't even want to let me suggest an alternative location. I notified them about the issue and hope that it gets resolved soon.

At first glance, Odeo appears to be something like del.icio.us + blogger.com. Hmm... let's see if Odeo does to podcasting what Blogger did to blogging.

Thursday, June 16, 2005

Stay Hungry, Stay Foolish

Steve Jobs, CEO of Apple Computer and of Pixar Animation Studios, narrated three heart-warming and interesting stories from his life during the Commencement address at Stanford. The second and the third stories are especially moving. I have been his fan ever since I watched Pirates of Silicon Valley.

On a funny sidenote, did you know that Jobs was listed in the Guinness World Records as the Lowest Paid Chief Executive Officer? Can you guess what his salary must have been? Well, the answer is that his official annual salary was $1! (Source)

Tuesday, June 07, 2005

Web APIs for social networks

All social networking websites, or atleast the ones I use, should have Web APIs so that fun stuff like this and this can be done even if you don't work for those companies!

Thursday, June 02, 2005

Skype API Competition

The folks at Skype are running an API Competition. 5000 Euros of prize money are up for grabs for the coolest tools and applications that integrate with the Skype API. Deadline for apps is July 1st 2005.

I have been wanting to play with the Skype API for sometime now. Hmm. the time to do this is *now*...