Recent Changes

Here is a list of recent updates the site. You can also get this information as an RSS feed and I announce new articles on Twitter and Mastodon.

I use this page to list both new articles and additions to existing articles. Since I often publish articles in installments, many entries on this page will be new installments to recently published articles, such announcements are indented and don’t show up in the recent changes sections of my home page.

Privacy Enhancing Technologies: An Introduction for Technologists

Tue 30 May 2023 10:32 EDT

Making data open and available to all helps us all understand our world and are thus better informed to shape the policies to run it. But such openness does come with problems - one in particular is the invasion of people's privacy. Detailed census information about household income helps debate and planning for local government, but can reveal personal information that citizens reasonably prefer to keep private. Privacy Enhancing Technologies are tools that can finesse this problem. My colleague Katharine Jarmul is a data scientist who is also an activist for personal privacy. Here she introduces three of these tools that are usable now: Differential Privacy, Distributed & Federated Analysis & Learning, and Encrypted Computation.


Dependency Composition

Tue 23 May 2023 13:56 EDT

Developers commonly ask "what framework should we use for dependency injection". Daniel Somerfield explains why this is the wrong question, instead we should focus how to have clearly separated modules with a simple composition mechanism between them. He illustrates how he approaches this in TypeScript, with a minimalist "function-first" approach, on a simple example application separating application logic from persistence.


Emacs xref stopped working on Macs with dumb-jump

Fri 19 May 2023 12:48 EDT

Recently I found that xref in Emacs had stopped working for me on my mac laptop. Today I finally tried to figure out what went wrong. xref is just a front-end, all the work is done by backends. It took a while for me to realize (ie remember) that I was using the excellent dumb-jump package as the backend. dumb-jump uses a range of fast search commands (such as ag and ripgrep) to detect references without using the awkward tags tables that Emacs used to rely on.

The command flow between xref and dumb-jump is difficult to follow, but looking at the dumb-jump customization page alerted me to dumb-jump having a debug option. With this enabled, I could see what command dumb-jump was sending to the operating system. By default it uses git grep while in a git repo (almost everything I do is in a git repo). Its git grep command is quite complex, using regexps to (I assume) get more sensible results. I tried out the command it issued in my own terminal and it failed to find anything, while a simple git grep worked fine.

Armed with a better knowledge of what was failing, I dug into dumb-jump’s issues and found Issue with git-grep. Reading that, I discovered that a change to git grep means that how git grep processes regexes differs depending on the operating system. This would mean that dumb-jump would need to detect git-grep’s version and the underlying OS to pick the right regexes for its search.

