Tryst with software development, web and Java.. “a man whom life intoxicates, who has no need of wine” (Anaïs Nin).
June 15, 2011
June 12, 2011
March 23, 2011
Testing In Java
Check out this SlideShare Presentation:
Testing In Java
View more presentations from David Noble.
March 22, 2011
Productivity Gains Using Open Source products
Check out this SlideShare Presentation:
March 18, 2011
Set Up and Get to Know Your New Mac
Set Up and Get to Know Your New Mac: "If this is your first time with a Mac, we've got you covered with switching guides, a look at the latest version of Mac OS X (Snow Leopard), and a look at what's to come in Mac OS X Lion this Summer.
* Hack Attack: A guide for switching to a Mac:
If you're new to the Mac platform—fresh off the Windows world—this guide to switching explains how to make sense out of all the differences between Windows and OS X, highlighting how to accomplish the same things in OS X you're already completely familiar with doing in Windows.
* Snow Leopard's Four Best Improvements (for Civilians):
Most of Mac OS 10.6's changes are deep in its underpinnings for developers to put to good use. But what do the rest of us get out of Snow Leopard? Modest, but nice, improvements to the everyday Mac workflow.
* What to Expect in Mac OS X 10.7 Lion - Apple didn't reveal too much about the next iteration of their operating system, but here's a sneak peak at what you can expect when Mac OS X Lion is released in Summer of 2011."
* Hack Attack: A guide for switching to a Mac:
If you're new to the Mac platform—fresh off the Windows world—this guide to switching explains how to make sense out of all the differences between Windows and OS X, highlighting how to accomplish the same things in OS X you're already completely familiar with doing in Windows.
* Snow Leopard's Four Best Improvements (for Civilians):
Most of Mac OS 10.6's changes are deep in its underpinnings for developers to put to good use. But what do the rest of us get out of Snow Leopard? Modest, but nice, improvements to the everyday Mac workflow.
* What to Expect in Mac OS X 10.7 Lion - Apple didn't reveal too much about the next iteration of their operating system, but here's a sneak peak at what you can expect when Mac OS X Lion is released in Summer of 2011."
January 30, 2011
Top 5 Java Gurus you should know ....
There are many who have contributed and shaped Java to make it as the most influential programming language of choice. Java software as a platform has grown leaps and bounds. There are more than 12 proprietary and 25+ opensource implementations of Java Virtural Machine. Not to forget the 100+ JVM languages including the high profile ones Clojure, Groovy, JRuby, Scala, AspectJ etc
Below the top 5 gurus or technologist (in my view) who have made the max impact on the growth of Java.
Note: Again, this is my take. I know everybody who works on Java has made an impact and will keep making an impact on the language :).
5. Kent Beck
@kentbeck , Blog
Kent Beck - creator of XP, TDD and JUnit. TDD in Java world is impossible without JUnit. Without TDD, there is simply no good code. All credit goes to Kent.
4. Joshua Bloch
@joshbloch
The best book on Java till date is Effective Java ,written by Joshua. Its a must read for every Java programmer and arguably the best book. He also created Java collections framework and many features on the Java platform.
3. Rod Johnson
@springrod, Blog
Creator of the Spring Framework, which has become the de-facto standard framework for creating enterprise Java applications. He ripped apart EJB pitfalls and made POJO development as the norm for enterprise class Java apps.
2. Rich Hickey
@richhickey, Blog
Creator of Clojure, a LISP dialect for the JVM. Clojure is extremely well received and adoption rate is impressive.
1. James Gosling
Blog
Father of Java language. It was year 1994 the year Java was born. Without James, there would have never seen Java.
Below the top 5 gurus or technologist (in my view) who have made the max impact on the growth of Java.
Note: Again, this is my take. I know everybody who works on Java has made an impact and will keep making an impact on the language :).
5. Kent Beck
@kentbeck , Blog
Kent Beck - creator of XP, TDD and JUnit. TDD in Java world is impossible without JUnit. Without TDD, there is simply no good code. All credit goes to Kent.
4. Joshua Bloch
@joshbloch
The best book on Java till date is Effective Java ,written by Joshua. Its a must read for every Java programmer and arguably the best book. He also created Java collections framework and many features on the Java platform.
3. Rod Johnson
@springrod, Blog
Creator of the Spring Framework, which has become the de-facto standard framework for creating enterprise Java applications. He ripped apart EJB pitfalls and made POJO development as the norm for enterprise class Java apps.
2. Rich Hickey
@richhickey, Blog
Creator of Clojure, a LISP dialect for the JVM. Clojure is extremely well received and adoption rate is impressive.
1. James Gosling
Blog
Father of Java language. It was year 1994 the year Java was born. Without James, there would have never seen Java.
January 21, 2011
January 19, 2011
January 7, 2011
STEAL THIS PRESENTATION!
Check out this SlideShare Presentation:
STEAL THIS PRESENTATION!
View more presentations from @JESSEDEE.
SlideShare Zeitgeist 2010
Check out this SlideShare Presentation. Presentation about presentation..interesting
SlideShare Zeitgeist 2010
View more presentations from Rashmi Sinha.
November 28, 2010
My take on trends to watch out for...
Couple of days back one of my friend asked me what are the 3 things important according to me for upcoming year 2011. What he meant was - What are the 3 things that I would focus next year? That got me into thinking.
This blog post is an attempt in that direction - which are the trends that I think would make a difference for any software developer to keep up with the fast pace of change.
(Note: Not in any particular order, all are important)
This blog post is an attempt in that direction - which are the trends that I think would make a difference for any software developer to keep up with the fast pace of change.
(Note: Not in any particular order, all are important)
- No SQL.
- Traditional DBs are good but definitely not "one size fits all" solution. We have to understand these too have some limitations.We have to stop thinking in rows and columns and start thinking in Documents. Get familiar with some of these concepts, find out what makes these (Mongo DB, Redis etc) successful, what kind of problems can be solved by these. This technology is going to thrive.
- Scripting language
- Enough of Java, C++, C#. Enough of OOPS. Its time to open a notepad and do some quick scripting to get things done. Too much dependency on IDEs have made many of us dumb. Its time to brush-up (or learn) scripting language. Simplicity matters. Be it Ruby, Groovy, Perl, PHP.
- Cloud computing
- Get familiar with Cloud computing architecture. This technology is already 5 years old. Amazon launched its services in 2006. Computing is cheap these days and just a click away. There would be a time in future when everything would be on cloud. This technology would grow by leaps and bounds
- Git / Mercurial (Modern Version Control Systems)
- Speed is the mantra of this age. Gone are the days of client-server versioning system. In this era of opensource and distributed teams, distributed version controls make life of the developers easy. Every developer should be aware of installing and using these distributed configuration management systems.
- Web 3.0 (HTML 5)
- A month back I attended one day conference on HTML 5 conference in NYC. The takeaway from the conference is - HTML 5 is inevitable. It has been already a decade since HTML standards got updated. The big guns (Google, Apple, Microsoft etc) are all supporting it. HTML 5, CSS3 will be the future of the web. Features like Offline storage, drag drop, geo location, canvas etc will make developing "desktop caliber" web apps a breeze. Developers, Architects ignoring this will be left behind.
- Functional language
- History repeats. Computing started with Functional language (Lisp, Scheme etc), moved to procedural (C, Pascal etc) to object oriented (C++, Java. C#) and again back to Functional languages(F#, Clojure, Erlang, Haskell etc). The job trends already indicate a huge demand for Clojure, F# etc. Hardware has become cheap, grid computing has been norm and some real world problems can be solved insanely easy with these functional languages. Its all about "Share Nothing Architecture". No concurrency issues. Its high time for the developers to start thinking differently and learn (or re-learn) the concepts of functional programming
- Data visualization
- At least two billion tweets are being posted per quarter (Source wikipedia). Wealth of information is available on twitter and all the data is public. Everybody would be interested in visualizing this data in some form (graphs, charts, trees etc ) to make sense of it. Its too much information out there. Barack Obama knew this and used this technique to do a wonderful campaign for his elections. This trend would keep growing as more data gets collected on the Internet.
- Mobile / Tablet platform
- iPad has been rated as one of the best devices to consume information. Consumers, executives, enterprise folks - all would have one or the other form of tablet devices in the near future. Its the new trend and a growing trend. Analysts call it "arm platform". Architects, Developers should first think of smart phones, then tablets and finally the notebook - when architecting or designing new enterprise or e commerce applications.
- Agile
- Everybody should be familiar with Agile Manifesto.
- TDD, BDD
- SCRUM/XP
- This should take care of your learning appetitie for at-least couple of years :).
- Please share your list ...
October 8, 2010
Top 10 qualities of an Architect
- Act as an interface between Business & IT
- Identify risks (project, technical , business)
- Should not be stereotyped (Keep aside your experience, explore & look for possible alternatives)
- Keep upto date of latest technology trends – especially in terms of limitations
- Excellent presentation / articulation skills
- Master (at-least) one Programming language (OO / Functional)
- Develop technical intuition (Usually comes with experience. Read a lot)
- Be Passionate. And Don't be too clever.
- Take responsibility of your decisions.
- Write Good code. If you design it, you should be able to code it.
October 6, 2010
The Profession Of IT Architecture
Check out this SlideShare Presentation:
The Profession Of IT Architecture
View more presentations from Christopher Grant.
September 20, 2010
Frameworks frameworks...too many
Check this out ...one more new framework...Nevertheless nice comparison of different new and old frameworks. Below is the presentation
Will do a poc soon and share my findings of http://itsnat.sourceforge.net/
Will do a poc soon and share my findings of http://itsnat.sourceforge.net/
July 28, 2010
Are we going back? (Client Server == AJAX )
One of the fundamental rule in designing software systems is always to divorce presentation logic, business logic and data access logic,
Many books have been written emphasizing the advantages of this pattern.
Coupling any of these layers would take us back to ancient Single tier or Client Server architectures.
Why am I telling all this?
One of the projects which I'm currently working on is a Web 2.0 application. This app helps users to do financial analysis by pulling large amounts of data from the database and plotting charts. And there are no page refreshes and every request is a XHR request (nice :) ).
jQuery is the Ajax framework & jQPlot is the charting framework.
One of the interesting side effects that I'm observing building this Ajax Web 2.0 app is more and more "business logic" is getting into the front end javascript files(and btw the other side effect is - Ajax apps are not search engine friendly - not "crawl-able").
What could this mean:
The browser for Ajax apps are kind of acting as a thick client, downloading data from the server (usually as JSON content) and manipulating most of it on the client side. The app server is just acting as a content provider.
Why this could be happening?
One word. Performance. Users are impatient and response > 3 secs is not acceptable.
The primary reason the business logic ends up on the client side is to limit the number of requests to the web server.
Network calls are very expensive (one to the web server and another from web server to the database server to get the actual content). So naturally developers would take easy way out, bypass these network calls, get chunks of data on the browser and manipulate it.
How to avoid this ?
- so that each tier can vary withstand modifications of other tiers
- so that different teams can focus on separate layer and specialize in that
- so that building complex systems can be easier etc etc
Many books have been written emphasizing the advantages of this pattern.
Coupling any of these layers would take us back to ancient Single tier or Client Server architectures.
Why am I telling all this?
One of the projects which I'm currently working on is a Web 2.0 application. This app helps users to do financial analysis by pulling large amounts of data from the database and plotting charts. And there are no page refreshes and every request is a XHR request (nice :) ).
jQuery is the Ajax framework & jQPlot is the charting framework.
One of the interesting side effects that I'm observing building this Ajax Web 2.0 app is more and more "business logic" is getting into the front end javascript files(and btw the other side effect is - Ajax apps are not search engine friendly - not "crawl-able").
What could this mean:
- sooner or later javascripts files grow larger and soon will end up in an un-manageable mess
- anything running on the browser is kind of "open source" available to entire world - as these files get downloaded on the browser cache. Anybody with little effort can look at the business logic
- bad user experience because of browser freeze - This is basically a counter effect. The primary reason why somebody would take ajax approach is to give a better user experience i.e. if the code runs in the browser then it it faster. But these days, an average user will have min 6 to 7 browser windows open (plus mail client (lotus or outlook), some office documents, pdf readers , IDEs etc) and if the browser starts taking your laptops cpu cycles looping some java-script code and rendering and re-drawing html --then a browser freeze is guaranteed (HTML5 promises to solve this)
The browser for Ajax apps are kind of acting as a thick client, downloading data from the server (usually as JSON content) and manipulating most of it on the client side. The app server is just acting as a content provider.
Why this could be happening?
One word. Performance. Users are impatient and response > 3 secs is not acceptable.
The primary reason the business logic ends up on the client side is to limit the number of requests to the web server.
Network calls are very expensive (one to the web server and another from web server to the database server to get the actual content). So naturally developers would take easy way out, bypass these network calls, get chunks of data on the browser and manipulate it.
How to avoid this ?
- Avoid putting business logic putting on the client side
- Use java script wisely to manipulate the DOM
- Use good server side caching solution
- Tune your SQL queries
- Design a good UI
- Anticipate user clicks, fire the request at background and have the data cached on the server side
- Keep clearing the server side cache
June 15, 2010
Back to Square one - HTML5
Wow! That's what I uttered when I watched one of the videos on HTML5 on Google I/O 2010.
I started my career coding HTML 4.0 way back in 2000. The web was hot at that time (btw it has become hotter now :)). HTML seemed easy. You write tags and see the changes, no wait time,no fun ;) .
Java was the hot buzz word. Every other person was crazy about learning Java. Applets were kind of geek thing. It was kind of prestige issue to learn Java. Your fellow buddies silently respected you when you showed your new Applet or Servlet.
During my early months of job, I started feeling HTML is only for greenhorns, there wasn't much fun in doing any HTML or say for that matter Javascript. One reason was that the tools used for (D)HTML were spitting too much of code. You don't understand any thing in that. There was not one correct way of doing things. Cross browser or say for that making code compatible for matter different versions of IE was a nightmare.
I slowly forgot HTML.
But now, With new HTML 5.0 killer features, nobody can ignore it. It has the capacity to completely replace these Rich Internet Apps be it Flash, Silverlight etc.
It would soon become a standard and entirely change how we write web applications.
Javascript would be new language of the Internet.
Some of the features are just amazing:
1. Offline storage database
2. Drag and Drop
3. Canvas
4. Rich Media tags
& the list goes on..
Check this out:
Demo of HTML5 is in HTML5 How cool is that !!.
And this video on youtube:
After listening to this marvelous session, if any body related to Software development, who writes production code, does not write a unit test (i.e. automated test) for that production code, then he is not a software "professional" --> period.
Everything falls in place, like good design, good architecture when we have a set of test suite. It adds immense confidence to keep improving the software without any "fear" of breaking it. Good test suite == good software.
Craftsmanship is nothing but professional commitment of an individual to deliver "best" software to their client or the employer.
No finger-pointing, no blame-game, no wasting time how this mess got created - just get your hands dirty and start fixing.
Thanks Bob for the lesson.
I started my career coding HTML 4.0 way back in 2000. The web was hot at that time (btw it has become hotter now :)). HTML seemed easy. You write tags and see the changes, no wait time,no fun ;) .
Java was the hot buzz word. Every other person was crazy about learning Java. Applets were kind of geek thing. It was kind of prestige issue to learn Java. Your fellow buddies silently respected you when you showed your new Applet or Servlet.
During my early months of job, I started feeling HTML is only for greenhorns, there wasn't much fun in doing any HTML or say for that matter Javascript. One reason was that the tools used for (D)HTML were spitting too much of
I slowly forgot HTML.
But now, With new HTML 5.0 killer features, nobody can ignore it. It has the capacity to completely replace these Rich Internet Apps be it Flash, Silverlight etc.
It would soon become a standard and entirely change how we write web applications.
Javascript would be new language of the Internet.
Some of the features are just amazing:
1. Offline storage database
2. Drag and Drop
3. Canvas
4. Rich Media tags
& the list goes on..
Check this out:
Demo of HTML5 is in HTML5 How cool is that !!.
And this video on youtube:
May 9, 2010
Java EE6 CDI
Choices ..choices. Now Java Development without Spring.
Its making harder for Java EE Developers & Architects. Now they have to un-learn and learn new stuff.
Jokes apart -- Java EE 6 with CDI indeed seems to simplify things for the programmer. Less code more work backed by Oracle (i.e. Sun) & Tomcat support coming soon. Finally Spring taught a lesson to Java & Java has learnt it well.
Let me head to the book shop to pick up the book - "Java Development without Spring" By Johan :)
I don't know what my next client would want. Spring or No Spring. Do I have a choice?
Its making harder for Java EE Developers & Architects. Now they have to un-learn and learn new stuff.
Jokes apart -- Java EE 6 with CDI indeed seems to simplify things for the programmer. Less code more work backed by Oracle (i.e. Sun) & Tomcat support coming soon. Finally Spring taught a lesson to Java & Java has learnt it well.
Let me head to the book shop to pick up the book - "Java Development without Spring" By Johan :)
I don't know what my next client would want. Spring or No Spring. Do I have a choice?
Java EE6 CDI
View more presentations from johaneltes.
May 7, 2010
Bob Martin on Software Craftmanship
After listening to this marvelous session, if any body related to Software development, who writes production code, does not write a unit test (i.e. automated test) for that production code, then he is not a software "professional" --> period.
Everything falls in place, like good design, good architecture when we have a set of test suite. It adds immense confidence to keep improving the software without any "fear" of breaking it. Good test suite == good software.
Craftsmanship is nothing but professional commitment of an individual to deliver "best" software to their client or the employer.
No finger-pointing, no blame-game, no wasting time how this mess got created - just get your hands dirty and start fixing.
Thanks Bob for the lesson.
April 24, 2010
Advice to myself - Choosing Work
There are three things to look out in any new endeavor that I undertake.
These are not in any particular order:
1. Does it give me money
2. Does it give me fame
3. Does it give joy
Of course the last one is the most important one. Often many try to buy the last one by the first one, which is mostly superficial.
If all three come on your way then nothing like it...
These are not in any particular order:
1. Does it give me money
2. Does it give me fame
3. Does it give joy
Of course the last one is the most important one. Often many try to buy the last one by the first one, which is mostly superficial.
If all three come on your way then nothing like it...
March 29, 2010
Reading Code...Software Archeology - 2
In the almost a decade of IT experience I can safely conclude that I have read more code than have written.
This is true for many of us. In college we spend most of the time writing code and the moment we are out in the industry , we join a project team and put in a situation where the majority of the time we spend in reading (others) code.
This is always true at-least in Indian market where the engineers work on the outsource project.
Few other reasons:
1. Most of the companies have a big agenda of "Re-use". They always emphasize and encourage teams to create a librabry re-usable components/assets. Often they track this by metrics on how much your team has shared and how you have reduced cost by using the already available components.
2. There are umpteen number of opensource libraries. Most of them lack documentation. The only to make it work is to open the source and digest it.
3. 80% of the projects that get outsourced are maintenance and enhancement which lack up to-date documentation.
4. Legacy projects
etc
Look at this way,we almost spend about 60-80% of our time in the industry reading code and 15-35% writing code and remaining on other activities but almost all the tools, processes, standards, best practices that are available on the web are for writing and creating new systems but very minimal to read & understand existing code.
What is Software Archeology?
I will leave the veterans and experts of the industry to shed more light on this:
Digging code: Software archaeology - Good overview
Grady Booch on Software Archeology
Listen to Dave Thomas on SE Radio
Article on Java Dev Journal
In my next post, I will share my experiences of diagnosing and understanding a complex Java EE app using some of the tools that I stumbled upon on the web.
This is true for many of us. In college we spend most of the time writing code and the moment we are out in the industry , we join a project team and put in a situation where the majority of the time we spend in reading (others) code.
This is always true at-least in Indian market where the engineers work on the outsource project.
Few other reasons:
1. Most of the companies have a big agenda of "Re-use". They always emphasize and encourage teams to create a librabry re-usable components/assets. Often they track this by metrics on how much your team has shared and how you have reduced cost by using the already available components.
2. There are umpteen number of opensource libraries. Most of them lack documentation. The only to make it work is to open the source and digest it.
3. 80% of the projects that get outsourced are maintenance and enhancement which lack up to-date documentation.
4. Legacy projects
etc
Look at this way,we almost spend about 60-80% of our time in the industry reading code and 15-35% writing code and remaining on other activities but almost all the tools, processes, standards, best practices that are available on the web are for writing and creating new systems but very minimal to read & understand existing code.
What is Software Archeology?
I will leave the veterans and experts of the industry to shed more light on this:
Digging code: Software archaeology - Good overview
Grady Booch on Software Archeology
Listen to Dave Thomas on SE Radio
Article on Java Dev Journal
In my next post, I will share my experiences of diagnosing and understanding a complex Java EE app using some of the tools that I stumbled upon on the web.
Subscribe to:
Posts (Atom)




