Tag Archives: Opinion

Is git too hard

I stumbled across “On git and cognitive load” and it got me thinking. That post led me to “Oh shit, git!?!” and that got me thinking further.

But first, a disclaimer: this is a post more about having perspective than providing answers. If I knew a better way, I’d be doing it.

The first blog argues that git is difficult to use. Further, that it was designed with the limitations of the time and that those limitations are no longer valid constraints. A decentralised system was required when poor network connections were the norm. Now we have cloud providers and ridiculous amounts of bandwidth.

The second post notes that people keep getting themselves into a bind, with some helpful tips on extricating yourself from those situations.

The fun thing to note here is the kinds of problems that we need to solve with git:

  • I missed a file from a commit
  • I put the wrong commit message
  • I put committed a change on the wrong branch
  • I need to remove a commit

To me, the fascinating thing about all of these things is that in the systems that came before git, it wasn’t possible to do any of them. Once you made a commit in Subversion, that was it. It was in the repository and immutable1.

Missed a file from a commit? Shrug

Committed something you shouldn’t have? Tough2

Also, in the late 2000s, when git was just starting to take off, an argument against switching was that the commit history was not sacrosanct; the record could be changed. Subversion’s behaviour was a feature not a bug.

In the next decade, we’ve changed mindset so much that the ability to change a commit is now expected, even when we know that it can cause problems.

Similarly, while git’s distributed nature certainly adds to its complexity, it’s both fantastically useful and not a source of its worst behaviours. I can sit on a plane with no internet access and still have most features. I can move my repo between cloud providers or host my own. When my broadband or AWS goes down, I can continue working.

Maybe rather than move to a proprietary, cloud-based source control system — which is what the author of the first piece is really advocating — we should remember what we gained when we moved last time.

Git is tricky. But rather than return to a centralised system maybe we should fix git’s user interface. Being able to fix past commits is useful, though we we should be able to do so without messing up our code or, especially, the code repository.


  1. As ever, it was always possible to hack the repo but in my experience this was frowned upon. ↩︎
  2. I do remember a time when someone committed a password. It took a lot of time and expertise to scrub it from the history. ↩︎

The Count of Anti-Crypto

  1. The underlying technology, blockchain, might have uses but a currency isn’t it
  2. Many crypto experts were surprised when governments said that profits from trading in digital currencies were taxable in the same way that as any other capital gains. Why would this be a surprise?
  3. They also claim that it’s great because it’s decentralised. Except, a few companies do a vast percentage of all business meaning that in reality it’s not very well distributed
  4. Much of traditional financial services is not centralised either. There’s no “exchange” for currency trading, for example
  5. The lack of regulation in crypto is considered an advantage, right until the point that one of the few exchanges (see above point about decentralisation) is in trouble and stops accepting sell orders. Regulation is there for a reason
  6. Decentralisation is supposed to democratise trading. Except, trading in crypto is surprisingly expensive. And, just like traditional finance, quickly gets complicated
  7. And it’s slow
  8. Many of crypto’s biggest promoters are economically illiterate
  9. It’s basically a pyramid scheme
  10. Many crypto “experts” claim that it’s possible to reduce the risk of transactions with certain complications. They tend not to use the word “hedging” which is what this is. It’s something that the “old-fashioned” financial services companies have been doing for ever
  11. It’s almost like they don’t understand traditional financial markets
  12. They says it’s progressive and about freedom, but it entrenches existing hierarchies, if anything, more effectively than the existing systems
  13. Except for the use of blockchain, there’s not a lot that’s new. For traditional financial services, regulation means that the worst scams are banned for retail inventors. The “Wild West” of crypto isn’t a feature
  14. And no, this piece is not intended as a defence of the traditional financial services companies or their regulators. They are far from ideal

Generalist Software Engineering

I greatly enjoyed Graham Lee’s series of posts about specialisation versus generalisation in software engineering1, quite possibly because it’s me.

My background is a little different from Lee’s, though, so I thought it was worth sharing.

I have a two tier experience2. With a few minor blips, Unix has been a constant technology underpinning since my first year at university. I started using Linux around the time 1.0 was released. I got a Mac when — or possibly before — OS X was ready for mainstream use because it was Unix with a nice UI. At work I’ve seen the change from big Solaris and HP-UX machines, to Linux, to containerised applications (which are normally based on minimal Linux distributions). Sure, the different Unix variants are not exactly the same, but most of them have something bash-like and ls does the same thing everywhere, even if the more esoteric options vary.

I should say that this is largely a preference. I don’t like Windows but that’s not an objective criticism. I do joke about it from time to time3 and I do admit the limits on my knowledge, but I don’t refuse to work with it!

Sadly, being a long-time Unix user is not a career.

