I recently spent a few days at a code camp in beautiful Engelberg, Central Switzerland. The plan was to focus on refactoring our thread context, moving from Java ThreadLocals to the more modern ScopedValue approach.
Of course, things didn't quite go according to plan. Since I was also responsible for 3rd-level support, I ended up spending a fair amount of time playing firefighter and jumping in whenever tricky issues came up.
Still, I managed to make some progress. I separated our public and internal APIs into different bundles and started migrating parts of our thread-local implementation to scoped values.
But the code camp wasn't all about code. We also had time to enjoy ourselves as a team. We cooked our own food, which meant that dinner was sometimes as much of a team challenge as debugging a production issue. Luckily, nobody had to open a support ticket afterwards!
As a team event we spent an hour at a nearby driving range. So naturally we had to find out who was better at hitting a golf ball than hitting a keyboard. The competition was friendly — at least until the scorecards came out.
Between coding, cooking, golfing and the occasional support emergency, it was a great few days with the team. I didn't get everything done that I had planned, but I came home with some solid progress, plenty of laughs, and hopefully a slightly better golf swing.