The first step was to make little stickers, one for each key that had a different placement, and attach them to the keys on the keyboard. Then I went to Google to search for a typing program that could help me remap the muscle memory I already had established using qwerty for all those years.
I recently set out to improve the process I use for reviewing code that myself and others have written. I wanted to focus on being more systematic and getting consistent results for the time investment.
The reviews I was doing appeared to be going well enough: they were picking up problems and I was making sensible suggestions for how to improve code quality; less bugs seemed to be finding their way into the final product when I did the reviews than when I didn’t and I felt more confident about code that had been through review. But I began to suspect that the quality of these reviews were variable and subject to random and unpredictable human factors.
I recently finished listening to the fantastic set of lectures How to Start a Startup and I thought I’d share a few things I found interesting from each lecture.
Originally (back in 2015) this post was a record of my attempts to brute force the discovery of Sourcetree keyboard shortcuts, because they were not well-documented by Atlassian (or anyone else I could find at the time).
Now, in 2020, the keyboard shortcuts are readily available both in-program (on each context menu item) as well as a few easily located resources online. So I’ll repurpose this blog post instead to surface some of the more useful keyboard shortcuts (this list is no longer exhaustive), and explain how I extend the keyboard shortcuts Sourcetree provides natively.
Last year I went through the rather exciting process of interviewing for a series of positions in search of a new development job. Having sat down and thought about what I had gained from my previous working environments, I compiled a list of questions that I thought would help me gauge the type of work I would be doing and the environment I would be a part of if I took the position.
Always in search of productivity gains in my programming work, recently I have been looking into improving my typing speed. I read Jeff Atwood’s We Are Typists First, Programmers Second and was enthused, despite a few commenters pointing out that typing speed is rarely the bottleneck when it comes to coding.
The finer points of the different factory design patterns has always escaped me, so I decided to look it up recently and found this rather helpful stackoverflow answer. I thought I’d summarise what I learnt below (all diagrams were generated using yUML).
Popularised by Robert C. Martin and Martin Fowler, Inversion of Control is a design principle where custom code components receive the control flow from general library components, similar to custom code modules being written for a larger general-purpose framework. This is an inversion of the traditional control flow found in procedural programming where the custom components encode the program’s functionality in terms of general purpose libraries. The pattern offers the advantage of making the program more modular and extendable.
Dependency Injection is a software design pattern that works by injecting a reference to a dependency object into a dependent one, where it is stored and made part of the dependent object’s state and behaviour. This separates the creation of the dependency object from the dependent object’s code.
SOLID is an acronym mnemonic coined by Michael Feathers for Robert C. Martin’s “first five principles” for object-oriented programming. Each concept is worth looking at briefly so I have tried to summarise the important points of each below.