Sunday, October 26, 2008

I have been thinking of a few things for a long long time.One of it is computer science and the other thing is entrepreneurship.Not to mention other things I am interested in - fitness,family,investment,music and reading

At least from the past five or so years I have been wanting to dive deep into these fields.But thanks to my laziness I have been able to go nowhere
with it.

I have now also been theorizing on why I am lazy.I think there are a few things probably that I was doing very wrong

  1. Focusing on Long term goals: I was good at thinking where I wanted to be in say five years from now.These grand plans seems so romantic that I tendto lose touch on what I need to do immediately to get there i.e the short term plan - what I need to do in next one hour, one day and one week.Many a time I would end up day dreaming of how life would be five years from now instead of productively spending time on the near term tasks.


  2. Distraction: Even if I get to making my short term goals ,I would easily get distracted from the task at hand and switch to another task and then another....Finally at the end of day none of my tasks are done and some of it probably will never get done.So I think unless the task was totally a pathetic , bad and horrible idea to do, one should always make it a habit to take the task to its logical conclusion


  3. Wrong prioritization: I do make a list of todos every morning most of the morning, but the problem is quite a few of them on the list are what would be classified as "boring" tasks by most people.But that doesn't mean these were the top priority tasks for the day.Now I would easily convince myself that I could always catch up on them later and instead start working on something I find more interesting.The end story - the boring tasks would never be done because I never did them and the interesting tasks would never be done too because I always had the nagging guilty feeling of not working on the high priority tasks.

So since I am clear on where I want to get in the next five years and it really should be hard to break them out into near term goals, if I just focus on the tasks till they get done and build the discipline to do the higher priority ones first I think I should be doing better than
atleast what I am doing now :-)

Ok let me get to my first near term goal - figuring out how google app engine works so that I can soon get started on a idea I have for a web site

Friday, June 20, 2008

some tips from a jruby hacker on hacking jruby

Some good advice if you are interested in getting into Jruby dev

(3:06:39 PM)
bgurupra: i am wondering what is the best way to get to start contributing to the code source of jruby,trying to understand it by tracing the code seems a daunting task
(3:07:11 PM) VVSiz: yeah
(3:07:43 PM) VVSiz: bgurupra: the easier approach would be to start running the rubyspecs (or writing new ones) and start fixing bugs exposed by those, one by one
(3:08:32 PM) bgurupra: ok yeah I read that on your blog :-) but do you suggest some theoritical read up of compiler theory?lex , yacc etc?
(3:09:09 PM) VVSiz: bgurupra: in most cases you don't really need to do that :)
(3:09:24 PM) bgurupra: oh ok
(3:09:33 PM) VVSiz: that stuff is mostly done and works OK now (with enebo and headius taking care of it)
(3:09:44 PM) VVSiz: and it *IS* very hard path to start up with JRuby :)
(3:10:13 PM) VVSiz: I'd say that starting looking at the jruby bugs and picking up the easy ones until you comfortable, is better
(3:10:33 PM) VVSiz: and in most cases, the fixes are not in compiler/interpreter, but in core class libraries
(3:10:54 PM) VVSiz: and for those there is a very simple mapping Array (in Ruby) -> RubyArray (in JRuby)
(3:11:00 PM) VVSiz: String -> RubyString, etc.
(3:11:17 PM) VVSiz: so, 99% of your time you might spent in org.jruby package, where all those core classes reside
(3:11:39 PM) bgurupra: ok yeah I'll take that approach
(3:11:50 PM) VVSiz: another good way to help out is to run various benchmarks, identify the places where JRuby is slower than MRI and figure out why
(3:12:01 PM) VVSiz: or even writing small benchmarks that clearly show the problem
(3:12:08 PM) bgurupra: OK..
(3:12:46 PM) VVSiz: but I tell ya, interesting stuff, but not that easy, especially on top of the VM, with different options, different garbage collectors, different platforms :)
(3:13:42 PM) bgurupra: yeah sure there is loads of fun stuff :-)
(3:13:43 PM) VVSiz: one of the biggest issues in that area, it seems, is Rails performance. everybody agree that Jruby should be much faster with Rails, but nobody could come up with the exact places where JRuby wastes its time
(3:13:51 PM) VVSiz: yep, it all over the place
(3:14:18 PM) VVSiz: pick up any bug, and chances are, you'll have fun :)
(3:14:40 PM) bgurupra: yeah I'll get to the Jira right away :-)
(3:15:02 PM) bgurupra: thanks as always VVSiz for your inputs/help :-)
(3:15:36 PM) VVSiz: sure :)

Tuesday, June 10, 2008

