January 31, 2008

Contributing to Open JDK: A Beginner's Guide

This blog post titled Beginners guide to OpenJDK contributing is a well compiled introduction to the Open JDK project and how you can start contributing to it.


XML to HTML using XSLT, Java: Useful Links

Here are some links to resources which I found very useful while I was developing a NetBeans plug-in module, which helped me properly construct the pretty HTML from a XML file using XSLT in Java:

  1. http://www.rgagnon.com/javadetails/java-0407.html
  2. http://www.xmlfiles.com/xsl/xsl_transformation.asp
  3. http://www.thescarms.com/xml/XSLTutorial.aspx
  4. http://biglist.com/lists/xsl-list/archives/200212/msg00695.html
Thanks a lot guys!

January 30, 2008

Build your web applications with Tapestry 5

Packt Publishing, the publishers of computer related books have released their latest book on Tapestry 5, the Apache open-source framework for creating dynamic, robust, highly scalable web applications in Java. The new book titled, Tapestry 5: Building Web Applications is a step-by-step guide to Java Web development with the developer-friendly Apache Tapestry framework.

The book based on the latest version of Tapestry Web development framework and helps you get working with Tapestry components. It builds up an example website through each the book.

The book assumes that the reader is reasonably comfortable with the Java programming language, but no knowledge of web technologies is needed. For experienced Servlet, JSP, or Struts developers, the book will show an alternative way that will allow them to raise their productivity to an incomparable level. With this book you will see that a contemporary component-based framework can be easy to learn and a pleasure to work with.

More information about the book can be found at: http://www.packtpub.com/tapestry-5/book

The Dreams of Reality: NetBeans Innovators Grants

The NetBeans Innovators Grants agenda has been announced. Read the announcement here


Here are some quick links:

January 28, 2008

Developing a Spring Framework MVC application step-by-step using NetBeans and GlassFish

Developing a Spring Framework MVC application step-by-step using NetBeans and GlassFish is a NB Community Docs contribution which guides you to develop a Spring Framework MVC application. This article has been contributed by Arulazi Dhesiaseelan.


Go ahead and check it out at the wiki!

See you!

January 27, 2008

NB Community Docs: German Documentation

Kristian Rink has contributed 3 tutorials on NetBeans in German to the NetBeans Community docs:

If you know German and you work with NetBeans, please read them and provide your feedback.

The Life Cycle of a Blog Post, From Servers to Spiders to Suits — to You

Wired has an article titled "The Life Cycle of a Blog Post, From Servers to Spiders to Suits — to You" which contains a nice Flash movie showing the life-cycle of your blog posts. Though, it doesn't reveal any unknown secrets, but a good quick brush-up for you, and a good source to know about it for those who are not aware of it.

Cell phones taking on many roles, transforming market, generation

This article here is a nice read on the near ubiquitousness of Cell phones.

NB Community Docs: Customizing the Look and Feel of the Netbeans IDE

Look and Feel of the Netbeans IDE is customizable using the Substance Plugin which is available for download at the http://plugins.netbeans.org website.

The NB Community Docs contribution Customizing the Look and Feel of the Netbeans IDE by Cydey shows you how you start off with the plug-in to give your NetBeans a cooler look.

NB Community Docs: Developing a HK2 module with NetBeans 6.0

HK2 for Hundred Kilobytes Kernel is a module subsystem coupled with a simple yet powerful component model to build software. It is the foundation for the GlassFish V3 application server and consist of two technologies...More

Developing a HK2 module with NetBeans 6.0 is a new NB Community Docs contribution by Rikard Thulin which shows you how you can develop the famous “Hello World” as a HK2 module using NetBeans 6.0/maven.


See you there at the wiki!

Would you like to be a contributor? Its as easy as 1,2,3:

  1. Decide what you want to contribute- a doc, a tip or a Flash Demo
  2. Sign up on the wiki
  3. Contribute
In case you have a query, ask me. Together, we can make the Community Docs grow stronger.

January 26, 2008

Welcome to the Blogosphere, Abhrajit!

Abhrajit, one of my very few programmer friends, whom I really admire has finally started blogging.