I started my career at a “pure” consulting company. Each client I worked with wanted to do something different and I ended up using varied technology stacks. This was great from a “generalist” point of view. I flitted from Uniface to PL/SQL to Perl to Oracle Applications4, but beyond abstract concepts like “problem solving” I didn’t get anything like a transferable skill. The obvious path would have been management but that wasn’t where I wanted to go. I saw friends and colleagues specialising, and earning considerably more money for the privilege.

I appreciate that I’m likely leaving money on the table, but I stumbled on a solution that works for me: being part of the field engineering team of software vendors.

Being in the field team means that I work directly with customers and they end up wanting to do all kinds of things. In a year I can work with dozens of use cases, satisfying my need for novelty. At an end-user, I’d be looking at a small number of use cases the whole time.

At the same time, there is also a degree of specialisation. By working with the same product all the time, I can become The Expert in it and some adjacent technologies. For example, I’m pretty good with Kubernetes and Java these days. I need to write code and sketch out software architectures. My knowledge has to be deep enough to demonstrate credibility but I don’t have to build production code. Additionally, I can bring domain expertise. I wouldn’t sell myself purely on my banking knowledge, but it’s a nice value add.

This may not be the solution for you. There may even be better options for me that I’ve not found yet! But I thought it was worth documenting my experience, since most of the articles I’ve seen are for more traditional “software engineering” or management roles. Other positions are out there if you know where to look.


  1. Though I wasn’t able to write anything about it in a timely manner! ↩︎
  2. Maybe second tier too, but in this case I mean there are at least two layers. ↩︎
  3. There’s a Dilbert cartoon I use occasionally. This from before Adams went off the rails. ↩︎
  4. Whether you’d want to make a career out of any of those technologies is a different story. ↩︎

The Computers That Made Britain

I’m still fascinated by the computers of the eighties. Without well known standards, every machine was different, not only from those of other manufacturers but also older machines from the same company. As as user it was terrible. Back the wrong horse and you’d be stuck with a working computer with no software and no one else to share your disappointment with.

But looking back, there’s a huge diversity of ideas all leaping onto the market in just a few years. Naturally, some of those ideas were terrible. Many machines were rushed and buggy, precisely because there was so much competition. Going on sale at the right time could make or break a machine.

Tim Danton’s “The Computers That Made Britain” is the story of a few of those machines.

He covers all the obvious ones, like the Spectrum and the BBC Micro, and others that I’ve not seen the stories of before, like the PCW8256.

While it’s called “The Computers That Made Britain” rather than “Computers that were made in Britain,” I would argue with some entries. The Apple II is certainly an important computer but, as noted in the book, they didn’t sell well in the UK. Our school literally had one, and I think that’s the only one I’ve ever seen “in the wild.” Sales obviously isn’t the only criterion, but the presence of these machines presumably pushed out the New Brain and the Cambridge Z88 (among others). Since this book is about the computers than made Britain, I would have liked to see more about them and less about the already well documented American machines like the Apples and IBMs.

The chapters are largely standalone, meaning you don’t need to read them in order. I read about the machines I’ve owned first, before completing a second pass on the remaining ones. They’re invariably well researched, including interviews with the protagonists. Some machines get more love than others, though. Talking about the Spectrum, it finishes with a detailed look at all the subsequent machines, right up to the Spectrum Next, though curiously missing the SAM Coupe. But the Archimedes gets nothing, even though there was a range of machines. Did they run out of time or was there a page count?

But those are minor complaints for an otherwise well put together book. Recommended.

It’s published by the company that makes Raspberry Pis, which you could argue is the spiritual successor to the Sinclair and Acorn machine. You can download the book for free, but you should buy it! The above link is for Amazon, but if you’re near Cambridge you should pop into the Raspberry Pi store and pick up your copy there instead.

If this is your kind of book, I would also recommend “Digital Retro” and “Home Computers: 100 Icons that defined a digital generation,” both of which are more photography books than stories.

Meetings

After university, when I first started working, I jealously noticed people leaving their desks and attending meetings. I was left sitting at my desk, bashing out code. What was going on? What exciting things were being discussed without me? Sometimes they’d come back from the meeting and ask a random question. It was all very mysterious.

A while later I started getting invited to these meetings. I found what was being discussed. I discovered the mystery.

I’ve spent the rest of my career trying to avoid them.

Of course, meetings are not inherently bad. Sharing information, collaborating, making decisions are all vital functions of a company and you need meetings to do that. So why are they often so bad? And why do I spend so much time trying to avoid them?

Meetings are a cultural artefact. Good and bad etiquette isn’t evenly distributed. The companies with the worst meetings are also, ironically, the ones with the most.

What makes a good meeting? There are lots of articles on the web about this, so I don’t want to belabour the point, but, actually, I think it’s quite simple:

  • A defined function
  • The right people
  • The right duration

