Migrating This Site Away From Gatsby

Well it's happened again. I've done yet another rebuild of this website using Django and Wagtail.
read more →

How to Publish a Python Package to PyPI: A Comprehensive Guide

In this guide, I'm going to show you how can easily publish a package to the Python Package Index so that others can install and use your work.
read more →

How to Create a Docker Development Environment

This guide will show you how to set up a docker development environment which will enable you and new developers to get up and running in minutes with even the most complex system.
read more →

Comparing Email Service Providers

Since starting 30 Hour Jobs in February, I've been using Mailchimp to manage the mailing list. With my recent work to rebuild 30 Hour Jobs as a custom web app – instead of using hosted solutions – I have some new requirements.
read more →

The Slow Phone Revolution

Soon after Apple's introduction of the first iPhone just over 12 years ago, "smartphone" quickly became a household term. These smartphones improve people's quality of life: they are useful for travelling, they allow us to get work done on the road,
read more →

30 Hour Jobs Version 2

After many hours of work, 30 Hour Jobs version 2 is live! I'm excited to launch this new design and complete rebuild of the site. Previously, I had been using online services to create the website and host the job board.
read more →

The Ideal of a 10x Developer Should Not Be Upheld

Every few months there is a debate about the existence of a mythical "10x developer" who is able to produce 10 times more code than an "average" software developer.
read more →

Apple News Eats RSS Links

Recently I was playing with the job board that I have set up for 30 Hour Jobs and clicked on the RSS link. To my surprise, Apple News offered to open the link! In my head, I'm thinking: this is great...
read more →

Corporations Don't Have Morals

I often hear the argument that a corporation's actions are moot because the actions are performed only in the pursuit of profit.
read more →

Cold Outreach Works: My Formula

With my recent project 30 Hour Jobs I've started doing a bit of cold outreach. I've been looking to build up some content on the blog and I occasionally ask readers and people invested in the topic to do an email interview.
read more →

De-Googling My Life

Recently I've spent some time changing my habits and changing the online services that I use so that I am less dependent on Google to participate in the internet.
read more →

Migrating this site to Ghost and Gatsby

Over the last few weeks I've been working on this brand new redesign for the site. The old site was a few years old and I felt it was time for a makeover. While revising the site, I came up with several priorities that helped me shape the new design.
read more →

Using React, Firebase, and Ant Design to Quickly Prototype Web Applications

In this guide I will show you how to use Firebase, React, and Ant Design as building blocks to build functional, high-fidelity web applications. To illustrate this, we’ll go through an example of building a todo list app.
read more →

Validating an Idea with 400 Email Signups in 72 Hours

The other week I was thinking about what it would be like to work four days per week instead of five. I have a few friends that follow this schedule and it seems great: that extra day gives you time cook, exercise, and generally improve yourself.
read more →

How to use HttpClient and HttpInterceptor to Cache Requests in Angular 5

Recently, I’ve delved back into Angular on a new project for the first time since the Angular 1.x days. The new Angular seems familiar yet much more robust and productive since embracing object-oriented programming principles.
read more →

How to Use Firebase CLI Tools to Deploy a Web Application

This is a quick guide on how to deploy a Firebase web application to the Firebase CDN using their CLI toolkit.
read more →

What We Have Now Is Not Advertising

Billboards, TV commercials, magazine ads – these are what I would call advertising. There is no way to measure the number of times a billboard on the side of a highway has been looked at.
read more →

Does Apple Have a Software Problem?

Even as someone who is heavily invested in the Apple ecosystem I have to say that the quality of Apple’s products is questionable. Here is a non-exhaustive list of problems that I’m currently experiencing.
read more →

Node.js Named Parameters

Named parameters are a handy feature that have existed in other loosely typed languages such as Python for some time. With the feature called destructuring assignment available in newer versions of Node.js, we gain the ability to do things like this.
read more →

A Naïve Peer Discovery Implementation with Node.js and ZeroMQ

Recently, I’ve been thinking about building a simple blockchain implementation to better understand the pattern. As blockchain systems are *distributed*, the first challenge that came to mind was how to allow peers in the network to discover...
read more →

Using UDP Multicast with NodeJS

Recently, I’ve been thinking about building a blockchain system as an exercise to better understand distributed ledger technology. As part of this thought exercise, I’ve been thinking about simplifying and optimizing process of sharing state...
read more →

Best Way to Organize Your Web API

For several years I’ve been building APIs for web services. In this time, the most recurrent question that has come up is “how do we structure this API”? After years of working in this area, I’ve made many mistakes and learned many lessons.
read more →

