Tomas Basham's Blog
A Personal Technology Jekyll Blog and Portfolio
Featured
Git Workflows for Project Management
This is how I use git either working as part of a team or individually. I use an amend/rebase mutable-history workflow where each idea is always represented by one commit. I never make checkpoint commits, and I only need to write git commit messages once per feature (and perhaps amend...
Articles
Diagnosing Pods with Kubernetes
Labels are the mechanism in Kubernetes through which system objects may be given an organisation structure. A label is a key-value pair with well defined restrictions concerning length and value used as an identifier and mapped onto system objects making them more meaningful within the system as a whole. Whilst...
Protocol Buffers and Optional Fields
Protocol Buffers are a serialisation solution developed by Google providing a platform and language neutral mechanism to send and receive structured data across the wire. Protocol Buffers encode data into dense binary objects that reduce packet sizes, enabling faster data exchange but with the disadvantage that the binary objects are...
Kubernetes Networking
In the software development scene today, containerisation - and Docker in particular - is hard to ignore. However when an application needs to scale horizontally it falls upon container orchestration systems to handle the complex interconnections between distributed nodes and the containers that they manage. It is without doubt that...
The New Full Stack Developer
I have recently been on the look out for new employment opportunities, where I have noticed most applications (as opposed to job descriptions a few years ago) require you to be what they regard as a “full-stack” developer. It is assumed that “full-stack” carries a well known definition, accepted by...
5 Things I Hate About Ruby
I find myself more and more lately banging on about how much better Ruby is when compared to the other languages used by my colleagues (i.e. PHP). I know, I know I am truly a Ruby fanboy. I much favour being able to write my applications in a more “plain...
Git Renegade - Delete Remote Tags
This is not something considered best practice but if the need arises that a tag must be removed from a remote repository server then here is how to delete it. If you have a remote tag named branch-name it can be deleted with: $ git tag -d branch-name $ git...
Swift 3 - Pattern Matching
Whilst working on an iOS app, I was able to really jump into some Swift 3 features that were very new to me. Swift 3 has so many advantages over Objective-C but the one I am most impressed with is pattern matching. Having dabbled a bit with Erlang and other...
Swift 3 - Enums
I am always looking out for better solutions to implement software features where the language lends itself well to the problem. This way I get the most out of the language and offload some responsibility to the specific nuances the language offers. In this article I talk about Swift enums...