Platinum Sponsors

Gradleware Contegix Github

ÜberConf 2013 Brochure - Download


Westin Westminster
Westin Westminster
10600 Westminster Blvd
Westminster, CO   80020
Map »

Proud Supporter of:


Stuart Halloway

CEO of Relevance

Stuart Halloway is the CEO of Relevance, Inc. (www.thinkrelevance.com). With co-founder Justin Gehtland, Stuart helps companies adopt agile, as well as innovative technologies such as Clojure and Ruby on Rails. Stuart is the author of Programming Clojure, Rails for Java Developers, and Component Development for the Java Platform. Prior to founding Relevance, Stuart was the Chief Architect at Near-Time, and the Chief Technical Officer at DevelopMentor.

Blog

The Relevant Bits - Labor Day 2010 Edition

Posted Sunday, September 5, 2010

Tmore »

Notes on Remote Pairing

Posted Wednesday, September 1, 2010

Hmore »

Come to Relevance and Be Excellent

Posted Monday, August 30, 2010

Emore »

The Relevant Bits - 08/30/2010 Edition

Posted Sunday, August 29, 2010

Nmore »

Introducing Errbit

Posted Monday, August 23, 2010

Hmore »
Read More Blog Entries »

Presentations

edn and Fressian: Flexible Languages for Data

edn and Fressian are self-describing, schema-free, batteries-included, extensible data languages. In this talk, you will find out where you might benefit from these languages over e.g.more »

Pure Fun

No business objectives will be accomplished during this talk.more »

Generative Testing

Traditional automated testing approches combine input generation, execution, output capture, and validation inside the bodies of single functions. Generative testing approaches gain expressive power by isolating these steps.more »

Simulation Testing with Simulant

Simulation allows a rigorous, scalable, and reproducible approach to testing. The separation of concerns, and the use of a versioned, time-aware database, give simulation great power. This talk will introduce simulation testing, walking through a complemore »

Introduction to Clojure

Clojure is a powerful dynamic language that compiles to many target environments, including the JVM, JavaScript, and the CLR. In this talk, you will learn how to think in Clojure, and why you should want to.more »

edn and Fressian: Flexible Languages for Data

close

Stuart Halloway By Stuart Halloway

edn and Fressian are self-describing, schema-free, batteries-included, extensible data languages. In this talk, you will find out where you might benefit from these languages over e.g. JSON or XML.



Systems use many languages, and not just programming languages such as Java, C#, Ruby, or Python. Systems also relay on data languages, both for data on the wire, and for data at rest. These data languages differ greatly in their design objectives and capabilities, and are often less understood than their programming language counterparts.

This talk will introduce two data notations: edn and Fressian, which share several common characteristics. Both are

  • self-describing
  • schema-free
  • batteries-included
  • extensible

These capabilities align well with the dynamic, flexible needs of real systems. And in their key difference (text vs. binary), edn and Fressian cover the bases of human readability and maximum performance.


Pure Fun

close

Stuart Halloway By Stuart Halloway

No business objectives will be accomplished during this talk.



The purpose of "Pure Fun" is to participate in the sheer joy of using computers. Each talk is an individual performance where you might see or participate in some of the following:


Generative Testing

close

Stuart Halloway By Stuart Halloway

Traditional automated testing approches combine input generation, execution, output capture, and validation inside the bodies of single functions. Generative testing approaches gain expressive power by isolating these steps.



With generative testing:

  • a generator is a declarative description of possible inputs to a function
  • execution is up to your program
  • outputs are data, and can be captured for future study
  • validators are programs that have access to the generators, the program, and the outputs

There are a number of benefits to this approach:

  • once test data generation is separate, it is immediately obvious that such data generation should be statistical, not merely a few hand-picked cases
  • validators can be reused in a variety of
  • it becomes easier to identify and develop declarative, logic-based validations, rather than imperative ones
  • the various phases can be decoupled and run at different times

This talk introduces test data generation and generative testing, using for its examples the data.generators and test.generative libraries developed by the author.

Resources


Simulation Testing with Simulant

close

Stuart Halloway By Stuart Halloway

Simulation allows a rigorous, scalable, and reproducible approach to testing. The separation of concerns, and the use of a versioned, time-aware database, give simulation great power. This talk will introduce simulation testing, walking through a complete example using Simulant, an open-source simulation library.



Simulation allows a rigorous, scalable, and reproducible approach to testing:

Statistical modeling