He blogs here at http://abhrajit.blogspot.com on some neat cool stuffs which can often save your day!

January 25, 2008

Adventures with the Nokia E51 on Linux

This post will list my adventures with my newly acquired Nokia E51 on Linux (Ubuntu 7.04)

Interfacing the Nokia E51 with the computer can be done by:

  1. USB Data cable
  2. Bluetooth
  3. Infrared
#1. Talking to the Phone via USB data cable:

The phone comes with a mini USB 2.0 port which can be connected to the USB port of my computer.

Plug-in the USB data cable to the computer and then to the phone.

You get a pop-up on your phone, asking for the transfer mode:
  1. PC-Suite
  2. Data Transfer
My understanding is that the PC-Suite mode is for communicating with the "whole" phone using the Nokia PC Suite Software. This mode enables you to talk with all the features of your phone. We shall be using this mode for many of our tasks here on Linux, but without using Nokia PC Suite.

The Data Transfer mode is for interacting only with the Memory Card that comes with the phone. Once you select this mode, the memory card is available for access from your computer and is inaccessible from your phone.

Listed below is a slowly increasing list of things I have done with the phone:

#1.1 Connecting to the Internet- Nokia E51 as a GSM USB Modem

I shall now show you how you can use your phone as a USB GSM Modem to connect to the Internet, provided you are subscribed to your operator's data services.

  • Type in $dmesg on your terminal and observe the output
  • Choose the "PC Suite" mode
  • Now, type in $ dmesg again on your terminal and note the output. You will notice that you see some extra lines than the previous output. In a succesful scenario, the lines will be similar to:

[ 790.120000] usb 1-2: new full speed USB device using uhci_hcd and address 3
[ 790.296000] usb 1-2: configuration #1 chosen from 1 choice
[ 790.308000] cdc_acm 1-2:1.10: ttyACM0: USB ACM device
  • The hint here is the device file name 'ttyACM0'. This is the device filename which we will be using for interfacing with the phone
  • Setting up connection scripts
    • Copy the following scripts from http://kapsi.fi/~mcfrisk/linux_gprs.html into the directory /etc/ppp/peers:
      • gprs
      • gprs-connect-chat
      • gprs-disconnect-chat
    • Configure the gprs script as follows:
      • In the file, you will see a list of device files under the heading " Serial device to which the GPRS phone is connected:".
      • Uncomment the line "/dev/ttyACM0" and comment all the other lines containing device files

      • Reproduced below is the relevant portion from my script:

        # Serial device to which the GPRS phone is connected:
        # /dev/ttyS0 for serial port (COM1 in Windows),
        # /dev/ircomm0 for IrDA,
        # /dev/ttyUB0 for Bluetooth (Bluez with rfcomm running) and
        #/dev/ttyUSB0 for USB
        #/dev/ttyS0 # serial port one
        #/dev/ttyS1 # serial port two
        #/dev/ircomm0 # IrDA serial port one
        #/dev/rfcomm0 # Bluetooth serial port one
        /dev/ttyACM0 # USB serial device, for example Orange SPV


    • Now, configure the gprs-connect script so that it includes the proper number to dial, the Access Point Name (APN), etc. For example, listed below is my gprs-connect-chat script that I use to connect to Airtel GPRS service:
    • #!/bin/sh

      exec chat \
      TIMEOUT 5 \
      ECHO ON \
      ABORT '\nBUSY\r' \
      ABORT '\nERROR\r' \
      ABORT '\nNO ANSWER\r' \
      ABORT '\nNO CARRIER\r' \
      ABORT '\nNO DIALTONE\r' \
      ABORT '\nRINGING\r\n\r\nRINGING\r' \
      '' \rAT \
      TIMEOUT 12 \
      SAY "Press CTRL-C to close the connection at any stage!" \
      SAY "\ndefining PDP context...\n" \
      OK ATH \
      OK ATE1 \
      OK 'AT+CGDCONT=1,"IP","airtelgprs.com","",0,0' \
      OK ATD*99*# \
      TIMEOUT 22 \
      SAY "\nwaiting for connect...\n" \
      CONNECT "" \
      SAY "\nConnected." \
      SAY "\nIf the following ppp negotiations fail,\n" \
      SAY "try restarting the phone.\n"

      ~
    • Now:
      $pppd call gprs
      should start the connection attempt:


      amit@ubuntu-laptop:~$ pppd call gprs
      Press CTRL-C to close the connection at any stage!
      defining PDP context...
      rAT
      OK
      ATH
      OK
      ATE1
      OK
      AT+CGDCONT=1,"IP","airtelgprs.com","",0,0
      OK
      waiting for connect...

      ATD*99*#
      CONNECT
      Connected.
      If the following ppp negotiations fail,
      try restarting the phone.

      Serial connection established.
      using channel 1
      Using interface ppp0
      Connect: ppp0 <--> /dev/ttyACM0
      rcvd [LCP ConfReq id=0x0 ]
      sent [LCP ConfReq id=0x1 ]
      sent [LCP ConfAck id=0x0 ]
      rcvd [LCP ConfRej id=0x1 ]
      sent [LCP ConfReq id=0x2 ]
      rcvd [LCP ConfAck id=0x2 ]
      sent [PAP AuthReq id=0x1 user="9890600000" password=""]
      rcvd [PAP AuthAck id=0x1 ""]
      PAP authentication succeeded
      sent [CCP ConfReq id=0x1 ]
      sent [IPCP ConfReq id=0x1 ]
      rcvd [IPCP ConfReq id=0x0 ]
      sent [IPCP ConfAck id=0x0 ]
      rcvd [LCP ProtRej id=0x0 80 fd 01 01 00 0c 1a 04 78 00 18 04 78 00]
      Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
      rcvd [IPCP ConfNak id=0x1 ]
      sent [IPCP ConfReq id=0x2 ]
      rcvd [IPCP ConfAck id=0x2 ]
      not replacing existing default route through eth0
      Cannot determine ethernet address for proxy ARP
      local IP address 117.99.0.87
      remote IP address 10.6.6.6
      primary DNS address 202.56.250.5
      secondary DNS address 202.56.250.6
      Script /etc/ppp/ip-up started (pid 6630)
      Script /etc/ppp/ip-up finished (pid 6630), status = 0x0



      The connection is now established. Please configure the nameservers in your system.


