Paul Julius > Blog

CITCON in New York City

November 26th, 2016

I am very excited that we will be hosting CITCON in New York City on December 9 & 10, 2016.

Registrations are still open: http://citconf.com/newyork2016/

I am proud that my company, Intent Media https://intentmedia.com/, has signed on as the Venue Sponsor. As Chief Technology Officer, I am excited to showcase some of the great things we have been doing at Intent like

* mob programming
* serverless architectures
* employee growth based management
* continuous delivery
* polyglot programming

Should be tons of fun! Join us!

World Famous Pair Programming Talk!

December 29th, 2012

Back in 2007 I was contemplating what I wanted to speak about at conferences. I asked myself, “What do I feel strongly enough about? What do I really care about? What practices should everyone be doing?” Two things came to mind:

Advanced Continuous Integration (now we call this Continuous Delivery)

and

Pair Programming

Speaking at conferences can be a ton of fun. I recommend it for anybody working in the consulting field. That said, conference lecturing requires significant time and energy. This will come as a shock: You have to prepare! If you do not practice, then your audience will quickly lose interest. They will inevitably use the Law of Two Feet.

The topics that I was going to talk about had to be personally interesting. I had to have a passion for them. I knew I would be reusing (and continually refactoring) the presentation material for at least a year. I had no interest in signing up for something that would bore me senseless.

Pair programming in action.

Photo by Erwin Bolwidt. Your host, pairing at CITCON Singapore 2012.

CI (Continuous Integration) has been a fascination for me since the year 2000. Heck, I co-founded CruiseControl, mostly in my spare time, to scratch that itch. Beyond that, in 2007, Jeffrey Fredrick and I had one year of CITCON (the Continuous Integration and Testing Conference) under our belt. So all things CI were a natural fit.

A quick aside: Jez Humble and Dave Farley’s book on Continuous Delivery was still in the works at the time. I remember talking to Jez about the book, but I do not recall if the term Continuous Delivery was finalized yet. From as early as 2003 people were using terms like CI++, Advanced Continuous Integration, Continuous Deployment, Continuous Delivery, CI All the Way to Production, etc. For me, I wanted to talk about CI beyond setting up CruiseControl, or Jenkins, or AntHill, or Bamboo, or… (fill in the blank, 2007 saw a huge upswing in Continuous Integration platforms). Advanced CI would leverage my years of expertise. It was clearly a no-brainer. I needed a second talk.

I thought back to two practices we used on my last project in Detroit – TDD and pair programming. My colleagues at ThoughtWorks were already doing a bang-up job presenting on every facet of TDD. I also really enjoyed Uncle Bob Martin’s talk on TDD. I did not feel like there was much meat left on the bone. Pair programming was a different beast.

Pair programming was a frequently dismissed, overlooked, despised portion of the original XP white book. People would tell me that they had tried pairing, but hated it! I heard the same story over and over again, amongst colleagues and clients alike. I held quite the opposite opinion (and still do). I love pair programming!

What was I doing that all these other people were not? I am no smarter. I am no worse programmer, and likely not particularly better. I knew that I needed to suss out the core differences that made pairing a delightful endeavor. In fact, I hated programming without a pair.

Out of that came my talk entitled (usually) “Pairing with Pizzazz”. Sometimes I have called it “Pairing with PJ”. I have been doing this talk for five years. People love the talk. I love to give the talk. I make it fun by live pairing with people. I combine a little knowledge sharing with a little hands on.

I have given this talk at least 25 times, around the world. I have delivered it at big industry conferences. I have delivered it at smaller un-conferences like CITCON. I have presented it at internal company conferences. I have presented it at local user groups. I will probably give this talk publicly at least once in 2013, 2014 and 2015. And now I want to share it on my blog.

The presentation material consists mostly of pictures. I tell a story. I do not read bullet points! This will make it more difficult for readers seeing the material for the first time through the internet. Anyone with questions should email me@pauljulius.com. Both the PowerPoint slideshow and the PDF version contain some notes that I wrote when I was first thinking through the talk. That will help casual readers.