Simulation begins with statistical models of the use of your system. This model includes facts such as "we have identified four customer profiles, each with different browsing and purchasing patterns" or "the analytics query for the management report must run every Wednesday afternoon." Models are versioned and kept in a database.

Activity streams

The statistical models are used to create activity streams. Each agent in the system represents a human user or external process interacting with the system, and has its own timestamped stream of interactions. With a large number of agents, simulations can produce the highly concurrent activity expected in a large production system.

Distributed execution

Agents are scaled across as many machines as are necessary to both handle the simulation load, and give access to the system under test. The simulator coordinates time, playing through the activity streams for all the agents.

Result Capture

Every step of the simulation process, including modeling, activity stream generation, execution, and the code itself, is captured and stored in a database for further analysis. You will typically also capture whatever logs and metrics your system produces.

Validation

Since all phases of a simulation are kept in a database, validation can be performed at any time. This differs markedly from many approaches to testing, which require in-the-moment validation against the live system.

Separation of concerns

The separation of concerns above, and the use of a versioned, time-aware database, gives simulation great power. Imagine that you get a bug report from the field, and you realize that the bug corresponds to a corner case that you failed to consider. With a simulation-based approach, you can write a new validation for the corner case, and run that validation against your past simulation results, without ever running your actual system.

This talk will introduce simulation testing, walking through a complete example using Simulant, an open-source simulation library.


Introduction to Clojure

close

Stuart Halloway By Stuart Halloway

Clojure is a powerful dynamic language that compiles to many target environments, including the JVM, JavaScript, and the CLR. In this talk, you will learn how to think in Clojure, and why you should want to.



Clojure encourages functional style with persistent data structures, a rich library of pure functions, and powerful processing support via the seq and reducer abstractions. Clojure implements a reference model for state, where references represent atomic successions of values, and change is encapsulated by value and reference constructors. This reference model is more substantive and suitable to application development than individual techniques such as Software Transactional Memory (STM) or actors.

The most important single principle behind Clojure is simplicity. Clojure's abstractions are simple and orthogonal. A la carte polymorphism, careful support for names and namespaces, the reference succession model, and a wide selection of small, composable protocols make Clojure programming swift, surgical and accurate.

Clojure's expressiveness does not mean that you have to compromise on power. It is an explicit design goal of Clojure to provide access to the power of the underlying platform, and for programmers never to have to "drop down" to the platform level for performance-sensitive work.

On the Web



Books

by Stuart Halloway

Programming Clojure (Pragmatic Programmers) Buy from Amazon
List Price: $32.95
Price: $21.64
You Save: $11.31 (34%)
  • Clojure is a dynamic language for the Java Virtual Machine, with a compelling combination of features:

    Clojure is elegant. Clojure's clean, careful design lets you write programs that get right to the essence of a problem, without a lot of clutter and ceremony.

    Clojure is Lisp reloaded. Clojure has the power inherent in Lisp, but is not constrained by the history of Lisp.

    Clojure is a functional language. Data structures are immutable, and functions tend to be side-effect free. This makes it easier to write correct programs, and to compose large programs from smaller ones.

    Clojure is concurrent. Rather than error-prone locking, Clojure provides software transactional memory.

    Clojure embraces Java. Calling from Clojure to Java is direct, and goes through no translation layer.

    Clojure is fast. Wherever you need it, you can get the exact same performance that you could get from hand-written Java code.

    Many other languages offer some of these features, but the combination of them all makes Clojure sparkle. Programming Clojure shows you why these features are so important, and how you can use Clojure to build powerful programs quickly.


by Stuart Halloway and Justin Gehtland

Rails for Java Developers Buy from Amazon
List Price: $34.95
Price: $27.18
You Save: $7.77 (22%)
  • Many Java developers are now looking at Ruby, and the Ruby on Rails web framework. If you are one of them, this book is your guide. Written by experienced developers who love both Java and Ruby, this book will show you, via detailed comparisons and commentary, how to translate your hard-earned Java knowledge and skills into the world of Ruby and Rails.

    If you are a Java programmer, you shouldn't have to start at the very beginning! You already have deep experience with the design issues that inspired Rails, and can use this background to quickly learn Ruby and Rails. But Ruby looks a lot different from Java, and some of those differences support powerful abstractions that Java lacks. We'll be your guides to this new, but not strange, territory.

    In each chapter, we build a series of parallel examples to demonstrate some facet of web development. Because the Rails examples sit next to Java examples, you can start this book in the middle, or anywhere else you want. You can use the Java version of the code, plus the analysis, to quickly grok what the Rails version is doing. We have carefully cross-referenced and indexed the book to facilitate jumping around as you need to.

    Thanks to your background in Java, this one short book can cover a half-dozen books' worth of ideas:

    Programming Ruby Building MVC (Model/View/Controller) Applications Unit and Functional Testing Security Project Automation Configuration Web Services