Missing any one of those means that the meeting is going to be a waste for at least some of those attending.

By “a defined function,” yes, I mean an agenda. It doesn’t necessarily have to be a full and formal written agenda, but all attendees should know the point of the meeting. If they don’t, maybe you do need to write it down. I encourage people to decline meetings with an unclear objective1.

The “right people” to invite to a meeting is often driven by the org chart, but this is completely the wrong metric. You need the fewest people that can meet the objective of the meeting. Don’t include someone just because they’re “important.” Don’t exclude someone because they’re too junior. Include everyone needed to share information or make a decision, or whatever the goal. But no more than that.

One thing that infuriates me is where people in a meeting have no “function.”2 Everyone should have a clearly defined role. If they don’t, they shouldn’t be there.

What about duration? I see two sides to it. First, work expands to fill the time available. Don’t do that. If you set aside an hour for a meeting but it actually only takes ten minutes, quit while you’re ahead. In fact, for people that tend to take a while to get to the point, I’ll deliberately book short meetings.

Conversely, if you’ve spent an hour going around in circles without making a real decision, maybe it’s time to call it a day. Your conclusion should be the information you need to actually make a decision, the people who are going to obtain it and, hopefully, when the next meeting will be.

Talking of “an hour,” that’s my benchmark for maximum meeting length. Anything significantly longer than that suggests to me that there isn’t sufficient focus or a tight enough agenda. And, perhaps more importantly, people are just not going to focus that whole time. They’re going to drift off into a dream world or check their phone. Why have them in the room physically if they’re not present mentally?

It all sounds so simple when you put it like that and yet we’re all guilty of Doing It Wrong. If there’s one thing to take away, it’s that meetings should be deliberate, just like any other corporate artefact.


  1. There are exceptions. For example, I wouldn’t decline a meeting with a client but I would seek clarification. ↩︎
  2. When Dilbert was good, there was a character called the Meeting Moth. I think we’ve all worked with people like that. ↩︎

Brexit

As the Downing Street clock reaches zero, as Whitehall is lit in red, white and blue, as the Union Jacks blanket Parliament Square, I wanted to commemorate Brexit actually happening.

In fact, I’ve wanted to say something about Brexit since before the referendum, but what is there to say that’s new? But original or not, I needed to write something.

Far from a celebration, 11pm on 31st January 2020 marks the culmination of years of misdirected anger and politicians harnessing that for their own personal gain.

The reasons for the anger are real. Inequality. Stagnating, if not declining, living standards. But the causes are austerity and neglect, not immigration.

That was merely misdirection. There were also the lies. You know it’s gone too far when Johnson, in a room full of journalists and cameras, says that there is no press there. And he still won the election.

And that’s what makes me angry. The lies. The demonisation of anyone trying to scrutinise the changes or hold the government to account. Even if you want Brexit, you should surely want it done right. It’s gutter politics; you should be able to win without smearing your opponents and outright lying1 And I’m angry that “the public” have let them get away with it2.

I’d like to think that Gina Miller, Lady Hale, John Bercow3 and backbench MPs like Dominic Greave will come out of this well when we look back in a few years. The current batch of MPs waving through the Withdrawal Agreement in three days, not so much. Did those MPs forget, or not care about, the predicted consequences of Brexit?

There’s a lot more that I could say, of course, but this whole charade has been well documented elsewhere.

What I would say is that I genuinely worry for the future of the country. When I first wrote that sentence I stopped and wondered if I was being overly dramatic. But I’m keeping it.

The government has a large majority, unconstrained by details like truth or an effective opposition party or a press willing to hold them to account. The issues that brought about Brexit — austerity, income inequality — are still present and will likely be exacerbated by our separation from Europe. Yet the same government has little interest in the kinds of people that will be most affected by their own policies.

The main positive is that Johnson owns Brexit now. It’s his signature on the bill, it’s his party in power, it’s his team negotiating. He can’t blame parliament. The consequences are his.

If that sounds like I want Johnson to fail, you’d be right. But not at the expense of the country as a whole. If we have to leave, I want Brexit to be a success. I just have a hard time seeing how that could happen.


  1. I’m not naive, I’m not saying that Westminster has always been filled with selfless, upstanding campaigners but the ratio of good-to-bad these days seems badly skewed. ↩︎
  2. Of course most of the public are not the Union Jack wearing, Nazi saluting caricatures we see on the news or Twitter. Still, enough people thought that lies were preferable to Corbyn’s ineffectual leadership. ↩︎
  3. While you can’t ignore the bullying accusations, I think it’s fair to say that he fought for the sovereignty of parliament. This is the right thing to do whether leaver or remainer. ↩︎