ReactiveCocoa and the flattenMap Operator

ReactiveCocoa has a number of built-in operators that enable a developer to map, filter, reduce, combine, merge, and flatten steams or signals. It’s a powerful and extensive toolbox, but sometimes it’s not clear under what circumstances these operators should be used.

One of my favorite operators is -flattenMap, and there are a two common cases in which I leverage it. Read more on ReactiveCocoa and the flattenMap Operator…

Git Pre-Commit Hooks and Specta’s Focused Examples

On my current iOS project, we’re using Specta as the testing framework. One of the really nice features that Specta provides is the ability to run specific specs/tests by prepending an f to an it or describe (or the other spec aliases). According to the Specta docs, “When specs are focused, all unfocused specs are skipped.”

When you’re trying to figure out why a test is failing, the ability to run a specific spec is invaluable. I love this feature, and I use it all the time. Read more on Git Pre-Commit Hooks and Specta’s Focused Examples…

Understanding Macros and Code as Data

The other day, while having a conversation in the office about Clojure macros, I was reminded that not everyone fully understands the phrase “code as data” or its useful repercussions. This isn’t surprising, as there are still very few mainstream languages that feature this, and most of the ones that do are lisp dialects. I think that’s unfortunate, as it’s a conceptually simple tool that you can get a lot of leverage out of. Read more on Understanding Macros and Code as Data…

Yer a Developer, Harry

When I tell people about why I chose to become a software developer, I tend to give one of the following answers:

  • I loved and wanted to make videogames.
  • I participated in FIRST Robotics in high school and got hooked on tech.
  • It’s a satisfying way to combine my desire to find definitive answers to tough problems with my desire to be creative.

But the real reason is much more embarrassing Read more on Yer a Developer, Harry…

Asynchronous Testing with Protractor’s ControlFlow

Protractor is an end-to-end testing framework for AngularJS applications that uses a real browser, just as a real user would. It is built on top of NodeJS and WebDriverJS and taps into the internals of Angular to know when Angular is done processing and updating bindings.

The joy of Protractor and WebDriverJS is that we can write our tests in a synchronous style, and still have the added benefits of asynchronous code. Read more on Asynchronous Testing with Protractor’s ControlFlow…

Zooming Out

If you spend much time around the offices at Atomic, you’ll eventually hear someone mention the phrase “zooming out” in relation to solving a problem. I’m not 100% certain on the origin of our use of the phrase (we may have picked it up from one of our friends at IDEO or Cooper), but I’ve used it frequently over the past two years. And the more I use it, the broader my definition becomes. It’s just so darn useful. Read more on Zooming Out…

Understanding Ember.js Computed Properties

Ember has a lot of great things going for it. One of the Ember features I constantly praise is computed properties. The Ember guides are a great starting point to learn about computed properties. Computed properties allow quick ways to massage and manipulate data into the form your application needs it. It makes presenting data a cinch.

Read more on Understanding Ember.js Computed Properties…

Being an Extrovert in an Introvert-Dominant Workplace

I’ve sometimes struggled with being an extrovert in an introvert-dominant workplace. It’s funny because if you research “how to thrive in an introverted world” it’s hard to find anything. There’s more advice given to the introvert on how to deal in an extroverted world.

Read more on Being an Extrovert in an Introvert-Dominant Workplace…

Simpler Deploys with git Subtrees: A Retrospective

Back in March I posted about using git subtrees to simplify deploys. I was initially hoping to clean things up a bit by using subtrees. I wanted to reduce the size of my deploy and my Heroku slug by excluding source assets. I also wanted to make sure that it was easy to understand and that other developers didn’t have to worry about extra steps when cloning the repo or when deploying. Submodules force some extra steps when cloning, pulling, and pushing, so they weren’t my first choice.

Using subtrees like this did work fairly well, but I would think twice before using them again for this type of problem. Read more on Simpler Deploys with git Subtrees: A Retrospective…