Tag: indicthreads

Post conference recap : The 4th Indicthreads.com conference on Java Technology

Posted by – December 14, 2009

The annual indicthreads.com java technology conference is Pune’s best and possibly one of India’s finest conferences on matters related to Java technologies. I looked forward to attending the same and was not disappointed a bit. The last one was held about 3 days ago on Dec 11th and 12th, and this post reviews my experiences at the same.

As with any other conference usually something or the other isn’t quite working well in the morning, so I soon discovered we had a difficulty with the wireless network being swamped by the usage. There were some important downloads that needed to be completed, so my early morning was spent attempting to get these done .. which meant I missed most of Harshad Oak’s opening session on Java Today.

The next one i attended was Groovy & Grails as a modern scripting language for Web applications by Rohit Nayak. However I soon discovered that it (at least initially) seemed to be a small demo on how to build applications using grails. Since that was something I was familiar with, I moved to the alternative track in progress.

The one I switched to even as it was in progress was Java EE 6: Paving the path for the future by Arun Gupta. Arun had come down from Santa Clara to talk about the new Java EE6 spec and its implementation by Glassfish. Arun talked about a number of additional or changed features in Java EE6 in sufficient detail for anyone who got excited by them to go explore these in further detail. These included web fragments, web profile, EJB 3.1 lite, increased usage of annotations leading to web.xml now being optional, and a number of points on specific JSRs now a part of Java EE6. Some of the things that excited me more about Glassfish were, (a) OSGi modularisation and programmatic control of specific containers (eg Servlet, JRuby/Rails etc.), embeddability, lightweight monitoring. However the one that excited me the most was the support for hot deployment of web apps for development mode by allowing the IDEs to automatically notify the running web app which in turn automatically reloaded the modified classes (even as the sessions continued to be valid). The web app restart cycle in addition to the compile cycle was alway one of my biggest gripes with Java (second only to its verbosity) and that seemed to be going away.

I subsequently attended Getting started with Scala by Mushtaq Ahmed from Thoughtworks. Mushtaq is a business analyst and not a professional programmer, but has been keenly following the developments in Scala for a couple of years (and as I later learnt a bit with Clojure as well). Unlike a typical language capability survey, he talked only about using the language for specific use cases, a decision which I thought made the presentation extremely useful and interesting. The topics he picked up were (a) Functional Programming, (b) DSL building and (c) OOP only if time permitted. He started with an example of programming/modeling the Mars Rover movements and using functions and higher order functions to do the same. Looking back I think he spent lesser time on transitioning from the requirements into the code constructs and in terms of what he was specifically setting out to do in terms of higher order functions. However the demonstrated code was nevertheless interesting and showed some of the power of Scala when used to write primarily function oriented code. The next example he picked up was a Parking Lot attendant problem where he started with a Java code which was a typical implementation of the strategy pattern. He later took it through 7-8 alternative increasingly functional implementations using Scala. This one was much easier to understand and yet again demonstrated the power of Scala quite well in terms of functional programming. Onto DSLs, Mushtaq wrote a simple implementation of a “mywhile” which was a classical “while” loop as an example of using Scala for writing internal DSLs. Finally he demonstrated the awesome power of using the built in support for parser combinators for writing an external DSL, and also showed how a particular google code of summer problem could be solved using Scala (again for writing an external DSL). A very useful and thoroughly enjoyable talk.

The brave speaker for the post lunch session was Rajeev Palanki who dealt both with overall IBM directions on Java and a little about MyDeveloperworks site. In his opinion he thought Java was now (post JDK 1.4) on the plateau of productivity after all the early hype and IBM now focused on Scaling up, Scaling down (making it easier to use at the lower end), Open Innovation (allow for more community driven innovation) and Real Time Java. He emphasised IBMs support to make Java more predictable for real time apps and stated that Java was now usable for Mission Critical applications referring to the fact that Java was now used in a USS Destroyer. He referred to IBMs focus on investing in Java Tooling that worked across different JRE implementations. Tools such as GCMV, MAT, and Java Diagnostic Collector. Finally he talked about the IBM MyDeveloperWorks site at one stage referring to it as the Facebook for Geeks.

