(clj 9) How to figure out what a function does

Chapter 4 of “Clojure for the Brave and True” concludes with a Vampire Data Analysis Program, serving as a summary of the chapter. The book shows some code, explains it, moves on to the next bit of code, etc. I’m not sure why, but I decided I wanted to figure out the code on my own and then read the explanation to see if I got it right. Afterwards I realized it might make a good blog post: both explaining what the program does and what techniques (for lack of a better word) I used to figure it out.

With most of the work in the program being done by a function called mapify, this blog post will focus on that single function. As it turns out, it took me more than 2000 words (footnotes not included) to describe what this function consisting of only 9 lines does. So feel free to read all of it, skim through it, or skip straight ahead to the techniques and some reflections.

Read more…

(clj 8) Some notes on lazy sequences and function parameters

Almost done with the chapter 4 “Core Functions in Depth” of “Clojure for the Brave and True“! Before wrapping up the chapter with a longer example, a summary, and some exercises, the book goes into lazy sequences, the collection abstraction, and function functions. In this post I will share some notes on infinite lazy sequences and function parameters, making comparisons between Clojure and Python.

Infinite lazy sequences

A lazy sequence is a sequence whose members aren’t computed until you try to access them. One advantage is that it’s more efficient: the whole sequence doesn’t have to be calculated and kept in memory from the start. Another advantage is that it allows you to create infinite sequences. Do that with a normal sequence and your program would never want to stop calculating.

Read more…

Structuring group discussions with K-cards

K-cards are often used at peer conferences to facilitate the discussion after someone has presented their experience report. Some people really hate them. In my experience they’re a great tool to enable rich conversations. Since the facilitator uses the K-cards to structure the discussion in threads, K-cards allow the group to drill down to the details of the experience report. This instead of the conversation jumping around as person 1 broaches topic A, person 2 introduces topic B, and person 3 wants to return to topic A.

The explanation of these K-cards often takes the form of “This is what each card means.” instead of “This is when to use this card for what purpose.” And despite the elegance of the K-cards system, when you learn about them during the opening of a peer conference, it’s a lot of information to digest. So I hope this blog post will be useful as a written explanation of how to use K-cards.

Read more…

Uncovering Agile micro-skills at FroGS conf

At the second FroGS conf Open Space on 12 March 2022 I facilitated a session based on my blog post “Four skills to embody the four Agile values”. My goal with the session was to uncover more Agile (micro-)skills. In this post I’ll share what we did during the session and I’ll close off with some thoughts on the biggest challenge of this exercise: too many skills. Before I start however, a big thank you to everyone who participated in the session!

What we value

I opened the session with asking people to add stickies to the board of things they valued in Agile software development. When was I preparing the Miro board before the session, I labeled this part of the board “values”. Then I remembered I had decided earlier to label it “what we value”, so as to avoid the discussion about what values are and aren’t. The topic did come up (i.e. the relation between values, ethics and morals), so I was glad I could respond by saying it’s a great topic, but not for this session.

Read more…

Four skills to embody the four Agile values

If you’re familiar with the Agile Manifesto, you’re familiar with its four values:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Recently this made me wonder: how do you apply these values? How do you live them? What skills do you need to embody them? In this post I won’t be sharing any definitive or complete answers, but as a starting point I have identified four skills needed to embody the four Agile values.

Read more…

From tension to agreement with Sociocracy 3.0

Earlier this month I started my new job at a small consultancy. During my onboarding I noticed something that I thought could be improved. So I figured I should come up with a proposal to address that. It also made me wonder how me proposing this improvement would go over with my new colleagues. And then I remembered I learned about a good way of doing this in a workshop1 at the 2016 XP Days Benelux conference. That workshop was about Sociocracy 3.0 (S3 for short). So I ended up proposing two things in the meeting: my improvement, but also a way to come to an agreement about my proposal.

The reactions to my proposal about how to come to agreements, were mostly positive. One person asked a very good question though: “Is this solving a problem we are having? Or is this a solution looking for a problem? What would be the reasons for adopting this?” In response I expanded on my reasons for wanting this and we decided to give it a try. My dual proposal helped here: let’s try the S3 patterns I shared on the improvement I proposed.