Feel free to read through the talk. Feel free to share it with colleagues. Please do not present this material as though it were your own. Do feel free to present it as though you heard about it from me and wanted to help make the world a better place.

Finally, for full disclosure, I did not invent anything new for this talk. I leveraged the expertise, experience, enthusiasm, passion, mistakes, dissatisfaction, and joy of hundreds of people with whom I have had the extreme privilege of pair programming. Thank you, everyone! (And Happy New Year).

Download the PDF version of the presentation.
Download the PowerPoint version of the presentation.
Email me with questions or just leave a comment on this blog entry.

CITCON Portland Registration Open

September 7th, 2012

CITCON Schedule in SingaporeThe Open Information Foundation is excited to announce that CITCON North America 2012 will take place in Portland, Oregon on September 21 & 22. CITCON, the Continuous Integration and Testing Conference, will almost certainly include a plethora of topics about the newest amalgamation term, Continuous Delivery. (Thanks to Jez Humble and Dave Farley for publishing their book and giving us a solid name for the evolving field!)

When we were at CITCON Singapore earlier this year we covered topics that varied from the classic, “What is CI?” to advanced techniques for testing. Some Singaporeans mentioned that the whole DevOps thing is just starting to take hold there. I am sure in no small part due to the efforts of the fine folks at the ThoughtWorks Singapore office.

In North America, though, the last few CITCON events have been focusing more on advanced Continuous Delivery topics. That does not mean that practitioners new to the field should shy away. On the contrary, they are the most important attendees in many ways. They challenge the thinking of old timers like myself. They make me re-rationalize things I take for granted, like the importance of the cup-of-coffee metric.

I enjoy witnessing the CI server evolution evident at CITCON’s North American edition. When I first approached Jeffrey about doing a 5 year birthday party for CruiseControl, I did not envision it evolving into the CITCON we have today. Thanks to Paul Hammant for helping to name the conference and pushing for a broader focus than just CruiseControl. As time passes, we see people using all the different CI platforms to accomplish Continuous Delivery. Surely, users will be present from the communities of Hudson, Jenkins, AntHill Pro (and maybe the newest addition, uDeploy), BuildForge, Bamboo, Go, ElectricCloud, CloudBees…not sure this list ever ends. Since I don’t have time to keep up with all of them, I learn boatloads about each just by listening to people tell me about their real world experiences.

I would be remiss if I forgot to mention the testers! Having emerged from the computer science/programmer/build lackey world, I find myself missing out on the hardcore testing advancements. I help my client’s quality assurance teams automate their world, based largely on the information I gain from being a part of CITCON. People like Lisa Crispin and Bret Pettichord have made their way to CITCON. Every year, I meet new innovators in the testing space.

Without testing, we would not be able to deliver continuously! And that’s where CITCON’s true power comes into play. We have the opportunity to bring together both these worlds in one room, for at least a day and a half. Many testers, sadly, do not get to spend anywhere near that kind of face time with the developers with whom they work. I love seeing that spark in a tester’s eye when they put together a plan in their head for how to help their teams back at the office.

I could go on and on, but it boils down to this. If you are a software professional that cares about delivering software repeatedly with ease and joy, then you belong at CITCON! Register now: http://www.citconf.com/portland2012/register.php

CITCON Paris Interview

October 19th, 2009
Enjoying the sites of Paris.

Enjoying the sites of Paris.

While I was in Paris for CITCON, I met up with my old buddy Julian Simpson, aka the Build Doctor. I admire what he has been doing with his blog and we always have a good time chatting about old times, the present state of the industry and where we are going.

Julian was interested in interviewing me for his site. I was interested in being interviewed.
http://www.viddler.com/explore/builddoctor/videos/1/

