How to defeat terrorism link

Parker writes about the bombs that struck Boston yesterday:

The cruel measure of “success” for an act of terror, then, isn’t how much harm is done in the explosion itself, but whether society’s reaction allows the terrible memories to fester and continue to disrupt our lives.

and

[O]ne of the most pernicious effects of terrorism is to undermine the bonds of trust and good faith in society. So one way to fight that is to celebrate the first responders and other heroes to come out of today. Celebrating the stories of kindness from after the bombing, many of which are truly remarkable. […] Noting that selflessness helps avoid perpetuating a terrible and cynical impression of human nature.

Goodbye, SoundCloud

After three years with the SoundCloud team, today marks my last day as a SoundClouder. I joined as an intern in the API team, worked on the Mac app and later joined the mobile team to work on the iPad, iPhone and Android apps.

I’ve had a great ride but the time has come for me to find new and bigger challenges. I’d like to learn a new programming language or two, explore new paradigms like FRP and do more writing.

I want to thank all the friends I found at SoundCloud for everything they’ve taught me over the years. You guys rock.

Here’s a Goodbye Playlist that captures some memorable moments from past three years at SoundCloud:

Input and Output link

Functional reactive programming offers a way to once again view our programs as simply input and output. We get to minimize state while also embracing a unified view of what our app is doing. It’s all just inputs and outputs.

If you haven’t noticed by now, I’m a big fan of Reactive Cocoa.
In this blog post, Josh Abernathy delivers a pretty good pitch on the benefits of Functional Reactive Programming.

When our only tool is state, every problem looks like a stateful nail.

Stubbilino

Stubbilino is a small library I wrote to help with stubbing in Objective-C. I was looking for a block-based interface for stubbing to use together with Specta.

afterEach(^{
  [Stubbilino removeAllStubs];
});

describe(@"A user view controller", ^{
  __block XYUserViewController *viewController;

  beforeEach(^{
    viewController = [[XYUserViewController alloc] init];
  });

  it(@"should display the username", ^{
    id<SBStub> stub = [Stubbilino stubObject:viewController];

    [stub stubMethod:@selector(user) withBlock:^{
      return kXYTestUser;
    }];

    [viewController.view reloadData];

    expect(viewController.view.usernameLabel.text)
      .to.equal(kXYTestUser.username);
  });
});

You can also stub class methods, for instance, here is how to swap the default NSNotificationCenter for a custom instance.

Class<SBClassStub> stub = [Stubbilino stubClass:NSNotificationCenter.class];

[stub stubMethod:@selector(defaultCenter) withBlock:^{
  return myNotificationCenter;
}];

If you would like to give Stubbilino a try, you can find the code on GitHub.