One thing that amazed me recently is the advancements in mobile world and the speed of these innovations. Especially the android market. The first mobile that I got had a small screen and a 2D snake game. It was just a phone!! Three yrs back when I got a walkman series phone I loved the quality of music it offered. After 3yrs I thought of buying a new one and confused... so many features in little phone...finally got a good smart phone. And ofcourse android.
Recently I read review of a phone with 2 screens and these can be combined as one screen in tablet mode!! Looking at these1GHZ and 32GB+ mobiles I think its not long away before we can start coding and test on a mobile itself. We might soon get eclipse for mobile platform and SDF. We already have oracle lite, database that can be installed on devices. May be we can say "work on move" instead of "work at home".
(I am posting this from my mobile using google's blogger android app)
Monday, February 14, 2011
Work on move... or coding on mobile
Sunday, September 12, 2010
10 Years on... Java Coding and Akshara...
Its almost 10 years that I started writing Java Code. I like relook at the begining and introduce my first project/product I worked on.
Its 2001 January I started my 6th Sem Project as part of my MCA (in University Of Hyderabad) course. I decided to work on a module of Multilingual (Indian Languages) text editor along with my classmate Ganesh under Prof K Narayana Murthy. This project is executed as part of TRCT (Technology Resource Center for Telugu) in University. This is one of the 11 reaserch centers/organizations setup for developing Tools and Technologies for Telugu. Being open source and to achieve platform independency it was decided to develop this product using Java. This is why and how it (Java coding) started. No prior or formal training!! Started with Java1.1 but soon moved to 1.2. Person working on this product had to leave and we had to take over complete product and this happened around Feb 2001. We got first basic version done in couple of months... but was slow (on 216 and 512MB machines). So we had re-design basic things and code. The next version came out impressive and promising. It was named "Akshara" - Advanced Text Processor for Indian Languages.
Project got over in July 2001. I was supposed to join in my first Job in SQL Star International but thanks to rcession joining date was delayed..... Luckily I was offered Job in same organization I did my project and to work on same product along with 2 of my classmates. So in 1st Aug 2001 I started coding for Money... For next two and Half I continued there and during that time we added more features to Akshara and also created a chat tool and a Technology for web input and output along with other things.

After many years and many projects Akshara still remains my best work so far from personal satisfaction factor. Below are few features of Akshara.
- Open sorce
- Platform Independent
- 14 Indian Language support
- Basic Text editing featured and styling (Alignments, text styles etc)
- Uses own and open format (XDL) for storing files
- Embeded Email Client
- Spell checker
- Text to Speech
- HTML file creation with CSS
References to Akshara can be found at below links
http://www.lisindia.net/Telugu/telugu_Tech.html
http://tdil.mit.gov.in/TDIL-OCT-2003/text%20editors%20&%20word%20processors.pdf
Sunday, January 17, 2010
Using Re-Use...
1. Common functionality exposed as services
2. Validation and other similar utilities
3. Edit rules and other UI logic
One stage where we can identify reuse is during design phase. You can easily identify the reusable services/components at this stage, But you can identify reusable validation utilities and other reuse opportunities only if you undertake detailed/low level design. But how many times we perform low level design? In these cases onus of identifying the reuse lies with developers and development leads. But bigger challenge here how will these guys know that there is some thing that can be easily reused? As a simple example a developer who is required to do date validations will know that there is a Date validation utils already written by some one else? In general hectic schedules it is very much possible that we oversee reuse opportunities and end up coding again (reinvent wheel).
I will continue discussing this topic with specific examples in further posts.
Recently I read some overview of Language called Scala which promises excellent support for component development. And it says Software development will become similar to assembling hardware. Means you will just need to put together some components and get the final product. This is an interesting thought and planning to spend some time on this.
Friday, August 28, 2009
A Good Developer
What it makes to be a good developer? This question keeps popping now and then in my mind especially when I hear complaints from managers and leads saying their developers are not good enough. In Sun Tech Days couple of years back, there was a session according to which below are the 7 best habits of a good developer.
- Understanding the Problem
- Use appropriate tool
- Strive for Simplicity
- Keep your code clean
- Learn to debug
- Leverage whatever available
- Plan ahead
Lets discuss these in the context of general projects in Indian service industry
1. Understand requirements. This doesn't mean developer must have domain knowledge and understand business requirements but at least they must understand what should be done on click of Submit, click on Cancel, what formatting and validations need be done etc
2. Tools should have been decided before development start so lets not dwell much on this
3. 'Think Simple' - I keep telling my developers. Your performance is not measured based on number of lines you code or how complex your logic is.
4. Learn to code lean and clean code. This is possible only when following coding standards becomes a practice rather than compulsion. Also developer should emphasize on learning programming than programming language. I don't mean we don't have to learn any language but if you don't know how to solve a problem and write a basic algorithm there is no use of becoming an expert in Syntax of any language. Again you don't have to solve complex issues. Take for example age validations, if you don't know how to calculate age is there any use even if you know whole Date API in Java? Also emphasis more and more going in getting things done than on how? If developer gets a function point implemented that's enough, we rarely see leads reviewing for algorithm or developers caring to analyze their logic. No one to blame because of time lines but if you want to become a good developer your logic and its performance does matter a lot. Remember the Algorithmic subject thought in college and the order of executions?
5. Debug the code - No one writes a perfect code in one shot. With the latest IDEs and plug-ins debugging is easy than coding.
6. Leverage whatever available - Most of the things we do these days we are not the first ones doing them (Unless you are lucky like me). Refer organization's reusable repository, colleagues experience or online community to get the code. God had given us Google and a brain to use it.
7. No need to stress about time lines... Think and plan ahead. One of my professor used to emphasize to have complete algorithm written on paper and analyzed before even writing single line of code. Plan should include similar thing.. plan what to be coded and how to so that you wont end up with rework or stuck in middle.
To summarize, to become a good developer first thing to learn is problem solving (say analytical skills or whatever). Learn from all possible sources (read open source code, online material etc).
As Brian Kernighan and Dennis Ritchie say.. "only way to learn programming language by programing in it".
Any training can teach you API but not thinking.....
Friday, August 7, 2009
HTTP Session Managemet - Restricting approach
- Applications cant totally avoid session but should limit the usage. So while design identify the objects required to be maintained in HTTP session. Create a Class which will act as place holder for all data to be kept in session. This will be POJO with the objects that require to be kept in session as fields. So only objects that have setter method on this object can be set to session.
- Add a Session Listener. This will be a class implementing HTTPSessionListener. This need to be configured in web.xml. There are three methods in this interface. One of the will get executed whenever an attribute is added. This method in listener implementation should remove the added attribute excepting the predefined ones. (Apart from the object of above class, application container will keep some objects in session. Listener should discount them too. This will restrict the HTTP Session usage)
- Container object created in step1 can have a public method to calculate the size of itself (which means size of objects in session). Application can use this method for auditing like displaying http session data from application on a special page etc.
- Above solves one part of the problem, application still need to take care of clearing the data (by assigning null to the field). This can be taken care by application code. If need to be part of framework you can provide a configuration file which defines permitted data for each action/module. Define a some Intercepting filter that will examine the Container object and remove the unwanted data.
Tuesday, November 18, 2008
Achievements
So far my posts are on professional side and today I thought of giving some personal touch starting with some achievements of mine. So far I achieved little... As every one I like to brag (rather blog) about myself. Here are list of few of my achievements
- Getting into HCU (Hyderabad Central University/University Of Hyderabad). Got 14 in All India test. More than achievement this is a good break for me - March 1998.
- First prize in Non-technical event during an all India meet in Pondichery University - March 2001.
- Kudos from CDAC boss on contributions to AKSHARA (Word Processor for Indian Languages) project - June 2003
- Appreciation from Michel Cohen client architect with 17yr exp; "you are quite but do good job" - Feb 2005
- Recieving best contribution award from CEO, UBoC - Oct 2008 (photo on top).