#1.2 Using the Memory Card
  1. Select the Data Transfer Mode
  2. The Memory Card is automatically mounted and shows you the files stored on your memory card, as it would do for a USB Pen-drive.


A Look behind the scenes:

The last few lines of
$ dmesg
will show something like:

[ 69.680000] usb 1-2: new full speed USB device using uhci_hcd and address 4
[ 69.856000] usb 1-2: configuration #1 chosen from 1 choice
[ 70.016000] usbcore: registered new interface driver libusual
[ 70.152000] Initializing USB Mass Storage driver...
[ 70.152000] scsi2 : SCSI emulation for USB Mass Storage devices
[ 70.152000] usb-storage: device found at 4
[ 70.152000] usb-storage: waiting for device to settle before scanning
[ 70.152000] usbcore: registered new interface driver usb-storage
[ 70.152000] USB Mass Storage support registered.
[ 75.152000] usb-storage: device scan complete
[ 75.156000] scsi 2:0:0:0: Direct-Access Nokia E51 1.0 PQ: 0 ANSI: 0
[ 75.164000] SCSI device sdb: 1000215 512-byte hdwr sectors (512 MB)
[ 75.168000] sdb: Write Protect is off
[ 75.168000] sdb: Mode Sense: 03 00 00 00
[ 75.168000] sdb: assuming drive cache: write through
[ 75.176000] SCSI device sdb: 1000215 512-byte hdwr sectors (512 MB)
[ 75.180000] sdb: Write Protect is off
[ 75.180000] sdb: Mode Sense: 03 00 00 00
[ 75.180000] sdb: assuming drive cache: write through
[ 75.180000] sdb: unknown partition table
[ 75.376000] sd 2:0:0:0: Attached scsi removable disk sdb
[ 75.376000] sd 2:0:0:0: Attached scsi generic sg2 type 0


