Friday, May 05, 2006

StaX

StaX is a pull parsing Java XML API designed around the iterator design pattern. Read the Introduction to StAX for more information.

The other famous pull parsing API is XMLPULL. StaX is considered to be the next generation API which also addresses some of the issues in XMLPULL.

More information on StaX can also be found at Sun's JCP site

Thursday, May 04, 2006

End of Days for the DOS Command Prompt

The new Microsoft Command Line shell called MSH or Monad which will finally replace the dumb, boring DOS Command prompt. The MSH syntax facilitates development with both functional and procedural idioms.

You can read a detailed report about MSH at ars technica

All the Java world needs is a Fancy name

All the Java world needs is a fancy name. This short blog by Martin Fowler explains how the name POJO (Plain Old Java Object) came into existence.

"The term was coined while Rebbecca Parsons, Josh MacKenzie and I were preparing for a talk at a conference in September 2000. In the talk we were pointing out the many benefits of encoding business logic into regular java objects rather than using Entity Beans. We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely."


Give them (Java world) anything with a fancy name and they will start to use it and probably even write a couple of books on it :)

Start thinking about some fancy names, will you!

Tuesday, May 02, 2006

Just Released - Pattern Languages of Program Design 5

Just released. Till date I haven't read any of the books in this series. It been there in my 'Must Read' list for a long time (AFAIK, none of these is available in India. Might have to order thro' Amazon and get it shipped here).


More details later.

Thursday, April 20, 2006

Template Change

Changed the template. Got a bored with the all black template. This seems to look a lot readable, visible than the previous one.

Still working on the website. That work has been stopped to attend to some urgent work at office. Learning Ruby and Rails. Will post my experiences with that (developing a web appliation using RoR) after I am done with that project.

Monday, April 17, 2006

meebo.com

A web browser based chat client. Offers support for AIM or ICQ, Yahoo! Messenger, MSN, and Jabber or Google Talk.

The webpage provides a window based environment, where the chat client and your instant message chats are displayed.

Very useful when companies don't allow their employees to install chat clients on their desktops/workstations.

For more information & to get a feel for it, visit meebo.com

eyeOS should have this feature in-built into their web based Desktop system.

eyeOS | Web Based Desktop System.

eyeOS | Web Based Desktop System. Taking your data and applications everywhere.

An application on the web that I expected a long time back. It's in the lines of Innuvo DCS (it's throwing up a blank page), RecipeXperience.

Tried it out, it's slow, and way too many screen refreshes. Every time I open or close an application window inside that, it refreshes the desktop (inside the webpage). RecipeXperience demo applications are better than this (but it's also bad - it's IE only).

The main advantage is for people who don't have a PC at home and need to use office or cyber cafe machines. They can store information on this web based desktop system and access it from any PC (of course w/internet connectivity) in the world.

Try it out!

Thursday, April 06, 2006

A Conversation with Erich Gamma

A 4 part interview of Erich Gamma by Bill Venners (the guy who wrote Inside the Java Virtual Machine)

How to use Design Patterns
Right way to think about and use design patterns

Erich Gamma on Flexibility and Reuse
attitude developers should adopt towards flexibility and reuse

Design Principles from Design Patterns
design principles: program to an interface, not an implementation, and favor object composition over class inheritance.

Patterns and Practice
how design patterns are problem solution pairs, how design patterns help you understand intent and tradeoffs, and how to become a better designer through practice.

Google Page Creator

Google Labs has come up with another product called Google Page Creator

It's a cool tool specially aimed at people who want to host webpages of their own but don't know HTML or other scripting languages of the web. It has an in-place editor using which a nice looking page can be created within a few minutes.

I am working on my own web site using this. Will be publishing it after this weekend.

It's been a while... - III

Hmm... another 2 months have passed and still no updates to this site. Priorities changed, and I had to spend (and still spending) a lot of time to keep up with the technologies that my team is moving towards and on some pet projects.

I even have a account in Google Pages (see my next post about this). Working on a page on that as well. Will be publishing it after this weekend (hopefully).

Thursday, February 02, 2006

It's been a while... - II

Hmm.. more than 3 months w/o any updates. Spent more time on office work and study. Lately been spending most of my free time reading Star Wars comics.

Will try & keep up with what I have been doing RSN.

Sunday, November 06, 2005

It's been a while...

It's been a while since I did anything on this blog. Is my interest in blogging slowly fading away? Am I so busy that I can't write a couple of lines on this site?

Part of the latter is true. October has been a hectic month filled with tech interviews, dealing with new technology, and some management/non-technical books. As days pass, I will write reviews about some of these books. November started off with the Deepavali festival and me ending up sick for a couple of days :(

Hope things turn out to be good in the days to come...

Friday, October 07, 2005

When to Leave Your First IT Job

i-Technology Viewpoint: When to Leave Your First IT Job @ JAVA DEVELOPER'S JOURNAL

An article that talks about how a work environment should not be and how one should recognize those sings and start looking out for another job which offers benefits that the current company doesn't.

The first point the author makes is - don't work in cubicles. Look out for companies that provide offices rather than cubicles.

Hmm..., I am sitting in my cubicle, it's late night and was reading this article to think about something other than the problem I am trying to fix & deliver...

Is this the sign I should be looking out for? :)

