Categories
Leadership

How to start a book club at work

Running a book club at work is an excellent way to dip your toe into leadership. It gives you a chance to organize and run a group. It will open opportunities to mentor your colleagues and it forces you to get use to uncomfortable silence.

To get started:

  1. Put out feelers and gauge interest. This is best done through your org’s communication channel. For example post “I’m starting a book club, join the book-club channel for more info” to the general engineering Slack channel.
  2. Put together a list of books that you would like to read. There are plenty of reading lists on the web. My recommendation is to start with your list because YOU will be the driver of this group. The last thing you need is a book you hate.
  3. Pick the first book by polling those interested. I’ve used Google forms in the past to enable the group to pick a book from the list.
  4. Gather book orders. If your company has a book budget they may be willing to purchase a number of books for the group.
  5. Set the start date. Give enough time before the start date for book orders to arrive.
  6. Put together and hand out reading assignments a week before the first meeting. I have attempted to hand out assignments during a kickoff meeting but I’ve found it causes some confusion. Now I put them together hand them out early.

    To put reading lists together I do my best to divide the book into an even number of pages per week. I try to keep the divisions inline with the books chapters. I also try to balance the required pages per day with the overall number of meetings. No one wants all of their free time taken over by a book club and no one wants to attend a six month reading group.
  7. Ask attendees what they thought of the assigned reading and then shut up! The uncomfortable silence will encourage the attendees to contribute. The best book clubs I have been in are ones where I fade away as a facilitator and the group takes off.
  8. Encourage attendance even for those who did not complete the reading. You will have enough people naturally drop out or fall behind. Shaming them will just drive more away. I encourage all to come and instruct those who did not complete the reading to sit toward the outside of the room. Everyone is invited into the conversation but those on the outside are not expected to contribute. This also gives the more introverted folks a chance to just observe.
  9. Complete the reading yourself! Some meetings no one will have had the chance to read but you. If at least you do the reading you have the option of reviewing your notes instead of rescheduling. Really though, it’s best if you’re a week ahead of the group.

    I like to take notes both in my book and in a notebook. I’ll summarize the things that jumped out at me after each chapter. That way if the silence drags on too long I can pull out a reference I highlighted.
  10. Project a digital copy of the book with your highlights. This really helps with the conversation and enables everyone else to follow along.
  11. End on time. You may need to cut the discussion off if you’ve run out of time. Interject with “I’m afraid we’re out of time” and then tell the group about the next assignment.

    Don’t be afraid to end the meeting early. There’s no sense in forcing people to sit there if you’ve run out of things to talk about. Excuse the group early by telling them that you are giving them their time back.

Starting a book club isn’t hard but it does require that you dedicate some of your time. To get you started here are a few reading plans I have put together

Categories
Debugging Programming

Phaser 3 Touch Scroll on Mobile

While developing Math Command I ran into an issue where mobile users could not scroll the page. It turns out Phaser 3 captures all touch events on the canvas which prevents page scrolling.

The root cause is that Phaser automatically calls “event.preventDefault()” on all touch events. A workaround is to set “game.input.touch.capture” to false and manually call “pointer.event.preventDefault()”. This feels a little hacky but it will enable scrolling while touching the canvas on mobile devices.

var config = {
    type: Phaser.AUTO,
    parent: 'game',
    width: 800,
    height: 600,
    input: {
        touch: {
            capture: true
        }
    },
    scene: {
        create: create
    }
};

var game = new Phaser.Game(config);

function create () {
  // This prevents Phaser from applying event.preventDefault on all events
  game.input.touch.capture = false;

  var rect = this.add.rectangle(200, 200, 100, 100, 0xff0000);
  rect.setInteractive();
  rect.on('pointerup', (pointer) => {
    console.log('Pointer Up!');

    // Ensure event.preventDefault is added as it is no longer added automatically
    pointer.event.preventDefault();
  });
}

Setting capture to false in the config will also enable scroll in Chrome but will cause weird behavior on mobile devices. This is because the setting completely disables the manager instead of just the “event.preventDefault()” call. See https://github.com/photonstorm/phaser/blob/v3.22.0/src/input/touch/TouchManager.js#L246