Recent articles

Jump to a random post

Find every other element in an array with Swift

Updated on: April 23, 2024

There are times when you need to extract a subset of an array. For example, you might need to find all elements in an array at an odd index. Or maybe you need all items at an even index. In other words, you’re looking for every "other" element in an array. This might seem like […]

Read post

Exploring protocols and protocol extensions in Swift

Updated on: February 21, 2024

In 2015 Apple announced Protocol extensions at WWDC and went on to explain the idea of Protocol Oriented Programming (video here), I think every iOS developer got really exited when they saw this. The ability to add default implementations to protocol methods through extensions makes it seem like everything we will ever build can and […]

Read post

Icon fonts vs. svg icons

Published on: April 16, 2015

We can all agree that using png sprites for icons is not the most modern (or best) way to present icons on the web. Png is a rasterized format which means that if you try to make the image (or icon) larger, the quality will become worse. When browsers started properly supporting @font-face and svg […]

Read post

How to choose between rem and em

Published on: April 12, 2015

A few days ago I found this article that argues for using rem units when defining font sizes. Generally speaking this is good advice. The rem comes with great predictable behavior, just like pixels do. But the rem also comes with accessibility advantages. When a user changes the font size in their browser settings, the rem and em […]

Read post

Why consistency will always beat motivation

Updated on: July 7, 2025

Motivation is fun when it’s there but it fades quickly and it doesn’t help you get anything done long term. In this post I talk about my experience with setting up a system that aids in building a more consistent workflow to help me remain productive throughout the week.

Read post

Using Flexbox in the real world

Published on: April 1, 2015

The Flexbox module for css was built with the intent to make a more robust, less hacky way to layout elements on pages. When you’re building a webpage you often don’t know how high or wide every element could or should be. This can cause problems in certain layouts which lead to ugly hacks. Flexbox […]

Read post

Service workers are awesome

Published on: March 29, 2015

In the war between native and web apps there’s a few aspects that make a native app superior to a web app. Among these are features like push notifications and offline caching. A native app, once installed, is capable of providing the user with a cache of older content (possibly updated in the background) while it’s […]

Read post

Filling in the blanks with calc()

Published on: March 28, 2015

One of the things in css3 that I don’t see used very often is the calc() function. Even though this function might not be useful in every scenario it certainly has it’s own use cases. In this post I’ll try to outline a few of these use cases for you. First, let’s start with a […]

Read post

Some tips for new front-end developers

Updated on: February 10, 2020

You’ve decided you want to get into front-end development and you’ve managed to learn a few things. The time has come for you to get some working experience and start growing your career in a beautiful field. I was in that position not so long ago and I noticed that actually having a job and […]

Read post

Death by papercut (why small optimizations matter)

Published on: March 21, 2015

It’s not easy to write good code. It’s also not easy to optimize code to be as fast as possible. Often times I have found myself refactoring a piece of code multiple times because I could make the code easier to read or perform faster. Sometimes I’ve achieved both. But when a project would grow […]

Read post

Expand your learning with my books

Practical Combine header image

Learn everything you need to know about Combine and how you can use it in your projects with Practical Combine. It contains:

  • Thirteen chapters worth of content.
  • Playgrounds and sample projects that use the code shown in the chapters.
  • Free updates for future iOS versions.

The book is available as a digital download for just $39.99!

Learn more