A friend recently talked to me about blogging, and it got me navel gazing a bit. I’ve not really thought about how or why I blog, and I guess it’s a good thing to be a reflective practitioner. At the risk of being self-indulgent, this is an article about how and why I blog. As … Continue reading Blogging
Complexity: Important stuff can be messy
At this time of year, it’s common to set goals and New Year’s resolutions such as lose X kg of weight, or run Y km. If you have a goal like this, then I wish you well. It’s less common to have goals like have a better relationship with the people I love, even though … Continue reading Complexity: Important stuff can be messy
Complexity: Performance trends in code
Introduction If you hang around programmers for long enough, you might hear people use terms like complexity or Big O notation, or say that performance is of the order … such as of the order N squared. I hope that this article makes those terms a bit less confusing. The basic idea is seeing how … Continue reading Complexity: Performance trends in code
Impostor syndrome and the programmer’s brain
Introduction Impostor syndrome is where you feel that you are in a position that you don’t deserve because you’re not good enough at something, in contrast to all the people around you who all seem to be good enough, and one of these days someone will discover you to be the fraud or impostor that … Continue reading Impostor syndrome and the programmer’s brain
How biology is like computing
Introduction I stopped studying biology at school when I was 16. So when people tell me about what they’re studying in A level biology it’s advanced enough to be interesting but not too advanced to understand. After a recent conversation about it I wondered why it was resonating with me so much. Not only is … Continue reading How biology is like computing
Language can teach us about usability
I think that the way people use language can give some insights into the usability of the software we design and build. By definition, if you're reading this then you use language, and also use some kind of computer, and in this post I'll try to show how what we have already observed about language … Continue reading Language can teach us about usability
Screen grabbers as debugging tools
Nothing big or clever this time. (Is it ever big or clever here?) Just a little trick that I find useful occasionally, that might be of use to you too. Picture the scene - you're debugging some code in your IDE and you realise that you want to take a snapshot of lots of state … Continue reading Screen grabbers as debugging tools
Simple pictures to explain DRY and SRP
The Single Responsibility Principle (SRP) and Don’t Repeat Yourself (DRY) are two common principles of good software engineering. This article is probably a statement of the bleeding obvious, but I was struck by how the two principles could be illustrated by simple variations on one simple diagram. I couldn’t remember seeing such diagrams before and … Continue reading Simple pictures to explain DRY and SRP
The user, not your user interface, is the star of the show
As programmers and designers, it's easy to get really invested in our work. This is great if it helps us do a good job, but the temptation is to think that we and our work are the most important things. That's not true - it's the user. When I was at school and college, I … Continue reading The user, not your user interface, is the star of the show
Authentication, authorisation and the chain of trust
I recently walked by my old college. There was a sign outside: Closed to visitors. I realised that two cards in my wallet would get me in, which made me think of some security concepts: the difference between authentication and authorisation, and the chain of trust. I’ll go into those a bit in this article, … Continue reading Authentication, authorisation and the chain of trust