Modeling one-to-many in SQlite using the JSON1 extension

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 document, relational and graph databases.

He touches on interesting trend: Some of the most popular database systems such as PostgreSQL and SQlite now offer APIs to store and query JSON documents, making them multi-paradigm and bringing a lot of the benefits of document based database systems to traditionally relational ones.

Coincidentally I’m currently working on a feature that requires me to model a one-to-many relationship in SQlite, which lead me to try it’s JSON support.

Read More...

Quick Thoughts on Prototyping Software

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.

This posts focuses on using prototypes to validate technical ideas, not on creating prototypes for user testing.

Read More...

Another Small UIKit Debugging Adventure

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 more about the behavior of apps with multiple UIWindows. These kind of posts are mostly useful for me as an attempt to retain some knowledge. But I hope this story is entertaining and useful to you too!

Read More...

Bridging Swift Types to Objective-C

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. We are doing that within a large legacy codebase so more than 50% of our application code is still in Objective-C. As in many projects Swift and Objective-C need to co-exist.

Read More...

Why I don't Believe in Uber's Success

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 writeup of my arguments that I can share in future.

Since I’ve had a lot of discussions about Uber in person, it makes the most sense to write this piece in the platonic dialogue form.

Read More...

Understanding Data Race Detection by Implementing it in Swift

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 when attempting to synchronize access to shared resources and the resulting issues are often extremely hard to reproduce and debug. So I was very excited when I learned about data race detection in LLVM’s Thread Sanitizer in this year’s WWDC Session 412. Read More...

Apple Isn't Doomed Quite Yet

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 or less closely since 2012. From this position I feel like I’m able to view the state of Apple from a mainstream consumer’s angle. From that vantage point it seems like Apple has made mistakes, but it is not doomed quite yet. Read More...