Venkat Subramaniam
ÜberConf
Denver · July 21 - 24, 2015

Founder @ Agile Developer, Inc.
Dr. Venkat Subramaniam is an award-winning author, founder of Agile Developer, Inc., creator of agilelearner.com, and an instructional professor at the University of Houston.
He has trained and mentored thousands of software developers in the US, Canada, Europe, and Asia, and is a regularly-invited speaker at several international conferences. Venkat helps his clients effectively apply and succeed with sustainable agile practices on their software projects.
Venkat is a (co)author of multiple technical books, including the 2007 Jolt Productivity award winning book Practices of an Agile Developer. You can find a list of his books at agiledeveloper.com. You can reach him by email at venkats@agiledeveloper.com or on twitter at @venkat_s.
Presentations
Functional Programming with Java8
With Java supporting lambda expressions, we have nothing to stop us from creating functional style of code for our day to day applications. We are so used to object-oriented programming, but remember the paradigm shift we went through to adapt to that way of programming. It is yet another paradigm shift and most of us wonder how in the world can we write functional style code. Much like how OO was not as much about the syntax as it was about the design, functional programming is about the design, the idioms, and the data structures we would use to program.
Transforming to Java 8
The new facilities in Java 8 is about the change the way we write code. Our code will become
more expressive and concise. But, exactly how?
Java 8 Lambdas, the Path way to Functional Style
Functional programming has gained the recognition it deserves and almost all mainstream languages now support functional style of programming. With the introduction of lambdas in Java 8, we have new tools on our hands. In this presentation, we explore this tool and how we can benefit from it.
Programming with Streams in Java 8
We all have heard about lambda expressions in Java 8. The real unsung hero of Java 8 are the Streams.
Taking Command of the Command Line
Moderns IDEs are great, they let us get our work done, focus on solving problems, provide code prompts, and more. On the flip-side, they hide of lot of details and often do not provide everything to help get our work done. Learning to effectively use the command line, can help us navigate around, write script to automate certain routine tasks, isolate and understand issues, and more.
Functional Programming in Java—Technical Reasons to Adapt
Functional programming is receiving much attention recently. Most mainstream languages, including C++, Java, and C# now support lambda expressions and functional style. Why is there a sudden interest in adapting something that was largely ignored for decades? What are the technical reasons, how do we benefit, in what ways can using these techniques make our applications better and our development efforts easier as well?
Programming Reactive
Big data, smart phones, tablets, wearable devices, multicore processors,…—we're seeing rapid and drastic
evolution in both the computing environments and the application needs. Thankfully, a number of technologies have been evolving over the past several years to meet these demands. The reactive manifesto is an attempt to reenforce a set of technical practices needed to meet the emerging demands.
Core Software Design Principles
Creating code is easy, creating good code takes a lot of time, effort, discipline, and commitment. The code we create are truly the manifestations of our designs. Creating a lightweight design can help make the code more extensible and reusable.
Measuring Quality of design (1/2 day workshop)
Before spending substantial effort in refactoring or altering design, it would be prudent to evaluate the current quality of design. This can help us decide if we should proceed with refactoring effort or a particular alteration of design. Furthermore, after evolving a design, using some design metrics would help us to evaluate if we have improved on the design front.
Measuring Quality of design (1/2 day workshop)
Before spending substantial effort in refactoring or altering design, it would be prudent to evaluate the current quality of design. This can help us decide if we should proceed with refactoring effort or a particular alteration of design. Furthermore, after evolving a design, using some design metrics would help us to evaluate if we have improved on the design front.