Comments in the moderation queue: 0

Recently posted comments:

Thanks for the feedback! I wish I could offer hard-won advice about overcoming objections and trying a new thing. But as a consultant (or on a coding tour) I’m an outsider. That means I’m playing “influence people’s behavior” on easy mode. It was even easier than usual at BREDEX, because Alex had planted seeds of mob programming a while ago, a couple teams had even already tried it, and she had prepared everyone to understand what it would be like and when they’d be doing it. When people aren’t sure they want to try something, or are sure they don’t, I haven’t found it effective to try to talk them into it. Listening to them, if they’re willing to explain why not and explain it to me, can help — provided I promise not to try to persuade them, only to try to understand their point of view. I always want participation to be voluntary. If what some of us are doing looks fun and effective — and mob programming quite often does — some folks who were on the fence may decide to come watch. Maybe even try it. That’s the best overcoming-objections advice I can give, on any subject.

My best advice for introducing a team to the concept:

  • Remove any feeling of delivery pressure (for instance, by making clear there’s slack in the schedule)
  • Choose a real problem the business needs solved
  • Choose one that’s relatively complex, such that most folks on the team would not want it assigned to them alone
  • Have a whiteboard for writing down whatever you notice as you go (as mentioned above)
  • Two hours a day is a lot; leave plenty of time to decompress and continue working in other ways
  • Be ready for what might happen when team dynamics go under the spotlight
  • Be ready for what might happen when an impediment comes up, because it could block the entire team
  • Bring in an outsider who’s an experienced facilitator, if you can
  • Else become one as quickly as you can, leaning on The Mob Programming Guidebook (Pyhäjärvi and Falco) for what to pay attention to and patterns that have worked

I’m probably forgetting something. Get the book. It’ll fill in the gaps. Best of luck, and let us know how you get on!

Comment by Amitai Schleier August 3, 2018 at 11:44:05 AM EDT
Very much enjoying this series! Hearing about all the mob programming opportunities is making me very jealous. Thankfully I have my own plans in the works to train some newbies with mob programming. Would love to hear more about how the mob programming went, especially how you overcame objections and tactics for facilitating groups who are new to the concept.
Comment by Aaron Myatt July 24, 2018 at 10:43:49 PM EDT

After limping through a few manual Let’s Encrypt renewals — sometimes too late — I’ve scripted it with acme-tiny. Each user that wants SSL creates $HOME/.letsencrypt. For each site that wants SSL, they create letsencrypt/{cert,service} subdirectories. A shared lighttpd config fragment handles the Let’s Encrypt challenge URL. letsencrypt/service/run looks like so:

#!/bin/sh

exec 2>&1
while true; do
    letsencrypt_create_or_renew schmonz.com mail.schmonz.com www.schmonz.com
sleep 1200000
done

Most sites provide only one argument to letsencrypt_create_or_renew. This service directory is then symlinked into $HOME/service. Since my system upgrade script runs svc -t /home/*/service/* (as threatened in the previous comment), these run scripts get restarted approximately once a week. If I skip a system rebuild, that’s fine for SSL purposes: letsencrypt_create_or_renew doesn’t bother talking to Let’s Encrypt servers anyway, unless the cert is more than 15 days old. Once a month, a system cronjob restarts all SSL-aware services, thereby reloading any certificates which may have been updated. Since Let’s Encrypt certs last 90 days, this is probably more than enough automation. I’ll check the logs (and cert expiration dates) in a month to make sure.

Comment by Amitai Schleier March 11, 2018 at 02:06:38 PM EDT

When I upgrade my server every week, one of the things I haven’t been doing is to restart all the various site-specific web server instances. Since they started from cron via @reboot entries, I hadn’t given myself a programmatic way to bring the processes down (or back up).

I’m a big step closer, because the crontab entries have been replaced with daemontools. My setup:

  1. The system starts an svscan /var/service as root (from /etc/rc.d)
  2. The services in /var/service are per-user instances of svscan $HOME/service
  3. The services in each user’s $HOME/service correspond to what had been in their crontab

With a small shell script, I can then enumerate all the non-root svscan instances, along with the user-managed services they supervise:

:; sudo lsvscan

/var/service/svscan-schleierdav: up (pid 97) 7528 seconds
  /home/schleierdav/service/apache.photos.theschleiers.com: up (pid 476) 7527 seconds
  /home/schleierdav/service/gallery.photos.theschleiers.com: up (pid 505) 7527 seconds

/var/service/svscan-schmonz: up (pid 105) 7528 seconds
  /home/schmonz/service/agilein3minut.es: up (pid 202) 7527 seconds
  /home/schmonz/service/implemications.com: up (pid 500) 7527 seconds
  /home/schmonz/service/schmonz.com: up (pid 726) 7527 seconds
  /home/schmonz/service/theschleiers.com: up (pid 170) 7527 seconds

/var/service/svscan-shapemywork: up (pid 98) 7528 seconds
  /home/shapemywork/service/shapemywork.com: up (pid 309) 7527 seconds

Now I can probably just add svc -t /home/*/service/* to my weekly upgrade script.

Comment by Amitai Schleier August 6, 2017 at 12:49:49 AM EDT

After all that, I needed Apache again. Just a little bit.

Comment by Amitai Schleier June 29, 2017 at 06:21:06 PM EDT
I’m happy for the three of you (and Haskel)!
Comment by Jeff Hoover June 14, 2017 at 07:28:20 PM EDT

Congratulations!

We were reminiscing about your past visit to BSDCan at this year’s event. Now I definitely know why you weren’t there!

Best wishes to you and your family!

Comment by Greg A. Woods June 14, 2017 at 06:29:03 PM EDT
This is wonderful and so much goodness in one lovely package. Maze tov!
Comment by Abbe June 14, 2017 at 02:29:15 PM EDT

@jim :) Thanks for elaborating :) And you made me reflect - so if I am contacted by a conference without a code of conduct, I will consider it :)

Yes we sometimes have a small group who shout loud and set the tone. I have not (yet?) met any of the CoC militants.

I am not sure what tools we can use though… Something needs to be done.

Comment by Nativewired May 26, 2017 at 05:50:26 AM EDT

@Nativewired: I’m sorry I didn’t make my point about CoCs and militants clearer. I tried to frame it that much of the initial impetus of “Don’t attend unless there’s a CoC” was started, and blown out of proportion IMO, by a small, vocal crowd.

I realize and respect there are others with that mindset who aren’t militant. Unfortunately, folks with that mindset lose out on participating in some wonderful conferences which thoughtfully choose not to have a CoC yet emphatically set the expectation of a safe atmosphere that promotes learning, participation, and open discussion.

I disagree they’re a useful tool. I am fine with you thinking they are. :) Cheers.

Comment by Jim Holmes May 25, 2017 at 07:00:41 PM EDT