| Presentations (click on your choice) | Event | Date |
Caring About Code Quality
We all have seen our share of bad code. We certainly have come across some good code as well. What are the characteristics of good code? How can we identify those? What practices can promote us to write and maintain more of those good quality code. This presentation will focus on this topic that has a major impact on our ability to be agile and succeed. Characteristics of quality code. Metrics to measure quality. Ways to identify and build quality.
Download
| NFJS Raleigh, NC | June, 2008 |
Towards an Evolutionary Design
A good design is critical for success with agile development. That does not mean a big up-front design. The design has to be evolutionary. However, the design you evolve must be extensible and maintainable. After all, you can not be agile if your design sucks. In this presentation, we will address what evolutionary design is, and will delve into principles and practices that can help realize an effective evolutionary design.
Download
| Agile S/W Community Bangalore & Mumbai | May, 2008 |
Design Patterns in Java and Groovy
You are most likely familiar with the Gang-of-four design patterns and how to implement them in Java. However, you would not want to implement those patterns in a similar way in Groovy. Furthermore, there are a number of other useful patterns that you can apply in Java and Groovy. In this presentation we will look at two things: How to use patterns in Groovy and beyond Gang-of-four patterns in Groovy and Java. Patterns overview. Implementing common patterns in Groovy. Beyond Gang-of-four patterns in Java and Groovy. Lots of examples
Download
| NFJS, Seattle, WA | April, 2008 |
Know Your Java?
Java has been around for well over a decade now. It started out with the goal of being simple. Over the years, its picked up quite a bit of features and along comes complexity. In this presentation we will take a look at some tricky features of Java, those that can trip you over, and also look at some ways to improve your Java code.
Download
| NFJS, Milwaukee, WI | March, 2008 |
BDD in Java and Groovy
In this presentation we will take a look at what BDD is and look at tools to create them in Java and Groovy. What is BDD? Benfits of BDD. Tools for BDD. Creating BDD in Java. Creating BDD in Groovy.
Download
| 2GX Conference, Reston, VA | February, 2008 |
Testing With Groovy
Dynamic and Meta Programming capabilities of Groovy makes it a great tool for unit testing. In this talk we will take a look at how we can use Groovy for unit testing and creating mocks both for testing Groovy code and Java code. Unit Testing-Strengths and capabilities. Writing tests in Groovy. Groovy convenience methods for asserting and testing. Mocks and tests. Groovy techniques for mocking Java and Groovy code.
Download
| 2GX Conference, Reston, VA | February, 2008 |
Agile Web Development with Grail 0.6
Agile development is all about developing code and seeking feedback from your users to make sure you are developing what is relevant. When they suggest changes, those must be affordable and reliable. Grails, along with its facility to develop test driven, is a killer combination for rapidly developing web applications. In this ZePo (Zero PowerPoint) presentation, we will take a test driven approach to developing a small but fully functional web application in Grails. We will cover the fundamental features of Grails along with utilizing other capabilities like Ajax. At the end of this presentation, you will not only be confident, but eager to roll your own web application using Grails. This presentation is based on Grail 0.6.
Download
| Grails eXchange, London | October, 2007 |
Essence Of Agility
So what does it take to be agile on your software projects? Is it unit testing? Is it having those stand-up meetings? What does-we are on an agile project-really mean? In this presentation, we will discuss agility and look at some approaches and tools that can help us get there. Along the way, we will walk through 10 essential steps to being agile.
Download
| Private meeting in Finland | October, 2007 |
Domain Specific Languages
Domain Specific Languages or DSLs are languages that target a specific kind of problem or domain. We have had various degree of success with DSLs, over the past several years, in narrow areas. However, DSLs are not widely used in general purpose application partly because the popular widely used languages today do not make it easy. In this presentation we will introduce DSLs, delve into their benefits. We will look at a number of examples as to how we can utilize them for common application tasks. We will take a look at what language developments, tools, and techniques are in the horizon that could bring this to common place.
Download
| Boulder Java User Group | September, 2007 |
Functional Programming
Most interest around Functional Programming (FP) has been academic until recently. Recent commercial languages are beginning to exploit FP features. Knowing more about FP will not only help us make better use of these features, but to exploit those. In this session we will take a close look at FP. We will look at What is FP, Strength and weakness of FP, FP languages for Java programmers, Examples that you can use today, Thinking in FP.
Download
| NFJS Show, Des Moines | August, 2007 |
get FIT
Unit testing tells you, the programmer, that your code (and the change) meets your expectations. How do you know if you are meeting your customers expectations? Agile development is all about feedback and doing what is relevant to the customers, isnt it? Framework for Integration testing or Fit helps you to automate tests for customer expectations. In this presentation we will learn how to write Fit tests and how to automate their execution. We will also use FitNesse. Topics: Beyond Unit Testing, Integration Testing, Customer Expectations, Writing Fit Tests, Writing Fixtures, Automating tests, What is FitNesse, Using FitNesse
Download
| NFJS Show, Omaha | March, 2007 |
Agile Web Development with Grails
Agile development is all about developing code and seeking feedback from your users to make sure you are developing what is relevant. When they suggest changes, those must be affordable and reliable. Grails, along with its facility to develop test driven, is a killer combination for rapidly developing web applications. In this ZePo (Zero PowerPoint) presentation, we will take a test driven approach to developing a small but fully functional web application in Grails. We will cover the fundamental features of Grails along with utilizing other capabilities like Ajax. At the end of this presentation, you not only be confident, but eager to roll your own web application using Grails.
Download
| NFJS Show, Boston | March, 2007 |
Annotation Hammer
Annotation is an interesting feature in Java. However, like any features, there are good uses and bad uses. When should you use Annotation? This presentation will answer that question for you.
Download
| NFJS Show, Boston | March, 2007 |
Domain Driven Design
Domain Driven Design (DDD) is an approach that places emphasis on the domain model and carrying it into implementation. DDD is mostly repackaging of fundamental OO Design. It brings new emphasis to what we should be already doing, but often find it hard and confusing given the realities and complexities of our real world. In this presentation we will take a close look at what DDD is and how to use it for agile development. We will discuss several design options, and also look at some examples of good modeling and layering.
Download
| NFJS Show, Boston | March, 2007 |
OSGi - A Well Kept Secret
In this presentation we will introduce OSGi and discuss how it can help modularize and version your enterprise Java applications. In this session we will delve into: What is OSGi?, OSGi fundamentals, Modularization and versioning, Developing and deploying components, OSGi implementations, OSGi and Spring integration
Download
| NFJS Show, Boston | March, 2007 |
Spring into Groovy
What do you get when you mix an agile, object-oriented, dynamic language with a lightweight, flexible, and extensible framework? You get a Groovier Spring. Spring allows you to develop using Groovy as much as Java. Groovy brings some neat concepts to the Java Platform that is hard to realize directly through the Java language. Using these capabilities can lead to elegant and easier Spring development.
Download
| NFJS Show, Boston | March, 2007 |
Essence of Agility
So what does it take to be agile, on your software projects, that is? Is it unit testing? Is it having those stand-up meetings? What does we are on an agile project really mean? In this presentation, we will discuss agility and look at some approaches and (.NET) tools that can help us get there. Along the way, we will talk through 10 essential steps to being agile
Download
| Houston .NET Users Group, TX | January, 2007 |
Spring into Unit Testing
Test Driving Development is a valuable technique that has several benefits. However, unit testing is hard when your code has dependencies-this often becomes a quick excuse to give up on TDD. This example driven Zero PowerPoint (ZePo) presentation will help you spring into unit test your Spring applications. We will look at techniques to realize good unit testing, and focus on effective use of mock objects and frameworks to help you toss mock objects for your spring application.
Download
| The Spring Experience, Hollywood, FL | December, 2006 |
AJAX For .NET Programmers
Developers building application using .NET technologies have quite a few choices when it comes to developing AJAX applications. In this presentation we will take a live code example oriented approach to developing AJAX application on the .NET platform. We will delve into a number of frameworks including ATLAS and discuss the pros and cons.
Download
| The AJAX Experience, Boston, MA | October, 2006 |
Get Groovier With Grails
Inspired by the Ruby on Rails project, Grails brings the ease of web development and "convention over configuration" to the Java platform. We will learn how to create web applications using Grails, how to integrate it with Hibernate, and how to Ajax it, all using the built in features of Grails. This section assumes that you are familiar with Groovy or you have attended the “Groovy for Java Programmers” session. The session will be example driven with live coding where we will build a web application from scratch.
Download
| No Fluff Just Stuff, Des Moines, IA | July, 2006 |
Open Source Tools for Agile Development
Several tools play an important role in agility and productivity. What tools will benefit developers? Instead of going through a laundry list of tools available, we’ll discuss, using examples, their practical use. We’ll start by looking at tools for unit testing and mock objects. Then take a look at tools that will help ensure certain performance of critical code. You know writing good code is more than simply using an OO language. We’ll look at tools that will help with code metrics, so you can analyze, and refactor your code to reduce coupling and undesirable dependencies. But, what about hidden critical errors in your code, like synchronization problems that may potentially lead to deadlocks? We’ll look at open source tools to proactively eliminate these from your code. Finally, we’ll look at tools for automation and extreme feedback though out the development cycle.
Download
| No Fluff Just Stuff, Austin, TX | July, 2006 |
Ruby for .NET Programmers
Object-oriented scripting languages, or agile dynamic languages, as some like to call those, are gaining programmers' attention. Ruby is gaining popularity and acceptance due to it expressive power. The language is light and simple. The dynamic nature allows you to express some constructs that are generally harder in so called strongly typed languages (C++, Java, C#) must easier in Ruby. In fact, Microsoft is actively working some of the Ruby features into future versions of C#, and is keen on making the CLR support dynamic typing. Learning Ruby is critical even if you don't intend to use it directly. It helps you stay ahead. We will take an example driven approach to look at interesting features and strengths of Ruby, and also discuss some of the weaknesses as well. We will also take a look at Ruby .NET bridge and discuss some of the .NET specific dynamic language initiatives.
Download
| Houston .NET Users Group, TX | June, 2006 |
Practices of an Agile Developer
You have worked on software projects with varying degree of success. What were the reasons for the success of your last project? What were the reasons for those that failed? A number of issues contribute to project success - some non-technical in nature. In this presentation the speakers will share with you practices in a number of areas including coding, developer attitude, debugging, and feedback. The discussions are based on the book with the same title as the talk. In this session you will learn about practices beyond what well know methodologies prescribe. While we reemphasize some popular practices, we will also discuss other often overlooked, but important practices - practices that contribute to success of projects.
Download
| Houston Java Users Group, TX | April, 2006 |
Working with Rule Engines
Rule based programming allows us to develop applications using declarative rules. These can simplify development in applications where such rules based knowledge is used for decision making. In this presentation we will take a look at the tools and techniques for developing rule based applications. We will take a look at open source tools, discuss their strengths, capabilities, and limitations.
Download
| Denver Java Users Group, CO | March, 2006 |
Refactoring Your Code - A Key Step To Agility
Refactoring is one of the core practices in Agile Software Development. Refactoring is based on some core principles that apply to more than writing good code. But, what's refactoring? Why should you do it? How do you go about doing that? What tools are available to successfully refactor your App? In this presentation we will address each of these questions. We will take an examples based approach to look at code that can benefit from refactoring. We will discuss how to identify a case for refactoring. Then we will use tools to help us refactor.
Download
| Houston Java Users Group, TX | February, 2006 |
Ruby: What's in it for you?
Object-oriented scripting languages, or agile dynamic languages, as some like to call those, are gaining programmers' attention. Ruby is gaining popularity and acceptance due to it expressive power. The language is light and simple. The dynamic nature allows you to express some constructs that are generally harder in so called strongly typed languages (C++, Java, C#) must easier in Ruby. In fact, Microsoft is actively working some of the Ruby features into future versions of C#, and is keen on making the CLR support dynamic typing. Learning Ruby is critical even if you don't intend to use it directly. It helps you stay ahead. We will take an example driven approach to look at interesting features and strengths of Ruby, and also discuss some of the weaknesses as well.
Download
| Presented at a Client Site, Houston | February, 2006 |
Groovy for Java Programmers
Object-oriented scripting languages, or agile dynamic languages, as some like to call those, are gaining attention of programmers. Groovy bring this excitement to the Java platform with its ability to generate byte code. You can use Groovy instead of Java for some parts of your application. By learning it, you can switch between the languages where you consider fit. In this session we will learn what Groovy is. We will take an example driven approach to look at interesting features. We will see how a piece of code you would write in Java can be written, elegantly, using Groovy. In addition to the current features, we will also discuss the state of the language and tools.
Download
| No Fluff Just Stuff, Calgary, AB | October, 2005 |
Java 5 Features: What's in it for you?
A number of new features have been introduced in Java. What benefit do these features offer you? Are there issues with using these features? For instance, when should you use annotation? The objective of this presentation is not simply to introduce you to the features, but to the effective use of these as well. We will take a close look at a number of features that you will be expected to know well when you program using Java 5.
Download
| No Fluff Just Stuff, Boston, MA | September, 2005 |
Agile Methodologies
Agile development is picking up steam. You have most likely heard about eXtreme Programming(XP). What other Agile methodologies are you familiar with and what do they bring of interest or significant to the table of Agility? More important, why should you learn about these different methodologies instead of simply focusing on one? There is no one shoe that fits all. Any methodology that requires you to follow it in totality and not let you adapt is rather dogmatic, not pragmatic. To be effective we have to take the best of different approaches and apply to our projects base on our specific needs. In this session, we will look at different methodologies that promote agility. We then will compare and contrast the features of each. You can take away from the presentation what makes the most sense for your project and team.
Download
| No Fluff Just Stuff, Boston, MA | September, 2005 |
Programming with Mock Objects
You are convinced that Test Driven Development is good for you and your project. You realize the benefits it has to offer. What's holding you back? All the code and components that your code so heavily depends on is most likely making you wonder if TDD is really for you. We will start out by looking at dependency and dependency inversion. Then we will discuss how mock objects can help separate our code from its dependencies. In this presentation, we will take an examples oriented approach to utilizing mock objects. We will first hand toss a mock and see how our code benefits from it. Then we will take a look at using frameworks that can assist with the creation of mocks.
Download
| No Fluff Just Stuff, Chicago, IL | September, 2005 |
.NET Gotchas
Those of us programming on the .NET framework have come to realize the power and increased productivity that comes with it. Like any development, however, there are things that one should pay attention to while programming on .NET. Are there things in .NET that, if we do not pay attention to, may result in more trouble than it is worth? This session presents Gotchas that a developer needs to know to be productive in the .NET framework. The issues addressed include framework, language, language interoperability, COM interoperability. Most Gotchas are language independent while a few are C# or VB.NET specific. Code examples are presented in C# (download includes examples in VB.NET as well).
Download
| HDNUG, Houston, TX | August, 2005 |
Agile Software Development
What is Agile software development? How should you change the way you develop your software? How do you plan? What about iterative development? What are some of the better practices that give results? In this session, the speaker will present various approaches that lead to a successful development. Tools that aid towards this goal will be highlighted as well. We will discuss about project and iteration planning, test driven development, continuous integration and other practices that will help you realize agility on your projects.
Download
| JavaMUG, Dallas, TX | August, 2005 |
Good, bad and ugly of Java Generics
Java introduced Generics in the 1.5 version (Java 5). What are the capabilities of Generics? How do you use it? Are there some gotchas in using it? In this example driven presentation, we will start at the basics of generics and look at its capabilities. We will then look at some of the under the hood details on generics implementation. We will then delve into the details of some of the changes to Java libraries to accommodate generics. Finally we will take a look at some restrictions and pitfalls that we need to be familiar with when it comes to practical and prudent use of generics.
Download
| Houston Java Users Group, TX | March, 2005 |
Unit Testing .NET Apps with NUnit and Mock Objects
Open source tools like NUnit are changing the way .NET programmer are developing their application. What are the benefits of Unit testing? How is it different from what your testers do? How do you write your tests? How do you isolate your system from its dependencies using the Mock objects? What are the tools that can help you develop and test with Mock objects? What new features and tools are being introduced into Visual Studio 8.0 that make you more productive and effective when it comes to robustness and quality of your code? In this session, the speaker will take an examples drive approach to illustrate how you can rely on tools like NUnit, NDoc, Mock objects, to improve and speed your development process. We will also look at guidelines and examples from the speaker’s experience.
Download
| No Fluff Just Stuff, St. Louis, MO | March, 2005 |
.NET 2.0 Language Features
The next version of .NET (Whidbey) has some exciting language features. What are these features and how are they useful? How can you put them to use on your projects? Are there things to avoid? This session will present the new features in .NET 2.0 with examples. We will take a closer look at features like Generics, partial classes, anonymous methods, nullable classes, static classes, property enhancements, iterators, assembly aliasing and rafactoring.
Download
| No Fluff Just Stuff Symp., Milwaukee, WI | March, 2005 |
Taming .NET Multithreading
It is easy to start a thread and then the fun starts! Developing a multithreaded application can be quite a challenge. You need to worry about thread safety, cleanup, contention, support and restrictions. This presentation starts with the features of multithreading in .NET and goes into issues of contention, performance, thread pooling, invocation restrictions, and related concepts. Issues related to how exceptions get handled in a multithreaded application will also be presented. Topics will also include issues of when to use multithreading and things we need to pay close attention to when designing and developing a multithreaded application.
Download
| No Fluff Just Stuff Symp., Milwaukee, WI | March, 2005 |
Programming with Aspects
OOP is currently the most popular and practical software development approach. One of the reasons for its popularity is the ability to separate concerns, focusing on behaviors as they relate to business or technical issues. But this very same capability reaches its limits in OOP when it comes to global and crosscutting concerns. Aspect Oriented Programming is receiving attention for its ability to address these concerns. How is it similar and different from OOP? What are the traits of AOP and what are the limitations of utilizing it in projects? In this interactive presentation, the speaker will introduce AOP, discuss its capabilities and benefits, and share his cautious optimism on how to put it to use in your projects.
Download
| Gateway JUG, St. Louis, MO | March, 2005 |
Test Driven Development: Benefits and Pragmatics
Testing is what you expect your QA to do. What's this TDD and why would your programmers be doing that? We all know that time is a scarce resource. How can you then justify developers spending time writing test code when they should be writing “real” code? There are many benefits of TDD. First, unit testing is more of an act of design than verification. A number of tools are available to help your team automate it. Imagine you being notified when a developer checks in code that breaks some functionality contract and renders the application unusable. The quicker you learn about it, the sooner you fix it. The quality of your code improves. You actually end up saving time in the long run. You will see how your developers will write test cases, when they should write those, and times when they shouldn’t be writing those. You will look at tools and techniques available to effectively write and automate the test cases. You will look at facilities to measure quality and robustness of your code.
Download
| Presented at a Client Site, Houston | January, 2005 |
Test First Development
Unit testing is more of an act of design than verification. What are it's benefits? How do we write effective tests? What is a better way to learn than practicing it? In this session the attendees will participate in designing and developing a small yet full application. The code developed will be made available for free download on the speaker's web site.
Download
| Western Canada SW Symp., Calgary, AB | November, 2004 |
Programming with Aspects
OOP is currently the most popular and practical software development approach. One of the reasons for its popularity is the ability to separate concerns, focusing on behaviors as they relate to business or technical issues. But this very same capability reaches its limits in OOP when it comes to global and crosscutting concerns. Aspect Oriented Programming is receiving attention for its ability to address these concerns. How is it similar and different from OOP? What are the traits of AOP and what are the limitations of utilizing it in projects? In this interactive presentation, the speaker will introduce AOP, discuss its capabilities and benefits, and share his cautious optimism on how to put it to use in your projects.
Download
| Connecticut OO Users Group, Hartford | August, 2004 |
|
Building Web Services with Axis
Web services promise greater interoperability across application written in different languages and running on different platforms. Axis is the Apache open source implementation that provides an infrastructure to develop and deploy web services. This talk will start with a very short introduction of web services and show you how to create web services using Axis, how you can exchange binary data, and help you understand the object lifetime issues. The speaker will also make | |