When the Wheels Come off Agile
These days you rarely find someone who hasn’t been part of at least one attempt to adopt Agile. However, few of those same people will tell you they are part of an ongoing, successful Agile team. This talk is a collection of the most common things that Barry has seen derail Agile adoptions in his years as an Agile coach. Attendees should come away with a collection of subtle pitfalls to avoid in their next attempt to successfully apply Agile Software Development on the job.
Tail Recursion, Trampolines and Continuations - taking functions to the max
This is a fairly advanced talk about some of the more ambitious things you can do in a functional language (closures are just the beginning). It deals with the quite tricky subject of continuations by sneaking up on it by incremental steps building on single function tail recursion, multiple function tail recursion with trampolines, and then on to the continuations compiler plugin and support libraries in Scala.
Do you want your next project to be more than just a web page? SproutCore gives you the tools to build immersive, data-rich applications. With a powerful data-binding layer, SproutCore frees you up to think about manipulating the underlying data, and not have to worry about handling all of the edge-cases that start to pile up as you add more elements to your view.
Do you really get class loaders?
Class loaders are at the core of the Java language. Java EE containers, OSGi, NetBeans modules, Tapestry 5, Grails and many others use class loaders heavily. Yet when something goes wrong, would you know how to solve it?
In this session we’ll take a tour of the Java class loading mechanism, both from JVM and developer point of view. We will look at typical problems that you get with class loading and how to solve them. ClassNoDefError, IncompatibleClassChangeError, LinkageError and many others are symptoms of specific things going wrong that you can usually find and fix. For each problem we’ll go through a hands on demo with a corresponding solution.
We’ll also take a look at how and why classloaders leak and how can you remedy that.
Introduction to Spring AMQP
The Spring AMQP project’s goal is to simplify development of messaging applications based on the AMQP protocol. Spring AMQP provides convenient abstractions that promote a POJO based programming model. If you are familiar with Spring’s JMS support, you will feel right at home. In this session, we will begin with a quick overview of AMQP itself. Then, we will take a tour of Spring AMQP features such as publishing messages, converting message content, and creating multithreaded consumers. The session will include several demos using the RabbitMQ broker.
Applied Agility: Full-Blown Scrum in the Real World
Bookstore shelves and training catalogs are stuffed with options for learning about the theory and principle behind Agile Software Development. In reading through a book or attending a Scrum certification class, the description of the process seems to flow like water. However, when enthusiasts attempt to make that flow a reality in the workplace, it becomes all to clear just how much tactical how-to was left out of the material. Attendees of this talk will see how to make the trickier bits of Scrum possible, including answers to questions like “Exactly how do I go about planning a sprint?” and “How do I get my team to start using story points?”, all distilled from Barry’s years in the field of making this happen in a range of corporate environments.
High-Performance Scalability for Enterprise Applications with Enterprise Ehcache
Scaling enterprise applications is hard. Enterprise Ehcache is an easy-to-deploy solution to these hard-to-solve scale and throughput problems.
In this session you will learn:
* Background - Standard Caching Theory and Practice
* Getting Started - Ehcache API and Configuration
* BigMemory - How to Scale Up your Applications
* Advanced Scaling Techniques - Configuring and Deploying a Distributed Cache
* Search API - Introduction to new Search API with live code demonstration
* Developer’s Console - Live tour of the console in action
Courage in Software Development
As software practitioners, and as human beings, we experience the desire to better ourselves. As corporate developers however, that desire has sometimes been difficult to sate in the past few years.
Deadlines, accountability, mixed ability teams, and a level of maturity in Object Oriented Development, and more specifically in the Java language, have led to a conservative approach to software development where risks are largely frowned upon, engineers and managers tend to stick with what they know, and bettering oneself often means arguing over best practices or concentrating on the details of our trade, the software craftsmanship movement is an example of this.
Unfortunately another example of this is waste - wasted effort, wasted engineers and wasted opportunities. Writing a new web or app framework is predictable time-wise, and often easily justified. It’s also often a misguided effort, and we will discuss why.
In this talk I hope to present a different viewpoint, one based on careful courage as opposed to risk aversion at all costs, one aimed at successfully moving the world forward rather than avoiding failure to meet a deadline. It’s a topic dear to my heart after experiencing the waste inside of many companies, both large and small.
Spring into Mobile Application Development
Presentation to be held together with Keith Donald.
With the rising prevalence of smart mobile platforms such as iPhone and Android, the desire for rich mobile clients as another means of accessing enterprise services is something that can no longer be ignored. In this session, we will cover the new Spring Mobile project to see what the Spring community is doing to simplify mobile application development. As we go, we will explore the current mobile development landscape and analyze native vs. mobile web vs. hybrid architectural choices. You will learn how to add “mobile web” capabilities to your Java Spring MVC apps, how to integrate native apps with RESTful backends, and how to integrate leading native bridging and cross-platform UI frameworks.
Application Security with Apache Shiro
Securing today’s applications is often a painful and confusing
process, but it doesn’t have to be. Apache Shiro is a flexible
open-source security framework that simplies the four cornerstones of
application security: authentication, authorization, enterprise session management and cryptography. With Shiro’s easy-to-understand API, you can quickly and easily secure any application – from the smallest mobile applications to the largest web and enterprise applications.
Les Hazlewood, Apache Shiro PMC Chair, will explain all of Shiro’s
core features and demonstrate how to secure your own applications
successfully and easily.
Launching scalable apps with Google App Engine
Google AppEngine lets you build and host scalable Web applications written in Python or Java on Google’s infrastructure. We’ll look at how to build and deploy a GWT+GAE application with Google Plugin for Eclipse and take a look at sample code for a GWT+GAE app using the Datastore with objectify-appengine. We’ll also look at two new AppEngine features: multitenancy (Datastore namespaces) and browser push using the Channel API.
Guest speaker Mike Lawrence (Manager Web Architecture at theice.com) will also demo an app (http://goo.gl/UT2W3) created and hosted on Google App Engine.
An Introduction to NoSQL
NoSQL (or NOSQL or Not Only SQL) is the moniker given to a new wave of data storage systems that have emerged within the past few years. It is often criticized for being too broad a category, but after thirty years of the relational database being the instinctive choice for data storage, publicizing the concept that One Size Does Not Fit All is a good thing. This talk will present an introduction to the systems and discuss the design patterns and tradeoffs commonly seen.
The ROI of Refactoring: Lego vs. Play-Doh
Refactoring is one of the most powerful tools for improving the intrinsic quality of any code base. Yet, as important as refactoring is, non-technical business stakeholders tend to see little value in the practice. After struggling for a decade to articulate refactoring in such a way that the ROI was obvious, I finally stumbled upon an analogy that seems to work: Building with Lego vs. Play-Doh. In this presentation I will demonstrate the techniques I use to turn an apprehensive room of business owners into the biggest supporters of refactoring in your organization.
Testable Enterprise Development with Arquillian
In this session, we’ll address the missing link in Enterprise Java development: simple, easy integration testing.
Unit tests and mock objects will only take you so far; the only answer which truly ensures that all components are playing nicely is a comprehensive integration suite. Unfortunately, writing integration tests has historically involved manual setup of a heavy, cumbersome test harness. That’s time lost, but it doesn’t have to be anymore.
Here we’ll introduce Arquillian, a powerful container-oriented testing framework layered atop TestNG and JUnit. Arquillian manages your runtime, abstracting out deployment and allowing you to focus on real test logic. We’ll cover:
Attend this talk to learn how the simplified component model of Java EE can be applied to testable development.
The presentation is available at:
Beauty and the Beast: Design for Builds & Build Systems
For our production code we apply a wealth of design values and principles. Currently this is rarely done for our builds. Yet the project automation domain, specially in the enterprise, is often at least as complex as the business domain. The design of a build is also heavily influenced and possibly constrained by the design of the build system you are using.
The build systems under review (Ant. Maven, Gradle) are dramatically different and thus the design of the corresponding builds. We will talk about best practices for build design and how different build systems might support that or stand in the way, thus preventing expressive, maintainable and easy to use builds. Those differences should be a major factor when you are choosing a build system appropriate to your needs.
The presentation is available at:
The Future of Java
(Together with Martijn Verburg)
Java isn’t dead, it’s just been sleeping! Look at its lovely new plumage! There’s been much debate in the last year on the future of the Java language, many doom mongers have stated that Java as a language and as a platform is in decline and will no longer be relevant in the all too near future.
This talk debunks those naysayers and covers the exciting new world of a modern Java developer and how she can utilise the language and platform extensions to deliver awesome solutions.
Socializing Spring Applications
Organizations are increasingly recognizing the value of connecting their applications to popular services their users use each and every day. Spring Social is a new project in the Spring community that lets you integrate your application with popular “Software as a Service” (SaaS) providers such as Facebook, Twitter, LinkedIn, Github, Flickr, and Gowalla. In this session, you will learn exactly what Spring Social offers and see how to apply it to your own applications. You will also see how to extend the framework to support new service provider APIs as they emerge.
It could be heaven or it could be hell - on being a polyglot programmer
It’s exciting to see the evolution of modern languages and their potential when it comes to improved productivity and ease. However, while these are quite promising, the path to their adoption is mired with some challenges. In this keynote, award winning author, programmer, and mentor Dr. Venkat Subramaniam will share with you the pleasure and perils of being a polyglot programmer and ways in which you and your team can adapt and succeed.
FYI: Presentation not available for download, due to licensing issues.
Building Web Applications in a Multi-Device World
Things are changing. Just a few years ago, building a web application meant shipping HTML to a user’s single computer. Today, your users are likely to have two, three, or even more devices, and expect to be able to get access to your application from their computer, their couch, or on the go. In this talk, Yehuda will explore this new world, and how you should plan your next web application, or how you should plan the next year of development on your existing app.
How to Run a Successful open source project
Have you ever wanted to take your application development project, open source it, and leverage the talents and enthusiasm of an active, volunteer, open source community? The model of open source software development has now entered the mainstream and the business, technical, financial and social benefits of open source have become increasingly appealing for traditionally more conservative organizations. In particular many organizations are looking at open source from a cost saving perspective in today’s difficult economic climate.
Martijn will take you through his first-hand experience about how to run a long lasting and vibrant open source project. Project managers, application architects and developers alike will learn:
* Benefits of open sourcing an internal project, application or framework * How to set up your technical infrastructure for open source collaboration * How to manager your social and political infrastructure * How to deal with licensing, patents and copyright issues * How to convince the corporate stakeholders to go open source
Scala is a statically typed fully object-oriented, functional language on the JVM.
While taking advantage of the functional aspects, you can continue to make full use of the powerful JVM and Java libraries. In this presentation we will take an in depth look at what Scala is, its strengths, weaknesses, and why, when, and where you’d use it on your applications.
jQuery 1.5 jump-start
Modern Java Concurrency
A very unique take on Java concurrency and modern development
TorqueBox: The beauty of Ruby with the power of JBoss
The power of JBoss is now available through the expressiveness of Ruby. More and more projects are suited to new technologies and frameworks such as Ruby on Rails.
Using TorqueBox, an organization can leverage their knowledge, investment, skills, and trust in JBoss, while exploring the cutting edge of new development models.
TorqueBox supports any Rack-based web framework, including Ruby on
Rails and Sinatra. Rubyists now get excellent and time-tested Java components such as HornetQ, Infinispan and Quartz using familiar idioms and patterns.
This presentation will cover general Ruby web-framework support and introduce the use of enterprise
JBoss services with only a few lines of Ruby.
Enter The Gradle
Gradle allows you to describe your build using a rich, easily extendable build language based on Groovy. It provides compelling solutions for many of the big pain points that exist with current build systems. This session will be mostly driven by live demos. You will see how easy and elegant Gradle enables you to solve a broad range of requirements - over the full life cycle of typical and atypical Java builds and will include many of the new and upcoming 1.0 features.
The demos span Gradle’s revised dependency management, environment specific multi-project builds, the new Maven import feature, IDE integration, test result analysis, code sharing, parallel testing, incremental builds, …
Many development shops have made the leap from RCS, Perforce, ClearCase, PVCS, CVS, BitKeeper or SourceSafe to the modern Subversion (SVN) version control system. But why not take the next massive stride in productivity and get on board with Git, a distributed version control system. Jump ahead of the masses staying on Subversion, and increase your team’s productivity, debugging effectiveness, flexibility in cutting releases, and repository and connectivity redundancy (at $0 cost). Understand how distributed version control systems (DVCSes) are game-changers and pick up the lingo that will become standard in the next few years.
In this talk, we discuss the team changes that liberate you from the central server, but still conform the corporate expectation that there’s a central master repository. You’ll get a cheat sheet for Git, and a trail-map from someone who’s actually experienced the Subversion to Git transition.
Lastly, we’ll even expose how you can leverage 75% of Git’s features against a Subversion repository without ever telling your bosses you are using it (they’ll start to wonder why you are so much more effective in your checkins than other members of your team though).
What’s New in GWT
AS34J - ActionScript for Java Developers
Rapid Mobile & Tablet App Development with Spring and Flex
By combining Spring and Flex developers can quickly build multi-screen apps for smart phones, tablets, TVs, and PCs. Using Spring developers can build back-end services which can easily be reused no matter how data is being rendered on the client. On the client-side Flex provides reusable components with a variety of skins to support differing size constraints and interaction models. This session will help developers get up-to-speed on how they can use these technologies to create an application abstraction layer across the ever growing plethora of devices that our apps need to support.
Advanced Selenium RC Java
Target Audience: Intermediate and Senior Java OO Programmers
In Se 1, you can learn to adopt patterns and practices described here:
By keeping the inherent Domain Specific Languages in your Se 1 Java codebases separate, by keeping the framework code DRY (Don’t Repeat Yourself), and allowing the actual test scenarios to become “wet” in the interest of expressiveness, you can drastically lower the TCO (Total Cost of Ownership) of your Selenium testing efforts.
This presentation will consist mostly of slide and code presentations, with opportunities for some mob programming of real Se test scenarios. Come prepared to read and write Java code.
The Cloudy Future of Integration
Applications are increasingly facing demands for horizontal scalability and cross-platform interoperability. NoSQL data stores are gaining momentum as a way to address the scalability challenges. Messaging systems, on the other hand, are by their very nature able to handle widely distributed deployment models, but for Java developers, the cross-platform challenge suggests we should look beyond JMS. Open protocols such as HTTP, SMTP, and AMQP are attractive language-neutral alternatives.
In this session, you will learn how the Spring application platform is evolving to accommodate these trends. We’ll explore the Spring Data APIs for working with a variety of NoSQL data stores, and we’ll compare and contrast several open protocol options for both synchronous and asynchronous messaging via Spring Integration Gateways and Channel Adapters.
What Riding the Apache Camel can do to make integration easier for you
Apache Camel is getting more and more attraction in the open source
space as an integration framework.
For that reason this talk is about how integration can be made much easier, flexible and accessible for developer by implementing Apache Camel. Hear why popular open source projects such as Akka, Activiti, Drools, Grails, Play, ServiceMix, Smooks and various ESB servers have chosen to integration Camel out of the box in their distributions.
We start from the beginning, ‘Why’ and ‘How’ Apache Camel got started.
Then we see the influence of the Enterprise Integration Patterns (EIP) has upon Apache Camel.
Showing how this applies in practice with easy to understand examples, highlighting the simplicity and power of Apache Camel. Integrating becomes literally as simple as building routes in ‘lego style’ by wiring together EIP patterns, processes and transports. This is done using the Camel DSL, which comes in multiple flavors such as Java, XML, Groovy and Scala.
We then give you an overview of the other features Apache Camel provides out of the box and as well
which option you have for running your Apache Camel applications.
We check out what Camel tooling exists, such as the Fuse Developer for Camel.
Then we move on to learn some of the recent additions to the latest
Camel version. As well as peeking into what we have on the roadmap for the 3rd Camel generation.
After this we shift focus to cover the Camel community showing the
rising popularity of Apache Camel. As well as touching other open source projects which leverage Apache Camel in any way.
Simple MapReduce with Cascading on Hadoop
Hadoop is a MapReduce framework that has literally sprung into the vernacular of “big data” developers everywhere. But coding to the raw Hadoop APIs can be a real chore. Data analysts can express what they want in more English-like vocabularies, but it seems the Hadoop APIs require us to be the translator to a less comprehensible functional and data-centric DSL.
The Cascading framework gives developers a convenient higher level abstraction for querying and scheduling complex jobs on a Hadoop cluster. Programmers can think more holistically about the questions being asked of the data and the flow that such data will take without concern for the minutia.
We’ll explore how to set up, code to, and leverage the Cascading API on top of a Hadoop sample or production cluster for a more effective way to code MapReduce applications all while being able to think in a more natural (less than fully MapReduce) way.
During this presentation, we’ll also explore Cascading’s Clojure-based derivative, Cascalog, and how functional programming paradigms and language syntax are emerging as the next important step in big-data thinking and processing.
Building mobile apps with Java on non-Java platforms using GWT and PhoneGap
Advanced Git Tricks
Git is a powerful content tracker and has gained acceptance by many forward leaning consultants and teams over the past several years. Those developers know that it offers the usual commit, branch, merge and tag in a distributed environment, and yet, only a few developers have explored the more powerful functions of Git. These range from searching months of history for a unit-test bug to undoing literally any mistake to splitting in-progress work into multiple commits within a single file.
Many developers like yourself have been introduced to Git’s fundamentals. But do you really know Git and all it has to offer? There is so much developer productivity power lurking beneath the 2nd and 3rd layers of Git commands. Reading the documentation for Git is one thing, but seeing these power-feature in action is mind-blowing. We’ll unwind any destructive mistake in history with the RefLog. We’ll look at best practices in maintaining linear history with Rebase. We’ll make merging the same work onto multiple branches a trivial effort with tracking the merge resolution decisions with rerere. We’ll conclude with identifying the nuances of lightweight and heavyweight tags, pushing compressed object sets on USB sticks, and seamlessly integrating visual merge and diff tools.