Looking back, I’m happy with my reply to those questions and I also feel I can do better. Which makes this the perfect opportunity for my first blog post of 2022. I’ll start with a brief introduction on Sociocracy 3.0, then I’ll share the proposal I made based on S3, and finally I’ll talk about why I like this form of decision-making.

Read more…

Site analytics: if you have two watches…

When I moved my blog to this site, I added Clicky as a privacy-friendly way to collect analytics. About a month ago I added Plausible analytics, because I wanted to compare the two.

My reasons to consider an alternative to Clicky, and Plausible in particular, were varied. Plausible looks nicer. Clicky’s free plan only lets you track one site, I want analytics for this site and for my Context of Agile site. I’d like to have more than 30 days of history for my data. Those last two wishes require a paid plan (regardless if Clicky or Plausible) and Plausible is cheaper than Clicky.

So I got a 30-day trial with Plausible, added its script to my site, while Clicky also kept collecting data. With the trial now over, it’s time to take a look at the data they both collected over the period from 28 November to 27 December 2021. I’ve added some thoughts after each table with data and at the end of this post I’ve added some more general thoughts.

Read more…

(clj 7) Programming to abstractions with sequence functions

Looking at my progress so far, I realized it’s time re-evaluate this whole learning Clojure-thing. After looking through the table of contents of “Clojure for the Brave and True” and giving it some thought, I decided to make two changes to how I’ll proceed:

  • I will start writing shorter posts and write them more often.
  • My goal is to finish “Part II: Language Fundamentals”. I don’t have to do “Part III: Advanced Topics”.

Completing Part II will still take quite some work. I’ve worked through the two first sections of chapter 4 (5 sections left in that chapter) and Part II goes up to chapter 8. So no time to waste: let’s take a look at sequence functions and programming to abstractions.

Read more…

How to run a remote Elephant Carpaccio

In a previous post I promised to write a blog post on how I would run remote Elephant Carpaccio if I get the opportunity to run it a third time. This is that post, but not exactly. In the mean time I got the opportunity to run the workshop one more time. That gave me the opportunity to try out some new things and write this blog post on how to run a remote Elephant Carpaccio.

I should be clear on one thing, though. This post is not a full facilitation guide. It can’t be with the limited experience I have. I do hope and think that reading the official(?) facilitation guide and this blog post, gives you a solid base to start running the Elephant Carpaccio exercise remotely yourself.

The preparation

Take your time to prep. Taking as much time as the duration of the workshop is a good start. (That’s assuming you are already familiar with the Elephant Carpaccio exercise, though. So if you’re not, do that first.) Get a clear picture in your head what you want to achieve with the workshop. Run through it in your mind in detail. Decide which options you have in which parts of the workshop to make changes as the workshop happens.

Read more…

Lessons learned after facilitating remote Elephant Carpaccio

In my previous blog post I shared my experience of facilitating remote Elephant Carpaccio twice. In this second post I want to share some things I learned through that experience that apply to facilitating remote experiential workshops in general.

The facilitation guide

The Elephant Carpaccio exercise has a detailed facilitation guide, created by Henrik Kniberg and Alistair Cockburn (also inventor of the exercise). This guide really is a blessing and a curse. It’s great to have guidance on how to run the exercise. However, there’s also only so much such a guide can do. As I was writing the blog post of me running the exercise twice, I looked at the facilitation guide again, and it made so much more sense to me. Instead of it being instructions about something new, I could connect the contents to my own experiences. And that experience does make me wonder how advisable it is to facilitate an exercise you have never done or seen based on a luckily excellent and very detailed faciliation guide.

The level of detail in the facilitation guide also had me walk into the trap of relying on it too much. Instead of taking my own context fully into account, I though I could follow the guide with a few tweaks. As you could read in my previous post, the first time I ran the exercise, it got away from me a little. In this sense I find it interesting that Oliver Spann seems to have had a similar experience facilitating Elephant Carpaccio for the first time:

Read more…