Back in 2021, I joined a logistics startup called Beacon. I didn't stay long, but I walked away with a company MacBook Pro M1. It should have been sent back, but a major family health emergency happened at the same time and I completely forgot about it in the back of my wardrobe. Fast forward to September 2025. My son had just gone off to university and, within a week, he'd managed to damage his…
Discovering podcasts Way back in the mid 2000s, I was still a mildly successful DJ under my alter ego of DJ Cruze . I was regularly travelling to Germany and playing at various clubs and I wanted to share my mixes with a wider audience, and yes, try to get a few more DJ gigs! As I was a video games programmer at the time, I wasn't an expert on the web so I had naïvely set up my DJ Cruze website as…
I was looking at my site the other day and realised that I've managed to write quite a few blog posts in the past 10 years. I was really proud of writing 30+ articles in 2021 alone when I challenged myself to write more. However, looking at my the site markdown files, it dawned on me that I've only managed to add 2 more to this site since 2022 and I was a bit disappointed in myself. But as…
I laugh every year when I see this meme about updating your website footer: https://twitter.com/iamdevloper/status/1212320688050229249 If you're a developer who has come from the world of Wordpress where using PHP to dynamically update the year in the footer then I'm sure you're wondering what the fuss is about. As PHP is a server-side language, you're constantly rebuilding a page when someone…
If you're like me, your early blogs were probably hosted using Wordpress . Most of my personal sites started off with a self-hosted version of Wordpress on a server that I had to maintain and update. I'm getting too old for the constant updates that owning a server requires so I have moved to using static site generators and hosting them using Netlify . I'm a big fan of Eleventy as my static site…
One of the questions people ask when starting their journey into testing their JavaScript code is where to start. What functions should the team test? Do we need to test every function, or should we look at testing the whole API end-to-end? Do we have mock out all of our backend services like databases or cloud storage? It can be overwhelming to know where to start. This paralysis often stops…
Each week one of my new team makes a release and deployment of our API service from our GitLab repository. It is a very manual process that involves working out what has changed in the previous commits, determining what sort of version it should be, tagging it in GitLab, and running a GitLab pipeline to deploy it to the correct server. It's a tedious process that can be prone to human error. On a…
In the middle of January 2021, I decided to start a habit of writing . I was inspired by the #ship30for30 community I'd seen on Twitter. The hashtags were appearing daily and I thought a writing habit would be good to start and could be a useful tool to clarify my thinking. Here are some of the lessons I learned after my 30 days of writing experiment was over. It took more than 30 days My original…
I've never liked the title Junior Developer. I much prefer Less-Experienced Developer. It doesn't imply age. It just says "you don't have the knowledge yet". Being a Less-Experienced Developer is where we all start. We might be less-experienced in software development as a whole. Or we might be less-experienced in a specific programming languange. Or a specific domain. Or testing. Or in front-end…
Being comfortable is a good thing, especially when you start a new job. You've got to know your colleagues, you've found your way around the office or if you're working remote, the company intranet. You can quickly find documentation on Confluence and know how to find Jira tickets, and you've finally found your stride with your work. Every day you make a significant impact in your role. After a…
In software development, there's always been the idea of the 10x or rockstar developer . A programmer that's so talented, that they can write software in double quick time, with their eyes closed, and also in their sleep. I've worked with developers like this. With a few exceptions, I'd never want to work with them again. In my experience, the 10x developer is a maverick who likes to solve issues…
When I was young, I used to love watching TV when I got in from school. I was a child of the 70s and 80s here in the UK so I only had about 1.5 to 2 hours of children's TV until the soap operas and news started. I'd eat my dinner and then jump on to my VIC-20 or C64. They had no internet connection. We had no games without spending 30 minutes waiting for a game to load from a cassette tape.…
I had an interesting catch up with a wonderful colleague, Blanca Garcia Gil , today. We talked about the role of a software engineering team lead and also about giving and receiving feedback. After giving me a compliment which I didn't expect, she noticed that I was taken aback by it. The thing that came to light from our conversation was that managers don't receive as much feedback as their team…
The dictionary defines success as: “The accomplishment of an aim or purpose” Everyone wants to feel successful. But what does it mean to you? What is the aim or purpose of your life? Peter Drucker , one of the great theorists on management techniques, has been attributed with the saying: “You can't manage what you can't measure” But how do you measure success? Create your own definition of success…
I went to the Lead Developer Conference back in 2019. Pat Kau gave a fantastic talk called "Flavours of technical leadership". In the talk, he shared different ways that engineering leaders develop and make a difference to their teams. One of his thoughts really resonated with me: “Share your network” Different types of networks Anyone who has been in an idustry for a while has a network of people…
People have talked about remote working in the technology industry for many years. Some companies, such as Basecamp , GitHub , and GitLab have embraced it for years whilst others have pushed back, expecting most teams to co-locate in office spaces. Some have had a mix of remote-friendly teams who may have some split of the two. And then 2020 and Coronavirus COVID-19 changed everything. Many…
Teams want to write great code. They want to communicate and collaborate on their software. Sharing code via a pull request is a great way to present your code for review by your peers. A pull request is a way to create a new feature branch which you're asking to be merged into your main branch. It's also a way to document and share your thinking around the changes and allow others to review the…
I recently attended an "away day" for the leadership team of our department. In early 2021, an "away day" obviously means another set of Zoom meetings. It was a great day of digging into the challenges of the team and there were a couple of guest speakers with amazingly inspiring talks. One of the speakers talked about her experience in moving from being a managing director at a newspaper to…
At the end of last year I converted my DJ Cruze website from Wordpress to Eleventy . Much like this website, it's easy to deploy using Netlify . Moving to a statically generated site made it much easier to update and avoided me having to maintain a server, PHP, Wordpress versions, and so on. For many years I created the DJ Cruze podcast show so I wanted to move over the podcast RSS feed from…
We often think of learning as something we do at school, college, or university. You learn new skills as you start your career but often, people stop thinking they need to continue as they get older. It often feels like learning is something that we encourage our children to do but we forgot how fun it can be as adults. Learning something new encourages those dopamine hits and makes you feel…
If you're playing along at home, you'll know that I embarked on a 30-day writing habit challenge to myself. I want to attempt to kickstart a habit , and feel like I was getting better at putting pen to paper, or fingers to keyboard. I don't think I'm a bad writer, but I've always struggled to get started with writing. Once I start writing, I love it. But some days I hit a roadblock. What should I…
Building an online audience is a great way to build your career. The more people who see your writing or videos, the more your network can expand. This can help you to connect with more people and create more opportunities for your career. This video by the writer and entrepreneur Nate Eliason shows us how he builds an audience for his top-selling online course - Effortless Output in Roam . Here…
All developers want to ship code on a daily basis. But how can we ensure that the code we're pushing out to our users won't break? There are plenty of good practices we can use to ensure we can confidently release new versions of our applications. Here are a few that I think are really valuable. Version control I'm always surprised when I have to mention this, but I've still met some teams and…
I love gifs! I used to create them in the 90s when I was learning how to build my early websites. It was probably mostly the animated "under construction" gif. They went out of fashion in the late 90s due to better file formats and a patent on the gif format . When Slack was launched in 2013, and other messaging apps became commonplace, they made a reappearance as an animated response to messages.…
I wrote video games for about 20 years and for a long time I made games for the Sony PlayStation consoles. Sony were famous for using rubber ducks in their console announcement demos. Here's some old footage of the PlayStation 3 announcement from the wonderful Phil Harrison : https://www.youtube.com/watch?v=7UaDvIPpQnQ At Sony's Studio Liverpool , we had hundreds of rubber ducks in the offices.…
I've always loved the following saying: “A rising tide lifts all boats” Although John F Kennedy may have borrowed it from the chamber of commerce of the New England Council , the idea behind it really resonates with me. The true meaning behind it was to suggest that an improved economy will benefit all participants. However, I like to apply it to how you build a positive team culture. By helping…
I once found a wonderful comic by Zach Weinersmith of Saturday Morning Breakfast Cereal (SMBC). I've told a lot of people about it so please go and read it now. It states that most people think that they only live once and spend their life thinking they can only have one career. But if it takes around 7 years to master a skill, you've actually got 11 opportunities to do something from age 11 to…
One of my team asked me a fantastic question today. “How do I stay on top of learning about software development technologies and best practices?” There's an information overload in the software development world. Every day there's a new framework, a new library, a new technology stack, or a new programming language. It feels like you have to learn everything, especially if you're not an…
Over the past couple of years I've been moving my personal websites from using WordPress to simple static HTML sites. WordPress is fantastic but I spent too much time being concerned about security risks, updating to new versions, and worrying about managing PHP versions on a server. These are things I didn't want to have to concern myself with so I wanted to use a static site generator to build…
Nobody sets to build complex software. All developers set out with best laid plans to keep applications simple. We separate the concerns of the code with nice APIs and interfaces. We abstract our business logic away from our domain services. It's as simple as we can make it but over time the code gets more complex. But why? There are times when developers over-engineer a problem. We add Gang of…
Some days I can't shut my brain off. I often worry about something that happened at work or home. Sometimes I remember a situation that happened in the mid-90s when I was DJing in a nightclub. Yes, this regularly happens and I'm always surprised I can remember that far back! Today I've been worrying whether the last 7 articles I've written for my writing habit challenge are good enough or not. I…
I love helping people to automate their lives. Back in 2018/19, I spent a lot of time building automated chatbots using the Facebook Messenger platform. It was a great way for businesses to automate interactions with their customers. More recently, Facebook have made it much harder to build bots on their platform by limiting their API, especially if you're a European user . In the past year, I've…
I worked in the video games industry for almost 20 years. I made quite a few games and worked on many more unreleased demos. Every company I worked at was incredibly secretive about their work. Very few teams shared what they were working on externally. Some didn't even share much between their internal teams either. We weren't really using open source software libraries. The encouragement was to…
I was shy as a teenager. Really shy. The sort of shy where I'd blush bright red if somebody I didn't know talked to me. The sort of shy where I'd blush bright red if I knew them too! Since my teenage years, the thought of having to get up in front of people and give a speech or presentation absolutely terrified me. I had to explain my university dissertation to my tutors and peers at 21 and I…
I write a lot of notes both in my job and in my personal life. I've tried a lot of different note taking applications over the years and more recently I've started using Obsidian Notes as my application of choice. Let's look at how to use the Obsidian Notes application for writing clearer notes. What is the Obsidian Notes taking app? The Obsidian app is a beautiful, FREE note taking application…
Every time we write software we incur technical debt. Every decision to add new code to a project has the potential to introduce new bugs. Over time a team will introduce disorder to their systems as new features are built and technical architecture changes. So how can you encourage a healthy codebase and avoid it falling into a state of disrepair? Let's think about the broken windows theory. The…
I didn't set out to become a manager of software engineers. One day I was the principal software engineer on the team. The next I'd shifted to a management track. I initially wasn't sure if I'd made the right move but I now really love building great software teams. I've dipped in and out of management over the years but I've now been a software engineering team lead for the past 4 years. I manage…
At the start of 2020, I wrote a review of 2019 . One of my main goals for last year was to find my writing "voice". The plan was to write more in 2020 but I wrote a grand total of 1 blog post. I'm not sure that a single blog post can really be considered a big win for my writing! 2020 really wasn't a year that was conducive to getting things done for me. We all struggled in different ways…
If you're a developer, and you hang out on developer Twitter, then you'll have seen people sharing their hot code tips. They're often accompanied by code examples and the "hot tip" fire 🔥 or lightbulb 💡 emojis. Here's a great example from Simon Høiberg : JavaScript Tip 💡 Make an argument 'required' in JavaScript using this small trick 👇 pic.twitter.com/yZ2w5Kd58b — Simon Høiberg…
Understanding types of software testing New developers often don't know where to start with testing their code. They know that it's a good idea but there's an overwhelming amount of information out there. Common questions and comments I hear are: What's a unit test? How does it differ from an integration test? Should I be writing end-to-end tests? I don't know where to start! I'll help you to…
Watch the video https://www.youtube.com/watch?v=UDrGpc4Dp8w One of the main benefits of creating a Facebook Messenger chatbot is that you don't have to be present to answer messages for 24 hours per day. Your chatbot should be on hand to do this while you're fast asleep. What would be even better is if it could understand where your user lives and give them relevant content for their time of day.…
I started my 2020 by thumbing through Twitter as I often do, and often try to avoid doing. Between the technology and political tweets were personal 2019 reviews and retrospectives. In software development, we use the idea of the agile sprint retrospective ). A sprint is a period in which you attempt to produce new features for your software application. A sprint retrospective is a team meeting…
Facebook Messenger chatbots are a great addition to your marketing toolbox but they have one big problem. Facebook controls the platform and can change its rules when it wants to. Their recent changes to their broadcast and subscription messaging rules means it's more difficult to contact users after 24 hours if they're not engaging with your bot. While stopping people from abusing Messenger…
Here in the UK we have an organisation called Code Club which aims to help all children learn to code. It's a network of volunteers and educators who run free coding clubs for 9 to 11 year olds. I have two children, aged 7 and 9, and I want to encourage them to learn more about computing and technology and not just watch gaming videos on YouTube. When my eldest son moved from his infant school to…
Error handling is a big part of writing code and it's something that every developer should think about. When starting to write code, it's easy to overlook what happens when your code fails. As developers we like to assume we write perfect code. We never do though do we?! If you're writing a customer facing application then you should always try and gracefully catch any errors and return…
One of the often asked questions about unit testing is "how do I ensure I'm writing good quality unit tests?" It's easy to start of down the path of writing unit tests for your code but you need to make sure you're writing dependable tests which are easy to maintain. In this article, I talk about the defining characteristics of solid unit testing and how to ensure that the quality is high. What is…
I was swiping through my Twitter timeline the other night when I saw a really interesting tweet from Kent C Dodds , a great JavaScript developer who works at PayPal, and someone you should really follow on Twitter if you don't already. He asked the following question. [POLL]: Is it reasonable to *unit* test express routes? Or is it better to do an *integration* test of your server (with supertest…
For Halloween back in 2015, I had an unused Raspberry Pi and decided that I should make a Halloween project in order to learn electronics again, and to scare the local children as they came trick or treating. I connected the Raspberry Pi GPIO pins to a breadboard with a big red dome push button . I hid the Pi and electronics inside a shoe box painted black, and made it look like a spooky spider as…
A source control system is an essential tool if you're writing software, even for your own side projects. Although I've used many version control software over the past 20+ years of development, I've only been using git for the past 3 or 4 years. However it's quickly become my version control of choice due to its ability to quickly create branches, and its distributed nature. It's easy to master…