Code

C5 Labs VRogger

Originally posted on Carbon Five’s Blog. For the last two weeks a few of us here at Carbon Five Santa Monica explored our latest love, Virtual Reality, by creating a game from scratch. We had a hard time limit of two weeks and our team was small. Just Bhavna, Sidney, Nicole, and Rudy working on a full game experience, with levels, sound and design. This was completely an exercise in prioritization and exploration of a platform that only half the team had any experience with.

DIY Pokemon Go: Our Experience Building an Augmented Reality Scavenger Hunt

Originally posted on Carbon Five’s Blog. Thanks to PokemonGO, the streets are filled with people racing around cities, stopping to interact with virtual characters they could see through their phone camera. The experience is familiar to us at Carbon Five; 6 months ago we were doing the same thing on the streets of San Francisco playing our own augmented reality game. A game our tiny, three person team conceived, built and delivered in under a month, in and around our regular client workload!

Vintage Terminal Effect in CSS3

In addition to moving from Jekyll to Middleman for this site, I also wanted to do something special. Something that represented my quirky, geeky, 80s loving, hacker side instead of yet another Bootstrap styled blogging site. I debated between swiping Oran Looney’s Tron theme and one point considered making my entire site act like a console like Anders Evenrud’s demo. However, this could be a huge drain on the resources of any reader’s browsers, especially those on mobile devices.

Taking Advantage of Multi-Processor Environments in Node.js

Originally posted on Carbon Five’s Blog. Node.js has more than proven itself capable of handling multiple events concurrently such as server connections, and all without exposing us to the complexities of threading. Still, this locks our apps down to a single process with a single thread of execution consuming a single event queue. On a machine with a single processor, this is no big loss; there is only one active process in any case.

Monkey-Patching iOS with Objective-C Categories Part III: Swizzling

Originally posted on Carbon Five’s Blog. Have you ever wanted to introduce new functionality to base classes in the iOS SDK? Or just make them work a little differently? In order to do so, you must enter the wild and dangerous world of monkey-patching. In this series of posts, we’ll show how to monkey-patch in Objective-C through categories to add and change methods, to add new instance variables and properties, and introduce swizzling, a technique that allows us to extend and preserve existing functionality.

Sweeter Javascript: Defining Properties to Add Syntactic Sugar

Originally posted on Carbon Five’s Blog. Syntatic sugar makes for more human-readable code and, if done correctly, provides for more flexibility. In the world of Node many turn to Coffeescript to add that “sweetness”, but you can also achieve it with plain old Javascript. TL;DR ยป Object.defineProperty It all comes down to using defineProperty of the Object class. Introduced as part of ECMAScript 5 and implemented in Javascript 1.8.5 - which is supported by Node and most major browsers - it allows you to add or modify a property on an object by not just determining its value but its entire behaviour.

Monkey-Patching iOS with Objective-C Categories Part II: Adding Instance Properties

Originally posted on Carbon Five’s Blog. Have you ever wanted to introduce new functionality to base classes in the iOS SDK? Or just make them work a little differently? In order to do so, you must enter the wild and dangerous world of monkey-patching. In this series of posts, we’ll show how to monkey-patch in Objective-C through categories to add and change methods, to add new instance variables and properties, and introduce swizzling, a technique that allows us to extend and preserve existing functionality.

Moved from WordPress to Jekyll Part 2

Well so much for Jekyll encouraging me to blog more! But it has been a busy year since I got my site redesign up. Namely, my short film D.N.E. won BEST SCI-FI SHORT at Dragon*Con, I got my U.S. Permanent residency, and, oh yeah, I got married. But excuses aside! Let us delve into the technical details of my moving to Jekyll. Or if you want, skip ahead! Migrating my old Posts Jekyll’s documentation provides two ways to migrate posts from Wordpress.

Cross-Domain Browser Window Messaging with HTML5 and Javascript

Originally posted on Carbon Five’s Blog. We’ve previously covered how JSONP and CORS allow thick-client web applications to circumvent the same origin policy preventing requests to servers in different domains. However, cross-domain interaction is also blocked on the client-side; browser windows loaded with different sites have limited access to each other in order to prevent security breaches. Sadly, this also prevents any communication between thick-clients of web applications that do know of and trust each other … unless they use the Window#postMessage method introduced in HTML5.

Monkey-Patching iOS with Objective-C Categories Part I: Simple Extensions and Overrides

Originally posted on Carbon Five’s Blog. Have you ever wanted to introduce new functionality to base classes in the iOS SDK? Or just make them work a little bit differently? In order to do so, you must enter the wild and dangerous world of monkey-patching. Monkey-patching is extending or modifying the behavior of code at runtime without changing its original source code. You can monkey-patch any code, it doesn’t matter whether it’s your own code or not.

Getting "Test"-y in iOS Apps: Test-Driven Development and Automated Deployment

Originally posted on Carbon Five’s Blog. Recently, Jonah and I have been exploring test-driven development and automated deployment on the iOS platform. As we were both attending iOSDevCamp 2011, we decided to give a lightning talk summarizing our discoveries and to generate excitement within others in the community to start their project on the right foot by testing right from the start. While it wasn’t recorded, here is some of the ground we covered in the brief time we had.

Integrating Topic Branches in Git

Originally posted on Carbon Five’s Blog. A key feature of Git is how easy it is to create topic branches to separate and organize work. This power leads to a codebase with many more branches than you would typically see in other SCMs, like SVN. However, without an appropriate and consistent branch-and-merge strategy, your team will wind up with a confusing and unhelpful history. How do we avoid this mess? And what do we actually want our history to look like?