Mark Richards

Welcome to wmichards.com, the web site for Mark Richards, SOA and Enterprise Architect
Last Updated: June 22nd, 2009



Speaking Engagements
Books I've Published
Articles and Publications
Podcasts and Videocasts
Certifications

Click here to download source code from my NFJS and TSS conference sessions


Bio
  I am an Enterprise and SOA Architect involved in the architecture and design of various architecture styles (including Service Oriented Architecture) in Java EE and other technologies, primarily in the financial services industry. I have been involved in the software industry as a developer, designer, and architect since 1984 working on a wide range of languages and platforms I served as the President of the Boston Java User Group in 1997 and 1998, and the President of the New England Java Users Group from 1999 thru 2003. I am the author of several technical books, hold several technical certifications, and have a Masters Degree in Computer Science from Boston University. I am a regular conference speaker at the No Fluff Just Stuff Symposium Series and frequently speak at user groups and other conferences around the world, including Sys-Con, TSSJS and QCon.


Speaking Engagements
   
  Speaking Engagements 2009
  New England Java Users Group (January 2009)
  Greater Wisconsin Software Symposium (February 2009)
  Gateway Software Symposium (March 2009)
  QCon London (March 2009)
  New England Software Symposium (March 2009)
  Northern Virginia Software Symposium (April 2009)
  Greater Atlanta Software Symposium (May 2009)
  Desert Southwest Software Symposium (July 2009)
  New England Software Symposium (Sept 2009)
  Pacific Northwest Software Symposium (Sept 2009)
  Northern Virginia Software Symposium (Nov 2009)
  Great Lakes Software Symposium (Nov 2009)

  Speaking Engagements 2008
  Gateway Software Symposium (March 2008)
  Twin Cities Software Symposium (March 2008)
  New England Software Symposium (April 2008)
  Great Lakes Software Symposium (April 2008)
  Northern Virginia Software Symposium (April 2008)
  Greater Montreal Software Symposium (May 2008)
  Lone Star Software Symposium (June 2008)
  Greater Oregon Software Symposium (June 2008)
  Greater Wisconsin Software Symposium (August 2008)
  Atlantic Northeast Software Symposium (August 2008)
  New England Software Symposium (September 2008)
  Pacific Northwest Software Symposium (September 2008)
  Western Canada Software Symposium (September 2008)
  Greater Toronto Software Symposium (October 2008)
  Greater Atlanta Software Symposium (October 2008)
  Northern Virginia Software Symposium (November 2008)
  Great Lakes Software Symposium (November 2008)
  SpringOne Americas (December 2008)

  Speaking Engagements 2007
  Greater Wisconsin Software Symposium (March 2007)
  New England Software Symposium (March 2007)
  Gateway Software Symposium (March 2007)
  TheServerSide Java Symposium Las Vegas (March 2007)
  Greater Oregon Software Symposium (April 2007)
  Northern Virginia Software Symposium (April 2007)
  Rocky Mountain Software Symposium (May 2007)
  Research Triangle Software Symposium (July 2007)
  SYS-CON Real World Java Conference New York (August 2007)
  Central Florida Software Symposium (August 2007)
  New England Software Symposium (September 2007)
  Pacific Northwest Software Symposium (September 2007)
  Greater Toronto Software Symposium (October 2007)
  Northern Virginia Java User Group (October 2007)
  Great Lakes Software Symposium (November 2007)

  Speaking Engagements 2006
  New England Software Symposium (March 2006))
  Boston WebSphere Users Group (March 2006)
  Northern Virginia Software Symposium (April 2006)
  Central Ohio Software Symposium (May 2006)
  Research Triangle Software Symposium (June 2006)
  Southern Ohio Software Symposium (August 2006)
  New York Software Symposium (August 2006)
  New England Software Symposium (September 2006)
  New England Java Users Group (September 2006)
  Greater Toronto Software Symposium (October 2006)
  Northern Virginia Software Symposium (November 2006)
  The Spring Experience Conference (December 2006)

  Speaking Engagements 2005
  Atlantic Northeast Software Symposium (March 2005)
  New England Software Symposium (April 2005)
  Rocky Mountain Software Symposium (May 2005)
  Northern Virginia Software Symposium (May 2005)
  Central Ohio Software Symposium (June 2005)
  Research Triangle Software Symposium (June 2005)
  New York Software Symposium (July 2005)
  New England Software Symposium (September 2005)
  Pacific Northwest Software Symposium (October 2005)
  Northern Virginia Software Symposium (October 2005)

  Speaking Engagements 2004
  New England Software Symposium (April 2004)
  Salt Lake Software Symposium (September 2004)
  Pacific Northwest Software Symposium (October 2004)
  New England Software Symposium (October 2004)
  Northern Virginia Software Symposium (November 2004)

  Conference Speaking Topics
 
  • Common AntiPatterns and Ways To Avoid Them
  •  
  • The Reality of Continuous Integration
  •  
  • On Being a Software Architect
  •  
  • Advanced Topics in JMS
  •  
  • Introduction to JMS
  •  
  • Spring and JMS: Message Driven POJOs
  •  
  • Transaction Pitfalls and Strategies
  •  
  • SOA Unplugged
  •  
  • Enterprise Messaging Using JMS
  •  
  • Java Persistence: Approaching the Silver Bullet
  •  
  • Transaction Design Patterns
  •  
  • Making Architecture Work Through Agility
  •  
  • Making The Right Persistence Framework Choice
  •  
  • The Enterprise Service Bus: Do We Really Need It?
  •  
  • EJB 3.0 Core Specification (JSR-220)
  •  
  • Intro to Java Persistence API (JPA)
  •  
  • Advanced Java Persistence API (JPA)
  •  
  • Techniques in Architecture Agility
  •  
  • Introducing the iBATIS Persistence Framework
  •  
  • Effective Java Persistence Using Spring and iBATIS
  •  
  • Understanding the Role of an ESB
  •  
  • Java EE Command Pattern Architecture
  •  
  • Java Transaction Management Part 1: Core Concepts
  •  
  • Java Transaction Management Part 2: Advanced Concepts
  •  
  • A Pragmatic Look at Agile Architecture
  •  
  • Hibernate and J2EE Transaction Integration
  •  
  • Data Driven Testing
  •  

    Books
       
     
    Java Message Service, 2nd Edition (Author)
    (O'Reilly, 2009)
     
    97 Things Every Software Architect Should Know (Contributing Author)
    (O'Reilly, 2009)
     
    Java Transaction Design Strategies (Author)
    (C4Media Press, 2006)
     
    NFJS Anthology Volume 2 (Contributing Author)
    (Pragmatic Programmer, 2007)
     
    NFJS Anthology Volume 1 (Contributing Author)
    (Pragmatic Programmer, 2006)
     
    Coding Standards For Java (Contributing Author)
    (New England Java User Group Standards SIG, 2002)


    Articles and Publications
       
     

    Collaborative Blog Post: Backups, Personal Virtualization, and Unhealthy Dependencies
    http://www.collaborative.com/blog/view/95/
    Amusing blog post about having to rebuild a new environment and learning a lesson about the benefits of personal virtualization and unhealthy machine dependencies. How good are your backups?

     

    Richards, Mark, June 2009, IBM DeveloperWorks, "Transaction Strategies: The High Concurrency Strategy"
    http://www.ibm.com/developerworks/java/library/j-ts5/index.html
    There may be times when you need to reduce a transaction's scope to gain throughput, improve performance, and increase concurrency in the database. How do you do this and still maintain a high level of data integrity and consistency? The answer is to use the High Concurrency transaction strategy.

     

    Richards, Mark, May 2009, IBM DeveloperWorks, "Transaction Strategies: The Client Orchestration Strategy"
    http://www.ibm.com/developerworks/java/library/j-ts4/index.html
    Sometimes an application's presentation layer must handle the coordination of multiple API layer method calls to complete a single transactional unit of work. In this article, I describe the Client Orchestration transaction strategy and explains how to implement it in the Java platform.

     

    Richards, Mark, April 2009, IBM DeveloperWorks, "Transaction Strategies: The API Layer Strategy"
    http://www.ibm.com/developerworks/java/library/j-ts3/index.html
    An effective and robust transaction strategy is critical for maintaining data consistency and integrity. The API Layer transaction strategy is easy to implement and is well-suited for most business applications. Using examples from the Enterprise JavaBeans (EJB) 3.0 specification, I explain what this transaction strategy is and how to implement it in the Java platform.

     

    Richards, Mark, March 2009, IBM DeveloperWorks, "Models and Strategies Overview"
    http://www.ibm.com/developerworks/java/library/j-ts2.html
    It's a common mistake to confuse transaction models with transaction strategies. This second article in the Transaction strategies series outlines the three transaction models supported by the Java platform and introduces four primary transaction strategies that use those models. Using examples from the Spring Framework and the Enterprise JavaBeans (EJB) 3.0 specification, I explain how the transaction models work and how they can form the basis for developing transaction strategies ranging from basic transaction processing to high-speed transaction-processing systems.

     

    Richards, Mark, February 2009, IBM DeveloperWorks, "Understanding Transaction Pitfalls"
    http://www.ibm.com/developerworks/java/library/j-ts1.html
    Transaction processing should achieve a high degree of data integrity and consistency. This article, the first in a series on developing an effective transaction strategy for the Java platform, introduces common transaction pitfalls that can prevent you from reaching this goal. Using code examples from the Spring Framework and the Enterprise JavaBeans (EJB) 3.0 specification, I explain these all-too-common mistakes.

     

    Richards, Mark, March 2009, NFJS Magazine, "Message Driven POJOs - Messaging Made Easy"
    http://www.nofluffjuststuff.com/magazine_subscribe.jsp?id=1
    Spring provides a simple yet powerful messaging framework for receiving and sending messages. In this article I demonstrate how to develop messaging-based applications using message-driven POJOs (MDPs) and describe some ways to use them in messaging-based applications. Given that no framework is entirely perfect, I also discuss some of the limitations with MDPs and how to get around them.

     

    Richards, Mark, October 2008, SOA World, "Creating an Effective SOA Service Taxonomy"
    http://soa.sys-con.com/node/738704
    PDF Version of Article
    It is difficult to have a technical or business related conversation these days without mentioning the "SOA" buzzword. However, despite the increased knowledge and awareness of SOA, many SOA-based initiatives still struggle to get off the ground or even fail altogether. One of the many reasons for this is a lack of proper understanding and definition of what is meant by a "service" in the context of SOA. Software developers see a service as a unit of source code that must be written and deployed (usually as a web service), whereas business users see a service as representing a part of a task or workflow that is needed to help them do their job. The challenge within SOA is that there are in fact many types of services. Developing a clear and effective SOA service taxonomy is crucial for any SOA initiative. A service taxonomy defines the types of services used within the context of a particular SOA engagement and provides managers, business users, software architects, and developers with a common vocabulary for defining and building services. This article will discuss the basic types of services used within SOA and how to build an effective service taxonomy. It will also introduce a common service taxonomy to use as a starting point for any SOA initiative.

     

    Howell, S.B., Richards, W.M., Barden, S.C., Bopp, B.W., 1986, PASP, 98, p.777, "EZ Pegasi: The Last Pieces of the Puzzle"
    http://adsabs.harvard.edu/abs/1986PASP...98..777H
    Publication based on the research paper "On the Nature of the RS Canum Venaticorum Binary -- EZ Pegasi", Howell, S.B., Richards, W.M., Barden, S.C., Bopp, B.W., Originally published under incorrect name W.M. Williams, later corrected to W.M. Richards, published in the Publications of the Astronomical Society of the Pacific (PASP ISSN 0004-6280) Volume 98 and archived in the NASA Astrophysical Data System. This publication provides conclusive evidence of the orbital and photometric period of the cataclysmic variable star EZ Pegasi through photometric observations taken while working at Braeside Observatory through NSF Grant AST 81-15098.


    Podcasts and Videocasts
       
     

    Videocast: iBatis vs. Hibernate
    In this videocast recorded in early 2007 I briefly discuss the major differences between iBatis and Hibernate and what the implications are of using each as your Java persistance framework

    Videocast: Java EE Command Pattern Architecture
    This videocast is a recording (with slides) of my 2006 NFJS conference session on Command Pattern Architecture.

    The Role of the Enterprise Service Bus
    In this 2005 NFJS Conference videocast (with slides) I go over what an ESB is, its role, what capabilities it provides, and the various ways an ESB can be implemented. I take a close look at the JBI specification (JSR-208) and explain what impact it will have with the ESB world. This session will teach you how to determine your own specific requirements for an ESB and then match these requirements to the product space.

    Videocast: How Do You deal With SOA?
    In this 2006 videocast Neal Ford and I talk about some of the issues surrounding SOA.

    The Enterprise Service Bus: Do We Really Need It?
    In this podcast I discuss a few of the topics I will be covering in my ESB Session at the 2007 TSS Java Symposium and NFJS Software Symposium Sessions

    FDD and Agile Architecture
    2005 Interview with Bob Payne from the Agile Toolkit on Feature Driven Development and Agile Architecture.


    Certifications
       
      The Open Group Master IT Architect Certification
      IBM Certified IT Architect
      Sun Certified J2EE Business Component Developer
      Sun Certified J2EE Enterprise Architect (I)
      Sun Certified Java Programmer
      BEA WebLogic Certified Developer
      GR Certified Java Instructor