| Presentations (click on your choice) | Event | Date |
Tackling Concurrency on the JVM
The gaining popularity of multi-core processors has rekindled the concurrency question: How do you effectively implement multithreaded applications on the Java platform? The familiar approach in Java is to create threads and to manage access to shared mutable state using synchronized locks. This approach to concurrency is fraught with hard work and uncertainties. Have you marked the appropriate methods synchronized, did you decorate the relevant fields volatile, did you properly construct the mutually exclusive regions of code, and is there a potential for deadlock lurking in the code. In this talk you will learn about alternate ways to tackling concurrency on the JVM. One approach is the functional way, along with an actor based model provided in Scala, to deal with immutable state. This removes the problem at the root, since data cannot change there is no issue of contention to contend with. Another distinct approach, provided in Clojure, is to protect access to mutable data, not using locks, but using transactional boundary. The Software Transactional Memory brings database like transaction model to in-memory data. In this presentation we will discuss the pros and cons of these approaches and how to effectively apply them.
Download
| NFJS Boston | September, 2009 |
Effective Java
Effective Java - Jeopardy Style presentation of topics that can stump us in Java
Download
| NFJS Phoenix | July, 2009 |
Functional Programming Workshop
This workshop focused on aspects of functional programming and we used Erlang and Scala to drive the examples. Code created during the session is posted here
Download
| Agile Bangalore | April, 2009 |
Fallacies of Agile Development
Fallacies I have seen on projects over the past couple of years
Download
| Agile Chennai | April, 2009 |
Programming Scala
In this presentation, the speaker will present a case for Why functional programming and present features of Scala that promote this paradigm. He will also show how you can take advantage of mixing Scala with Java features, and hence take advantage of this powerful language on your Java applications.
Download
| CodeMash 2009 | January, 2009 |
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 |
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 |
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 |
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 |
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 |
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 |
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 some recommendations as to how to build effective web services. Several coding examples will be presented.
Download
| Java Users Group, Houston | July, 2004 |
Agile Software Development
Agile Software Development approaches emphasize test first coding, refactoring, paired programming. Brute-force coding ignoring design principles may lead to system that is hard to extend and maintain. However, systems built using principles at upfront design may lead to needless complexity as well. This talk will use practical examples to illustrate good development practices and tools. Emphasis will be placed on using test first coding, continuous integration, various principles to be learnt and followed all though the development cycle. The attendees will participate in designing and developing an application during the session. The code developed will be made available for free download on the speaker's web site.
Download
| Lone Star Software Symp. Austin | July, 2004 |
Java vs. .NET - an Objective Comparison
Java has evolved into a mature and popular language as well as a development platform. The Microsoft .NET framework (and C#) has brought the next wave of excitement in the software development community and is challenging the state of the current practices. A number of technologies of the past have contributed to the development of both these platforms (and languages). Coming from the knowledge of Java (and C++), the speaker's first reaction, like most people, was "Why another language similar to Java...?" This talk compares Java with some of the features of C# and .NET. Similarities and differences between the languages/platforms are presented. The speaker's experience and opinion based on his work with Java for over 8 years and with .NET for over 2 1/2 years is presented. Insights into what is important to focus for those interested in learning C# or .NET is also provided. This talk assumes the audience is at least moderately familiar with Java.
Download
| Presented at a Client Site, Houston | November, 2003 |
Aspect Oriented Programming
OOP is currently the most popular and practical software development approach. However, OOP has its limitations, especially when it comes to separation of concerns that are global and crosscutting in a large application. Aspect Oriented Programming addresses this issue of managing the complexity and AspectJ is an extension to Java to realize AOP. In this presentation, we will introduce AOP and show how you can implement the concepts using AspectJ and its Eclipse plugin. Audience with strong OO programming knowledge will benefit the most from this presentation.
Download
| Northern VA Software Symp., Arlington, VA | November, 2003 |
Programming with XSLT
Transforming an XML document using XSLT provides several advantages. However, it is not some thing that is too easy to begin with. This presentation is intended to demystify programming with XSLT. The speaker presents easy to understand analogies between XSLT and notions most of us are very familiar with. He then presents a quick over view of XPath notation and shows how to perform transformations and effectively render the contents of an XML document.
Download
| Northern VA Software Symp., Arlington, VA | November, 2003 |
Prudent OO Development
Developing with objects involves more than using languages like Java, C#, C++ or Smalltalk for that matter. How object-oriented is our code? From time to time, the OO paradigm can stump even expert developers. In this presentation the author will present some of the challenges that are fundamental in nature. Then he will present some principles and good practices for prudent development of OO code.
Download
| Northern VA Software Symp., Arlington, VA | November, 2003 |
Advances in Web Services
Web Services is gaining a lot of popularity. Several organizations are beginning to implement serious systems and components using web services. Web services promise greater interoperability across application written in different languages and running on different platforms. However, much concern exists over the practicality of the solution, from the point of view of security, transactions, scalability, performance and infrastructure. This presentation will first introduce the audience to implementation of web services and present details on advances in the areas mentioned. Several working examples will be presented to illustrate the concepts.
Download
| Northern VA Software Symp., Arlington, VA | November, 2003 |
Aspect Oriented Programming
OOP is currently the most popular and practical software development approach. However, OOP has its limitations, especially when it comes to separation of concerns that are global and crosscutting in a large application. Aspect Oriented Programming addresses this issue of managing the complexity and AspectJ is an extension to Java to realize AOP. In this presentation, we will introduce AOP and show how you can implement the concepts using AspectJ and its Eclipse plugin. Audience with strong OO programming knowledge will benefit the most from this presentation.
Download
| Java Users Group, Houston | August, 2003 |
C# for Java Programmers
Java and C#, as we know have a lot of similarities. Yet there are some differences as well. This presentation is intended for developers who are very familiar with Java and want to gain enough understanding to start programming in C#. A short overview of .NET architecture is first presented. A quick comparison of some of the subtle differences in the syntax and constructs are discussed. Finally, the features that are different in C# are presented. The topics covered include C# syntax, Delegates, Properties, Attributes, Garbage Collection, Code based security, pointer access, operator overloading, WinForm and Server side programming. Several code examples will be presented to develop code using Visual Studio .NET and the freely downloadable .NET framework as well.
Download
| Ohio Software Symposium, Cincinnati | July, 2003 |
Programming for Extensibility
We use OO languages like Java, Smalltalk, C++, and C# for our application development. However, the code we write, is it really object-oriented? If so, how much of it is? Then again, what is object-oriented programming and why should we develop application using this paradigm? This topic addresses the fundamental question once again. We define and discuss the concept and issues of extensibility and what it takes to make a system extensible? It presents some very strong design principles, those that can change the way we develop our systems. Java examples of code that will benefit and code that applies the principles will be presented.
Download
| Ohio Software Symposium, Cincinnati | July, 2003 |
Java Web Services and Integration with .NET
Web Services are gaining a lot of popularity and have the potential to change the way we develop applications in the future. Web Services are based on standards and provide greater interoperability than the technologies of the past. Well known infrastructures include the ones from Sun and from Microsoft. These development kits improve the ease and speed of coding; however, in order to develop and especially debug a serious application, further understanding is essential. This talk will first focus on providing you a better understanding of the Java Web Services architecture. It will then present the classes involved, and details on what gets marshaled between the client and the server? It finally shows you how to integrate with the .NET Web Services in terms of communication and exception handling.
Download
| Ohio Software Symposium, Cincinnati | July, 2003 |
Aspect Oriented Programming
OOP is currently the most popular and practical software development approach. However, OOP has its limitations, especially when it comes to separation of concerns that are global and crosscutting in a large application. Aspect Oriented Programming addresses this issue of managing the complexity and AspectJ is an extension to Java to realize AOP. In this presentation, we will introduce AOP and show how you can implement the concepts using AspectJ and its Eclipse plugin. Audience with strong OO programming knowledge will benefit the most from this presentation.
Download
| ACM Houston/Clearlake Chapter, Houston | July, 2003 |
.NET Enterprise Services
.NET Enterprise Services provides a number of services like object pooling, events, queued components, and distributed transactions. In this presentation we discuss the Enterprise Services in general and focus on the distributed transaction facilities. New features in 2003 version (Framework 1.1) are presented as well. The objective of this presentation is for the attendees to understand the benefits of using .NET Enterprise Services and leave with enough information to start utilizing it in their applications.
Download
| .NET Users Group, Houston | June, 2003 |
C# for Java Programmers
Java and C#, as we know have a lot of similarities. Yet there are some differences as well. This presentation is intended for developers who are very familiar with Java and want to gain enough understanding to start programming in C#. A short overview of .NET architecture is first presented. A quick comparison of some of the subtle differences in the syntax and constructs are discussed. Finally, the features that are different in C# are presented. The topics covered include C# syntax, Delegates, Properties, Attributes, Garbage Collection, Code based security, pointer access, operator overloading, WinForm and Server side programming. Several code examples will be presented to develop code using Visual Studio .NET and the freely downloadable .NET framework as well.
Download
| Rocky Mtn. Software Symposium, Denver | May, 2003 |
Java Vs. .NET
The Microsoft .NET framework (and C#) is gaining usage and popularity. Coming from the knowledge of Java (and C++), the speaker's first reaction, like most people, was "Why another language similar to Java...?" This talk compares Java with some of the features of C# and .NET. Similarities and differences between the languages/platforms are presented. The speaker's experience and opinion based on his work with Java for over 7 years and with .NET for over 18 months will be presented. Insights into what is important to focus for those interested in learning C# or .NET is also provided. This talk assumes the audience is familiar with Java.
Download
| ACM Houston/Clearlake Chapter, Houston | April, 2003 |
Java Web Services and Integration with .NET
Web Services are gaining a lot of popularity and has the potential to change the way we develop applications in the future. Web Services are based on standards and provide greater interoperability than the technologies of the past. Well known infrastructures include the ones from Sun and from Microsoft. These development kits improve the ease and speed of coding; however, in order to develop and especially debug a serious application, further understanding is essential. This talk will first focus on providing you a better understanding of the Java Web Services architecture. It will then present the classes involved, and details on what gets marshaled between the client and the server? It finally shows you how to integrate with the .NET Web Services in terms of communication and exception handling.
Download
| Georgia Software Symposium, Atlanta | November, 2002 |
Java Web Services and Integration with .NET
Web Services are gaining a lot of popularity and has the potential to change the way we develop applications in the future. Web Services are based on standards and provide greater interoperability than the technologies of the past. Well known infrastructures include the ones from Sun and from Microsoft. These development kits improve the ease and speed of coding; however, in order to develop and especially debug a serious application, further understanding is essential. This talk will first focus on providing you a better understanding of the Java Web Services architecture. It will then present the classes involved, and details on what gets marshaled between the client and the server? It finally shows you how to integrate with the .NET Web Services in terms of communication and exception handling.
Download
| Lone Star Software Symposium, Dallas | November, 2002 |
Features, Strengths & Weakness of Microsoft .NET
Microsoft’s .NET technology is gaining a lot of momentum. It has brought the next wave of excitement in the software development community and is challenging the state of the current practices. A number of technologies that have been developed in the recent past have made significantly contribution in the .NET technology. What are the main features and goals of the .NET environment? The Common Type System, the managed code and the Common Language Runtime makes the programming language almost a non-issue in .NET. It truly provides great language interoperability. The common class library/framework makes developing graphical and multithreaded applications a breeze in both VB.NET and C# and any of the other supported languages for that matter. What about the distributed object computing? XML technology serves as the marshaling wire protocol in .NET, making web services truly platform independent. In this presentation, we will look at the goals and features of .NET, we will discuss some of the strengths of this framework and take a look at some of the weaknesses as well. Code examples will be presented to illustrate the concepts.
Download
| Science, Engg. & Tech. Symposium, Houston | July, 2002 |
Programming for extensibility
We use OO languages like Java, Smalltalk, C++, and C# for our application development. However, the code we write, is it really object-oriented? If so, how much of it is? Then again, what is object-oriented programming and why should we develop application using this paradigm? This topic addresses the fundamental question once again. We define and discuss the concept and issues of extensibility and what it takes to make a system extensible? We present some very strong design principles, those that can change the way we develop our systems. At the end of the presentation we discuss some metrics that can be used to quantitatively determine the quality of our OO design. Java examples of code that will benefit and code that applies the principles will be presented.
Download
| Lone Star Software Symposium, Houston | June, 2002 |
Architecture and code behind .NET Web Services
In its long standing tradition, Microsoft makes things very easy for developers to create code rapidly. Web Services with Visual Studio .NET is no exception to that. However, in order to develop and especially debug a serious application, further understanding is essential. What really goes behind the code you write when a client invokes a web service? What are the classes/objects involved, what gets marshaled between client and server? What goes on during the activation process? This talk takes you under the hood and shows you the architecture of the Web Services. Object models, exchange formats and code behind your code will be analyzed.
Download
| .NET Users Group, Austin | June, 2002 |
Architecture and code behind .NET Web Services
In its long standing tradition, Microsoft makes things very easy for developers to create code rapidly. Web Services with Visual Studio .NET is no exception to that. However, in order to develop and especially debug a serious application, further understanding is essential. What really goes behind the code you write when a client invokes a web service? What are the classes/objects involved, what gets marshaled between client and server? What goes on during the activation process? This talk takes you under the hood and shows you the architecture of the Web Services. Object models, exchange formats and code behind your code will be analyzed.
Download
| .NET Users Group, Houston | May, 2002 |
Application of XML in Software Development
This presentation will first introduce the audience to the eXtensible Markup Language (XML), its syntax, definition of well-formedness and vocabulary. It will then present some of the benefits of XML in software development including data exchange and transformation (using XSLT). It will then introduce the XML based Simple Object Access Protocol (SOAP) and how SOAP serves as a basis in the Web Services. We will present examples of XML usage for transformation and Web Services under .NET.
Download
| CACPA, Houston | April, 2002 |
Programming for extensiblity - what OO really provides?
We use OO languages like Java, Smalltalk, C++, and C# for our application development. However, the code we write, is it really object-oriented? If so, how much of it is? Then again, what is object-oriented programming and why should we develop application using this paradigm? This topic addresses the fundamental question once again. We define and discuss the concept and issues of extensibility and what it takes to make a system extensible? It presents some very strong design principles, those that can change the way we develop our systems. Java examples of code that will benefit and code that applies the principles will be presented.
Download
| Java Users Group, Houston | February, 2002 |
|