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.
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.
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.
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.
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.
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.
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
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.
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
Sat 03 Dec 2022 17:32 EST
Cape Cod, MA (2017)
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
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
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
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.
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?
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