'training and mentoring with agility'

Home

Blog

Downloads

Training

Consulting

Conferences

Talks

Testimonials

About us

Contact us

Downloads: Presentations and Articles
The contents provided under the Presentations and Articles sections are available for use as-is. There are no restrictions in how you may use what you download. The author or the site does not provide support for the content here nor do they take any responsibility for its correctness. Libraries and APIs change and some of the examples may not work as versions change.
Presentations:
Test Driving Code with the Help of AI, Atlanta JUG, Atlanta, December 17, 2024
ADRs: The Why and How, Arch Conf, Clearwater, December 12, 2024
Monoliths vs Microservices, Arch Conf, Clearwater, December 11, 2024
Designing for Resilience and Scale, Arch Conf, Clearwater, December 11, 2024
Seven Essential Practices for Effectively Maintaining Microservices, Arch Conf, Clearwater, December 11, 2024
Patterns for Microservices, Arch Conf, Clearwater, December 11, 2024
Qualities of a Highly Effective Architect, Arch Conf, Clearwater, December 11, 2024
Communication Patterns for Distributed Architectures, Arch Conf, Clearwater, December 10, 2024
Impact of Asynchronous Communication on Scalability, Arch Conf, Clearwater, December 10, 2024
Role (not Title) of an Architect in an Agile Team, Arch Conf, Clearwater, December 10, 2024
Creating Evolutionary Architecture, Arch Conf, Clearwater, December 10, 2024
Leveraging Test Containers for Effortless Continuous Feedback, DevOps Vision, Clearwater, December 2, 2024
Cruising Along with Java: Parts 1 & 2, NFJS, St. Louis, April 6, 2024
Scaling Up with Virtual Threads, NFJS, St. Louis, April 5, 2024
Patterns for Microservices, NFJS, St. Louis, April 5, 2024
Monoliths vs Microservices, NFJS, St. Louis, April 5, 2024
Let's Set the Records Straight, IntelliJ IDEA Conference, March 6, 2024
Creating and maintaining Architectural Fitness Functions, ArchConf, Clearwater, Florida, December 14, 2023
Design Patterns Revisited in Modern Java, ArchConf, Clearwater, Florida, December 14, 2023
Designing Applications with the Functional Paradigm, ArchConf, Clearwater, Florida, December 13, 2023
Creating Evolutionary Architecture, ArchConf, Clearwater, Florida, December 13, 2023
Designing for Resilience and Scale, ArchConf, Clearwater, Florida, December 13, 2023
Design Trade offs in Modern Architectures, ArchConf, Clearwater, Florida, December 12, 2023
Multithreading vs. Asynchronous Programming: The Architectural Shift, ArchConf, Clearwater, Florida, December 12, 2023
Designing Microservices, ArchConf, Clearwater, Florida, December 12, 2023
Using GitHub Actions, DevOps Vision, Clearwater, Florida, December 5, 2023
Twelve Essential Practices to be Effective in Continuous Delivery, DevOps Vision, Clearwater, Florida, December 5, 2023
Observing Applications in Production, DevOps Vision, Clearwater, Florida, December 4, 2023
Tools and Techniques for Infrastructure as Code, DevOps Vision, Clearwater, Florida, December 4, 2023
Continuous Integration I Invite You to Break My Build, DevOps Vision, Clearwater, Florida, December 4, 2023
The Power of Graalvm, UberConf, Denver, Colorado, July 20, 2023
Exploring the Features of C# 11: The Modern Capabilities of a Vibrant Language, Syncfusion webinar, June 15, 2023
Structured Concurrency in Java, NFJS, St. Louis, March 31, 2023
Pattern Matching in Java, NFJS, St. Louis, March 31, 2023
Asychronous Programming in Java using Virtual Threads, NFJS, St. Louis, March 31, 2023
Non-Language Changes in Java, NFJS, St. Louis, March 31, 2023
Know your Java?, NFJS, St. Louis, March 31, 2023
Refactoring to Functional Style, Jfokus, Stockholm, February 6, 2023
Towards a Humane Interface, PWX, Clearwater, December 4, 2022
Exception Handling in Functional and Reactive Programming, Devoxx, Belgium, October 11, 2022
Design Patterns Revisited in Modern Java, Devoxx, Belgium, October 11, 2022
Modeling with Sealed Classes, NFJS, Columbus, May 1, 2022
Refactoring Code, DevNexus, Atlanta, April 13, 2022
Understanding Functional Programming in Java, NFJS Dallas, April 10, 2022
Staying One Step Ahead of Java Evolution: Learning from Other Languages, NFJS Dallas, April 10, 2022
Transformting Data Using the Functional APIs of Java, NFJS Dallas, April 09, 2022
Designing in the World of Microservices: The Emphasis on Bounded Context, NFJS Dallas, April 09, 2022
A Deep Dive into CompletableFutures, NFJS Dallas, April 08, 2022
Exception Handling in Reactive and Functional Programming, NFJS Dallas, April 08, 2022
The Amazing Features of Modern Java, NFJS Dallas, April 08, 2022
Programming in Groovy and Kotlin, Corporate event, April 04, 2022
Succeding With a Career in Technology, O'Reilly Scholarship Speaker Series, August 18, 2021
Give Me a Break: More Functional Looping, O'Reilly Open Source Superstream, July 29, 2021
Async Programming and Project Loom, Chicago JUG, July 22, 2021
Building Cloud Native Applications with Micronaut and Graalvm, Webinar, June 29, 2021
Exploring Generics and Creating Custom Annotations, Greensboro JUG, June 10, 2021
Principles for Building Microservices, Arch Conf, Dec 8, 2020
Dos and Don'ts of Type Inference in Java, Apex Systems Webinar, October 21, 2020
Continuations and Fibers: The New Frontier in Java, Kansas City JUG, September 10, 2020
The Features of Modern Java & Their Benefits, Apex Systems Webinar, August 5, 2020
The Art of Simplicity, Agile Austin, July 23, 2020
Let's Get Lazy, JetBrains Technology Day, July 8, 2020
Angular, React, Vue: An objective comparison, Utah JUG, May 21, 2020
Client Side JavaScript: Tools and Techniques, NFJS, Madison, February 28, 2020
Metaprogramming in JavaScript, NFJS, Madison, February 28, 2020
This Ain't Your Parents' Java, DexNexus, Atlanta, February 20, 2020
Towards an Agile Design, ArchConf, Clearwater, FL, December 12, 2019
Core Software Design Principles, ArchConf, Clearwater, FL, December 10, 2019
Seven Technologies to Keep an Eye On, ArchConf, Clearwater, FL, December 10, 2019
Tools for High Performance Big Data Computing on the JVM, ArchConf, Clearwater, FL, December 10, 2019
GraalVM—What and How it will impact your technical decisions, ArchConf, Clearwater, FL, December 10, 2019
The Future of Threads of the JVM: Impact of Continuations and Fibers, ArchConf, Clearwater, FL, December 10, 2019
Designing for Resilience and Scala, ArchConf, Clearwater, FL, December 10, 2019
Exploring Collectors, CodeOne, San Francisco, September 18, 2019
Functional Programming in Kotlin, Devoxx, Krakow, June 26, 2019
Towards an Agile Design, InfoShare, Poland, May 8, 2019
Taking Polyglot Programming to the Next Level with GraalVM, NFJS, Reston, April 13, 2019
Learning to Code in Functional Style with Java, NFJS, St. Louis, April 6, 2019
Creating React Native Applications, FrontEnd Fest, Chicago, April 3, 2019
Micronaut: The New Wiz on the Block, DevNexus, Atlanta, March 7, 2019
Programming in Kotlin, NFJS, Madison, March 2, 2019
Functional Programming Idioms, NFJS, Madison, March 2, 2019
Migrating to Java Modules: Why and How, NFJS, Madison, March 2, 2019
Type Inference: Friend or Foe, NFJS, Madison, March 1, 2019
Architecting and Designing Reactive System and Applications, NFJS, Madison, March 1, 2019
Mastering JavaScript Modules, NFJS, Madison, March 1, 2019
Rediscovering JavaScript, NFJS, Madison, March 1, 2019
Continuations and Fibers: The New Frontier in Java, NFJS, Madison, March 1, 2019
The Evolution of Java: 9, 10, 11, and 12, NFJS, Madison, March 1, 2019
Qualities of a Highly Effective Architect, Arch Conf, Clear Water, December 13, 2018
Architectural Principles and Practices for building MicroServices, Arch Conf, Clear Water, December 13, 2018
Towards an Agile Design, Arch Conf, Clear Water, December 11, 2018
Architecting and Designing Reactive System and Applications, Arch Conf, Clear Water, December 11, 2018
Profiling Client Side JavaScript Applications, Rich Web Exp., Clear Water, December 5, 2018
Angular, React, Vue: An Objective Comparison, Rich Web Exp., Clear Water, December 4, 2018
Improving Quality of JavaScript Code, Rich Web Exp., Clear Water, December 4, 2018
Automated Testing React Applications, Rich Web Exp., Clear Water, December 4, 2018
Measuring Performance of React Applications, Rich Web Exp., Clear Water, December 3, 2018
State Management with Redux, Rich Web Exp., Clear Water, December 3, 2018
Developing with React, Rich Web Exp., Clear Water, December 3, 2018
A Practical Introduction to React, Rich Web Exp., Clear Water, December 3, 2018
Creating Internal DSLs in Kotlin, KotlinConf, Amsterdam, October 5, 2018
Exploring Coroutines in Kotlin, KotlinConf, Amsterdam, October 5, 2018
Type Inference: Friend or Foe, Dallas Metroplex JUG, August 8, 2018
CompletableFuture, the Promises of Java, NFJS, Des Moines, August 4, 2018
A Dozen Cool Things... JVM Languages, Devoxx, Poland, June 21, 2018
Java 9 and Java 10: The Key Parts, London Java Community JUG, London, May 8, 2018
Full Stack Reactive Programming, NFJS, Boston, March 18, 2018
Using Reactive APIs of Java, NFJS, Madison, February 23, 2018
JavaScript: from Classes to Decorators, NFJS, Madison, February 23, 2018
JavaScript: the Cute Parts, NFJS, Madison, February 23, 2018
Using React with Angular, Rich Web, Clear Water, FL, December 7, 2017
Developing with React, Rich Web, Clear Water, FL, December 7, 2017
A Practical Introduction to React, Rich Web, Clear Water, FL, December 7, 2017
Creating Fluent Code with Groovy, G3 Summit, Austin, TX, November 30, 2017
Kotlin for Java Programmers, Devoxx, Belgium, November 8, 2017
Exploring Java 9: The Key Parts, Devoxx, Belgium, November 7, 2017
Parallel and Asynchronous Programming with Streams and CompletableFuture, Devoxx, Belgium, November 7, 2017
Measuring Code Quality, NFJS, Reston, October 28, 2017
Tools for High Performance Big Data Computing on the JVM, NFJS, Reston, October 28, 2017
Metaprogramming in JavaScript, NFJS, Reston, October 27, 2017
Profiling Client Side JavaScript Applications, NFJS, Reston, October 27, 2017
Improving Quality of JavaScript Code, NFJS, Reston, October 27, 2017
Concurrent Programming in C++, NDC TechTown, Kongsberg, October 19, 2017
Twelve Ways to Make Code Suck Less, JavaOne, San Francisco, October 5, 2017
From Functional to Reactive Programming, JavaOne, San Francisco, October 5, 2017
Designing Functional Programs, JavaOne, San Francisco, October 4, 2017
The Power and Perils of Parallel Streams, JavaOne, San Francisco, October 4, 2017
The Power and Practicality of Immutability, JavaOne, San Francisco, October 3, 2017
Java 8 Programming Idioms, JavaOne, San Francisco, October 3, 2017
Refactoring to Functional Style, JavaOne, San Francisco, October 2, 2017
JShell: The REPL for Java, Uberconf, Denver, July 21, 2017
Exploring Java 9 Modularization, Uberconf, Denver, July 21, 2017
Putting a Spark in your Applications, Uberconf, Denver, July 21, 2017
Programming with Vert.x, Uberconf, Denver, July 21, 2017
The Power and Perils of Parallel Streams, Uberconf, Denver, July 20, 2017
Functional programming in Java 8, Uberconf, Denver, July 20, 2017
Automated Testing JavaScript, Uberconf, Denver, July 20, 2017
Twelve Ways to Make Code Suck Less, Uberconf, Denver, July 19, 2017
Reactive Programming in Java, Uberconf, Denver, July 19, 2017
Angular Beyond Introduction, Uberconf, Denver, July 19, 2017
Developing Angular 2 Apps, Uberconf, Denver, July 19, 2017
Exploring Java 9 Modularization, NFJS, Boston, March 19, 2017
Functional programming in Java 8, NFJS, Boston, March 18, 2017
Angular vs. React: Which one to Choose?, NFJS, Madison, March 10, 2017
Putting a Spark in your Applications, NFJS, Minneapolis, March 4, 2017
Twelve Ways to Make Code Suck Less, NFJS, Minneapolis, March 4, 2017
Programming with Vert.x, NFJS, Minneapolis, March 3, 2017
Automated Testing JavaScript, NFJS, Minneapolis, March 3, 2017
Developing Angular 2 Apps, NFJS, Minneapolis, March 3, 2017
Twelve Ways to Make Code Suck Less, Devoxx, Belgium, November 9, 2016
Patterns for Programming in Javascript, NFJS, Minneapolis, October 22, 2016
Testing Functional Java 8 Using Junit 5, NFJS, Minneapolis, October 21, 2016
Mastering Angular2 Dependency, Angular Summit, Boston, September 28, 2016
Keeping your Promises, Angular Summit, Boston, September 28, 2016
Exploring ECMAScript 2015, Angular Summit, Boston, September 28, 2016
Get Reactive with RxJS, Angular Summit, Boston, September 28, 2016
Automated Testing of Angular 2, Angular Summit, Boston, September 27, 2016
Exploring TypeScript, Angular Summit, Boston, September 27, 2016
Angular 2 Beyond the Introduction, Angular Summit, Boston, September 27, 2016
A Practical Intro to Angular2 Using Good Old JavaScript, Angular Summit, Boston, September 27, 2016
Exploring Java: JavaOne4Kids, JavaOne4Kids, San Francisco, September 17, 2016
Testing JavaScript MEAN Stack, Dallas JavaMUG, August 10, 2016
Interactive Development and Fast Feedbacks with Java 9 REPL, UberConf, Denver, July 22, 2016
Frege for Java Programmers, UberConf, Denver, July 22, 2016
Twelve Ways to Make Code Suck Less, UberConf, Denver, July 22, 2016
Let's Get Lazy: Explore the Real Power of Streams, UberConf, Denver, July 21, 2016
Parallel Programming with Java 8 Streams, UberConf, Denver, July 21, 2016
A Few Hidden Treasures in Java 8, UberConf, Denver, July 21, 2016
Java 8 Programming Idioms, UberConf, Denver, July 21, 2016
Refactoring to Functional Style using Java 8, UberConf, Denver, July 21
Transitioning to Angular 2, Angular Summit, Chicago, May 18
End-to-End Testing of the MEAN Stack, Angular Summit, Chicago, May 18
Automated Testing Angular 2, Angular Summit, Chicago, May 17
A Practical Intro to Angular 2, Angular Summit, Chicago, May 17
What's Brewing in Java 9, NFJS, Columbus, April 30, 2016
Automated Testing of JavaScript, DevDay, Colombo, December 18, 2015
Programming with Elm: Functional Reactive UI Language, RWX2015, Fort Lauderdale, December 2, 2015
Get a Taste of Lambdas and Get Addicted to Streams, Devoxx, Belgium, November 10, 2015
Designing Reactive Systems, NFJS, New York, October 30, 2015
A Few Hidden Treasures in Java 8, JavaOne, San Francisco, October 29, 2015
Exploring TypeScript, AngularJS Summit, Boston, Sept 30, 2015
The Future of JavaScript What is Brewing, AngularJS Summit, Boston, Sept 29, 2015
JavaScript Programming Idioms—Creating Elegant Code, AngularJS Summit, Boston, Sept 29, 2015
Caring about JavaScript Code Quality, AngularJS Summit, Boston, Sept 28, 2015
JavaScript the Fun and Useful Parts, AngularJS Summit, Boston, Sept 28, 2015
Hacking Groovy Compile Time Metaprogramming, Spring2GX Washington, D.C., Sept 17, 2015
Programming with Traits, Spring2GX Washington, D.C., Sept 17, 2015
Using Groovy Annotations, Spring2GX Washington, D.C., Sept 16, 2015
Programming Groovy with Java 8, Spring2GX Washington, D.C., Sept 15, 2015
FP in F#, Visma in Paris, Sept 12, 2015
FP in Java, Visma in Paris, Sept 12, 2015
Lazy Evaluations and its Impact on Efficiency, Dallas JUG, Aug 12, 2015
Automated Testing JavaScript, MidwestJS, Minneapolis, Aug 14, 2015
A Practical Introduction to AngularJS, NFJS, Austin, July 12, 2015
Taking Command of the Command Line, Uberconf, Denver, July. 22, 2015
The Power and Practicality of Programming with Immutability, GIDS, Bangalore, Apr. 21, 2015
Exploring TypeScript, GIDS, Bangalore, Apr. 21, 2015
Core Software Design Principles, NFJS, Reston, Apr. 19, 2015
Towards an Evolutionary Architecture, NFJS, Reston, Apr. 19, 2015
Agile, Not Fragile, Agile, Hyderabad, Apr. 7, 2015
Functional Programming: Technical Reasons to Adapt, Private Corporate Event, Illinois, Mar. 31, 2015
Testing with AngularJS, Private Corporate Event, Illinois, Mar. 31, 2015
Design Patterns in the Light of Lambdas, DevNexus, Atlanta, Mar. 12, 2015
Programming Reactive, NFJS Boston, Feb. 28, 2015
The Story of Traits, NFJS Boston, Feb. 28, 2015
Being Lazy in Scala, NFJS Boston, Feb. 28, 2015
Java 8 Lambdas, the Path way to Functional Style, San Diego JUG, Feb. 17, 2015
Using Traits, Mixins, and Monads, Devoxx, Antwerp, Nov. 10, 2014
Applying Groovy Closures for Fun & Productivity, JavaOne, San Francisco, Oct. 2, 2014
Transforming Code to Java 8, JavaOne, San Francisco, Oct. 2, 2014
Reactive Programming for Java Programmers, JavaOne, San Francisco, Oct. 2, 2014
Exploring Groovy Metaprogramming, JavaOne, San Francisco, Sept. 30, 2014
Programming with Streams in Java 8, JavaOne, San Francisco, Sept. 29, 2014
Thinking in Functional Style, JavaOne, San Francisco, Sept. 29, 2014
Programming with Lambda Expressions in Java, JavaOne, San Francisco, Sept. 29, 2014
Java 8 for Groovy Programmers, SpringOne2GX, Dallas, September 10, 2014
Test Driving Grails Applications, SpringOne2GX, Dallas, September 10, 2014
Understanding Groovy Typing, SpringOne2GX, Dallas, September 9, 2014
jQuery for Grails Developers, SpringOne2GX, Dallas, September 9, 2014
Haskell for Java Programmers, Uberconf, Denver, June 27, 2014
Exploring Nashorn JavaScript engine, 33Degree, Krakow, June 09, 2014
Transforming your C# code to Functional Style, NDC, Oslo, June 06, 2014
Programming in Functional Style, Private event, Oslo, Apr. 29, 2014
Reactive Programming, NFJS, Boston, Feb. 28, 2014
Programming with neo4j, NFJS, Boston, Feb. 28, 2014
Prog. in Functional Style w Java 8 Lambdas, JFokus, Stockholm, Sweden, Feb. 3, 2014
Thinking Functional Style, Devoxx, Antwerp, Belgium, Nov. 12, 2013
Asynchronous Programming with JavaScript, NFJS, Reston, VA, Nov. 3, 2013
Modular JavaScript, NFJS, Reston, VA, Nov. 3, 2013
10 Commandments of Technical Presentations, NFJS, Reston, VA, Nov. 3, 2013
Integrating JVM Languages, JavaOne, San Francisco, Sept. 25, 2013
Designing with Lambda Expressions in Java, JavaOne, San Francisco, Sept. 26, 2013
Programming with Lambda Expressions in Java, JavaOne, San Francisco, Sept. 25, 2013
Ten Cool Things in Popular JVM Langs, JavaOne, San Francisco, September 24, 2013
Demystifying InvokeDynamic, JavaOne, San Francisco, September 24, 2013
Taming Shared Mutability w/ STM, JavaOne, San Francisco, September 23, 2013
Compile time AST transformation, SpringOne2GX, Santa Clara, September 11, 2013
Exploring Groovy Annotations, SpringOne2GX, Santa Clara, September 10, 2013
Grails beyond the Hello World, GR8Conf, Minneapolis, July 22, 2013
Developing Offline Web Apps, NDC, Oslo, June, 2013
Workshop: JVM Concurrency, Software Arch. Summit, Berlin, June, 2013
Functional Programming in Groovy, GR8Conf, Copenhagen, May, 2013
Web Development with Grails Workshop, GR8Conf, Copenhagen, May, 2013
Concurrency without Pain in Pure Java, NFJS, Dallas, May, 2013
Server Side Programming with Javascript, GIDS, Bangalore, May, 2013
Asynchronous Programming on the .NET Platform, GIDS, Bangalore, May, 2013
Eloquent C#, GIDS, Bangalore, May, 2013
Succeeding With TDD: pragmatic mocking techniques, Private Event, Oslo, April, 2013
Picking a JVM Language, NFJS, NYC, April, 2013
Demystifying InvokeDynamic, NFJS, NYC, April, 2013
Benefits of TDD, Private Event, March, 2013
A Dozen Cool Things with Popular JVM Langs, 33degree, Warsaw, March, 2013
Programming with Lambda Expressions in Java, 33degree, Warsaw, March, 2013
Developing Offline Applications with HTML5, NFJS, Minneapolis, March, 2013
Understanding the 'NO' in NoSQL, NFJS, Minneapolis, March, 2013
Java 8 Languages Capabilities, DevNexus, Atlanta, February, 2013
Thinking & Programming Functional Style, JFokus 2013, Stockholm, January, 2013
Html5 Animations, RichWeb Experience, Fort Lauderdale, FL, November, 2012
Options for Concurrency in Groovy, Spring2GX, Washington, D.C., October, 2012
Improving your Groovy code quality, Spring2GX, Washington, D.C., October, 2012
Design Patterns in Modern JVM Languages, JavaOne, San Francisco, September, 2012
Scala Tricks, JavaOne, San Francisco, September, 2012
Design Patterns in Groovy, JavaOne, San Francisco, September, 2012
The Good, Bad, and Ugly of Java Generics, JavaOne, San Francisco, September, 2012
Concurrency without Pain in Pure Java, JavaOne, San Francisco, September, 2012
Programming Concurrency with Akka, NFJS, Des Moines, August, 2012
Creating DSLs with Groovy, Uberconf, Denver, June, 2012
HTML5 Workshop, Uberconf, Denver, June, 2012
Thinking in Functional Style in F# (and some C#), NDC-Oslo, June, 2012
Using Traits & Mixins in JVM Languages, NFJS, Dallas, May, 2012
Applying Groovy Closures for Fun & Productivity, NFJS, Dallas, May, 2012
Pragmatics of Agile Development, GIDS, Bangalore, April, 2012
CoffeeScript for Recovering JavaScript programmers, GIDS, Bangalore, April, 2012
Java 8 - Sneak Peek, GIDS, Bangalore, April, 2012
Evolution of C# - departure from its roots, GIDS, Bangalore, April, 2012
How to approach Refactoring, ScanAgile, Helsinki, March, 2012
Taming Shared Mutability with STM, NFJS, Madison, Jan. 2012
Programming with Actors, NFJS, Madison, Jan. 2012
Programming HTML 5, NFJS, Madison, Jan. 2012
Programming with Netty, December 2011, RWX2011, Fort Lauderdale
Tail Call Optimization & Memoization, November 2011, BoulderJUG, Boulder
Functional Programming Workshop, November 2011, Sysart Hotspot, Helsinki
GPars Deep Dive, October 2011, Spring 2GX, Chicago
Design Patterns in Groovy, October 2011, Spring 2GX, Chicago
Options for Concurrency in Groovy, October 2011, Spring 2GX, Chicago
Integrating Groovy and JVM Langs, October 2011, Spring 2GX, Chicago
Testing JavaScript, September 2011, NFJS, Boston
Rediscovering JavaScript, September 2011, NFJS, Boston
Design Patterns in Modern JVM Langs, July 2011, Uberconf, Broomfield, CO
Hands on Scala Workshop, Uberconf, Broomfield, CO, July 2011
Workshop: Programming Concurrency, Uberconf, Broomfield, CO, July 2011
Scala for the intrigued, NFJS, New York, NY, June, 2011
Testing with Spock, NFJS, St. Louis, May 2011
Collections for Concurrency, NFJS, St. Louis, May, 2011
JavaScript, GIDS, Bangalore, Apr. 2011
Programming HTML 5, GIDS, Bangalore, Apr. 2011
Design Patterns for .NET Programmers, GIDS, Bangalore, Apr. 2011
Programming Clojure, 33degree, Krakow, Apr. 2011
State of Scala, NFJS Boston, Mar. 2011
Testing with easyb, NFJS Boston, Mar. 2011
Concurrency without pain in pure Java, NFJS Madison, Feb. 2011
Integrating JVM Languages, NFJS Madison, Feb. 2011
TDD iPhone App - code sample, RichWebExperience, December 2010
Objective-C for Experienced Programmers, NFJS Reston, November, 2010
Functional Style in Groovy, Spring2GX, October, 2010
Improving Your Groovy Code Quality, Spring2GX, October, 2010
Unit and Functional Testing using Groovy, Spring2GX, October, 2010
Test Driving Multithreaded Code, NFJS, Des Moines, August, 2010
Essence of Functional Programming - Workshop, GIDS, Bangalore, March, 2010
F# - Functional Programming, GIDS, Bangalore, March, 2010
What's Brewing in Java, NFJS Boston, February, 2010
Testing with Dependencies, NFJS Boston, February, 2010
Transforming to Groovy, NFJS Milwaukee, January, 2010
How to approach Refactoring, Memphis JUG, January, 2010
Tackling Concurrency on the JVM, NFJS Boston, August, 2009
Effective Java, NFJS Phoenix, June, 2009
Functional Programming Workshop, Agile Bangalore, March, 2009
Fallacies of Agile Development, Agile Chennai, March, 2009
Programming Scala, CodeMash 2009, , 2009
Caring About Code Quality, NFJS Raleigh, NC, May, 2008
Towards an Evolutionary Design, Agile S/W Community Bangalore & Mumbai, April, 2008
Design Patterns in Java and Groovy, NFJS, Seattle, WA, March, 2008
Know Your Java?, NFJS, Milwaukee, WI, February, 2008
Testing With Groovy, 2GX Conference, Reston, VA, January, 2008
BDD in Java and Groovy, 2GX Conference, Reston, VA, January, 2008
Agile Web Development with Grail 0.6, Grails eXchange, London, September, 2007
Essence Of Agility, Private meeting in Finland, September, 2007
Domain Specific Languages, Boulder Java User Group, August, 2007
Functional Programming, NFJS Show, Des Moines, July, 2007
get FIT, NFJS Show, Omaha, February, 2007
Spring into Groovy, NFJS Show, Boston, February, 2007
OSGi - A Well Kept Secret, NFJS Show, Boston, February, 2007
Domain Driven Design, NFJS Show, Boston, February, 2007
Annotation Hammer, NFJS Show, Boston, February, 2007
Agile Web Development with Grails, NFJS Show, Boston, February, 2007
Essence of Agility, Houston .NET Users Group, TX, , 2007
Spring into Unit Testing, The Spring Experience, Hollywood, FL, November, 2006
AJAX For .NET Programmers, The AJAX Experience, Boston, MA, September, 2006
Get Groovier With Grails, No Fluff Just Stuff, Des Moines, IA, June, 2006
Ruby for .NET Programmers, Houston .NET Users Group, TX, May, 2006
Practices of an Agile Developer, Houston Java Users Group, TX, March, 2006
Open Source Tools for Agile Development, No Fluff Just Stuff, Austin, TX, June, 2006
Working with Rule Engines, Denver Java Users Group, CO, February, 2006
Refactoring Your Code - A Key Step To Agility, Houston Java Users Group, TX, January, 2006
Ruby: What's in it for you?, Presented at a Client Site, Houston, January, 2006
Groovy for Java Programmers, No Fluff Just Stuff, Calgary, AB, September, 2005
Agile Methodologies, No Fluff Just Stuff, Boston, MA, August, 2005
Java 5 Features: What's in it for you?, No Fluff Just Stuff, Boston, MA, August, 2005
Programming with Mock Objects, No Fluff Just Stuff, Chicago, IL, August, 2005
Agile Software Development, JavaMUG, Dallas, TX, July, 2005
Good, bad and ugly of Java Generics, Houston Java Users Group, TX, February, 2005
Unit Testing .NET Apps with NUnit and Mock Objects, No Fluff Just Stuff, St. Louis, MO, February, 2005
.NET Gotchas, HDNUG, Houston, TX, July, 2005
.NET 2.0 Language Features, No Fluff Just Stuff Symp., Milwaukee, WI, February, 2005
Taming .NET Multithreading, No Fluff Just Stuff Symp., Milwaukee, WI, February, 2005
Programming with Aspects, Gateway JUG, St. Louis, MO, February, 2005
Test Driven Development: Benefits and Pragmatics, Presented at a Client Site, Houston, , 2005
Test First Development, Western Canada SW Symp., Calgary, AB, October, 2004
Programming with Aspects, Connecticut OO Users Group, Hartford, July, 2004
Building Web Services with Axis, Java Users Group, Houston, June, 2004
Agile Software Development, Lone Star Software Symp. Austin, June, 2004
Java vs. .NET - an Objective Comparison, Presented at a Client Site, Houston, October, 2003
Advances in Web Services, Northern VA Software Symp., Arlington, VA, October, 2003
Prudent OO Development, Northern VA Software Symp., Arlington, VA, October, 2003
Programming with XSLT, Northern VA Software Symp., Arlington, VA, October, 2003
Aspect Oriented Programming, Northern VA Software Symp., Arlington, VA, October, 2003
Aspect Oriented Programming, Java Users Group, Houston, July, 2003
Java Web Services and Integration with .NET, Ohio Software Symposium, Cincinnati, June, 2003
Programming for Extensibility, Ohio Software Symposium, Cincinnati, June, 2003
C# for Java Programmers, Ohio Software Symposium, Cincinnati, June, 2003
Aspect Oriented Programming, ACM Houston/Clearlake Chapter, Houston, June, 2003
.NET Enterprise Services, .NET Users Group, Houston, May, 2003
C# for Java Programmers, Rocky Mtn. Software Symposium, Denver, April, 2003
Architecture and code behind .NET Web Services, .NET Users Group, Austin, May, 2002
Architecture and code behind .NET Web Services, .NET Users Group, Houston, April, 2002
Programming for extensibility - what OO really provides?, Java Users Group, Houston, January, 2002
Application of XML in Software Development, CACPA, Houston, March, 2002
Programming for extensibility, Lone Star Software Symposium, Houston, May, 2002
Java Vs. .NET, ACM Houston/Clearlake Chapter, Houston, March, 2003
Features, Strengths & Weakness of Microsoft .NET, Science, Engg. & Tech. Symposium, Houston, June, 2002
Java Web Services and Integration with .NET, Lone Star Software Symposium, Dallas, October, 2002

