Saturday, September 5, 2009

Roo, Love at first sight

It's 1 a.m and i decided to give Spring Source new product a try and i must say i loved it. I find so pain to setup a normal spring based project from ORM to web layer and those configuration files, test setup, web.xml, urlrewrite.xml, applicationContext files and you know the list and of course dependency management with pom.xml. With Roo it was just few commands and everything is ready in few minutes!!

But everything is not like a ultimate love of life, it requires AJDT editor otherwise it will show compiler errors which involves something like user.persist() and AJDT editor doesn't support code completion.

Sunday, August 30, 2009

Nepalese Developer and Open Source

Out of nowhere today i googled for opensource project by Nepalese and the result was not very convincing. I always knew about Nepalinux which is a skinned version of Linux for Nepali Language but not sure how many people use it and there are one or two others. Now, if we try to argue on this why there aren't any major open source projects by nepalese developers or companies believe me we can give hundreds of reasons, but i am darn sure these would be the foremost -
  1. We don't have a fuck'n electricity for 10hrs a day when do we write open source??
  2. 56kbps internet speed and you are telling me to contribute to open source?? Dude get a grip.
  3. Salary is not enough to survive in this country, why on this earth we care about open source.
  4. Lets face it we are not made for that.
  5. There are more interesting things to do then code all the time.
  6. Government, institutions or some IT companies are not helping much on this.
  7. No major open source nepalese organization to help promote it.
  8. Even if i start something there won't be much help from other people.
  9. There are developers from lot of other countries too without open source. what's the BIG DEAL?

So, are these the real problems to blame?? Partly big YES. But i think there is more than this, i googled for 'Nepali + Open Source' and the first result was 'FOSS Nepal Community - FOSS Nepal Community Wiki' and i clicked on that and i get a page with the error '(Can't contact the database server: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) (localhost))'. (Not sure if it's fixed by the time you are reading this article) The point here is, we nepalese need to have organization for every shit we do and talk about it, give presentations have conference, invite guests, acknowledge 10 different peoples who haven't done a shit. I was in a Computer association of Nepal, ANA conference in San Francisco few months back there was a whole day presentation of all these shit but no one even talked anything about code, open source. When people talk about IT every time there is this gigantic words like 'Development of Nepal with IT', 'ICT for Nepal's Development' and some similar things.

I think what we should understand is that IT exists when there are softwares with a good quality code written by some good quality programmer or an average programmer who wants to be a good programmer and who loves to write code and solve problem for the people irrespective of the domain. Think about it if someone from Nepal had created anything like 'twitter' or say 'facebook' if we were to talk about popular web applications. It would have made such a difference in this IT world. It would have brought nepalese engineers to the level and it would have been lot easier to ask for offshore work which is a major talk for every IT conference or seminar that happens in Nepal. Applications like facebook and twitter doesn't need any organization or conference to create it in the beginning. It just needed an idea and few motivated developers to write the code.

Institutions should encourage students about more practical world of IT and softwares too along with the core computer science courses. There's a big problem in nepalese technical institutions too where students cannot really envision the scope of what they are studying so it's obvious for them too for not being able to think of new innovations and ideas and a guts to implement it. For computer science students at least there should be some practical training camp to teach them about trends in software development past, present and the future with some practical world examples. For example there can be a session where they are taught about version control, frameworks, how frameworks evolved over the years, and about the different technologies that's being used and not so used with reasons. Different scope of software development like web application development, game programming,system administrators, data warehousing etc with real world examples. So that student understand little bit how the things work when they land up with a graduation degree.

Also, it's important for students to research on what they are doing they need to find a topic of interests and work hard on those, Everyone may not end up writing operating systems or join NASA. So they need to find what they are intrigued by and start working on those producing little projects for use by juniors. Times are changing now, even in Nepal internet use and accessibility is more than before. People are trying to come up with lot of ideas. Lot of people have access to laptops now and most of the development tools are free all you need is a little bit of thought and guts to write code.

I am writing all these but i am not a keeper too, I haven't really contributed to any open source project (except few tutorials for GraniteDS) neither was i very thoughtful while doing my B.E, but these are the things that i have realized over the few years working in big projects and team and having seen all the things happening.

I am sure everyone has opinions feel free to appreciate or hit me on my head with comments!! As always my whimisical ideas.

Friday, April 3, 2009

JavaFX on MacOS.X using Java6 and NetBeans 6.5

I had a problem running JavaFX samples in my Mac OS using Netbeans 6.5 and Java 6. I was getting this build error
Error: JAVA_HOME is not defined, cannot find "java" command.
/Users/puran/NetBeansProjects/Calculator/nbproject/build-impl.xml:143: exec returned: 1
BUILD FAILED (total time: 0 seconds)

