Image for post
Image for post
Photo by Kelly Sikkema on Unsplash

I started writing on Medium in October 2019, and since then I have gained over 1.6k followers on the platform. I just wanted to reach out and thank everyone for their support and interest! It has been fantastic getting people’s comments, feedback, and enthusiasm throughout the year. Thank you!

I also wanted to give you a taste of my plans for 2021. My main focus so far has been technical writing, particularly on programming, shell scripting and the Apple / Unix ecosystems. This will continue. However, I intend to include more of the following content this year:

  • Book reviews, particularly programming book…

Thoughts on what it means for software to be “free as in beer”

Image for post
Image for post
Photo by Wil Stewart on Unsplash

In the world of software development, we have various definitions of “free”.

According to the Free Software Foundation, “free software” means:

software that respects users’ freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software. Thus, “free software” is a matter of liberty, not price.

So for the FSF, free means “free as in freedom” not “free as in beer”. In fact free software by the FSF definition may be sold commercially. …

6 months ago I built a Hackintosh, in this post I’ll share my thoughts

Image for post
Image for post
Mid-way Hackintosh Build

In this post I’m going to talk about the process I went through to build a Hackintosh, hardware choices, and how much it cost. I will also share my experience of what it’s been like to use it almost daily for 6 months.

This is not a tutorial but rather a personal reflection on pros and cons of the Hackintosh approach. Tutorials can already be found elsewhere.


A Hackintosh is a computer that runs Apple’s macOS operating system without Apple’s hardware. Reasons to do this might be:

  • Save money
  • Build a more extensible system
  • Self-education
  • Have fun

For me personally, it was a combination of all of these. …

Statements, expressions, literals, and operators

Image for post
Image for post
Photo by Esther Jiao on Unsplash

When I was learning to program, I remember being bombarded with terminology. A lot of tutorials and online discussions seemed to assume that I already understood what a lot of these words meant. Words like “statement,” “expression,” and “literal” were used but never explained.

In this post I’m going to discuss four commonly used programming terms that are useful to understand regardless of the language you are using.


Let’s start with the simplest one…

A literal in programming is a piece of text that represents a fixed value in source code. Examples of literals would be:

123     // an integer literal
1.23 // a floating point literal
"123" // a string…

Techniques for avoiding file deletion disasters on Mac and Linux

Image for post
Image for post
Photo by Gary Chan on Unsplash

I’ll never forget the time when I was working as a network engineer, and a coworker brought an entire college campus grinding to a halt with a simple misplaced dot.

The mistake my colleague made, was to type:

rm -rf /*

Instead of:

rm -rf ./*

The second command recursively removes all files from the current directory and all child directories. The first removes all files from the root directory and all child directories. The root directory on a Unix system is the top-level directories that contains the entire filesystem.

To make matters worse, my colleague was logged in as the root user, which has full admin rights.

Thoughts on the new Medium beta…

Image for post
Image for post

Medium recently announced a new beta programme in their mobile app, which readers can opt in to. I decided to take it for a spin, here are my thoughts…

Medium Wants to Get Social

The emphasis of the new app is very much around the users and publications you follow. Below is a comparison of the old and new designs.

Beginner coders can be too hard on themselves, and this post offers some comfort

Image for post
Image for post
Photo by ThisisEngineering RAEng on Unsplash

I’ve been coding on a professional level for 15 years and have dabbled in code and technology my entire life. In this article, I’m going to share the things I wish I’d known when I started coding.

1. Best Practice Is Often a Matter of Opinion

Programmers often hold strong opinions about the right way to do things. This can be problematic when we accept one person’s “best practice advice” as unquestionable truth.

When I first started out coding, I was very impressionable to these kinds of dogmatic opinions expressed online. This led to a feeling of anxiety, that I must constantly doing something wrong.

I wish someone had told me that all of these opinions need to be considered against the needs of the current project, and often we need to trust our own judgement. …

Concepts for implementing conditional branching with examples in JavaScript

Image for post
Image for post
SVG by Booyabazookaoriginal; PNG by Wapcaplet / CC BY-SA

Conditional branching is when a segment of code is executed or evaluated based on a condition, typically implemented using an if...else construct.

For example:

if (customerPaid)

Here, sendThankYou() will get called if customerPaid is true; otherwise sendReminder() will be called.

There’s some thinking in the programming community that if should be considered harmful or a code smell. Regardless of the validity of this claim, there may be cases where if isn’t the best approach to branching, or where branching should be avoided altogether.

In this tutorial, I’ll therefore demonstrate six alternatives to if...else

React.js is awesome, but also kind of complicated…

Image for post
Image for post
Photo by Med Badr Chemmaoui on Unsplash

A couple of months ago I started learning React.js for a side project I’ve been slowly building in my spare time. In this post I’m going to share my initial thoughts and impressions.

Hopefully this should give an idea of what to expect for anyone considering React as a framework.

Learning Path

Since I already have 15+ years programming experience, I decided to try learning React in the shortest time possible.

I first watched Learn React JS in just 5 minutes to gain a broad overview of the topic.

I then followed two crash courses from Traversy…

A deep dive into the features and benefits of the Tower git client

Image for post
Image for post
Tower Artwork

Tower is a Git client that serves both Mac and Windows, offering a range of features that stand to increase productivity and reduce frustration for all who use it. Personally speaking, Tower has revolutionized my work process so I felt compelled to take a deep dive into some of the main features and benefits that this platform has to offer in the hopes that others may benefit from my experience. …


Jamie Bullock

Software developer at Co-founder of Let’s learn together.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store