As per Deloitte predictions, more than 50 percentage of all 'computing devices' sold this year will be non-PC (smartphones, tablets, etc.) and 25 percentage of all tablets this year will be purchased by enterprise customers.
While iPad ruling the premium segment, a large number of manufactures are expected to release mid-range and entry-level Android tablets in coming months. If this trend continues then soon Tablets will be the primary way the users will consume web and enterprise services.
This presentation looks at various possibilities of reinventing web/enterprise applications, pros and cons of various tablet platforms (iOS, Android, QNX, webOS, etc.) and tools/frameworks to build cross platform applications.
This is a revised version of new technology series presentations. I love to use metaphors, they can put the message straight. This is presentation is more of strategy to deal with emerging technologies, you might also find answers to
What Dragon Rider, Cloud Computing, Ruby on Rails, and other Emerging Technologies got in common?
Why shouldn't you watch 'Reign of Fire' and other dragon movies too many times?
Why shouldn't you listen only to Java and .Net guys?
Every time we start a new development project, we end up using new set of technologies, some are similar, others completely different. For example the following are the combination for technologies used in our projects in last two years
Struts2, Metro, Spring, Spring Batch, Hibernate, JPA, MySQL
Ruby on Rails, Capistrano, Mongrel, Nginx, MySQL
JSF, Spring, Hibernate, Oracle
Spring MVC, Spring, Hibernate, jQuery, Oracle, SQLServer
Struts, Spring, iBatis, JQuery, Oracle
Each of these combination brings unique advantage to particular projects, but how to get the right set of people in place. Even if you hire, we may not get people with all combination, and it is a few weeks/months process. Exiting people can learn on the job, but can't expect a quality output.
The solution is to organize 'throwaway micro projects' with all the key technologies,
the key aspect of this approach:
Real time problem similar to the project
Agile approach with 3 hrs Iteration/Sprint cycle
Duration: 3 to 5 days
Complete throwaway project - no expectation of reuse or any kind
This approach allows the team to understand and experiment technologies, quickly tryout some practical scenarios, understand the limitations of used technologies, quickly learn from the failure and identify best practices. Also this allow different individuals to come together as a team.
Cloud computing has already made a huge impact on how we manage servers and infrastructure; you might be already using some of the cloud services directly or indirectly. For example Twitter and Slideshare uses Amazon S3 to store presentations and images.
So far my experience with cloud computing is great, for example Heroku, a zero maintenance hosting platform for Ruby on Rails applications, which itself uses Amazon EC2.
From a business point of view, cloud computing provides a huge opportunity in terms of cost, maintenance and time to market.
"Attack of the Clouds: How cloud computing changes everything" is my recent presentation prepared for an internal briefing, I tried to cover 'why and what is cloud computing', 'types of cloud services', 'popular cloud computing providers' and a demo with Heroku.com.
Groovy and Grails are changing the way we develop software projects. though I personally prefer and use Ruby and Rails for all my personal projects, grails has an edge for developing enterprise applications.
First, it is part of Java Platform, runs on Java Virtual Machine (JVM)
Uses the same infrastructure as Java, can run on Jboss, Tomcat, Weblogic, Websphere,etc
Enable Rapid application development, develop java applications in weeks instead of months
Closely integrate with Java, existing Java libraries can be reused and extended
Full stack application framework, all the standard java frameworks (spring, hibernate, junit) are nicely integrated
Provides quick start for creating project and development environment (generates basic project structure and build scripts), you can create projects structure in less than a minute.
Move the focus from technologies and frameworks to functionality, provides developer friendly Domain Specific Language (DSL) for wrapping complex java configurations such Hibernate Mapping.
Follow and encourage DRY(Don't Repeat Yourself) approach, plenty of plugins to include common functionality such security, authorization, search, etc.
Cloud friendly - using light weight architecture enable Grails applications to be hosted on Cloud Computing environments, with little effort.
Agile development - fully loaded with tools and techniques required for agile development (Test Driven Development, Behavior Driven Development and Continuous Integration, etc)
If you are not using groovy and grails yet then you are wasting your developers time as well as your client money.
After working with Java for more than 10 years, its hard to say goodbye, but everything that has a beginning has an end. I feel, Java become too much of overhead for any new software development projects whether it is enterprise projects or niche product development.
Too many standards, and too many implementations, make even a small project very complex.
Standards are great, but the main focus for these standards become vendor independence rather than simplicity and practicality. for this very reason, frameworks like Spring and Hibernate have overthrown standards like EJB.
last few years, new frameworks like Rails, not only changed the we develop applications, also brought new perspective on developing framework itself. with dynamic capabilities and user friendly DSL (Domain specific languange) approach, put these frameworks far ahead of java in terms of development speed and simplicity.
Today, time has come for us to move beyond Java and embrace some the better and simpler alternatives like ruby on rails for web development, Adobe Flex for rich internet applications, Adobe AIR for cross platform desktop applications, Groovy and Grails for web development with java integration. Erlang for concurrent applications.
in spite of all the complexity, the best thing happened to java is, that it has evolved beyond java and become a platform of languages, today it supports all leading languages including ruby(jruby), python (jpython), groovy, etc. this means you can use new languages and frameworks like groovy, and grails on java platform, while utilizing the existing java components.