Speakers
- Clifford Berg
- David Bock
- Scott Davis
- Rick DeNatale
- Esther Derby
- Robert Fischer
- Neal Ford
- Chad Fowler
- Andrew Glover
- Stuart Halloway
- David Hussman
- Yehuda Katz
- Rich Kilmer
- Carl Lerche
- Matthew McCullough
- Joe O'Brien
- Andrea O. K. Wright
- Russ Olsen
- Bob Payne
- Christopher Redinger
- Johanna Rothman
- Brian Sam-Bodden
- Ken Sipe
- Brian Sletten
- Kevin Smith
- Venkat Subramaniam
- Nathaniel Talbott
- Laurie Williams
Stuart Halloway
CEO of Relevance
Blog
Notes on Remote Pairing
Posted Wednesday, September 1, 2010
Here at Relevance, we're committed to the idea of working in pairs. But as the company grows beyond its Durham headquarters, we have more and more people working outside of the office. Pairing is hard enough by itself, but pairing remotely is dauntin more »Come to Relevance and Be Excellent
Posted Monday, August 30, 2010
Earlier, we posted that we were seeking some new PMs for the Relevance team. At that time, I mentioned that we were always looking for great technical folk as well. I think that deserves its own pos more »The Relevant Bits - 08/30/2010 Edition
Posted Sunday, August 29, 2010
New point releases, new projects, and more info about the first clojure-conj. Here are The Relevant Bits from last week's "20%" time: Lots of planning and organization on the (first clojure-conj). This is an event you are not going to want to mis more »Introducing Errbit
Posted Monday, August 23, 2010
Here at Relevance, we use Hoptoad for tracking exceptions in our Rails apps. It's great because it gives us a heads up when something goes wrong but it doesn't bury us with tons of email. So, when we found out we couldn't use it on one of our client's a more »The Relevant Bits - 08/23/2010 Edition
Posted Sunday, August 22, 2010
What have we been doing with our "20%" time the past couple weeks? Read on to find out. It's been a busy couple of weeks in the Clojure and Ruby world for u more »Presentations
Clojure
In recent years, the Java community has embraced a variety of new languages that target the JVM, but also offer productivity advantages over traditional Java coding. more »Concurrent Programming with Clojure
Clojure is dynamic language for the Java Virtual Machine with several powerful features for building concurrent applications. more »Git Control of Your Source
Git is not the next step in evolution of centralized source control, following in the footsteps of cvs, svn, etc. These tools provide centralized history of deltas, where git provides distributed history of trees of content. In this talk, you will see the more »Agile, Relevance Style
The Agile Manifesto, like any good scripture, admits of many interpretations. There is no one "right path." What works for us may not work for you. more »Taking Agile From Tactics to Strategy
Teams adopting agile should begin at a tactical level, but they shouldn't end there. The Agile Manifesto operates at many different levels. Learn to apply the principles of agile at a strategic level. more »In recent years, the Java community has embraced a variety of new languages that target the JVM, but also offer productivity advantages over traditional Java coding.
One of the most interesting of these languages is Clojure, a "Lisp unconstrained by backward compatibility." In this talk, you will see why Clojure deserves serious consideration as the next big JVM language:
* Clojure provides all the low-ceremony goodness you know and love from dynamic languages such as Ruby and Python.
* Clojure includes Lisp's signature feature: Treating code as data through macros.
* Clojure's emphasis on immutability and support for software transactional memory make it a viable option for taking advantage of massively parallel hardware.
Clojure is dynamic language for the Java Virtual Machine with several powerful features for building concurrent applications.
In this talk you will learn about:
* Functional programming. Clojure's immutable data structures encourage side-effect free programming that can easily be shared across multiple processor cores.
* Software Transactional Memory (STM). STM provides a mechanism for managing references and updates across threads that is easier to use and less error-prone than lock-based concurrency.
* Direct access to Java. Clojure calls Java directly, and can emit the same byte code that a handcrafted Java program would. So, you can easily access the java.util.concurrent library.
Git is not the next step in evolution of centralized source control, following in the footsteps of cvs, svn, etc. These tools provide centralized history of deltas, where git provides distributed history of trees of content. In this talk, you will see the advantages of the git approach:
Incredible speed. Local, disconnected operation. Source control workflow customized to your team. Centralized, distributed, or layered, you can build it with git. Cheap and easy branching, tagging, and merging. Editing and refactoring your commits.
You have probably heard about git by now, perhaps something along these lines: "Git is a version control system, and it is more powerful that Subversion in every way. You don't even have to be online to commit!"
This is true, but it undersells git. Git is not the next step in evolution of centralized source control, following in the footsteps of cvs, svn, etc. These tools provide centralized history of deltas, where git provides distributed history of trees of content. In this talk, you will see the advantages of the git approach:
- Incredible speed.
- Local, disconnected operation.
- Source control workflow customized to your team. Centralized, distributed, or layered, you can build it with git.
- Cheap and easy branching, tagging, and merging.
- Editing and refactoring your commits.
The git community prefers power to ease of use, and so git's user interface and documentation can be intimidating. You will learn the straight and narrow path for common, day-to-day git operations. You will also learn git's underlying data model, and get a quick introduction to more advanced concepts like submodules, cherry-picking, and bisection.
As a final bonus, you will see how to use git on an existing subversion project. You can use git as your svn client, and the rest of the team can stay on svn and not even care.
The Agile Manifesto, like any good scripture, admits of many interpretations. There is no one "right path." What works for us may not work for you. At Relevance we have tried many paths, and learned many lessons. Join us to see dozens of ideas that have worked for us, plus some that haven't.
The Agile Manifesto states four key values:
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
That manifesto sounds great, but perhaps a little vague. It gets more concrete quickly when you start doing it! In this talk, we will share our experiences, both good and bad, with various practices and problems associated with agile:
- Pairing all the time (except when we don’t)
- Running cross-project retrospectives
- Code coverage standards
- Choosing the sharpest tools
- Fixed-bid projects
- Handling budget problems
- Teaching customers
- Setting the wrong kinds of targets
- Holding all participants accountable
- Forking everything
- Introducing new technologies
Hold on tight to your sacred cows, because no assumption you have about agile will be safe.
Teams adopting agile should begin at a tactical level, but they shouldn't end there. The Agile Manifesto operates at many different levels. Learn to apply the principles of agile at a strategic level. Otherwise you can have a great agile ground game and still lose.
Many programming teams now embrace agile at the tactical level, which is the right place to begin. Applying the ideas in the Agile Manifesto, good teams embrace practices like
- story point estimation
- burndown tracking
- technical expertise
- behavior-driven development
- daily standups
- pair programming
- continuous integration
- spiking
- refactoring
- customer always available
- well-understood roles
The Agile Manifesto can be applied at a strategic level, too. However, the tensions are different. Feedback cycles are longer, objectives and results are less clear, and roles and relationships are unknown or changing. In this talk you will learn how to apply agile at the strategic realm, using practices like:
- measure the immeasurable
- pair everything
- choose meaningful standards
- build for tomorrow (but not next year)
- retrospect well
- spot the trends
- use the right medium
- want to succeed (not as obvious as it sounds!)
With the right practices in place, agility can help you choose objectives, as well as attain them.
Books
by Stuart Halloway
-
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
-
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
- Reveals both the potential and pitfalls of developing components using the Java platform. Delves into the component-oriented features of the Java platform, thoroughly discussing class loading, reflection, serialization, native interoperation, and code generation. Softcover.