Did the classic CrossFit workout “Fran” this morning. It is a timed workout of 21-15-9 of thrusters and pull-ups. I had to scale to 75 lbs (for men, Rx is 95) and 15-9-6 pull-ups instead of 21-15-9. Took me 5:38.

I’m not too happy with this result but it only means I’ll be happy with my progress when I do it again in the future, I guess.

This week at work I was able to get our Varnish caching working while still being able to bucket users into AB tests and set cookies on the server. Normally Varnish won’t cache the page if a cookie is set server-side but with the use of esi:include tags it’s possible to get cookies and cache. This was very little code but took a lot of brain power to wrap my head around how it works.

The gist of it is that when Varnish forwards a request to the server, the server can hand back a simple esi:include tag with a src attribute pointing to a resource. And if Varnish already has that resource cached it will use it instead of requesting it from the server. So on every request, we can bucket a user into a test and set a cookie, and Varnish retains the ability to cache the actual content of the page.

We launch the test of this next week, so we’ll see how it goes. But we have many use cases for this, so it was fun to finally figure it out.

And now I am jamming on a little programming puzzle for a “code kata” meetup at work. We are working on this anagrams code kata. I wrote a quick sketch in JavaScript then chose to write a solution in Racket. I think I have a good solution and I really enjoyed Racket! I’m getting more comfortable with Lisp and I think my brain works well with it. Small functions, small abstractions building into a bigger program.

This morning at the gym we went for a 1 rep max on the clean and jerk. I PR’d with 165. I cleaned 175 (close to a PR for a front squat) but then hit my chin when attempting the jerk. Didn’t hurt but definitely startling and scary when you’re lifting at max effort. Oops.