Archive for June 14, 2017

Wednesday, June 14, 2017 [Tweets] [Favorites]

Even Swiftier Objective-C

Peter Steinberger and Matej Bukovinski:

In our original “Swifty Objective-C” blog post we talked about the C++ auto keyword and how it’s great for preserving type information while also making the code more readable and easier to write. This is especially true when dealing with generics or block types. Since then, Objective-C learned the same trick via the new __auto_type keyword. Since nobody wants to type __auto_type all day long, we decided to make things nicer by defining Swift-like macros for it.

[…]

There’s only one copy selector, and it’s not generic. It’s also not a case where returning instancetype would be the right fix, as there’s no general way to understand what a mutable counterpart of a class pair is called and if one even exists. […] However, we can just add that ourselves! Again, a header-only declaration that simply redefines copy on our collections. This won’t magically add types to every single object, but it will solve the common case of (mutable) copying collections

[…]

We define a block and add __attribute__((cleanup)) to it that tells the compiler to execute the function defined in that attribute. We pass along the block as a parameter and thus execute the block when the scope is exited.

Previously: Swifty Objective-C, foreach Using Objective-C Generics.

A Eulogy for CAPTCHA

Abigail Rowe (via Nick Heer):

So this is how we prove our humanity, by TYPEing-IN the dirty-sock arithmetic on a Tide-branded CAPTCHA. “Prove you’re human.” It’s so blah, so crass—not even a please. And the worst part: CAPTCHA was supposed to be a good thing! Reducing spam? Good! Halting the internet bot takeover? Good! Improving AI technology? Good, hopefully! Stopping one bot from buying up all the whatever and reselling it 500%? Yes! Good again! But CAPTCHA isn’t so straightforward. And through it’s question, and our often incorrect answers, a darker, more dysfunctional portrait of the internet and the economy behind it seems to tip its hand.

[…]

As hard as CAPTCHAs are on some, they’ve become much easier for the bots they’re meant to keep out. Christopher Romero, a software developer, spoke with me about CAPTCHA’s history and a bit about the program’s possible future. Romero sees a shift by the major companies towards two-factor authentication to filter out sign-up spam. This is not, again, because the tech companies are questioning the broader implications of the “are you a robot” shtick, or even because of the problems they pose for people who have trouble seeing, or reading English. The robots are just getting smarter. They can read those dumb squiggly lines better than we can.

Charles Thacker, RIP

Cyrus Farivar:

Charles Thacker, one of the lead hardware designers on the Xerox Alto, the first modern personal computer, died of a brief illness on Monday. He was 74.

The Alto, which was released in 1973 but was never a commercial success, was an incredibly influential machine. Ahead of its time, it boasted resizeable windows as part of its graphical user interface, along with a mouse, Ethernet, and numerous other technologies that didn’t become standard until years later.

The History of BlitzMail

DEN-NYC Conversations (via Jim Matthews):

Ned Kenney (Dartmouth ’10) interviews Jim Matthews, a software developer and Dartmouth employee from 1987 to 2001 who played a central role in the creation of Blitzmail (aka “Blitz”). Blitz, an email/instant messaging hybrid, was literally decades ahead of its time and would become as much a cultural institution at Dartmouth as a technical one. It was eventually replaced by Microsoft software in 2011, but for over 20 years, it was the primary mode of communication for members of the Dartmouth community.

What I remember most about BlitzMail is how fast it was on the slow hardware and even slower modems of the day, even though the messages had to be pulled from the server. Secondly, the user interface was very compact and efficient, though somewhat unorthodox with menu bars inside of the windows.