no clear in cygwin :-(

Of all the unix commands I use the most clear is probably the number one on the list and cygwin does not have a clear command :-( and I hate cluttered screens

I could get around it by adding this line in the .bashrc file
alias clear="cmd.exe /c cls" though!

Monday, June 9, 2008

ah compact ruby!

I have this problem of messing up my desktop all the time.I keep all sorts of temp stuff(files and folders and short cuts) on the desktop and forget to clean up and before I know its one BIG mess.Since I am trying to pick up on a bit of ruby I tried writing a little script that would clean the desktop for me and put all the stuff i haven't touched in a while into a temp folder somewhere

Not to mention wifey was in a bit of a bad mood and I was better off looking busy :-)

I must say Ruby's code was much compact and more elegant than what I would have been able to do with Java.With some basic error handling and re factoring everything into logical methods it was still just 35 lines of code

Wednesday, May 14, 2008

So following up on my previous post,I figured the only way to get to path 2 is to do something on path 2 before somebody hired me to do path 2 stuff.Did a bit of research around looking for open sources projects that were interesting.I have kind of picked JRUBY for now, it is reasonably established and at the same time has lot of stuff still being worked on it or atleast thats what their JIRA says http://jira.codehaus.org/browse/JRUBY.So I tried to get it to compile on my machine only to realize it needed Java 1.5.Then I just tried forcing it to compile with Java 1.4 and then thanks to the tons of errors it spewed, I realized how back dated my Java skills were and spent some time learning about Enums and generics and static imports with java 1.5 which has been around for over 4 years now and I don't see we using it on our project at office anytime in the next 2 years atleast :-(

Monday, May 12, 2008

I have been in what is called the software services industry for the past 6 and a half years now and in that last 6 and a half years I have come to realize that there are distinctly two different paths you can take if you are a software engineer.(And lets cut the crap of the different titles people have as junior programmer, senior programmer, architect, designer etc etc, lets keep it simple a software engineer is one who builds software to solve problems)

  1. The first path is where you are building software to solve business problems directly
  2. The second path is where you build software so that people on the first path can use it to solve business problems.
When I started off I really did not see much difference between them, but as I progressed I saw the paths diverging more and more.So one needs to really pay attention when they start off on what path they like , which I unfortunately realized a little late :-(

To be successful on Path 1
  • You need to love talking to the business people and understand their requirements and gain their confidence.
  • You need to be a jack of all trades, need to do (boring?) things like requirements analysis, do reviews, come up with designs, code them, test them.(But you would rarely need much knowledge of any of the things they taught you at school under the science called computer science)
  • Your presentation skills and communication skills play a big part in being successful
  • You will eventually have to take care of a team of software engineers and a good amount of your time will be spent on being responsible for their work as well
  • And finally you become technology agonistic, you know no coding just creating presentations and word documents and understanding standards is what it means :-)
I have never been on path 2 though I wish so much I was there.Atleast from what I see Path 2 seems a much more fun place to be in if you like
  • Hacking more and talking less to people especially who don't exactly understand how computers work(a.k.a customers)
  • Yeah you need to document,design,code as well here but much more fun doing this for say the next version of your pet Firefox extension than if you are doing this for release 17 of an old application for pulling customer number information from a stupid mainframe system
  • If your hacking skills are par excellence, people will bear with your pathetic presentation and communication skills .Afterall its the inside that matters and not the outside
  • Maybe you will end up being a lead here as well, but I am sure there are multiple projects where the complexity of the project is so high that you will still be valuable as an indiviual contributor
  • The more you are here the more interesting problems you will solve and the more cool you will become and more cool you are.Its a perspective again, some people might find IT Architects from big corporations wearing 3 piece suits and doing slick presentations cool but then lets screw those people now :-P

PS:Now don't get me wrong I know there are problems in the domain of path 1 which are extremely challenging and I know there are problems in path 2 which are very boring,I am just talking of the averages of what I *think* it is like to be in path 1 and path 2

Thursday, February 7, 2008

just some random stuff

I was getting curious for a while on how good an idea it was to start some sort of a classifieds web site for just Bangalore but apparently I am totally out of touch with the classifieds space here :-) Took me five minutes to find 5 such web sites, Didn't like any of them in particular ,somehow they seemed overloaded with information and mostly the GUI was bad (but neither can I think of how to make a classifieds web page look uncluttered)

http://classifieds.sulekha.com/bangalore.htm
http://www.indiagrid.com/bangalore/index.shtml
http://www.indianflyer.com/
http://classifieds.webindia123.com/classifieds/asp/by_state.asp?city=Bangalore
http://bangalore.indialist.com/

But what I did find useful was flipkart.com, a startup which is basically an online book store but the GUI is much better I thought than the other online book stores like Amazon for example.It didn't seem cluttered and I just hate web sites( or any other application) which clutters lots of information and controls in a small area.Not to mention the book prices I thought were really good and it says they will ship free of cost anywhere in India.

And last but not the least google has this interesting page called google trends where they rank what is the most searched items in India http://www.google.co.in/trends.
Looks like today India was today mostly interested in an actor's suicide and a doctor getting arrested for taking lewd pictures of his patients :-)