Instiki - Simple, yet powerful

Instiki is a neat Wiki clone. The installation & setup process is so simple, that it doesn't even take a minute to setup the Wiki after one downloads it. All one needs is Ruby 1.8.1 or greater. It's simple, yet powerful.

I got to know about this from Ruby on Rails site.


How it does it?
* Two step installation: embedded web server (WEBrick) makes for easy installation
* One screen configuration

Feature list?
Basic features:

* Revisions: Follow changes on any page from birth. Easily rollback to an earlier revision
* Authors: Each revision is associated with an author, so you can see who changed what
* RSS feeds: track recently revised pages from an RSS aggregator

Other features

* Regular expression search: Quickly find deep info
* Exporting: Transport the entire wiki as HTML or wiki markup in a zip
* Multiple webs: Create separate wikis with their own namespace
* Password-protected webs: Keep private things private
* Reference tracker: Find pages linking to the current one
* Speed: all pages in memory (Uses Madeleine for persistence)
* Markup choices: Textile (default / Red Cloth), Markdown (Blue Cloth), and RDoc
* Internationalization: supports wiki words in latin, greek, cyrillic, and armenian characters
* Color diffs: Track changes through revisions

Protothreads: lightweight, stackless threads in C

Protothreads: lightweight, stackless threads in C: "Protothreads are extremely lightweight stackless threads designed for severely memory constrained systems, such as small embedded systems or wireless sensor network nodes. Protothreads provide linear code execution for event-driven systems implemented in C. Protothreads can be used with or without an underlying operating system."

Can software have opinions?

A nice article from Loud Thinking

"The core theme seems to be that it's considered arrogant on the part of the software builder to limit features, or decide not to implement them, on the basis of their believes in how the software should be used. In other words, some people want the maximum amount of flexibility in their software and then they will figure out how to use it best for themselves, thank you very much."

Friday, September 16, 2005

Microsoft LinQ

Now-a-days application programmers hear the term ORM used more often. ORM stands for Object Relational Mapping. Example: Hibernate, iBatis

In simple terms, they allow object oriented applications to look at relation data as another object on which methods can be called upon. The layer takes care of the database specific details, thus leaving the programmer to think clearly in terms of just the functional aspect.

Microsoft has come up with LinQ which promises this on their .NET platform.

The Language Integrated Query (LINQ) Project will offer an integrated programming experience, enabling developers to query object, relational and XML data directly from within C# and Visual Basic – without having to use multiple programming languages.

Project LinQ is to be shipped with newer versions of VS.

Things to note:
1.Set of specifications that define how queries are expressed in API form
2. Extends the .NET Framework to include language-integrated query operations
3. Two API’s: DLinq, for accessing relational, SQL-based data, and XLinq, for accessing hierarchical, XML-based data
4. Compile-time type checking, which lets developers know about errors as they're writing their queries

It has been in the making for half a decade.

101 LinQ samples (written in C#) are available here

Thanks to Gangadhar for the links +"Things to note" notes.

Monday, September 12, 2005

Back from Vacation

I am back from a long vacation. Haven't used the computer during the whole time, that by itself is a big time achievement. ;)

Will start to post within the next couple of days.

Sunday, August 28, 2005

Quote of the Week

A scientist builds in order to learn; an engineer learns in order to build
- Fred Brooks

Saturday, August 27, 2005

[Book] Debugging the Development Process

Debugging the Development Process by Steve Maguire (author of Writing Solid Code) is an excellent book that deals with "Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams" (from the back cover).

If Writing Solid Code is for programmers, then this one is for Managers, Leads, or yet to become Managers/Leads.

The book focuses on how to keep your team focused, motivated, set the right goals and not let unnecessary work/meetings, bad schedules stop them from doing their daily chores and much more.

Key Points:

  • Avoid anything that doesn't improve the product.
  • Always set detailed goals, priorities and quality bars for each project.
  • Fix bugs then and there, don't wait for time that will never come.
  • Use existing systems to assist you in the process.
  • Use negative feedback to achieve desirable results.
  • Always try to fix the root cause of the problem.
  • Determine the exact requirement before plunging into action.
  • Never commit, if you know you can't meet the dates.
  • Don't do something just to please everybody. You will jeopardize the product.
  • There ain't any such thing as free product or feature.
  • Don't implement a feature just for the heck of it.
  • Make sure it's worth the writer's time before asking for a report.
  • Use postmortem reports to improve your development process.
  • Make sure you have a clear agenda before calling for a meeting, and make sure the agenda/action items gets done.
  • Keep aggressive but attainable schedules.
  • Never allow an arbitary dealine jeopardize the product.
  • Break long-term projects into shorter, well-defined subprojects.
  • Kick your best programmers out of the group if they aren't growing/learning to a different group.
  • Provide on-the-spot feedback, don't wait for the annual performance review.
  • Programmers need to understand that writing bug-free code ain't easy, so they should do everything under their power to detect and prevent bugs.