Switching From Sublime Text to Visual Studio Code

I’ve been a loyal Sublime Text user for more than 6 years and have thoroughly enjoyed using it. Over the past week I’ve spent some time trying other text editors and IDEs to see if there is anything new worth using.
read more →

A Naïve Blockchain Implementation

This post is the first in a series where I naïvely approach the blockchain pattern in an attempt to better understand the technology. I will be documenting my thought process as I work to implement a simple blockchain.
read more →

Making Python's Asyncio Synchronous

Python 3.4 introduced asyncio—asynchronous I/O and coroutines which are very powerful tools for writing concurrent code in a sequential fashion. As these tools become more powerful, we are seeing more libraries and frameworks that depend on asyncio.
read more →

Kicking the Disposable Habit

I’ve been thinking a lot about the state of consumerism in Canada and, more broadly, North America and I think we have a serious problem. Nearly everything we buy is designed to be disposable.
read more →

Migrating this site to Hugo and Netlify

Up until yesterday I’d been maintaining this site by writing html and css by hand. Finally I decided that it’s time to move to a system that requires a little less work to publish an article.
read more →

Gaining Perspective

Have you ever been on a hike up a mountain and marvelled at how far you could see? You’ve just climbed several hundred metres and now you can see the whole city you live in. Not just your street; but the entire city.
read more →

Thoughts on Start Small, Stay Small by Rob Walling

Start Small, Stay Small: A Developer’s Guide to Launching a Startup is a sort of playbook for starting a small business online. The book is written for software developers who want to bridge the gap between creating software and being...
read more →

Thoughts on Anything You Want by Derek Sivers

Anything You Want is a super concise book filled with lots of knowledge. I agree with almost everything in this book and I’m inspired by Derek’s success as an entrepreneur.
read more →

Turning 30

Today I turned 30. Many people have been carefully asking me how I feel about this transition and response is always the same: I feel great!
read more →

Set Tomorrow Resolutions Instead of New Year's Resolutions

Every year, thousands of people sit down and think of several resolutions to make for the following year. They wait patiently for the next year to begin so that they can start eating healthier, start running, or reading more.
read more →

Keep It Simple

When I decided to start sharing my writing on this blog, I was evaluating what kind of tools and technology I should use to publish it. I looked at CMS’s, static site generators, hosted solutions, and who knows what else. Eventually...
read more →

Ditch the Kindle

E-readers might be convenient, but they have a critical flaw: they are designed to convince you to buy more books.
read more →

Hacking Productivity

Engagement and productivity are fickle things. No amount of money is going to motivate a person to be more productive. More content with renumeration, sure; but not more productive. Productivity is the measure of a person’s...
read more →

The Generalist, the Specialist, and the Leader

I’ve been thinking a lot about different personality types and how they relate to one’s career. What does it mean to be successful in your career? How can you optimize your career trajectory? I came up with a model that helped me to quantify...
read more →

In response to “Electron is flash for the desktop"

I recently read Electron is flash for the desktop. The author takes a negative perspective on the comparison and I’d like to offer an alternate one.
read more →

Being Busy

There’s a difference between being productive and being busy. I’ve noticed some people pack their schedules so tight that they are frequently late or they forget to eat meals. I don’t think *being busy* should be a badge of honour; I think it’s...
read more →

Exercise and Self-Image

I’ve always had trouble maintaining an active lifestyle. Maybe (probably) it’s because of my career choice (working in front of a computer) or my choice of hobby (also working in front of a computer) that I tend to fall back into a sedentary routine.
read more →

Host Your Own Content

There are some very popular websites out there that offer to host your content for you. Their pitch is that, by writing on their platform, you’ll have access to a network of other writers and readers. These companies make money—or at least they’ve...
read more →

Cooking for Yourself

These days, there are so many ways *not* to cook your own meals, sometimes I wonder if the act of cooking is becoming a thing of the past. On one side of the spectrum, we have products like Soylent which act as a meal replacement. On the other...
read more →

Maintaining a Productive Email Inbox

A cluttered email inbox can be overwhelming and cause you to be unproductive. When you open your email client, does it inform you that you have 23,037 unread messages? Trust me, I’ve been there and a clean inbox is much easier to deal with.
read more →

The Passwordless Method

Passwords are inherently insecure. It’s more than likely that you use the same password for several different services. If you’re really on top of things, you might use a password manager to generate and remember passwords for you. Even then...
read more →

Writing Software From the Top-Down

After a few years of writing software, I’ve settled on one thought process for planning what I create. Whether I’m building a customer facing feature or a command-line utility, I start by thinking about the end-user experience.
read more →