by Stuart Dabbs Halloway

Component Development for the Java¿ Platform Buy from Amazon
List Price: $39.99
Price: $37.30
You Save: $2.69 (7%)
  • If you're serious about writing components in Java, this book focuses on the component services you need to master. DevelopMentor Chief Scientist Stuart Halloway presents unprecedented, in-depth coverage of writing, deploying, and maintaining Java components. Halloway begins by showing how to use, control, and troubleshoot components. He offers real-world guidance on reflection performance, and demonstrates how reflection is used to build the Java serialization architecture. He also offers detailed coverage of using the Java Native Interface (JNI) to control the boundaries between Java code and components written in other environments. In Part II, Halloway presents a practical vision for using component services to become a more effective Java developer. Through examples and sample code, he introduces generative programming techniques that leverage Java into high performance. Finally, building on these techniques, he shows how to construct robust interoperability between Java and Win32/COM.





Blogs

Johanna Rothman

Chess Pieces or Domain Expertise? Your Choice

Posted By: Johanna Rothman on Jun. 18, 2013

Many years ago, I started a job as a contract manager, and it became clear I had a big problem. I had developers who knew one area of the code well. I had testers who knew not much of any area of the code well, even though they had worked for the organi



Andrey Breslav

Type-Safe Web with Kotlin

Posted By: Andrey Breslav on Jun. 17, 2013

We told you about Kara Web Framework a while ago. It is written in Kotlin and relies on type-safe builders. It doesn’t have to be the only web framework for Kotlin, but the general principles seem good, so I wrote an article about these principles



Alan Shalloway

It’s Déjà vu All Over Again

Posted By: Alan Shalloway on Jun. 13, 2013

Several years ago I tried to discuss the need for Lean when Scrum was being used on projects with more than one team.  Ken Schwaber didn’t want to hear this and eventually threw me off the Scrum Development Yahoo discussions group.  I admit, I was talk



Johanna Rothman

Slides from Exploding Management Myths Posted

Posted By: Johanna Rothman on Jun. 10, 2013

I gave a talk last week at Better Software/Agile Development, called Exploding Management Myths. This is my first talk based on some of my management myths. Yes, the ones I’ve been writing for the last 18 month



Andrey Breslav

Talk @ GeekOUT Tallinn: Language Design Trade-Offs (Kotlin and Beyond)

Posted By: Andrey Breslav on Jun. 10, 2013

This week I’m speaking at GeekOUT Tallin, and my colleagues Mikhail Vink and Sergey Karashevich are holding a 15-minute DEMO on Thursday, telling you about cool stuff in JetBrains’ IDEs. The topic of my talk is “Language Design Trade-O



Alan Shalloway

In Defense of Kanban

Posted By: Alan Shalloway on Jun. 8, 2013

As many folks know, Net Objectives does both Scrum and Kanban. Admittedly, our Scrum is very much like Scrumban (or Scrum done under the context of Lean) but it is still an implementation of Scrum.  Scrum, as it normally manifests itself, has several c



Alan Shalloway

The Differences Between Lean Manufacturing and Lean Software Development

Posted By: Alan Shalloway on Jun. 8, 2013

Since lean comes from manufacturing, many question its validity for software developers. Our own experience is that Lean in software is very important.  This blog covers three areas: The essential paradigm shift of lean and why it applies even more to



More Blogs »
 

Themes at ÜberConf

  • Architecture
  • Enterprise Java
  • Java Internals
  • Security - Enterprise & JVM
  • Cloud Computing
  • Languages on the JVM - Groovy, JRuby, Scala & Clojure
  • Java Web Frameworks - Wicket, Tapestry & SpringMVC
  • Build Systems - Maven & Gradle
  • Testing
  • Agility

 

Featured Speaker


 

Registration Includes

  • Four Day - Access Pass
  • All Meals / Snacks –duration of the symposium
  • Session Materials
  • Custom Binder
  • Wi-Fi Access
  • Great Raffle Giveaways
Register Now »
 

Location

Westin Westminster
Westin Westminster
10600 Westminster Blvd
Westminster, CO   80020
View Map