The next session was Overview of Scala Based Lift Web Framework by Vikas Hazarati, Director, Technology at Xebia. Another thoroughly enjoyable session. Vikas dealt with a lot of aspects related to the Lift web framework including various aspects related to the mapper, the snippets, usage of actors for comet support etc. I was especially intrigued by Snippets which act as a bridge between the UI and the business logic have a separate abstraction for themselves in the framework and how the construct and functionality in that layer is treated so differently from other frameworks.

I subsequently attended Concurrency: Best Practices by Pramod Nagaraja who works on the IBM JRE and owns the java.nio packages (I think I heard him say owns). He talked about various aspects and best practices related to concurrency and one of the better aspects of the talk was how seemingly safe code can also end up being unsafe. However he finished his session well in time for me to quickly run over and attend the latter half of the next presentation.

Arun Gupta conducted the session Dynamic Languages & Web Frameworks in GlassFish which referred to the support for various non java environments in Glassfish including those for Grails/Groovy, Rails/JRuby, Django/Python et. al. The impression I got was Glassfish is being extremely serious about support for the non java applications as well and is dedicating substantial efforts to make Glassfish the preferred platform for such applications as well. Arun’s blog Miles to go … is most informative for a variety of topics related to Glassfish for both Java and non Java related aspects.

The last talk I attended during the day was Experiences of Fully Distributed Scrum between San Francisco and Gurgaon by Narinder Kumar, again from Xebia. Since a few in the audience were still not aware of agile methodologies (Gasp!), Narinder gave a high level overview of the same before proceeding down the specific set of challenges his team had faced in implementing scrum in a scenario where one team was based in Gurgaon, India and another in San Fransciso, US. To be explicit, he wasn’t describing the typical scrum of scrum approaches but was instead describing a mechanism wherein the entire set of distributed teams would be treated as a single team with a single backlog and common ownership. This required some adjustments such as a meeting where only one person from one of the locations and all from another would take part in a scrum meeting in situations where there were no overlapping working hours. There were a few other such adjustments to the process also described. The presentation ended with some strong metrics which represented how productivity was maintained even as the activities moved from a single location to a distributed model. Both during the presentation and subsequently Narinder described some impressive associations with senior Scrum visionaries and also some serious interest in their modified approach from some important companies. However one limitation I could think of the model was, that it was probably better geared to work where you had developers only in one of the two locations (offshoring). I perceived the model as a little difficult to work if developers were located across all locations (though that could end up being just my view).

The second day started with a Panel Discussion on the topic Turning the Corner between Arun Gupta, Rohit Nayak, Dhananjay Nene (thats yours truly) and moderated by Harshad Oak. It was essentially a discussion about how we saw some of the java and even many non java related technologies evolving over the next few years. I think suffice to say one of the strong agreements clearly was the arrival of Java the polyglot platform as compared to Java the language.

The next session was Developing, deploying and monitoring Java applications using Google App Engine by Narinder Kumar. A very useful session describing the characteristics, opportunities and challenges with using Google App Engine as the deployment platform for Java based applications. One of the take away from the sessions was that subject to specific constraints, it was possible to use GAE as the deployment platform without creating substantial lockins since many of the Java APIs were supported by GAE. However there are a few gotchas along the way in terms of specific constraints eg. using Joins etc.

I must confess at having been a little disappointed with Automating the JEE deployment process by Vikas Hazrati. He went to great depths in terms of what all considerations a typical J2EE deployment monitoring tool should take care of, and clearly demonstrated having spent a lot of time in thinking through many of the issues. However the complexities he started addressing started to get into realms which only a professional J2EE deployment tool writer would get into. That made the talk a little less interesting for me. Besides there was another interesting talk going on simultaneously which I was keen on attending as well.

The other talk I switched to half way was Create Appealing Cross-device Applications for Mobile Devices with Java ME and LWUIT by Biswajit Sarkar (who’s also written a book on the same topic). While keeping things simple, Biswajit explained the capabilities of Java ME. He also described LWUIT which allowed creation of largely similar UI across different mobile platforms. He explained that while the default Java ME used native rendering leading to differing look and feel across mobile handsets just like Java AWT, using LWUIT allowed for a Java Swing like approach where the rendering was performed by the LWUIT library (did he say around 300kb??) thus allowing for a more uniform look and feel. He also showed sample programs and how they worked using LWUIT.

