Monday, June 30, 2008
The Erlang Exchange
I thoroughly enjoyed those two days at the conference - lots of interesting sessions, lots of erlang gurus and a lot of technology enthusiasts.
I got to speak to a so many new people in those couple of days and had lots of interesting conversations.
Here is my account of the event as I saw it.
Friday, June 23, 2006
The "Right" choice!
Recently I had to give a demonstration to the customer about our approach to functional testing in my project. So I gave a demo of how Sahi works and how intuitive and powerful it is - and needless to say, they were impressed. Not with my presentation skills obviously,(I know that i suck at those things) but with the way Sahi works. Whether they will use it or not, I dont know, but one thing is for sure - I was even more convinced about this after the demo.
See for yourself if you don't believe me. There are lots of Web automation and testing tools out there and I'm not trying to compare. But the choice of a tool should not come in the way of development or maintaining the application. It should have minimum interference with the application but still achieve the purpose. And you should be able to extend the tool to your needs. And I think Sahi goes a long way in achieving all this. It just works like a charm. Well, I won't talk about what all it can do... just visit this and have a look.
Good job Narayan!
Saturday, April 29, 2006
Time to Synchronize...
There is a Subversion server on which our source code resided and I was setting up Cruise on another machine which was supposed to be our CI build machine.
Steps I followed:
- Download and install CruiseControl
- Do an initial checkout from the repository into the Cruise projects directory
- Change the sample config.xml to set the build interval, repository location, publishing results etc etc.
- To verify, force a build. (or checkin to the repository and see that it kicks off a build)
But I found that later whenever some code gets checked in, cruise somehow was not picking up any modifications at all. After struggling a lot with the configurations and searching on the web I shot a mail to one of the people behind CC and quite soon, I had the answer.
There was a simple mistake that was causing Cruise to behave randomly. The problem was that the system time on the Repository server and the time on the cruise control box was not synchronized. There was some 5-6 hour difference between the two. CruiseControl checks for modifications that have happened after a given time. So if the time is not synchronized, obviously it wouldn't find modifications!
This is very important whenever CruiseControl and the Source repository are on different machines:
Make sure that the time/date on the cruise box is synchronized with the time/date on the repository box.
Btw, This may be helpful.
Saturday, July 23, 2005
Communication with E.Ts - Yahoo!
I was trying out the interfacing of ruby with other languages like C/C++, Java etc and wanted an example. So, I downloaded the C API (libyahoo2) for yahoo messenger with the idea of writing a wrapper for it in ruby. But I somehow couldn't get it working even after trying for almost a week after which I was too frustrated and gave up that idea. In the process, I looked at the C source code and ...hey! I said. Why not...? yes! you guessed it right! It looked as though I could write it in ruby itself from scratch!
I started off soon. Now, Yahoo has its own packet strcture to manage communication between its client and server. Or, can you say its own Domain specific language in a very crude sense? whatever. I tried to build that packet structure but with no success. The yahoo server doesn't respond at all if the packet is not proper i.e. it doesn't say that I am wrong. This situation looked as though I was trying to communicate with an extra-terrestrial entity in its own language!
It was indeed a very tricky situation.
- You don't have tests to tell you what to expect out of your code.
- You don't know how near you are or how far you are to the solution until you actually get the right solution.
After that it was all normal. I generalised the packet generation and cleaned up my code. Right now I just have made of it a sort of API which can be used to write any sort of client. I have written a small CLI client with just the basic functionality of logging in and sending/receiving messages and typing notifications. Now I am thinking of writing a web-based client using ruby on rails and AJAX.
This was quite a useful experiment for me. It made me comfortable with ruby. I learnt a lot about how yahoo messenger works and in general how such asynchronous messaging works. I also recollected socket programming and multi-threaded programming and reading C code ;-).
Saturday, July 09, 2005
Stony Spells
"Take a true object-oriented language, such as Smalltalk. Drop the unfamiliar syntax and move to more conventional, file-based source code. Now add in a good measure of the flexibility and convenience of languages such as Python and Perl. You end up with Ruby. "
"Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a rocess is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells."
Monday, June 27, 2005
The Hard and the Powerful
I was a bit sceptical after seeing the extensive use of parenthesis and prefix notation ( One of the 'bad' things I've heard about lisp is this : Lots of Irritating Superfluous Parentheses). I almost felt that I was wasting my time on a complicated obsolete language. But I'm feeling a lot better now. I guess its just a matter of geting accustomed to it.
And maybe one more thing I miss is a good IDE with all the features like autocomplete, refactoring, etc. But that's not a fault of the language. Probably I have not come across one yet. However, thats not going to stop me from continuing with my Lisping.
One thing is for sure: Lisp definitely IS a powerful programming language.
Found this quote interesting:
"Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot."
- Eric Raymond, "How to Become a Hacker"