The fix for me is to force dumb-jump to use another searcher with (setq dumb-jump-force-searcher 'rg). With that my xref commands worked again.

Using ChatGPT as a technical writing assistant

Wed 26 Apr 2023 10:49 EDT

My colleague Mike Mason is an experienced software developer and architect. He's also an skillful writer, with a couple of books under his belt together with plenty of writing for Thoughtworks, including a regular macro-trends article and contributing to the Thoughtworks Technology Radar. In the last couple of months he's been experimenting with Large Language Models (LLMs) both for programming and prose writing. Here he focuses on the latter, sharing how he's been able to make effective use of ChatGPT.


What Does a Technical Author Look Like?

Mon 24 Apr 2023 13:30 EDT

While working with my colleague Mike Mason on a forthcoming article, we asked Stable Diffusion to come up with portraits of technical authors. We thought the results were worth sharing.


An example of LLM prompting for programming

Thu 13 Apr 2023 09:30 EDT

A couple of weeks ago I watched a fascinating Zoom call hosted by Xu Hao, Thoughtworks's Head of Technology in China. He showed an example of how he uses ChatGPT to help him code in a self-testing style. His initial prompt primes the LLM with an implementation strategy (chain of thought prompting). His prompt also asks for an implementation plan rather than code (general knowledge prompting). Once he has the plan he uses it to refine the implementation and generate useful sections of code.


Slack in your plans

Tue 04 Apr 2023 10:30 EDT

Recent discussions with my colleagues showed that many software teams still run into trouble because they pack too much planned work into their iterations. Teams will usually run better when they have deliberate Slack, as it allows their delivery to be more predictable and gives them time to improve their environment.

While writing that bliki post, I also defined two styles of task planning in agile projects. Timeboxed Iterations are used to break up work into small chunks with a regular cadence to reassess the work and future plans. Using a little ceremony around allocating work to iterations helps make problems visible so that they can be dealt with properly. Continuous Flow dispenses with that ceremony, so skilled teams often prefer it.


Brass Birmingham becomes #1 on BoardGameGeek

Wed 01 Mar 2023 14:28 EST

A couple of weeks ago Brass Birmingham became the 8th game to top the ratings on BoardGameGeek - here's why I like it so much


Shaky Twitter Two-Factor Authentication Interaction

Sat 18 Feb 2023 08:13 EST

Accessing Twitter this morning, I was greeted with a prompt saying that they were getting rid of text messages as a form of two-factor authentication unless you subscribed to Twitter Blue. I thought “fine”, because I don’t use text messages for that, preferring a one-time code managed by 1Password. I clicked through and it told me it had removed the text message two-factor that I didn’t have, and would I like to set up something using a one-time code or hardware dongle? It seems that Twitter had mistakenly deleted my one-time code link.

I don’t think this is a huge deal, as I just set up another one-time code. But it’s the sort of thing that reinforces the impression that bits are steadily falling off Twitter.

Whatever anyone thinks of this, I do urge readers to use two-factor authentication on any important service. While SMS two-factor authentication is better than none at all, it does suffer from some significant vulnerabilities. The better way to do two-factor authentication is to use one-time codes, which are generated by an program that supports them. I use 1Password for this, but there are other alternatives. Twitter currently supports one-time codes without needing to subscribe to Twitter Blue.

Modularizing React Applications: fixing Shotgun Surgery

Thu 16 Feb 2023 10:49 EST

Juntao Qiu completes his article on modularizing react applications by identifying that the last change smelled of Shotgun Surgery and taking the steps to fix it.


Retrospectives Antipatterns

Wed 15 Feb 2023 10:18 EST

Retrospectives are a key element for effective software initiatives, as they allow a team to learn and improve. However, like any good practice, it's easy for teams to make mistakes that undermine their value. Aino Corry has many years facilitating retrospectives and has run into many common problems and how to solve them. Three of these skipping generating insights, getting lost in things you can't change, and being dominated by a loudmouth.


Modularizing React Applications: adding a new feature

Tue 14 Feb 2023 09:53 EST

Juntao Qiu now demonstrates how the refactored structure helps him deal with adding a charitable donation to the order and how this change prompts some further refactorings.


An example of modularizing a React application

Wed 08 Feb 2023 10:44 EST

Juntao Qiu illuminates his general description of modularizing a React application with a small example of presenting a user a dynamic set of choices.


Comparing Engagement on Twitter and the Fediverse

Tue 07 Feb 2023 14:09 EST

My colleague Julien Deswaef recently compared engagement data for my Twitter and Mastodon posts. From this we can see that boosts and comments are very similar. Twitter does get significantly more likes, but considering I have nearly 20 times more Twitter followers than Mastodon, it’s a remarkably small difference.


Modularizing React Applications with Established UI Patterns

Tue 07 Feb 2023 09:22 EST

I've been working in front-end software for over three decades. A perennial problem has been mixing non-UI logic into the UI framework itself, leading to code that's both hard to understand and near-impossible to test. Despite being the hot new thing, React is just as vulnerable to this problem as Swing and Turbo Pascal. My colleague Juntao Qiu writes about how to untangle such a mess. In this first part he gives an overview of how a React application can evolve into a better modular structure. Later parts will dig into a small, but representative example.


Exploring Mastodon: status for February 2023

Fri 03 Feb 2023 17:52 EST

I haven't posted much on my Mastodon usage in the this year, and that's because the situation has settled down for me. Reading-wise I check both my Twitter and my Mastodon accounts. I'm still posting to both feeds and intend to do that for the foreseeable future. I haven't yet done much analysis to compare activity between them.


Remaining activities for the Data Mesh Accelerate Workshop

Thu 12 Jan 2023 10:13 EST

Paulo Caroli and Steve Upton complete their description of the Data Mesh Accelerate Workshop by explaining the rest of the workshop's activities: Objectives and Key Results, Explore the Use Cases, and Discovering Data Products.


My favorite musical discoveries of 2022

Thu 12 Jan 2023 08:50 EST

I continue my habit of picking out six favorite musical discoveries for last year. 2022 includes big-band techno, Mediterranean fusion, afrobeat in England, jazz-folk vocals, and accordion-led jazz trio.


Some activities for the Data Mesh Accelerate Workshop

Tue 10 Jan 2023 09:21 EST

Paulo Caroli and Steve Upton continue their article on the Data Mesh Accelerate Workshop by describing some of the activities that we do during workshop: Kick Off, Data Mesh Four Principles, Data Mesh Nirvana, and 4 Key Metrics.


Data Mesh Accelerate Workshop

Thu 05 Jan 2023 09:20 EST

Over the last couple of years, we've been helping several enterprises use the Data Mesh approach to managing analytical data. Shifting thinking to Data Mesh isn't easy, it changes how teams are organized, how work is prioritized, and what technologies to apply. To help our clients do this Paulo Caroli and Steve Upton describe the Data Mesh Accelerate Workshop, a four half-day program to align people involved in the effort and explore the process for identifying and building data products.


Finding accounts to follow on Mastodon

Sun 18 Dec 2022 18:16 EST

My latest post on Exploring Mastodon looks at how I go about finding people to follow on a site without an algorithm that tries to pick posts for you.


Installing Orbi Wifi Mesh broke my Sonos

Wed 07 Dec 2022 10:22 EST

I listen to my music using a wired set of Sonos One speakers. Last week I upgraded my wifi by installing a Netgear Orbi Wifi Mesh. After doing this my Sonos system no longer worked properly. After much hunting I managed to find the problem, and it was a simple fix. So I thought I'd share my story in case others run into a similar problem.


The impact of a product delivery culture at Etsy

Tue 06 Dec 2022 09:40 EST

Tim Cochran completes his tale of how Etsy build a product delivery culture to help clear bottlenecks as they scaled. He discusses lean portfolio management, stronger product and engineering collaboration, and assess the impact of this initiative.


photostream 129

Sat 03 Dec 2022 17:32 EST

Cape Cod, MA (2017)

Introducing a product delivery culture at Etsy

Thu 01 Dec 2022 10:10 EST

A second article exploring the challenges Etsy faced as it scaled up. Tim Cochran relates how CTO Mike Fisher identified problems with the product delivery process, built a cross-functional Product Delivery Culture team to analyze the situation, and began an improvement program based on lean thinking and the ideas of Marty Cagan.


Consequences of Etsy's move to the cloud

Tue 29 Nov 2022 09:48 EST

Tim Cochran and Keyur Govande conclude their description of Etsy's cloud migration by looking at challenges, the impact of the Covid-19 pandemic, how they continue to learn to improve their cloud usage, and their measurements of cost and carbon consumption.


Etsy's observability and ML infrastructure teams moving to the cloud

Tue 22 Nov 2022 09:46 EST

Tim Cochran and Keyur Govande continue their account of how Etsy used the cloud to scale up by describing the journey of two teams: observability and ML infrastructure


Using the cloud to scale Etsy

Thu 17 Nov 2022 09:01 EST

Etsy is a well-known marketplace for craft items. The pandemic led to a huge spike in growth, growing from 46 million buyers to 90 million buyers in two years. Etsy coped with this, with no bottlenecks in the business. One aspect of how they did this was a shift to Google cloud. Tim Cochran and Keyur Govande begin this story by describing the strategic principles that guided this effort and the incremental federated approach that they took.


Using CWs

Wed 16 Nov 2022 10:50 EST

One of the new features on Mastodon for a recovering twitterer is the CW field for new posts. CW stands for Content Warning. When I’m composing a post, if I press the CW button, I have the option of putting a short phrase into a dialog. Readers will initially only see that short phrase, and need to click a button to see more. But there's a lot of strong opinions on when and how to use it - how do I navigate that?


Multiple Mastodon Accounts

Tue 08 Nov 2022 19:44 EST

The usual Twitter convention is to follow the whole person, meaning one Twitter account for a person would tweet on many different subjects. In the Fediverse, however, that's not encouraged, so we'll see many people having multiple Mastodon (and other) accounts.s