Even though i had the environment variable JAVA_HOME defined in my path and java command was working in my console not sure why netbeans was not able to find JAVA_HOME. Also when you install the javafx plugin in Netbeans javafx command is not recognized unless you add it to your PATH variable. Finally i got it working following these steps:

1. Create a .bash_profile file to define few paths, (Note that .bash_profile does not exists by default if you have a new mac so you have to create it manually.)
export JAVA_CMD=$JAVA_HOME/Commands/java
export PATH=$PATH:${JAVA_HOME}/bin:/Users/puran/.netbeans/6.5/javafx-sdk/bin

2.Now go to the location where javafx-sdk is installed by netbeans, in my system it is at location
Define JAVA_HOME in the script javafx and javafxc files so that it doesn't have to look for JAVA_HOME from some other place.(quite crappy but it works.)

3. Start Netbeans and open sample JavaFx Projects and run it. TA-DA.

Saturday, March 14, 2009


As Jeff Atwood mentioned in his famous blog article ( that there are only two kind of programmers :

There are two "classes" of programmers in the world of software development: I'm going to call them the 20% and the 80%.

The 20% folks are what many would call "alpha" programmers — the leaders, trailblazers, trendsetters, the kind of folks that places like Google and Fog Creek software are obsessed with hiring. These folks were the first ones to install Linux at home in the 90's; the people who write lisp compilers and learn Haskell on weekends "just for fun"; they actively participate in open source projects; they're always aware of the latest, coolest new trends in programming and tools.

The 80% folks make up the bulk of the software development industry. They're not stupid; they're merely vocational. They went to school, learned just enough Java/C#/C++, then got a job writing internal apps for banks, governments, travel firms, law firms, etc. The world usually never sees their software. They use whatever tools Microsoft hands down to them -- usally VS.NET if they’re doing C++, or maybe a GUI IDE like Eclipse or IntelliJ for Java development. They've never used Linux, and aren't very interested in it anyway. Many have never even used version control. If they have, it’s only whatever tool shipped in the Microsoft box (like SourceSafe), or some ancient thing handed down to them. They know exactly enough to get their job done, then go home on the weekend and forget about computers.

So in retrospective of my little more than 3 years of experience as a software developer i MUST say that i still belong to 80% category of programmers. YES I DO. There are thousands of reasons for this which i can think about but few of them that screams from my heart are -

  1. I never started this profession with a zeal, that is required in this ART of software development for masses or business.
  2. Never really did any useful hard core projects for fun, except few academic ones to fill up the marksheets of my 4 year B.E Computer. PERIOD.
  3. Limited course book or some poorly written ludicrous course manual were my world, even though i am saying "course book" believe me never ever dared to look beyond the pages which was listed in our damn syllabus. FUNNY HUH!!
  4. Big O Notation, finite automata. GIMME A BREAK!!. i swear these things really vexed me a lot. A LOT. I used to wonder what people do with these theoretical shit and why are we ever reading it?? WE are not going to design compilers!! there are already so many damn compilers out there created by few innate supernatural geeks.
  5. Never had a vim to dig more than what is required for those lame assesment and semester exams. Never enjoyed the real motive behind solving and understanding the Producer-Consumer, Dining Philosophers etc. problems.
  6. Totally failed to envision the possibility that there could be an applications like facebook, orkut and others with humongous number of users. Spring, Hibernate and more that are the rock of enterprise applications today. All that came during the time or after i completed my so called B.E Computer.
  7. Perception that all those computer science theory isn't doing any good to get the job, Only concern was how to get a decent paying job. Limited Scope of imagination.
  8. I vacillate too much. Ruby, Groovy, Flex, Scala, JavaFX but never really could come up with any little working project to boast off using all these technologies. That means i read but never act.
I know by this time you must be feeling awfully PITY on me isn't it?? I was a good student though, i worked hard on occasions, have a decent marksheet reports all my life, never had to spend money on my education always scholarships, but somehow the cake never baked the way it should have been. But to be honest there are few odd reasons for my lack of getting it right from the day one. I think it's obvious too when you are in an environment where your imagination is limited by the infrastructure and accessibility issues which every students has to suffer in our country, not to blame my beautiful country but that's the way it is. But WHATEVER, i am getting it now and i am starting to feel the zeal that is needed for being a software developer, it feels good when people use the software that you worked on. I have started doing some projects that involves some really cool stuffs, i am dying to work on projects that involves concurrency management, scalability etc. etc. I can think of few facebook application ideas but still see if i can come up with it. If not haskell i try Scala over the weekends :)

With all this being said there are few gotchas in above 80-20 rule, like i tried linux in early days of my college years i have used version control and sometimes i really act like as if i belong to 20% category.

I wonder how many of you feel the same!! thanks for reading my whimisical ideas that bothers me at times :)