What you see is here simply means that the memory card is now identified by the device file /dev/sdb which has been mounted on /media/your-card-name

Now you can create/edit/rename/copy/cut/paste folders/files as you would do normally.

This is a WORK IN PROGRESS. Please provide comments/suggestions.

This work may not be reproduced in any format as of now. Once completed, I shall release it in an appropriate license.

You may linkback or refer to it.

Stay tuned..........

Wanda: The GNOME Fish

GNOME Fish or Wanda, the Fish is a GNOME applet which you can add to your GNOME Desktop panel. (Right Click -> Add to Panel)


Add GNOME Fish

GNOME Fish Preferences

Right-Click on the GNOME Fish Applet, and go the 'Preferences' menu:


Preferences

So what do we have here?
  • You can name your fish- the default is 'Wanda'
  • You can also have a new looking fish, if you don't like the default image
  • Command to run when clicked- the default is 'fortune' (Manual). Click once on the applet and you have cool, and sometimes not so cool fortune for the moment:
Wanda Speaks

I love Wanda, though I must say that its because of the interesting adages it dishes me out, which actually is 'fortune' at work.

January 24, 2008

NB Community Docs: Accessing MS Access / MS SQL from NetBeans

The NB Community Docs contribution "Accessing MS Access / MS SQL from NetBeans" show you to use NetBeans IDE with JDBC - ODBC Bridge to connect to MS Access / MS SQL Server database.




Thank you Gustavo!

NB Community Docs: Pictures Explorer

The NB Community Docs contribution "Pictures Explorer" shows you how you can write a simple plug-in module for NetBeans to browse the "My Pictures" folder on your MS Windows system.




This plug-in gives you another reason not to leave the IDE at all.
Thank you Kunal for this nice contribution!

Catching up with the NetBeans Community Docs Contributions

As the NetBeans Community Docs Co-ordinator, one of the things I enjoy is to blog here about every new contribution.

I had very limited access to the Internet for the past week which prevented me from blogging about the contributions. Now, I have to catch-up with the contributions- read them and blog about them. Its good times indeed for us here at the NetBeans Community Docs. January, 2008 has seen the maximum number of contributions.

James has got a nice graphic:



A big Thank You to all the contributors and we hope to see your contributions in the future as well!

January 17, 2008

Official Google Blog: Google India Women in Engineering Award 2008

Official Google Blog: Google India Women in Engineering Award 2008

January 15, 2008

NB Community Docs: Getting Started with NetBeans Docs

Hi all!

The NetBeans Community Docs now has a doc about itself, yes- "Getting Started with NetBeans Docs" tells a thing or two to the wannabe contributor to the NetBeans Community Docs.

So if you have the idea and are looking for guidelines to get started, make sure you visit Getting Started with NetBeans Docs

NB Community Docs: Using the Tapestry Framework With NetBeans

The NetBeans Community Docs contribution titled "Using the Tapestry Framework With NetBeans" shows how to use the Tapestry Framework with NetBeans.


Make sure, you check it out here

NB Community Docs: Using the GUI Editor

Hi all!

We have a new contribution titled "Using the GUI Editor" whose primary purpose of is to make you know how to use GUI editor(also called as Matisse) in NetBeans for developing Swing/AWT applications on the fly.


This is a good introduction to GUI designing in NetBeans for the absolute beginner.

Go ahead and check it out!

January 10, 2008

Google processes over 20 petabytes of data per day

Google processes over 20 petabytes of data per day :

Google currently processes over 20 petabytes of data per day through an average of 100,000 MapReduce jobs spread across its massive computing clusters. The average MapReduce job ran across approximately 400 machines in September 2007, crunching approximately 11,000 machine years in a single month. These are just some of the facts about the search giant's computational processing infrastructure revealed in an ACM paper by Google Fellows Jeffrey Dean and Sanjay Ghemawat.

Read on..

January 9, 2008

DNA seen through the eyes of a coder

Its amazing how almost everything can be explained so easily in terms of coding terminologies.

This article "DNA seen through the eyes of a coder" is one such article which makes it a point to see that if you love coding, and especially if you are acquainted with the Unix/Linux programming jargon- that you actually end up reading the article in one breathe

