One of the hardest things a programmer has to do on a daily basis is naming things. Anything that we name will stay with us for a while and it’s very likely that other programmers will have to use the thing we just named as well. So naming something properly is very important. It’s often […]
Read post
Subscribe to my newsletter and never miss a post
Recent articles
Jump to a random postApple has launched Safari Technology Preview (and that’s great news).
Published on: March 31, 2016For a long time web developers have been complaining about the lack of updates (and modern features / APIs) for Safari. With the current release cycle for Safari we get a major updated version with every major OS release (which only happens once a year). This release cycle, and the lack of new features in […]
Read postBuild a simple web scraper with node.js
Published on: February 29, 2016Recently I released my first personal iOS app into the wild. The app is called unit guide for Starcraft 2 and it provides Starcraft 2 player with up to date and accurate information for every unit in the game. Instead of manually creating a huge JSON file I wrote a web scraper in node.js that […]
Read postUpdate for Xcode 11: Unfortunately, it appears that this method of cleaning derived data no longer works😕. Looks like we’re stuck purging ~/Library/Developer/Xcode/DerivedData/ by hand again. If you do know of a workaround similar to the one described here, send me a tweet and I’ll update this post! Any iOS developer that has spent significant […]
Read postA little while ago I wrote a post about PromiseKit. In this post I wrote mainly about how you could wrap API calls in Promises using the NSURLConnection extension that the creator of PromiseKit provides. Since writing that article I’ve had a bunch of people asking me more about PromiseKit. More specifically, some people wanted […]
Read postIt’s no secret that nginx has certain advantages over apache. One of them is that nginx is supposed to have better options for forwarding requests to ports other than port 80. My VPS has been using apache ever since I set it up because at the time apache was the only server I knew how […]
Read postSome of the most engaging apps we use today are apps that require network connectivity of some kind. They communicate with an API somewhere to fetch and store data for example. Or they use an API to search through a huge amount of data. The point is, you don’t want your application to sit around […]
Read postWhenever I’m programming, I have a goal in mind, generally a problem to solve. I want my solutions to be simple, yet elegant and reliable. Thankfully, Swift is a great language for this. The language is safe, its syntax is beautiful with great readability. The way Swift handles nullability with Optional contributes greatly to its […]
Read postNo app is truly complete without some subtle shadows. Especially now that Google’s Material Design is showing us that shadows are cool again we need a way to properly add them in our apps. In my previous post I wrote about a way to create a custom UICollectionView layout. There was one problem with that post though, […]
Read postNote: This blog post has been updated for Xcode 11 and Swift 5 👍🏼 If you’re looking to learn more about the new collection view layout techniques that were introduced in iOS 13, this post should contain everything you need. If you’ve ever built an iOS app that uses some kind of grid layout or […]
Read postExpand your learning with my books

Learn everything you need to know about Swift Concurrency and how you can use it in your projects with Practical Swift Concurrency the video course. It contains:
- About ten hours worth of videos and exercises
- Sample projects that use the code shown in the videos.
- FREE access to the Practical Swift Concurrency book
- Free updates for future iOS and Swift versions.
The course is available on Teachable for just $89
Enroll now