What we learned shipping an app on Mac and Windows stores using React.js

Image for post
Image for post
React + Electron image (source) by Jignesh Sanghani, used with permission.

In this article, I’m going to describe how my two-person company Code Shot, went from idea to having an app on both the Microsoft and Apple stores in two weeks of recorded time.

The app, Elenco (meaning “list” in Italian) is a simple list app that can be used for creating and sharing to-dos, shopping lists, wish lists, packing lists, etc. It can now be found on the Windows store here, and the Mac App Store here.

Below, I will outline the steps we went through to get from idea to store as well as key takeaways from the process.

The Idea

Key points from the best-selling coding book of all time

Book cover
Book cover
Photo from The Pragmatic Bookshelf.

The Pragmatic Programmer was first published in 1999 and has since been named the best programming book of all time.

Authors Andy Hunt and David Thomas were among the original authors of the Agile Manifesto and have some serious credentials. The book has achieved an average rating of 4.3 on Goodreads from over 16,000 ratings. Suffice to say it’s one of those books every programmer should read.

In this review, I’m going to condense the book into five essential takeaways.

1. Don’t Repeat Yourself

Thomas coined the term “DRY” (or Don’t Repeat Yourself), one of the most useful rules for achieving high-quality code that…

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…

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…

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…

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.

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…

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…

Jamie Bullock

Senior Developer at https://www.lwks.com. Co-founder of http://integra.io. 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