Sunday, December 28, 2008

CodeMash 2009 Conference Next Month


I will be attending CodeMash 2009 Conference next month on January 7, 8 and 9. On the first day of the conference, there will be PreCompiler sessions with Code Jam sessions and workshops. The main conference schedule and sessions look very interesting. One thing I noticed about the conference sessions and the speakers is that this is one of those no fluff conferences where the speakers and attendees are IT geeks who have practical knowledge and experience of the topics they are presenting on, which should result in a rewarding experience to the attendees.

Some of the sessions I am planning on attending are listed below:

Day 1:

  • Value Stream Mapping Workshop (Host: Mary Poppendieck)
  • Kanban 101 (David Laribee)
Day 2:
  • Programming in Scala (Speaker: Venkat Subramaniam)
  • RIAs with Java, Spring, Hibernate, BlazeDS, and Flex (Speaker: James Ward)
  • Dynamic Languages and the JVM (Speaker: Nathaniel Schutta)
  • Thrashing (Speaker: Mary Poppendieck)
  • Functional Concepts for OOP Developers (Speaker: Bryan Weber)
Day 3:
  • Grease, a Parallel Systems Architecture (Speaker: Edward Vielmetti)
  • Language Oriented DDD (Speaker: David Laribee)
  • Executable Documentation with easyb (Speaker: Andrew Glover)
All-in-all, I am looking forward to meeting other passionate Java, .NET, Python and Ruby developers there and network with regional user group leaders.

If anyone is attending the conference, let me know. We can get together for a cup of coffee or brew.

Sunday, December 21, 2008

Application Architecture Trends presentation at Detroit Java User Group meeting

