Definition of Done

This varies depending upon what type of project you are working on.

If you have a website this can be reduced to: how do I know this is working in production.

If you are shipping products for other people to deploy then a test deploy should be enough.

Using Tmux

I have started experimenting with using tmux in my development flow.

There are plenty of other articles on how to install and use Tmux. I have been working through the Tmux 2 book

It starts out as a tool that allows you to perform terminal development from a keyboard. After a while you end up turning a terminal into a multi-tab IDE.

Why did I start looking at this? For about a year I had been using Warp as an improved terminal. It’s a multi tab terminal that has slowly grown AI features (which I can’t use at work due to regulation, and now has bring-your-own credits) and an internal IDE (which I dislike due to my practice of using autosave). I have moved to ghostty as the main terminal.

Here is my personal-config setup

Tmux has the concept of sessions, windows and panes.
Sessions and windows (PREFIX c to create, PREFIX , to rename, PREFIX w to list) have names.
Windows can be split into panes.(PREFIX | or PREFIX -)
Panes can be zoomed into (PREFIX x).

This means that when working on a new task I can create a window and name it after the task that I am attempting to solve. This is very powerful especially if you get as many distractions as I do!

The Consultants Question

What problem are you trying to solve?

This is the key question that should be asked every time that someone is asking you for help with something. Frequently requests for help are to do with the details of a problem. Without knowing the context of the problem you may be working on the wrong thing.

MF Global Bankruptcy: a real world Jarndyce v Jarndyce

On October 31, 2011 MF Global filed for bankruptcy.

On July 27, 2026 I received the latest update listing the 3rd and final distribution to the unsecured creditors. This is strange as the letter states the balance due is zero.

MF Global was only spun off as a distinct business in 2007. Thats 4 years of trading and now 14 years of bankruptcy.

KPMG arrived en-mass to take over the company. Anyone without a support role was instantly dismissed. I heard horror stories of the way the accounts were settled. KPMG would give instructions to the remaining mangers who then told the staff to act. No information ever flowed up. MF Global was the first big case after some new legislation had come in so KPMG wanted to  build the process. It helped that their offices were only 4 buildings away.

In the 3 month extension I had 3 days when any work was required. We started off using our Pluralsight accounts to train at x2 speed. We then started taking phone interviews at our desks. This even allowed is to pass around details of failed interviews to other candidates.

The day after the bankruptcy I got a rather odd call passed through to my desk by reception. Aparently ‘America’s Next Top Model’ wanted to talk to me. This was obviously a recruiter who had paniced when asked who was calling.

We managed to arrange some group meetings with recruiters (one of which set up a session in a nearby pub and bought us all lunch).

Apple is not good at design anymore

I just bought a new apple laptop. At the checkout I was told that the power adapter is a distinct item that I need to buy.

This would make sense if the power supply were a commodity item like for a mobile phone. However Apple decided to require a custom magnetic plug and needs a 70w supply. You can’t argue that you are using standard components then require  a custom one.

There is not even the option to buy a sensible setup where the adapter is a distance from the plug.

I don’t bother with the apple mouse, which has the charging point on the underside so the mouse cannot be used while charging.

Using Copilot for development

I have generally had good results when asking about details of a large codebase. Having tests keeps everyone honest. It may not always get the right answer on the first try and sometimes only does a partial job (find all other instances like the fix you just made).

Things go wrong when working with new external APIs as the AI will have read pote tial fixes that were never implemented. I have found that asking to see the documentation for a feature is a good way to avoid guesses.

Domains and Growing Pains

In the life of any growing software based company you eventually need to split along domain lines. That way each team can master the area in thier domain.

This does have consequences during and after the split. Who owns what? This has two problem areas: things that belong to multiple teams and things that belong to no one.

Eventually data will end up in an analytics database (sometimes called a data warehouse). The question I have for you is: When was the last time that you checked that this database is accurate?

If many teams are passing data to a system how do you ensure consistency?

Unstable Tests

You know the ones. The tests that pass 93% of the time and always on the second or third run.

There are several solutuons to this problem.

  1. Ignore and rerun
  2. Keep tabs and invest in fixing on the third try
  3. Aggressivly fix them, frequently asking AI how to recreate the issue.

I have recently started on the third path. Unstable tests kill productivity. They will break when you don’t have the time to spare. Remove them mercylessly.

Lessions from games

I play varuous games in my spare time.

Merge Dragons is the one I have been playing longest.

The weekend chsllenges generally involve trying to assemble large items from components that you can mine. This forces you to build a pattern so that you merge the right items at the optimal level. This teaches several of the theory of contraints topics such as reducing wait time at a critical item. In particular you don’t want your dragons to waste time travelling to drop what they mined.

The timed challenges get you to focus on what you need to do. You don’t need to collect everything on the board, just what you need to hit the goal.

GDPR compliance is not hard

The GDPR is a EU ( and now UK law) that relates to handling of Personal Information.

The idea is that individuals own their own data and that it can only be used in ways that they had agreed to use. If you want to use data you need to seek permission and tell the user what you are using it for. Users also have the right to opt out. This does not have to be instant, so extracting your list a month before an email is sent would be fine. Doing so six weeks or more is not.

It includes details that data use must be opted in to. In several cases recently I have seen surveys sent out that have the “add me to your mailing list” autochecked. This is specifically not allowed.

You also can’t pass PII to third parties without either a good business reason or with permission. A good business reason would be passing a delivery address for shipping a product. A bad reason would be selling details to a third party to update a marketing database.

You can also only use the data for the requested purposes. For example Facebook asked for my phone number for account recovery purposes. It would have been a violation if you got a phone call from a market research company on that number.

GDPR has teeth. The fine can be 4% of your global income. Note that is income, not profit.

All that is required is having good practices.