He also interviewed Jeffrey Fredrick.
http://www.viddler.com/explore/builddoctor/videos/2/

Jeffrey and I both talked about relationship with CruiseControl, CITCON and various industry leaders. I think both interviews are a lot of fun to watch. Julian was limited to 10 minutes, so we didn’t get to everything. Feel free to ask any follow up questions!

Cup of Coffee Metric for Continuous Integration

September 14th, 2009

How much can you learn in the time it takes to get a cup of coffee?

How much can you learn in the time it takes to get a cup of coffee?

What happens in the time it takes to get a cup of coffee can tell you a lot about the quality of your continuous integration system. Try something out for me. Commit some code. Leave your desk to get a cup of coffee, or some other tasty beverage. When you get back to your desk, do you know whether your changes were any good? No? Yes? I hope so, and so should you. It’s called the cup of coffee metric.

The idea is simple. In the about the amount of time it takes to get a cup of coffee you should be able to get information about the quality of your changes. Look at it this way. You just committed some work. You need a short break before you move on to your next task. You don’t want to wait too long, or you might find yourself surfing the web instead of writing code. So, leave your desk. Get a coffee. Take a bathroom break. See what’s hot around the water cooler. Once refreshed, return to your desk. You don’t want to move on until you make sure your last commit didn’t cause any immediate problems. A good CI system will support this behavior by giving you some feedback in about that much time.

The level of information may not be complete. Enterprise build systems are notorious for the length of their builds. Enterprise systems are also notorious for waiting to provide any feedback until the end of the build cycle. That sucks. A little information would be better than none. It might only be an initial piece of feedback, like “Your changes compiled!” If that’s all your CI system can get done in cup of coffee time, that’s better than nothing. Your CI system might tell you everything is going smoothly, only to return later to tell you something broke. No worries, sometimes that will be the case. Hopefully not always.

As a build engineer, I am going to try my darnedest to provide you with as much information as possible while you are getting your refreshment. That’s how I keep my team humming along. I might even use a “build pipeline” to help facilitate this sort of thing, but that’s an implementation detail. I am always asking myself, “What’s the most I can possibly discover about a commit within about 5 or 10 minutes from the time a developer presses the button?”

This idea came from Jeffrey Fredrick‘s real life experiences. He and I co-present on various topics. We talk about CI a lot at CITCON, of course. Invariably we discuss the cup of coffee metric when talking about evaluating CI systems. I stole the idea from him for use in my consulting. (Most of my good ideas come from our community. Thank you internet!) With his permission, I figured it would make sense to write it up for the world. So, here you go.

Enterprise CI Culture Maturity Model

September 14th, 2009

Last Friday, Jeffrey Fredrick posted my “guest” article on the Anthill Pro blog. The article reflects on a culture addendum to Urbancode’s Enterprise CI Maturity Model.

I use the maturity model. It has worked well for me. It works especially well as a communication tool with my clients. I was feeling, though, like something was missing. The aspects listed on the original maturity model were thing focused. Here’s an example, Historical Reports are listed on the Intermediate level for Reporting. Excellent point, and I agree. But that’s a thing. One could publish historical reports until they are blue in the face. If nobody looks at them, then what’s the point?

OK, so most of the maturity model implies some action, I know. I wanted to call that out a little more explicitly.

In fact, I wanted to bring out the People side of this equation. People over process, remember? Actually, People over Automation tools, should also be true. So, that’s what I did. I tried to pull together some People aspects that will help you gauge your company’s success. I hope it helps. As Jeffrey noted when he emailed the CITCON mailing list, he looks forward to seeing the maturity model continue to evolve. I do, too. I think it has the potential to level the playing field a bit and mediate the “tool wars”. Those wars cloud the real mission – working software.

Please read the full post. Feel free to comment there. I will be interested to see where we go from here.

Got CI, TDD, Pair Programming, …?

February 11th, 2008

Are you tired of fighting with management to get them to let you setup a CI server for your team?