Allahbaksh Asadullah then conducted the session on Implementing Search Functionality With Lucene & Solr, where he talked about the characteristics and usage of Lucene and Solr. It was very explicitly addressed at the very beginners to the topic (an audience I could readily identify myself with) and walked us through the various characteristics of search, the different abstractions, how these abstractions are modeled through the API and how some of these could be overridden to implement custom logic.

How Android is different from other systems – An exploration of the design decisions in Android by Navin Kabra was a session I skipped. However I had attended a similar session by him earlier so hopefully I did not miss much.

However Navin did contribute occasionally into the next session Java For Mobile Devices – Building a client application for the Android platform by Rohit Nayak. Rohit demonstrated an application he is working on along with a lot of the code that forms the application using Eclipse and the Android plugin. A useful insight into how an Android application is constructed.

As the event drew to a close, the prizes were announced including those for the Indicthreads Go Green initiative. A thoroughly enjoyable event, leaving me even more convinced to make sure to attend the next years session making it a third in a row.

Day 1 : IndicThreads.com Java Technology conference

Posted by – November 25, 2008

Here’s my notes from the Day 1 of the IndicThreads conference on Java Technology. The first session focused on the state of IT industry in India, the second on some of the important developments in IT landscape, and the remainder started to get into the specific technology issues.

Session 1 : Inaugural Address : Ganesh Natarajan, Chairman NASSCOM

The day started off with Mr. Ganesh Natarajan, President NASSCOM delivering the inaugural address. With regards to the current state of the Indian IT-BPO industry some of the points he noted were (the words are mine)

  • Fantastic track record for last 4 years – however now under cloud of uncertainty
  • 41 billion USD exports (contrasted to 2 billion for China)
  • 62% BPO in India is not voice (call centers) as per popular perception but is in other areas such as transaction processing.
  • The Indian industry now offers a comprehensive set of services covering the entire continuum of the requirements from IT – BPO
  • Cost pressures forcing Indian IT to start focusing on Tier III cities. 43 tier III cities identified for growth in IT-BPO industries.
  • Training and skills is a huge issue. While education in Tier I colleges is very good, education in Tier III colleges still leaves a lot to be desired. While 200000 new jobs are expected to get added this year, and 6 million over the next 10 years, India will still have manpower surplus in 2020. The important challenge facing the industry was training and skills development.

Session 2 : Keynote Address : Anand Deshpande, CoFounder and MD Persistent Systems

The next session was by Mr. Anand Deshpande of Persistent Systems. He focused on providing a contextual changes within which the software development community shall be expected to operate in. This 10 contextual changes he elaborated are :

  1. Multicore
  2. Mobile Telephony
  3. Cloud and SaaS
  4. Web 2.0 and Social Networking
  5. Rich Internet Applications
  6. Large Volumes of Diverse Data (including BI and analytics)
  7. Open Source
  8. Gaming and Entertainment boom
  9. Green IT
  10. Community Software Development (contribute back to the community please!)

One point he made which was not as optimistic as Mr. Natarajan’s opinion was that there could be significant job cuts in IT industry in India over the next 6-9 months. The rationale was if customers simply told the vendors cut 20-25% of the costs – vendors would have no choice but to have some job cuts.

Session 3 : The Future of the Web: HTML 5, WebSocket, Java and Comet : Sidda Eraiah, Director of Management Services, Kaazing

The session focused on HTML 5 and the WebSockets capability. Sidda discussed how WebSockets rides on HTTP/HTTPS for the initial handshake but then upgrades itself into a fully duplex (bidirectional) channel between the browser and the server supporting server initiated communication as well (post the channel being established). While he mentioned that HTML 5 wont be ready till 2022 (see related link here), browsers were already starting to support WebSockets. Opera currently supports it and Firefox has a patch which might get into the mainstream sometime soon. He demoed an application with a server side infrastructure using the open source kaazing server and JMS which eventually fed stock quotes to the browser. WebSocket lends itself to a small number of applications but can help reduce client update intervals and network bandwidth requirements substantially where it is relevant.

Session 4 : Getting Events and Web2.0 into SOA based Solutions : Ramesh Loganathan, MD, Progress Software India