I recently gave a presentation on Application Architecture Trends at Detroit Java User Group meeting on Wednesday evening. The presentation title is "Application Architectures - Where We Have Been, Where We Are Going". The turnout was pretty good (about 20 people) and the presentation went very well. There were lot of great questions and discussion on the items I talked about in the presentation like AOP, Custom Annotations and OSGi. Here is a list of the new technology trends I covered in the presentation:

  • Dependency Injection (includes a demo on a Data Access Object using Spring DI to inject the JEE resources like Data Source, Entity Manager, and Transaction Manager)
  • Aspect Oriented Programming (includes 2 demos, one on Architecture Rules Enforcement using AspectJ & AJDT and another on Profiling using Spring AOP)
  • Annotations
  • Custom Annotations (includes a demo on a Custom Annotation for Object Caching using Spring AOP and EHCache)
  • Spring Portfolio
  • Spring Core
  • Spring AOP
  • Spring Security
  • Spring MVC/ Spring WebFlow
  • Persistence
  • JDBC v. Hibernate v. JPA
  • Transaction Management
  • Spring JTA
  • Web Services, Async Messaging & ESB's
  • Java As a Platform
  • Dynamic Languages (Groovy, JRuby, Scala)
  • Domain Specific Languages (DSL's)
  • Internal DSLs
  • External DSLs
  • Deployment
  • OSGi
  • Distributed Computing
  • Concurrent Programming (support in JDK)
  • Cloud Computing
  • Virtualization
  • Database Layer
  • Distributed Data Storage Frameworks
  • Other Trends
  • Web 2.0
  • RIA/RCP Applications
  • Conversational Web / Batch Frameworks
  • What's next for J2EE?
  • Java EE 6 (JSR-316)
  • - Profiles
  • JPA 2.0 (JSR-317)
  • - Criteria Expression Support
  • EJB 3.1 (JSR-318)
  • - Deploy EJB's in WAR files (no need for EAR files any more)
  • Spring 3.0
  • - REST Support
  • - Support for EJB 3.1

The presentation slides are available here.

Erik has blogged about this meeting and my presentation.

This presentation is also accepted for the upcoming No Fluff Just Stuff (NFJS) Symposium in Milwaukee in February (Feb 27 to March 1; checkout out the full conference schedule which has great speakers talking on very interesting topics).

Thursday, November 27, 2008

QCon San Francisco 2008 Conference - Tutorials

I attended QCon San Francisco conference last week. The conference schedule included tutorial sessions before the main conference. There were several tutorials on topics like:

I attended Certified Scrum Master (CSM) hosted by Martine Devos from Object Mentor Project Management team. Martine is an excellent CSM Trainer. The tutorial class was very educational and informative for people who are in technical management to be come Agile Project Managers. The class was interactive that allowed students to discuss with each other and rest of the group in serveral real-world project management scenarios.

Some of my favorite parts of the class are:

  • Scrum From Hell
  • Estimation Quiz

Martine is a great instructor. I recommend her class for any one who wants to learn how to be an Agile Project Manager.

On day 2 of the conference, I attended an ad hoc presentation by Ralph Johnson (one of GOF Design Patterns authros) on Parallel Computing Design Patterns.


Friday, November 7, 2008

QCon 2008 conference

The second QCon San Francisco (QCon SF 2008) conference is fast approaching us. The conference is held at Westin SF Market Street from November 19 - 21.



The schedule includes tracks on Domain Driven Design (DDD), Domain Specific Languages (DSLs), Service Oriented Architecture (SOA), REST Web Services, Design and Architecture (with several case-studies presentations), Emerging Technologies, and Agile Methodologies.

I was at the conference last year. It was a great experience. I am looking forward this year's conference. With several interesting sessions, most of them conflicting with each other, it will be tough to pick which session to attend.

Friday, July 4, 2008

Domain Driven Design and Development In Practice - Article

Domain Driven Design (DDD) is about mapping business domain concepts into software artifacts. Most of the writings and articles on this topic have been based on Eric Evans' book "Domain Driven Design", covering the domain modeling and design aspects mainly from a conceptual and design stand-point.

I recently wrote an article on Infoq to cover the domain modeling and design from a practical stand-point on how one would go about taking a domain model and actually implementing it. It looks at the guidelines, best practices frameworks and tools that technical leads and architects can use in the implementation effort.

Friday, May 30, 2008

Scrum & Football Analogy

By now, we have all heard about Agile software development methodology and its different flavors such as SCRUM, XP, DSDM etc etc.

I have been part of development teams using SCRUM methodology for last year and a half and I am learning more about agile concepts in every project using these techniques. The more I think about a project that is managed using SCRUM, I can't help but think about how similar this approach is to the way a football (American Football, not Soccer) game is played. Let me explain, here are the different aspects of both Scrum and Football that are very similar in nature.

  • The "First Down" in a football game is same as a "Sprint" in a Scrum project, Sprint = First Down.
  • In other words, End of Sprint = First down (10 yards is the objective for every down in football; End of Sprint/Iteration is the objective in Scrum)
  • End of Project (which usually consists of several Sprints) = Touchdown
How about the various meetings held in a typical SCRUM project? How do they relate to football terms?
  • Project Kickoff Meeting = Game Kickoff
  • Daily stand-ups = Huddle
  • Start of Iteration/Product Backlog = Line Of Scrimmage
  • Iteration Planning Meetings (IPM) - Pre-game meeting
  • Retrospective = Post Game Conference
Let's look at the SCRUM team member roles and how they are similar to a football team member roles.
  • Scrum Master = Head Coach
  • Technical Lead = Running back
  • Architect = Quarter back
Some of the other roles and artifacts that I haven't yet found a match are as follows:
  • Stakeholders
  • Developers
  • QA Testers = Referees?
  • Burn-down chart

Monday, May 26, 2008

ActiveMQ 5.1 Supports JMS Destination Monitoring and MSMQ Bridge

Apache ActiveMQ Version 5.1 release is out. It has some interesting new features for destination monitoring (via JMX), priority message ordering and a Microsoft Message Queue (MSMQ) to ActiveMQ Bridge with the new msmq transport component. Check out this news item on InfoQ about all the features supported by AMQ 5.1 release.

Thursday, May 15, 2008

Building Spring-Seam Hybrid Components For Web Applications

Spring and JBoss Seam frameworks provide different set of features for developing enterprise web applications. Is it possible to use these two frameworks together in web applications? This topic was the main focus of a recent article and a java community forum discussion on how the strengths of each of these frameworks can be used together.

I posted a news item on this topic on InfoQ. I am big fan of Spring and I have been using it for past 3 years. But I haven't used Seam framework yet. Any one using these frameworks together in their applications? If so, how did find integration? Are Spring and Seam complementary to each other?

Tuesday, May 13, 2008

Java EE 6 and EJB 3.1 look very much like Spring, Hibernate and Quartz

Java EE 6 (expected to be out late 2008 or early 2009) includes several interesting new features. EJB 3.1 specification will be released as part of JEE6 release.

Java EE 6 Features:

JEE6 will have, what it calls, Profiles offering different flavors of JEE services. Profile A is a lightweight version (Servlet, JSP etc), Profile B will include Profile A + EJB 3.1 Lite, JTA, JPA, JSF, and WebBeans, and Profile C is the "full platform" with Profile B features + JMS, JAX-WS etc.

EJB 3.1:

  • Optional Local business interfaces (where we can develop Local EJB components using only a bean class; not sure how this is different from what's in EJB 3.0)
  • EJB components in the web tier (package/deploy EJB components in a WAR w/o an ejb-jar)
  • Singleton Beans (one instance per application per JVM)
  • TimerService API

For more on EJB 3.1 features, check out this presentation by Kenneth Saks.

More and more I read about JEE6 and EJB3.1, they look very much like Spring and Hibernate. JEE expert groups finally gets it; what java developers really need from middleware framework instead of what the application server vendors want to offer. It's good to see that they are finally offering a modular server component model (so the customers can pick which Profile is the right fit to deploy their apps), Dependency Injection of objects other than EntityManager, and other features. WebLogic 10.3 and WebSphere are moving towards the same modular server architecture model approach.

I wonder what will Java EE 7 spec include, may be they will support Aspects and AOP as part of Java SE/EE specification (which Spring already does with AspectJ).

JUnit 4.4 - Hamcrest Asserts

I had to upgrade the JUnit version I have been using to version 4.4 in a recent project to get Spring/JUnit integration working with new testing features available in Spring 2.5 release (which make it easy to get a reference to any Spring bean w/o having to specifically load Spring application context). JUnit 4.4 also comes with Hamcrest testing framework which has several additional assert statements than what are there in plain JUnit.

I started using some of these new assert statements which are very BDD'ish in nature and make the test methods more readable on what we are asserting. We no longer have to struggle with the limited number of assert's that are available in JUnit.

Here is a good presentation that talks about the new features in JUnit 4.4 (additional assets, timeout, datapoints etc.)

Wednesday, May 7, 2008

JavaOne 2008 kickoff

JavaOne 2008 kicked off Tuesday and the general session by Sun was all JavaFX related (may be they should have called the conference JavaFXOne instead of JavaOne :).

I attended couple of SCA presentations, one by Jos and Tjis on using SCA and JBI together in enterprise applications and another presentation by Mike Edwards. Mike talked about the benefits of SCA, design, implementation, tools used for writing and deploying SCA components and services.

I posted a news item on InfoQ with a summary of these presentations.

Sunday, May 4, 2008

Getting ready for JavaOne 2008 conference

I will be attending JavaOne 2008 conference in San Francisco next week. I was there back in 2006, it was a great experience to expand IT professional network and also learn about all new and advanced technologies and frameworks in Java EE/ME/SE, SOA, Web 2.0 categories. JavaOne organizers have also posted a Conference Preview page on their site with details of session tracks and categories which is informative.

I will try to attend more sessions in SOA & Enterprise Integration track this year to see what all is happening in this area especially in the areas of SCA, ESB, and SOA Security. I am looking forward to conference.

Here is my tentative schedule:



Time Session ID/Title Speaker/Company
Tuesday , May 06
8:30 AM - 10:30 AM Sun General Session Java + YOU
10:50 AM - 11:50 AM TS-6887
Service-Oriented Architecture and Java™ Technology: Level-Setting Standards, Architecture, and Code
Steve Jones; Duane Nickull
11:30 AM - 8:00 PM Tuesday Pavilion Hours: 11:30 a.m. - 8:00 p.m.
11:50 AM - 12:10 PM Break between sessions
11:50 AM - 11:50 AM Lunch Served from 11:50 a.m. to 2:00 p.m.
12:10 PM - 1:10 PM TS-4871
SOA and 35 Million Transactions per Day: Mission Impossible?
Matthias Schorer
1:30 PM - 3:00 PM Sun General Session Java-Centricity: Leveraging Java Technology at the hub of your Digital Life
3:20 PM - 4:20 PM TS-5870
The Best of Both Worlds with Java™ Business Integration and Service Component Architecture
Jos Dirksen; Tijs Rademakers
4:20 PM - 4:40 PM Break between sessions
4:40 PM - 5:40 PM TS-6297
Migrating Intel IT to an Enterprise Service Bus-Based Service-Oriented Architecture
David Johnston; CJ Newburn; Kumar Shiv
5:40 PM - 6:00 PM Break between sessions
6:00 PM - 7:00 PM TS-5850
SCA: Flexible and Agile Comp! osition of Distributed Service-Oriented Architecture Applications
Mike Edwards
7:00 PM - 7:30 PM Evening Break
7:30 PM - 8:20 PM BOF-5150
Event-Driven Service-Oriented Architecture on the Java™ Platform with OSGi and Spring
Balamurali Kothandaraman; Takyiu Liu
8:30 PM - 9:20 PM BOF-5613
Jersey: RESTful Web Services Made Easy
Jakub Podlesak; Paul Sandoz
9:30 PM - 10:20 PM BOF-5205
All About the Sun Certified Enterprise Architect (SCEA) Exam
Mark Cade; Humphrey Sheil
W! ednesday , May 07
8:30 AM - 9:15 AM Oracle General Session Enterprise Application Platform
9:30 AM - 10:30 AM TS-5250
Asynchronous Ajax for Revolutionary Web Applications
Jean-Fran├žois Arcand; Ted Goddard
10:30 AM - 10:50 AM Break between sessions
10:50 AM - 11:50 AM TS-5918
Open-Source Service-Oriented Architecture with Service Component Architecture and Apache Tuscany
Mario Antollini; Jean-Sebastien Delfino
11:30 AM - 4:30 PM Wednesday Pavilion Hours: 11:30 a.m. - 4:30 p.m.
11:50 AM - 11:50 AM Lunch Served from 11:50 a.m. to 2:00 p.m.
1:30 PM - 2:30 PM TS-6029
It’s All About the SOA: RESTful Service-Oriented Architecture at Overstock.com
Sean Landis; Ian Robertson
2:30 PM - 2:50 PM Break between sessions
2:50 PM - 3:50 PM TS-5318
Dealing with Asynchronicity in Java™ Technology-Based Web Services
Gerard Davison; Manoj Kumar
3:50 PM - 4:10 PM Break between sessions
4:10 PM - 5:10 PM TS-5616
JSR 303: From a World of Constraints to Constrain the World
Emmanuel Bernard
5:10 PM - 6:30 PM Evening Break
5:30 PM - 6:15 PM AMD General Session The Role of the Microprocessor in the Evolution of Java Technology
6:30 PM - 7:20 PM BOF-5501
Java™ Champions BOF: The Latest Buzz, Highlights, and Panel Discussion
Calvin Austin; Harshad Oak; Manfred Riem
7:30 PM - 8:20 PM BOF-6211
Transactions and Java™ Business Integration (JBI): More Than Java Message Service (JMS)
Frank Kieviet; Murali Pottlapelli
Thursday , May 08
8:30 AM - 9:15 AM Intel General Session Innovations through Software
9:30 AM - 10:30 AM TS-6339
Top 10 Patterns for Scaling Out Java™ Technology-Based Applications
Cameron Purdy
10:30 AM - 10:50 AM Break between sessions
10:50 AM - 11:50 AM TS-6421
Mylyn: Code at the Speed of Thought
Mik Kersten
11:30 AM - 4:30 PM Thurdsay Pavilion Hours: 11:30 a.m. - 4:30 p.m.
11:50 AM - 11:50 AM Lunch Served from 11:50 a.m. to 2:00 p.m.
1:30 PM - 2:30 PM TS-5706
Service Component Architecture (SCA) and Java™ Platform, Enterprise Edition (Java EE Platform): Integration Inside
Ron Barack; Peter Peshev
2:30 PM - 2:50 PM Break between sessions
2:50 PM - 4:50 PM LAB-5500
Dynamic Service Composition with OpenESB: Compose a JavaOne&#8480 Conference Survey/Poll Application, Analyze Live Data, and Generate Real-Time Poll Reports
Tuhin Kumar; Rupesh Ramachandran
3:50 PM - 4:10 PM Break between sessions
5:10 PM - 6:30 PM Evening Break
5:30 PM - 6:15 PM Motorola General Session Dial in, Drive Deep: Using Motorola's Platforms to Reach Consumer and Enterprise Markets
6:30 PM - 7:20 PM BOF-5846
Developing Service-Oriented Architecture Applications with OSGi
Keith Babo ; Kevin Conner; Mark Little
8:30 PM - 9:20 PM BOF-5495
Untangling the Asynchronous Web
Tim Kimmet; Sangjin Lee
Friday , May 09
8:30 AM - 10:30 AM Sun General Session Extreme Innovation
10:50 AM - 11:50 AM TS-6048
Complex Event Processing at Orbitz
Doug Barth; Matthew O'Keefe
11:50 AM - 12:10 PM Break between sessions
11:50 AM - 11:50 AM Lunch Served from 11:50 a.m. to 2:00 p.m.
1:10 PM - 1:30 PM Break between sessions
1:30 PM - 2:30 PM TS-6050
Comparing JRuby and Groovy
Neal Ford
2:30 PM - 2:50 PM Break between sessions
3:50 PM - 4:10 PM Break between sessions
4:10 PM - 5:10 PM TS-6169
Spring Framework 2.5: New and Notable
Rod Johnson