Are you tired of tiring to prove that TDD will actually make your team developer faster?

Are you fed up with watching QA run their tests by hand, over and over again?

You need Stelligent!

At Stelligent, we are hiring the brightest minds in the industry to help us help our clients. What do our clients want? They want to do all those things that you have been trying to do at your job, to no avail.

So, join Stelligent and become part of the Agile engineering movement that really makes a difference!

Email your resume to jobs@stelligent.com

Test-Driven Everything!

November 6th, 2007

Now that I am working at Stelligent, I get to post blog entries on the company blog at TestEarly.com. TestEarly provides a wealth of information about the types of things we are doing in the industry. You might want to read through some of the back posts, including a very intriguing one by Paul Duvall on why you should fire your best people.

For a while now, I have been meaning to write up how one of my teams used FitNesse to automate testing throughout the full lifecycle of the application development process. We even convinced business analysts and customers to think about testing from day one. I hope you enjoy my first post to TestEarly on Test-Driven Everything!

P.s. Don’t worry, I will continue to post relevant information on this blog as well.

Accepted New Position at Stelligent!

October 22nd, 2007

I made the first public announcement about my new position whilst at CITCON Brussels 2007. But, today an official press release came out announcing the move.

Stelligent Logo

I am very excited to announce that I have officially accepted a position at Stelligent. Stelligent’s an innovative, small company doing cutting edge consulting on Agile, Continuous Integration, Testing and Deployment.

As some of you probably remember, the folks from Stelligent are the co-authors of the new book on Continuous Integration published in Martin Fowler’s signature series at Addison-Wesley. As I teased them at CITCON Dallas 2007, the best part of the book is the forward that I wrote… ;). Of course, the entire book is a great read!

I can tell Stelligent’s at that breakthrough point…where we are ready to go from a small consultancy to a great consultancy, leading the world with new ideas and approaches. In other words, it’s right up my alley!

CruiseControl 2.7.1 Final Release

September 4th, 2007

The final release for CruiseControl 2.7.1 has been posted to SourceForge.

Download the new release here.

Some cool things in this release include:

* Upgraded Ant bundled with CruiseControl to 1.7.0.
* RPM / Debian packager updated to include most features from the binary
distribution.
* Dashboard displays artifacts in a tree structure.
* CC-config project is now included as a link in the dashboard to use
for configuring CruiseControl.
* Basic integration mechanism for project management tools (e.g. Mingle,
Trac).
* Dashboard bug fixes.
* AllFusion Harvest plugin switch to SDK instead of command line.
* New CompoundPublisher to create groups of publishers.
* TFS support with sourcecontrol and bootstrapper.

The complete release notes are at here.

Thanks to everyone that helped make this release a success.

Contributors
* Allan Wick
* Barrett Nuzum
* Bill Wohler
* Brian Egge
* Dan Fabulich
* Dave Kilroy
* Gisbert Amm
* Ilkka Laukkanen
* Ingo Richter
* Jason R. Hull
* Jeff Jensen
* Jerome Lacoste
* Joseph Benavidez
* Lars Gehrken
* Martin Woodward
* Maxim Butov
* Nayan Hajratwala
* Nicolas Ternisien
* Paul Heaberlin
* Ram Singaram
* Robert Thornburrow
* Robert Watkins (committer emeritus)
* Szczepan Faber
* Tim Brown
* Willem Verstraeten

CruiseControl Committers
* Jason Yip
* Jeffrey Fredrick
* Hack Kampbjørn
* Dan Rollo

And the CruiseControl Enterprise Team:
* Chad Wathington
* Chris Read
* Chris Turner
* Cyndi Mitchell
* Erik Doernenburg
* Hu Kai
* Jayne Barnes
* Jenny Wong
* Jez Humble
* Jon Tirsen
* Li Guanglei
* Li Mo
* Tom Sulston
* Wang Xiaoming
* Yuan Yingjie