Articles:
Effective implementation of equals method, May, 2002
Why Copying an Object is a terrible thing to do?, June, 2002
Interface Based Programming!, July, 2002
How to create/avoid memory leak in Java and .NET?, August, 2002
XML Serialization in .NET, , 2003
Custom Error Pages in ASP.NET, January, 2003
Strings in Java and .NET, February, 2003
Polymorphic Stored Procedure?, March, 2003
VS.NET Code Editing Tips and Tricks - 25 ways to improve Productivity, March, 2003
Servlets, JSP, Structs and MVC (Part I), May, 2003
Servlets, JSP, Struts and MVC (Part II), June, 2003
Transactions in .NET Enterprise Services, July, 2003
Immutable Objects, August, 2003
Cryptography in .NET, November, 2003
.NET Gotchas, January, 2004
Storing User Profile in .NET, January, 2004
Localizing your .NET Application, February, 2004
Introduction to Java Persistence using Hibernate, April, 2004
Custom Design Time UI in .NET, May, 2004
Decorator Pattern By Example, June, 2004
Test Driven Development - Part I: TFC, July, 2004
Test Driven Development - Part II: Mock Objects, August, 2004
Test Driven Development - Part III : Continuous Integration, September, 2004
Applying "On writing well" to coding, October, 2004
Dealing with Conflicting Interfaces: Part-I - Java, , 2005
Dealing with Conflicting Interfaces: Part-II - .NET, January, 2005
Generics in Java - Part I, February, 2005
Generics in Java - Part II, March, 2005
Generics in Java - Part III, April, 2005
Unit Testing C++ Code with CppUnit by Example, June, 2005
Java 5 Features - Part I, August, 2005
Java 5 Features - Part II, September, 2005
enums, November, 2005
Background Worker in .NET 2.0, , 2006
Being Agile without Going Overboard, January, 2006
Avoid that deja vu feeling, May, 2006
Annotation Hammer, June, 2006
Being Productive, August, 2007
Testing JavaScript, September, 2007
Scripting on the JVM-Part I, October, 2007
Scripting on the JVM-Part II, November, 2007
Conferences




Books