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
|