Ramesh talked a lot about how getting an event based design was going to be important in SOA based deployments. Many points he made were rather pertinent about the overall SOA landscape. Some of these were :

  • SOA infrastructure has become unduly complex. He later on mentioned that in most cases where it is used today probably a simple workflow engine would suffice.
  • REST is a good 80/20 example of SOA – the most important functionality at minimal cost
  • SOA is past the hype curve and into serious adoptions
  • In many cases SOA is being used on the boundary for integration purposes. As an example he mentioned it being used only for batch file transfer (breaking a batch into individual transaction) at one large financial institution. SOA needs to move beyond integration and into a bit of a paradigm shift
  • While early SOA deployments were on the border, we need to now start designing applications using SOA ground up to leverage SOA capabilities.
  • Various mediation elements in the SOA landscape (transformation, security, audit etc.) were now going to be an important challenge area.
  • Three important things to think about going forward for SOA architectures – Event Handling, Virtualisation and Web 2.0
  • In the context of Virtualisation and Cloud based computing (where the SOA elements could be massively distributed), performance would be key and SOA implementations would need to be fast, reliable, scalable and secure
  • Again in the context of Virtualisation and Cloud based computing, these would not really impact the SOA implementations themselves since not much really changed except that one would need to account for the fact that these services could be running on a much wider (global) scale network.
  • In the context of events, we should build events into the SOA processes. While events are raised by services or processes, services and processes should respond to these events. These events would eventually be consumed by BAM (Business Activity Monitoring) dashboards. These would take SOA into a scenario where rather than it acting in the classic request response model, the events would trigger the requests which other services or humans (in case of BAM dashboards) would respond to. Thus we need to have events onto the ESB.
  • In this context one needs a good event engine with good pattern recognition capability to work on the events. Thus services could raise events, which the event engine could analyse and in turn feed new events back into other services. As an example he mentioned a case where events from a weather monitoring system were analysed in turn leading to events / requests being triggered into an airline scheduling system.
  • In the context of Web 2.0, he mentioned that we need to put users in the middle. I am not sure if I understood it correctly but I guess what he was opining was that we need to keep the user in mind much more when designing SOA based system sets, in a manner which would help increase the capabilities and choices at the disposal of the user.

Session 5 : Spring 2.5: Enhanced productivity and production power : Nik Jones, Consultant, SpringSource Australasia

This session was about various Spring capabilities with a special focus on some of the newer things added in Spring 2.5. Since much of it was a description of Spring capabilities which is probably adequately covered by Spring documentation, I will only note that I was particularly impressed by Spring Osgi capabilities in Spring 2.5 and the fact that one can build Spring based POJOs and have them hosted in a J2EE server (Tomcat) or with an EJB container or an OSGI server provided by SpringSource (which would actually host one or more web tier application server such as Tomcat).

Session 5 : Mock Objects in Action : Paulo Caroli, Agile Coach, Thoughtworks and Snehal Jha, Thoughtworks

The session focused on three mock object testing frameworks – jMock, easymock and mockit and demonstrated an otherwise identical set of test cases implemented using each of the three frameworks. A very nice attempt I thought at bringing out the nuanced differences across the mock testing frameworks. Interestingly Paulo refused to take the bait on what his favourite framework was, but instead referred the audience to how things were different in some of the code snippets being displayed and to a comparison on Mockit home page. The final word was – it depends – just try them out and figure out for yourself what works best for you. However I suspect it could have had a slightly better impact if the audience was prepared with a better understanding of junit (some of the questions and diversions were about junit and unit testing, and were not about mock testing), and if perhaps some more time had been spent upfront on what exactly a mock testing usecase entails in terms of writing code.

IndicThreads.com Java conference : LiveBlogging on Twitter and Summarising here

Posted by – November 24, 2008

Shall be live blogging from the IndicThreads.com Java Conference on twitter, and shall be posting a daily summary here. After much consideration, decided twitter was a much better option for liveblogging (wordpress just doesn’t seem like the right tool to liveblog :( ). I shall be twittering on dnene_liveblog (Thats not my usual twitter account which is : dnene). Hope to be able to post a summary of the day each evening on this blog as well. Here’s the conference schedule to whet your interest.