We're hiring!

We're actively seeking developers & designers for our new Detroit location. Learn more

State in web applications

The prevailing strategy of writing web applications is to write server-side code that renders the interface in full. Dynamic interaction, when needed, is achieved by playing tricks with the DOM using frameworks like jQuery or Backbone, but the majority of interactions happen via following links and receiving pages from the server. I’ll call this the…

Read More »

Posted in Tools | Tagged , , , , | Leave a comment

Simple Network Prototyping in Objective-C

I find that when writing applications for Mac OS and especially iOS, it’s quite common to need to interface with a simple REST web service that delivers JSON payloads. Unfortunately, Cocoa’s networking APIs can be a bit cumbersome. To address this for my own needs, I wrote a simple asynchronous wrapper around NSURLConnection a few…

Read More »

Posted in Prototyping, Tools | Tagged , | Leave a comment

Balancing safety and convenience

In most languages, such as C, C++, Ruby, Python, and Java, if you ever attempt to send a message to nil (or dereference a NULL pointer), one of two things will happen: either your program will crash, or a runtime exception will be thrown, which could also lead to your program crashing.

Posted in Languages, Tools | 6 Comments

Making Xcode 4.2 and Ruby Work Together

As Apple’s LLVM compiler matures, there are fewer reasons for them to continue to maintain their GCC port and its Objective-C extensions. As of Xcode 4.2, Apple no longer includes GCC 4.2, leaving only clang and llvm-gcc. Unfortunately, there is a large amount of open source software that depends on GNU extensions to the C…

Read More »

Posted in Tools | Tagged , , | 2 Comments

Common SSD Pitfalls

For the last year, I’ve been using an OC-Z Vertex 2 as my primary drive. As you are probably already aware, they are quite fast. Even larger applications rarely take more than a single bounce in the Dock before they are finished loading, and you hardly ever notice when you run out of physical RAM…

Read More »

Posted in Tools | Tagged , | Leave a comment

Investigating Verizon’s Network Optimization

Earlier this year, Verizon Wireless adopted a process it calls Network Optimization with the goal of more efficiently transmitting data to its customers, and thereby reducing the load placed upon its wireless data network. It turns out that this process actually works by intercepting data sent to your phone, particularly HTTP data over port 80,…

Read More »

Posted in Mobile | Tagged | 18 Comments

Instance Variables in Objective-C

If you’ve ever taken a peek inside Apple’s Objective-C headers, you might have noticed some interesting things about the way instance variables are declared, e.g.: Why does Apple bother padding the struct with reserved bytes? And why store extra instance variables in a separate object altogether? To answer that, we have to understand how the…

Read More »

Posted in Languages | Tagged , , | Leave a comment