Venkat Subramaniam
From Agile Developer
Dr. Venkat Subramaniam is an award-winning author, founder of Agile Developer, Inc., 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 agile practices on their software projects.
Venkat is a (co)author of multiple books, including the 2007 Jolt Productivity award winning book Practices of an Agile Developer. His latest book is Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions. You can reach him by email at venkats@agiledeveloper.com or on twitter at @venkat_s.
Get Past the Syntax, The Real Scare is in the Semantics
We often hear programmers complain about the syntax, especially when learning a new language. It turns out that, while syntax plays a role in our ability to learn and use languages, the real force we have to deal with is in the semantics. Once we get past the syntax, the semantics is where the real power and the real scare is. Curious to learn more?
Programming Concurrency - cont.
This is continuation of morning workshop, not a separate workshop. You need to be present on both parts as it is a whole day workshop.
Starting threads is easy, benefiting from them without being burnt is hard. The multithreading API in Java has evolved quite a bit since the early stages. There are four options for concurrency in pure Java today: the modern JDK API, the Software Transaction Memory, the actor based concurrency, and Java 8 Parallel Streams. In this workshop, using practical examples, you will dive deep into all of these options, learn how to use these, learn their pros and cons, and clearly understand which option to pick when.
Lazy Evaluations
When we hear about functional programming, we hear about immutability and higher order functions. It turns out, one of the real charms of functional programming is lazy evaluation. Lazy evaluation is all about postponing execution until the last responsible moment. This can lead to quite a bit of efficiency in the execution of code. In this presentation we will learn about what lazy evaluation is, look at example of lazy evaluation, discuss the benefits of laziness, and how it leads to better performance and efficiency of code.
Core Software Design Principles for Programmers
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. In this presentation we will take an example oriented approach to look at some core design principles that can help us create better design and more maintainable code.
Programming Concurrency
Starting threads is easy, benefiting from them without being burnt is hard. The multithreading API in Java has evolved quite a bit since the early stages. There are four options for concurrency in pure Java today: the modern JDK API, the Software Transaction Memory, the actor based concurrency, and Java 8 Parallel Streams. In this workshop, using practical examples, you will dive deep into all of these options, learn how to use these, learn their pros and cons, and clearly understand which option to pick when.
Functional Programming: 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? In this technical presentation we will learn about the technical underpinnings of functional programming, the fundamental problems they address, and the large impact of those on application development.