21st week of 2021

Published on

Last updated on

Better daily stand-up meetings, using Parinfer in Cursive IDE, ½ kB state machine hook for React.

Table of contents

👨‍💼 Work

Better(?) daily stand-up meetings

In January, I read Critter's (Mike Crittenden) blog post Zombie standups? Try walking the board. Since then, we have been practicing sprint-centric daily stand-ups in our team. Instead of going person by person, we go ticket by ticket.

I think it was a step in the right direction. Previously our daily stand-ups were more chaotic, often not focusing on the sprint enough.

But there's a but. The downside is that there's no good opportunity to discuss ad hoc things. Critter does cover this in his blog post:

But what about general announcements the team needs to hear? After you walk the board, ask "any general things we need to discuss?" and let people speak up.

...but that hasn't worked well. Maybe opening your mouth at the end is just too difficult. For example, some people are shy (including me!).

This week we changed back to people-centric daily stand-ups. To help us keep the main focus on the sprint and its goals, I created quick filters in Jira for each person. For example, when it's my turn to speak, I activate the "Matias" quick filter so that only tasks assigned to me are showing on the board. Then it's easy for me to talk about my tasks plus state any other things I have on my mind because I'm already speaking.

The upside so far has been that there has been more ad hoc discussion, meaning more sharing of information relevant to the team.

We'll see in the coming weeks whether this "new old" way of doing daily stand-ups is better or worse.

👨‍🚀 Personal

Busy week!

I have been working on my first ClojureScript project. I'll finish it next week. That's a bold statement to make, I know, but my project has a deadline on the next Sunday, so I'm fairly certain I'll finish it. Instead of postponing the deadline, I'll just limit the scope of the project.

After that, I'll convert my cookbook recipes[1] to blog posts like I speculated last week.

👨‍🎓 Learnings

Clojure: Cursive IDE supports Parinfer out of the box

Cursive, the IDE for Clojure and ClojureScript, uses Paredit for structural editing.

Editing code in Cursive has been a hassle because I'm using IdeaVim and haven't configured keybindings for Paredit. I haven't found any good tutorials on that, so it feels overwhelming. (Otherwise I have liked Cursive when doing Clojure exercises on Exercism.)

I have dreamed of using Parinfer in Cursive. Parinfer seems so much easier to use than Paredit.

Today my dreams came true because turns out that Cursive supports Parinfer out of the box! Go to Settings → Editor → General → Smart Keys → Clojure and choose "Parinfer Smart mode" from the "Structural editing style" dropdown.

What's infuriating is that there's zero mention of Parinfer in the Cursive docs or in Cursive's GitHub Wiki. 🤦‍♂️ I have wasted so much time trying to google "cursive ide parinfer" and finding only a few mentions that "Cursive supports Parinfer" but no information how to enable that. I found the setting today by accident because I was just going to disable Paredit.

🕵️‍♂️ Cool stuff

useStateMachine: ½ kB state machine hook for React

Cassio Zen's useStateMachine hook for React is a tiny (less than half a kilobyte) package for creating state machines. Pair it with Preact, and you have a very small yet powerful bundle for creating stateful UIs.

If you are not familiar with state machines, Cassio explains them in his YouTube video Getting your act together with State Machines.

State machines are somewhat similar to reducers. From one comment by Cassio under the video:

It's similar, but with one important distinction: with useReducer/redux you can always dispatch any action, and it will always reach the reducer. With state machines, the current state dictates which transitions you can "dispatch" next.

And this small change has a big impact because it empowers you to create your own constraints in the code to make a more robust application.

In the video, Cassio uses a popular state machine library called XState, but the main idea is the same. Sidenotes:

Two more good videos by Cassio on the topic:


  1. I no longer have a cookbook section on this website: Goodbye Cookbook, hello more blog posts.

💁‍♂️ More Weekly log entries

Next week: 22nd week of 2021

Previous week: 20th week of 2021