Its highly engrossing, fun and very very informative!

January 8, 2008

NB Community Docs: Introducing NetBeans Plug-in Development

Hi all!

We have this year's first contribution to the NetBeans Community Docs titled "Introducing NetBeans Plug-in Development", which shows you how you can can get started with NetBeans plug-in module development by writing a simple plug-in during the course of the article


Make sure you check it out and give your suggestions/comments!

See you!

Wikia Search : 'alpha' version

The alpha version of Wikia Search was launched on January 7, 2008 and is available at http://alpha.search.wikia.com



Here are some stories around the web:

I also added a couple of mini-articles to the 'wikia'. See here.

Since its very early days, Wikia gives you a huge scope to play a role in shaping a community powered search engine. You can be the next big role model for the community powered knowledge base of the web.

Join me on Wikia here

January 5, 2008

uudecode: Decode '.doc' files embedded into your mail

Context: I recieved a mail, supposedly containing a '.doc' attachment. However, instead of a 'separate' file, I see that for some unknown reason the file contents have been appended to the mail body and appeared something like this:

begin 644 60.doc
MT,\1X*&Q&N$``````````````````
```/@`#`/[_"0`&```````````````!
M````(@``````````$```)`````$```#^____`````"$```#_____________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M_______________________LI<$`(V`)!```\!*_````````$```````!@``
MF@D```X`8FIB:J$5H14````````````````````````)!!8`+A```,-_``##

.
.
.



What you see above is the binary encoded data of the '.doc' attachment. So how do you get back the proper human readable'.doc' file?

'uudecode' to the rescue

A description of the command is reproduced from here:

The uudecode utility shall read a file, or standard input if no file is specified, that includes data created by the uuencode utility. The uudecode utility shall scan the input file, searching for data compatible with one of the formats specified in uuencode, and attempt to create or overwrite the file described by the data (or overridden by the -o option). The pathname shall be contained in the data or specified by the -o option. The file access permission bits and contents for the file to be produced shall be contained in that data. The mode bits of the created file (other than standard output) shall be set from the file access permission bits contained in the data; that is, other attributes of the mode, including the file mode creation mask (see umask() ), shall not affect the file being produced. If either of the op characters '+' and '-' (see chmod) are specified in symbolic mode, the initial mode on which those operations are based is unspecified.

If the pathname of the file to be produced exists, and the user does not have write permission on that file, uudecode shall terminate with an error. If the pathname of the file to be produced exists, and the user has write permission on that file, the existing file shall be overwritten.

If the input data was produced by uuencode on a system with a different number of bits per byte than on the target system, the results of uudecode are unspecified.

Installing 'uudecode'

On my Ubuntu 7.04 system, I installed 'uudecode' by using:
amit@ubuntu-laptop:~$ sudo apt-get install sharutils
Decoding your files

To decode your files, copy the encoded text into a file, say demo.doc and use the following command

amit@ubuntu-laptop:/media/sda5$ uudecode demo.doc
Subsequently you will see that a new file by the name as originally desired is created. The original file name may be found out by looking at beginning of the encoded file. Here, it is '60.doc'.

Then you can view the contents using OpenOffice.org or M$ Word

More Information:

January 4, 2008

Article: A Developer's First Look at Android

"A Developer's First Look at Android" introduces the recently announced Android Development platform to the developers. The article has been published in "Linux For You", January 2008

This article is only available in print, interested readers may request a personal copy of the article.

January 1, 2008

NetBeans 6.0 DVD

Hi all!

Today I received my NetBeans 6.0 DVD




Its fully loaded:

  • NetBeans 6.0 for Linux, Mac OSX, Solaris, Windows
  • NetBeans 6.0 Source Code
  • JDK 1.6 update 3
  • Selected Java Tutorial Trails
  • "Java Programming with Passion" course
  • A screencast demo showing NetBeans in action
  • Java Platform API Specification
Order your NetBeans 6.0 DVD!

Classical Computer Science Texts

This page here titled "Classical Computer Science Texts" lists some of the best texts in classical computer science.

Have Fun!