If Object-Oriented Programming Were Announced Today

Graham Lee has a post titled If Object-Oriented Programming were announced today:

Here’s an idea: the current backlash against OOP is actually because people aren’t doing OOP, they’re doing whatever they were doing before OOP. But they’re calling it OOP, because the people who were promoting OOP wanted them to believe that they were already doing OOP.

Basically, Graham argues that a lot of the “newer” paradigms are just OOP by a different name, and that none of us were really doing pure OOP to begin with. You should also check out his talk at UlKonf 2015Object Oriented Programming in Objective-C — where he talks about a lot of the same things in greater detail.

The Run Loop Episode 2 with Manton Reece

This week on The Run Loop I was lucky enough to be joined by Manton Reece, creator of Micro.blog and long time Mac and iOS developer. We talk about working on independent projects, building communities, creating a social network that’s resistant to harassment, tabs vs spaces, and more! Please check out the show on it’s website and if you haven’t subscribed in your podcast player of choice, please do.

Also, if you’re enjoying The Run Loop, please tell a friend, review the show on iTunes, and recommend it in Overcast.

Help Manton Hit His Indie Microblogging Stretch Goal

Manton Reece has four days to go on his “Indie Microblogging” Kickstarter, and he still needs our help. He’s trying to create an ad-free open platform for microblogging where people own their own data and can take it where they please. Right now he’s at $68,620 of his original $10,000 goal — which is fantastic. Manton has built safety into the platform with a feature he calls “Safe Replies” to fight abuse, but if he reaches his stretch goal of $80,000 he can hire community manager to make the service even better:

If the Kickstarter reaches $80,000, I will use some of the money to make my very first part-time hire for Micro.blog: a community manager. The community manager will help set the tone for the service, work on documentation and best practices, and be responsible for curation when Safe Replies fails to automatically catch emerging problems.

I’m going to up the amount that I’m in for. If you haven’t already pledged to help — and you can — you should.

The CocoaPods App

Managing third party code on iOS has always been a pain. In the past 9 years or so I’ve done everything from dragging source directly into projects, to Git submodules, to CocoaPods, to Carthage, to Git submodules again. Right now I’m using CocoaPods.

I’ve had three problems with CocoaPods from the beginning:

  1. It messes with my Xcode project files.
  2. It stops working for me all the time.
  3. I don’t want to mess around with Ruby gems.

While the first issue seems pretty much intractable, the CocoaPods app seems to (potentially) fix the second two by bundling its own Ruby environment in the app. Because it’s from the people who make CocoaPods, I assume it’ll keep updated to match the command line tool.

The app itself is pretty barebones. I’d love to see a future version let me see what updates are available for my pods from within the app and abstract away me having to edit the podfile by hand. Either way, I’m going to give it a shot. You can check it out on the CocoaPods website.

Brent Harping on Swift Limitations

Brent is harping on limitations you hit when trying to use protocol oriented programming in Swift:

But these days we’re smarter: we use protocols. There’s no reason Folder and File should descend from the same class — they’re almost entirely different, and inheritance is a pain to deal with, so we use protocols instead.

And we’re happy. It works great.

Until you realize that, in Swift, you can’t do this.

I hit something like this yesterday. So no, it’s not just him.

How John Zeratsky Became a Morning Person

This post on Medium by John Zeratsky echoes a lot of what I’ve felt, and what I’m trying to get to. This part describes how I’ve been my entire life:

It didn’t come naturally to me. When I had to wake up early—for a meeting, an event, or class—it was like the vignette above. I struggled to get out of bed. Often I barely made it to my engagement on time. And that rushed, zombie-like morning loomed over my day like a hangover.

John also was motivated by the same thing I am though; the promise of how much more you can get done by being a morning person. Whether I like it or not, the world isn’t likely to adjust to my natural schedule, so if I want to get by in it, I need to figure out a way to change this about myself. Missing mornings — or being awake but useless for them — means I’m missing a couple hours every day I could be participating in the world, or doing something good for myself. The best part is that it worked for John, and he’s kept it up:

It worked. I traded a typical night-owl schedule—up ’til midnight or later, staring at a screen, writing, doing design work, coding—for an uncommon routine where I go to sleep early, wake up early, and get a lot of work done in those quiet morning hours.

If he did it, maybe I’m not hopeless.

Cultural and Unconscious Biases

This post by eevee is specifically talking about video games, but I think a lot of it is a good characterization of discriminating behaviors, why they persist, and what people who don’t get it (saying “other side” feels wrong), don’t get. This part kind of jumped out at me:

There are, of course, also cultural biases that tip the scales towards people who are white or male or cis or whatever. But even if you don’t buy that, it shouldn’t be a stretch to think that there really are overt cartoon sexists out there in the world who are just not vocal about it. Some of them might be judges or managers or politicians. Some of them might even make video games.

You might think of them as weighted coins that always come up heads. And therein lies the problem.

You have 100 coins. You flip all of them. 60 come up heads. How many are weighted?

10, you might think. And you’d be wrong, because 60 heads is entirely possible, so you can’t actually be sure any of them are weighted! But there’s a much bigger problem: which 10?

I pretty much refuse to believe there is any such thing as a “meritocracy”, because even people with good intentions have unconscious biases. Good intentions (we just want to hire the most qualified candidate) aren’t enough to do the right thing. You need to actively and conscientiously work against unconscious feelings that you may have never even been aware exist. It’s really hard and it takes a lot of practice.

Functions as Factories

Cocoa at Tumblr:

Factories are a fairly well understood design pattern in software development. The benefits of using factories include:

  1. Abstracting constructors away from clients.
  2. Encapsulating data that clients do not need to know about.
  3. Allowing for more testable code by enforcing the idea of passing objects into initializers instead of referencing singletons directly.

This post will show the power of a few Swift features as well as of first­-class functions.