My Five Favorite Books for Engineering Leaders
Aug 5, 2018, 5:00 PM
I recently got asked a lot about book recommendations for engineering leaders. Here are the five books that I’ve found most helpful so far.
Engineering Process Is Overvalued
Jun 9, 2018, 5:00 PM
Many engineers and managers focus too much on process and overlook much more important aspects of a successful engineering team.
Here’s a quick reminder about what really matters and what engineering managers should spend their time...
Flavors of Engineering Management
Feb 19, 2018, 4:00 PM
What is like to be an engineering manager vs. an individual contributor? Should engineering managers code? What do engineering managers actually do? The correct, yet unhelpful answer is: “it depends”.
Modeling one-to-many in SQlite using the JSON1 extension
Oct 24, 2017, 2:24 AM
I’m currently reading a great book on designing data intensive applications. In the earlier chapters of the book the author (one of the main contributors to Apache Kafka) discusses the history of database models and tradeoffs between...
Quick Thoughts on Prototyping Software
Aug 1, 2017, 2:24 AM
It’s almost the end of July and I’ve tried to keep up a schedule of blogging at least once a month. So I decided to pull a topic from the long pile of potential blog posts I’ve accumulated: prototyping.
Another Small UIKit Debugging Adventure
Jun 17, 2017, 2:24 AM
Working with closed source APIs sometimes requires us to use advanced debugging techniques to track down issues that cannot be explained by our application code alone.
This week I had an interesting debugging session in which I learned...
A Simple Undo/Redo Implementation in Swift
May 12, 2017, 2:24 AM
NSUndoManager is a powerful API, but it is geared towards Objective-C code and relies on runtime features. This post demonstrates a simpler alternative that is better suitable for idiomatic Swift code.
Safely migrating millions of database records across thousands of devices
Mar 21, 2017, 2:24 AM
This is a cross post of a piece that original appeared on the PlanGrid R&D blog
Surprises in Profiling Multi-Core Performance with Instruments
Mar 6, 2017, 1:24 AM
Short version: When profiling code that should run on multiple cores in parallel, CPU utilization of multiple cores isn’t a good indicator as a single thread might utilize multiple cores at (almost) the same time.
Bridging Swift Types to Objective-C
Feb 15, 2017, 1:24 AM
At PlanGrid we started adopting Swift prior to the 1.0 release. Despite the tooling problems you’re probably familiar with, we’re still excited Swift users and have written almost all new code since the summer of 2014 in Swift....
Why I don't Believe in Uber's Success
Jan 20, 2017, 1:24 AM
I wanted to write this blog post for well over half a year. I don’t believe Uber will be a successful business. I’ve been making my points in individual conversations over and over again - with this post I’m creating a...
Understanding Data Race Detection by Implementing it in Swift
Nov 19, 2016, 1:24 AM
TL;DR: In order to learn more about how Thread Sanitizer’s data race detection works I’ve implemented a very simple version in Swift. You can find it on GitHub.
We all know concurrency is hard. It’s easy to make mistakes...
Apple Isn't Doomed Quite Yet
Nov 1, 2016, 2:24 AM
The outcry in the Apple community after the latest Apple event has been huge. For many of its loyal customers it seems that the last bit of the remaining magic of the Jobs era has vanished.
I personally have only been following Apple more...
Declarative API Design in Swift
Oct 3, 2016, 2:24 PM
In my first real job as an iOS developer I built an XML parser and a simple layout engine - both had in common that they had a declarative interface. The parsers was driven by a .plist file that mapped XML elements to Objective-C classes....
Broken Toolchain Post Mortem
Sep 16, 2016, 2:24 AM
Dependency managers, IDEs, continuous integration, automated tests - all these tools are created to supercharge a developer team’s productivity. While modern development tools are amazing in many ways, they unfortunately also add...
Bridging Existentials & Generics in Swift 2
Jul 21, 2016, 2:24 PM
We are back to another episode of discussing generics, protocols with associated types and some type system limitations in Swift 2. This time we will dive into an interesting workaround that the infamous jckarter has taught me. We will...
Real World Flux Architecture on iOS
Jul 10, 2016, 2:24 PM
About half a year ago we started adopting the Flux architecture in the PlanGrid iOS app. This post will discuss our motivation for transitioning from traditional MVC to Flux and will share the experience we have gathered so far.
WWDC 2016 5 Minute Update: Opening Up iOS, Xcode Extensions, Apple Filesystem, Swift Playgrounds on iPad
Jun 14, 2016, 2:24 PM
A very brief summary of changes & impressions from WWDC 2016 Day One.
GCD's Main Queue vs. Main Thread
Jun 5, 2016, 2:24 PM
The correct way to ensure that code runs on the main thread / main queue is a recurring issue that causes some confusion among Cocoa developers.
The topic came up again this week as part of an issue with ReactiveCocoa and MapKit:
Beware the UIKit Visitors!
May 10, 2016, 4:24 PM
Investigating the Cause of Quadratic Time Complexity When Adding Subviews in UIKit
Yesterday Two weeks ago we identified a performance regression in the PlanGrid app, when entering a view that dynamically adds a large amount of...
Decoding Heterogeneous Collections in Swift
May 3, 2016, 2:24 PM
The problem of decoding Swift types from an outside data source, such as JSON, has been mostly solved. Since Swift’s release we’ve seen more than a dozen popular JSON mapping libraries pop up.
However, most of the libraries...
Compile Time vs. Run Time Type Checking in Swift
Apr 14, 2016, 1:09 AM
At some point, when learning how to use Swift’s type system, it is important to understand that Swift (like many other languages) has two different forms of type checking: static and dynamic. Today I want to briefly discuss the...
Squashing Commits With Git Rebase: A Very Quick Guide
Mar 25, 2016, 2:24 AM
Git’s interactive rebase is extremely useful for keeping a somewhat clear commit history. Here’s a very brief guide on how to squash multiple commits into a single one.
Validated: A Swift μ-Library for Somewhat Dependent Types
Feb 26, 2016, 1:24 AM
Today I built & published a μ-library that makes it easier to leverage Swift’s type checking system for program verification: Validated.
How I Write Swift Specs With Quick
Feb 25, 2016, 1:24 AM
I’ve recently tweaked the way I write Quick specs. I came to realize that I was placing a majority of my testing code inside of it blocks. This seems to be common among many code bases that use Quick/Nimble.
Feb 16, 2016, 1:51 AM
Hey there! My name is Benjamin Encz and I currently live in San Francisco. I moved here from Germany in 2013.
Currently I spend most of my time writing software, with a strong focus on iOS development. I’m working for PlanGrid where...
Feb 16, 2016, 1:51 AM
I’ve worked on quite a few things in the last couple of years…
Feb 16, 2016, 1:51 AM
I enjoy sharing things I’ve learned and spreading ideas. Here are the talks I’ve given in the past & the upcoming ones I’ve got scheduled.
Upcoming On a speaking break 🙂 2017 Workshop: Unidirectional Data Flow on...
Feb 16, 2016, 1:51 AM
I’ve spend a fair amount of my time on different writing projects.
Jan 21, 2016, 1:24 AM
For the last two months I have been actively working on Swift Flow with the goal of bringing the ideas of the Flux and Redux libraries to Swift developers.
Convenient Error Handling in Swift
Nov 19, 2015, 1:24 AM
Swift 2 introduced an error handling mechanism that includes backwards compatibility with Objective-C.
This is great news, the new mechanism is a lot stricter. Long gone are the days in which one could ignore errors by lavishly throwing...
A Flux Inspired Architecture for iOS
Sep 13, 2015, 2:24 AM
This year I spoke at 360iDev about “Safer Swift Code with Value Types”. The goal of the talk was to explore an architecture that uses immutable value types for the model layer.