Writing on software development, code quality, and other technical topics.

This is a collection of my personal thoughts on various things in the software industry. I write about code quality, software development, and more.
Lately, a lot of my time has been spent writing for other companies, so if you want to see samples of my most recent work, check out my featured articles.

Setting up Sigrok/Pulseview on Ubuntu

Sigrok is open-source software that can be used with various hardware, such as logic analyzers and oscilloscopes, to ingest and _grok_ signals. It can be a powerful tool if you are interested in better understanding the inner workings of devices and circuits. Still, before you can use it in your projects, you need to get it installed and set up correctly, a process which was as easy as I hoped it would be, but is also not too difficult if you are equipped with the necessary information, which I was not, but you can be.

So, you've angered our digital overlords.

These days, we are all too reliant on technology, I’ll be the first to admit. I don’t have a huge issue with it, because it makes my life much more convenient, enjoyable, and it usually works. Usually.

How I doubled my productivity while working from home

This year has been an interesting one, not least of all because many people around the world - especially in the tech sector - ended up working from home for an extended period of time.

Understanding Imperative vs Declarative Programming

You might have heard these terms being tossed around a bit, especially when it comes to things like React. React is _declarative_ according to the documentation, but what does that really mean? Let's take a look at the difference between these two paradigms.

You'll never be a 10x Developer

You've seen the job listings, you've heard the recruiters. "Innovative tech company looking for 10x developer to take the lead on a greenfield project." But what is a 10x Developer? How is it possible for one person to do the work of 10? Are they just that good? Are the other 10 people just lazy?

Are you a developer, or a Software Engineer?

Job titles can be a contentious point. To some, they matter a great deal, and to others, they don't matter at all. Things get extra interesting when you start throwing around the word "Engineer" though. What does it mean to be an Engineer? What does it mean to be an Engineer of Software? What is Software? Does it include websites?

Get Developer Superpowers with Vim

You've probably heard of Vim if you've been working with code for a while. Vim is a command-line text editor available for a lot of operating systems. Initially released in 1991, Vim is one of the most popular text editors in the computing community.

Two-way communication between an iframe and its parent page

Iframes get a bad wrap for everything from security problems, to usability and SEO issues. Despite this, they are one of the tools at our disposal, and knowing how to use them effectively could open the door to new solutions to old problems. Being able to send data between the iframe and the parent page is a useful trick for delivering more integrated solutions, rather than the traditional boring "page-in-a-page" way iframes get used.

4 Principles to help you learn more effectively

There are countless skills you could spend time mastering. Learning how to learn should make the top of your list though. If you are able to refine your ability to learn, the other skills will be a cinch.

Boost your coding productivity with these 5 simple tactics

As a developer, your productivity is not gauged by how much code you churn out, but by how much value you deliver. Gone are the days where lines of code are a worthwhile performance metric. If you want to master your craft and hone your productivity, you will need to embrace the age-old adage — “Work smarter, not harder”.

Why Code Consistency is Important

When it comes to your codebase, one of the most significant indicators of overall quality is consistency. Consistency of patterns, style, naming, libraries — every part of your system needs to be considered, and carefully designed with consistency in mind.

Principles for more effective Code Reviews

For many software companies, code reviews are an essential part of the project lifecycle. Code reviews allow us to have multiple sets of eyes over a piece of code before testing and deployment. Quite often, the reviewers will raise feedback to the author, noting areas of the newly added or changed code which could be improved, or potentially even flagging issues before the code is ever run.

Measuring for Performance in Software Delivery

When it comes to the delivery of software projects, the adoption of the scientific method is becoming more and more prevalent. This means that we are ever increasingly trying to base our decisions on data, and to do that, we need to collect data. Lots of it. We generally do this by tracking metrics produced as byproducts of the work we perform, and almost inevitably, some of these metrics are used to measure our performance.

Understanding Types; Static vs Dynamic, & Strong vs Weak.

Generally speaking, when talking about programming languages, most — if not all — languages can be classified by where they fall in a quadrant, with one axis containing Static and Dynamic typing, and the other containing Strong and Weak typing. But what do these terms mean?