U.S. drops Apple vs. FBI case

After a fierce public debate, the U.S. government has dropped it’s court order and court case to compel Apple to create a new version of iOS to access a phone. Here’s Bloomberg:

The U.S. said it has gained access to the data on the iPhone used by a terrorist and no longer needs Apple Inc.’s assistance, marking an end to a legal clash that was poised to redraw boundaries between personal privacy and national security in the mobile Internet age.

It’s the nature of government abuse of power that these debates are never “won” with any permanence, but when a power like this is ceded, it is never returned. So while I hesitate to call this a victory, I’m certainly pleased with the result.

The U.S. government continues to do the right thing after all other options have been ruled out.

iOS 9.3 update for older devices

Users of older iOS devices were experiencing issues updating to iOS 9.3, but Apple have fixed this, as MacStories reports:

As reported by MacRumors, Apple released an update to iOS 9.3 (build 13E237) a short time ago that addresses the activation problem on older devices. With the new build of iOS 9.3, people with older devices who didn’t previously update to version 9.3 should be able to do so now via an over-the-air update.

I used to think that only the paranoid wait to upgrade, but now I’m either paranoid or realize the wisdom in waiting.

Great watch apps are complicated

Apple Watch apps have been rough since the beginning: first they ran on the phone and were slow, now they ran natively and are slow, and they’ve always had a tough time convincing developers to get on board. Here’s Conrad Stoll‘s take (via Dave Verwer):

The best Apple Watch apps in my mind are the ones that include the most useful and frequently relevant complications. The watch face itself is the best piece of real estate on the watch. That’s park avenue. It’s what people will see all the time. The complications that inhabit it are the fastest way for users to launch your app. Having a great complication puts you in a prime position to have users interact frequently with your app while inherently giving them quick, timely updates at a glance. It’s an amazing feature for users, and the most rewarding should you get it right.

Federico Viticci, in response:

I don’t think that’s where Apple would like the Watch app ecosystem to be today, and it’s hard to argue against the greatness of complications when “full” apps are slow and barely usable. I also feel like I’m not too enthusiastic about Watch apps right now because (in addition to slowness) my most used iPhone apps don’t offer complications yet.

As an ardent Apple Watch user, I full agree that the app interface is bad. I don’t ever “go into” an Apple Watch app because by the time they’ve loaded, I’ve got gorilla arm syndrome. However, I disagree that the only great watch apps are Complications, because I find many apps are great as Glances. For instance, I don’t want a static icon of a “record button” taking up prime complication real estate, but I do want that function without going to my phone or Watch app drawer, and that’s why it’s a great glance. I’d make the same claim about controlling music and controlling my lights.

What makes a great Watch app is not always being a Complication, it’s that a great Complication often relates to time and therefore deserves to be on the watch face. Watch apps just need to be faster to be useful.

Apple hires new security VP

Apple have appointed a security VP one day ahead of their next product launch, here’s Fortune via Jim Dalrymple:

Apple appointed George Stathakopoulos, formerly vice president of information security at Amazon.com and before that Microsoft’s general manager of product security, to be vice president of corporate information security, the people said.

I was curious about him, so I searched his name in Google and it yielded his LinkedIn, with this self-description:

Vice President of Amazon Information Security and Corporate IT responsible for the programs that protect Amazon and its customers, as well as directing the company’s IT infrastructure and other technology resources.

Prior to joining Amazon, George led Microsoft’s global Microsoft Security Response Center and Global Security Strategy & Diplomacy teams responsible for proactively detecting and responding to threats, and partnering with governments on technical and policy security issues.

I’m would speculate that this hire is two-part, where (1) it’s pre-emptive against the chance of needed to logistically manage GovtOS; and (2) looking into how iCloud Backups and similar services aren’t presently end-to-end encrypted.

Engineers would rather quit than implement GovtOS

In the ongoing fight between the federal government and the world’s most valuable company, a previously quiet voice emerges: the engineers at ground. The New York Times reports (via John Gruber):

Apple employees are already discussing what they will do if ordered to help law enforcement authorities. Some say they may balk at the work, while others may even quit their high-paying jobs rather than undermine the security of the software they have already created, according to more than a half-dozen current and former Apple employees.

I knew this was going to come up when I first covered it a couple weeks ago. Here’s John Gruber’s comment:

… [M]any, if not most, security engineers at Apple would quit rather than comply with this order — and they’d have no difficulty finding jobs elsewhere in the Valley in today’s market.

The problem with this is that if not them then who? This is a task that must be placed in the most trustworthy hands, and Apple might be compelled to find someone to do it. The alternative to Apple building GovtOS is the government building GovtOS, and I know who I’d pick. But perhaps expressing the desire to quit is good: it reinforces that this is an undue burden on Apple, as it would hamper their ability to retain top talent in a competitive hiring market.

The Walking Dead S06E13: "The Same Boat" Review

Spoilers ahead. “The Same Boat” was a strong follow up to last week’s “No Tomorrow Yet”, and answers the question of “Can this show get any darker?” with an resounding “Yes it can!” Immediately, the show takes us to the other side of the mysterious voice on the radio at the end, and humanizes that group. Honestly, I thought Rick and the old gang were surrounded and that Carol had escaped (I think the voice on the radio said she had Carol but it just didn’t register), but as it turns out it’s just half a dozen people and they have captured Carol. With her recent lack on conscience and ruthless effectiveness, I bet Rick was tempted to respond, “Oh you have Carol? Cool, good luck, enjoy your remaining hours, tell Carol we’ll have dinner ready.”

Maggie and Carol get captured

The capture scenes in “The Same Boat” were great – it was engaging to immediately see the other side of the interrogation, from the perspective of the capturers. This, along with the line “You realize you aren’t the good guys right?”, solidified the anti-hero status and moral grayness of Rick and the group’s actions.

We also see the capturers call for reinforcements via radio, foreboding a borderline militaristic adversary that Alexandria will have to face. If the Alexandrian assault was on a mere satellite and it killed dozens of people, I have to imagine that Negan’s base proper contains hundreds of people. The capture scenes and the infrastructure set up by the Saviors forebodes to me that Rick may be in for more than he bargained for with Hilltop, and that all the facts about the Saviors are yet to come to light. Here’s Zack Handlen of A.V. Club on this point:

… “The Same Boat” doubles down on the idea that our heroes are, in their way, just as fucked up and villainous as the people they’re fighting against. Rick and the others did murder a bunch of strangers in their beds without warning, and by the end of the hour, Carol and Maggie have shown themselves of being capable of acts nearly as vicious. Admittedly they’re fighting in self-defense, but there’s still a fundamental brutality to their choices, and the assumption that this brutality is ultimately the only appropriate response, that robs them of the right to see themselves as heroes.

I predict that the way this is going to get resolved is by Negan being so Dickensianly evil and unrelentingly cruel that it exonerates Rick and co. for their possibly unjustified actions. This was foreshadowed by Negan’s men keeping polaroids of smashed-in heads: that’s not necessary evil, that’s sadistic evil.

Getting to know the Saviors

It was a very nice touch in the capture scenes when Paula said, “They think we’re weak. That’s good.”, in reference to Rick’s underestimating them. Later on, when she’s “interrogating” Carol, she asks how Carol got this far being so weak, when she should have assumed that her getting this far means she isn’t weak. I could not believe that any of them sympathized with Carol’s schtick, despite the fact that as a viewer I couldn’t tell if it was real or not, because she shot one of their own.

It seems that every lie Carol has told has contained a little of the truth: she reverts back to her days of being an abused wife, instead of the abuser being her husband it’s now Carol herself and what she does to survive. The lying by telling some truth goes deeper, as Matt Fowler of IGN describes:

Of course, Carol, in her half truth/half lie mode, didn’t give Paula the full story. The stuff about Daryl being attacked on the road was the truth, but she wasn’t giving up Hilltop or the deal they’d all made to assassinate Negan and his people. So while Negan did make the first move, Carol’s crew is not as innocent and scared as she made them out to be. And Paula saw right through that. Which was cool. Though Paula didn’t see far enough to know how serious a threat Carol truly was. Which was cooler.

Relatedly, I was shocked at how bad the interrogators were in “The Same Boat”. They display military efficiency in protocol and backup and supplies, but when it comes to getting information out of Carol and Maggie, they instead let it be known that: one of them is dying from smoking, one of them used to be pregnant but something happened, and one of them killed their boss to make it in the new world. I hope their ineffectiveness is explained in later episodes, but it was striking how bad they were despite how cruel they seemed.

Escaping, but at what cost?

It took everything that Maggie and Carol could muster to escape. Perhaps the reason that Alexandria are still the good guys is that the evil they do takes a toll on them. I was shocked at how quickly Maggie went from swapping tales of motherhood to ruthlessly beating people’s heads in, and I think the juxtaposition was intentional. Here’s Bryan Bishop of The Verge on this point:

It was animalistic, sure, but that’s the point we’re getting to now in the show: as much as these characters are trying to hold on to their humanity, they’re being stripped of it moment by moment, until only their most basic survival instincts are left.

For Carol, I think this is a great place for her character to go. She used to be almost cartoonishly effective, destroying an entire base with a mere arrow. Now, she can still do all of those things, but it comes at a cost that’s relatable. I look forward to finding out how this relates to Carol’s debate with Morgan, and whether this vindicates Morgan’s pacifist arguments.

This was a great episode, and the rising action makes me fear the inevitable introduction of Negan.

Indie developers on the App Store

How can I turn my idea into a business? This question underlies the recent discussion in the Apple blogosphere with regards to indie developers on the App Store. Some apps are developed out of love, some apps are developed accidentally, some for fun … there are many motivations. But the grand unifying motivation for everything is usually money, and developers that want to go indie or are indie have some issues with the way that Apple runs the App Store. What underlies this is that the only thing you can trust a rational agent to do is what’s in their interest, in many instances “in their interest” translates to “earns them money”, and I’ll show how this plays out with the App Store.

But first, before I seem like an apologist, there are some undeniable problems, and not just for developers; for instance: the Mac App Store is bad. It takes a long time to load, it requires restarting your computer because of certificates occasionally, and it’s hard to find apps. The search-ability problem is especially bad on iOS, where I usually rely on a Google search to take me to an App Store page, probably infuriating both companies.

The iOS indie scene

But even given this, and maybe in part because these problems have kept some developers from joining at all, the Mac’s indie software scene has been and still is pretty good: anecdotally, I love Sketch and Omnigraffle and Sublime Text and many more indie Mac apps. But iOS’s indie scene doesn’t quite live up to that. Here’s Rene Ritchie on the “popification” of apps on the App Store:

Day in, day out, some gamers drop tens or hundreds or even thousands of dollars on in-app consumables so they can feed their need for instant and ego gratification by clashing clans, crushing candy, and going Hollywood. Likewise, enterprise and individuals sign up for software-as-a-service that they also use on iOS.

There’s still ungodly amounts of money to be made in the App Store, it’s just not the same money or made in the same way as it used to be.

The article’s point is largely that the big players and apps we (power users, or akin) don’t care about (namely pay-to-play games) make all the money on the iOS App Store, de-incentivising more niche productivity apps. I think this is true but not necessarily surprising and perhaps not bad.

The reason it’s true is, well, simply look at the “top grossing” apps in your App Store: for me it’s Candy Crush, 3 different versions of Clash of Clans, Spotify, and Pandora. Almost by definition, no indie productivity app is going to find itself there, but this little slice is a brush stroke in a big picture: major studios and multinational corporations make most the money on the iOS App Store.

It’s not surprising because the iOS App Store has always been this way: if you were on the App Store on day one, things weren’t necessarily different, it’s that you got some free marketing. Because that’s what it takes to be big on the App Store: marketing. Anecdotally, I’ve seen many more advertisements for Clash of Clans than any other app. What we have today is the App Store from day one, just with many more titan’s shipping their app and clogging up the attention that would be paid to indies back on day one. With more apps, more marketing is required, and you cannot rely on Apple for your marketing anymore.

Acting in their own interest

The reason this isn’t necessarily bad is that I think this means Apple is doing something right: I’ve heard stories around the campfire that back in the day, apps were hard to come by on the Mac. There were RSS readers and task lists, but not necessarily a word processor or internet browser. But today on the App Store, Mac or iOS, there are probably 12 of each of those categories. And while we can have a discussion about quality, that signals to me that there’s something right. Chuq Von Rospach makes this point in response to Rene Ritchie:

I don’t think the App Stores are broken; I think they’re doing exactly what Apple wants them to, because Apple’s interest is in supporting the corporate app developers and the larger studio developers. They care about the NetFlix app and Adobe’s applications and what Gameloft is doing, not about what the small indie developers want or need.

Perhaps it used to be in Apple’s interest to get lone developers to develop on their platform, creating a grassroots campaign for Mac software, but it increasingly seems that this is no longer the case. Perhaps this is the reason for the change in tone of the App Store? However, I think Chuq misses something crucial that Rene’s piece shows: people interested in indie apps are vocal and drive the platform forward. It’s great for Apple when Federico posts about how he’s converted his workflow to be all-iPad, and indie apps are what enable that. I think Apple should care about indies.

What could be different?

And even if Chuq is right, I think Apple can care about indies. The goals of allowing indie developers to make money and allowing multinationals to make money aren’t mutually exclusive, though one does make the other harder. Here’s Brent Simmons on what he thinks Apple can do to help indies, and not that I don’t think corporate clients would complain about any of these provisions:

And indies would do better than they are right now — possibly much better — if the App Store had trial versions, upgrade pricing, and a faster and better review process. (And the Mac App Store should make sandboxing either less onerous or, preferably, optional.) (And — since I’m listing the ponies I want — it would help if Apple took something like 10% rather than 30%.)

And given that Phil Schiller was recently given control of the App Store, I wouldn’t be surprised in the event on March 21st had some news about the App Stores. But in many ways, the state of indie development is better than it’s ever been: it’s easier to build and ship an application than it’s ever been. But with this comes some changes: there are more apps, so the expectation of quality is higher and price is lower, and these, and other platform realities, are just the various factors you have to consider when you’re trying to act in your own interest.

 

 

"Number 3: never trust nobody"

Eric Kim at PetaPixel nicely articulates a lot of the arguments which I’ve come to accept. I am moving away from Facebook, Instagram, Twitter, and all similar cloud services that monetize my behavior, because you can only trust most rational actors to one thing: act in their interests. Only when other’s interest align with yours can you have a symbiotic relationship. Here are some of his reasons that he no longer trusts “the cloud” and Flickr in particular:

… [A]ny of these companies have the power (and right) to change any of their terms and conditions at any time. If tomorrow Yahoo announced that they are shutting down Flickr, there is nothing we can do about it.

And this has happened time and time again, with a very recent and prominent example amongst developers being the shuttering of Parse. It’s like Darth Vader said to Lando Calrissian, “I am altering the deal, pray I do not alter it further.” But asides from making money from you in the future, there’s the possible of making money on you in the future:

… Facebook and Google sell your personal data to advertising companies in exchange for their “free” services. And now it’s getting pretty creepy: the Google Adsense banner advertisements I get on my smartphone are hyper-targeted to me based on my Amazon and Google browsing habits.

While it’s not perfectly applicable, the aphorism that “if you’re not paying, you’re the product” expresses the truth here. And it’s only going to get worse. Facebook and Google have had a long time to collect data and have yet to discover all the ways to monetize it, and even if you (foolishly) trust Facebook or Google today,you cannot guarantee that they won’t be bought by some bad actor in the future, perhaps an insurance company searching for reasons to deny paying your medical bills, or a bank looking for reasons to deny you a loan, etc. You may think I sound, well, here’s the next bit I found enlightening:

… [B]e uber paranoid about your digital data. Constantly backup your data on the cloud, external hard drives, CDs, whatever. The question isn’t whether your hard drive will crash or not, the question is when your hard drive will crash.

I think the biggest application of this for most people in my experience is photos on Facebook. Be paranoid that Facebook will delete them, and instead of going there to enjoy them, download them, store them on your own hard drive, and back them up, because you cannot know that they’ll always be there.

The March 21st lineup

Marc Gurman of 9to5Mac speculates:

Apple yesterday officially sent invites to its much-anticipated event to be held at its Cupertino campus with the tagline “Let us loop you in.” The event, which was originally internally scheduled for a week earlier, will focus on Apple’s new 4-inch iPhone SE, a smaller, 9.7-inch iPad Pro, and new Apple Watch bands.

No new MacBooks? But please.

FBI jealous of China

The FBI have made the point that Apple should comply with the order because they’ve apparently done something similar in China:

If Apple can provide data from thousands of iPhones and Apple users to China and other countries, it can comply with the AWA in America.

I read this as:

Hey! No fair! Other governments get to trample their citizens rights and so should we!

The argument should be instead that maybe if an authoritarian government insists on Apple’s subjugating users that this behavior has no place in the land of the free and the home of the brave.

"Why didn’t you just write a blog post?"

Sudophilosophical is an experiment: I’ve heard claims that blogging is dead, I’ve been encouraged to go with the flow and publish where the readers are (Medium supposedly), I’ve been called a paranoid narcissist for insisting on owning my “content” (whatever that is), and many of these claims are compelling and reasonable (but still wrong). However, when and if the tech bubble bursts and the chosen unicorn publishing platforms of Silicon Valley are forced to monetize or die (see LinkedIn, Twitter, soon Medium), I hope this drives more people to own their own content and publish it themselves with a copy left license, reviving a bygone era of blogging bliss and Internet citizenry.

Or perhaps I’m delusional, but anyway, I was pleased to read Craig Grannel writing on his Revert Saved blog that:

So I’m trying something new, getting back to writing more regularly here again, but with shorter, sharper articles. I’m not sure what themes (if any) will emerge, nor even what kind of voice. But I hope any of you who are still checking in now and again will enjoy at least some of what is posted over the coming weeks and months.

Yes! Yes please do! Because RSS is an open web version of Twitter and we don’t need them to have a public discourse!

The smaller iPhone as a big deal

There’s a lot of buzz regarding Apple’s upcoming March 21st event, in particular about an expected smaller iPhone. Dan Moren writes for Macworld:

To me, the iPhone SE is an important move for Apple because, like the larger-sized Plus models before it, it indicates that Apple has passed the idea that the iPhone is a monolithic, one-size-fits-all device. And while I don’t think that the addition of the SE to the lineup will send iPhones sales back into the stratosphere any more than the iPad Pro did for sales of the tablet line, I do think that it adds another leg to hold up the stool that is the iPhone platform.

This is another hallmark characteristic of Tim Cook (along with being a stalwart on privacy, of course), that all of Apple’s core products have versions that are bigger and smaller: iPhone SE, iPhone 6s, iPhone 6s Plus; iPad Mini, iPad Air, iPad Pro; MacBook, MacBook Air, MacBook Pro Retina 13 & 15 … I rather appreciate the degree of choice, but there is a mystique with the “any color as long as it’s black” strategy. I think, uncontroversially, that the supposed iPhone SE will be great, it won’t transform Apple and the way we think about computers, and it won’t be a flop, but it’s no iPhone, if you know what I mean.

Apple vs. FBI is getting heated

Chris Welch of The Verge reports:

As Apple and the FBI head to another hearing on the San Bernardino iPhone case, both sides are growing more aggressive — and the exchange is quickly turning negative. Hours ago, federal prosecutors filed a motion that said “Apple’s rhetoric is not only false, but also corrosive of the very institutions that are best able to safeguard our liberty and our rights.” The government also pushed back against Apple’s concerns over the “backdoor” to iPhone making its way to the wrong hands. “Far from being a master key, the software simply disarms a booby trap affixed to one door.” Well, Apple isn’t very pleased with the government’s latest filing.

The company just held a conference call with members of the press, describing the prosecution’s motion as a “cheap shot” brief that takes away from the debate over consumer privacy and encryption’s role in preserving it. But Bruce Sewell, Apple’s general counsel and SVP of legal, had harsher words still. He accused the government of trying to “vilify Apple” on unsubstantiated theories.

Earlier today, Russel Brandom of The Verge reported:

Apple just pulled off a major scheduling coup. After months of rumors, the company announced today that its next product keynote will come on March 21st, just one day before the company defends itself against government efforts to break security on a phone linked to the San Bernardino attacks.

We’re absolutely going to see this issue mentioned at the keynote. It’s one of Apple’s most public and influential means of communicating with their customers. I hope they’re a specific call to action, i.e., “go to apple.com/privacy to find a list of congressman and senators to contact.”

Google doesn’t prioritize iOS apps

There’s a lot of animosity about Google’s applications on iOS. Michael Tsai posted a roundup:

Federico Viticci:

No matter the technical reason behind the scenes, a company the size of Google shouldn’t need four months (nine if you count WWDC 2015) to ship a partial [Google Docs] compatibility update for iOS 9 and the iPad Pro. Google have only themselves to blame for their lack of attention and failure to deliver modern iOS apps.

Other Google apps also lag behind on iOS. Kirsty Styles:

After launching on Android in October last year, a pitstop feature has finally dropped on Google Maps for iOS today.

One of the major competitive edges that iOS has on Android, as I see it, is the quality of apps on the App Store. I recently experimented with using an Android handset, and my experience is that all the “big names” have pretty good apps: Uber, Facebook, Twitter, Instagram … even Apple Music. But as your needs get more obscure, a Reddit client, an RSS reader, a podcast client say, so the apps get worse. This of course isn’t uniform, but I did find it striking. I bring this up because if Google doesn’t “prioritize” iOS because they don’t want to “help” their competitor, they’re only harming their own credibility. People will use alternatives (for instance, MS Office is really quite exemplary on iOS).

If I were Google and I didn’t want to “help” Apple, I’d make world-class web apps for mobile instead of half-assed native apps for mobile. As a comparison, Apple, Apple of all companies, do not have “iOS-like” apps on Android, they’re good Android citizens.

NSA data will soon routinely be used for domestic policing

The Washington Post published an opinion piece that quotes the ACLU of Massachusetts (via John Gruber):

What does this rule change mean for you? In short, domestic law enforcement officials now have access to huge troves of American communications, obtained without warrants, that they can use to put people in cages. FBI agents don’t need to have any “national security” related reason to plug your name, email address, phone number, or other “selector” into the NSA’s gargantuan data trove. They can simply poke around in your private information in the course of totally routine investigations. And if they find something that suggests, say, involvement in illegal drug activity, they can send that information to local or state police. That means information the NSA collects for purposes of so-called “national security” will be used by police to lock up ordinary Americans for routine crimes.

Woah.

The Walking Dead S06E12: "No Tomorrow Yet" Review

Spoilers ahead. This episode was one of the darkest ever. In a way, the undead are to The Walking Dead what stormtroopers are to Star Wars: they’re dangerous, but also cannon-fodder. I found the last few episodes at times deeply unsettling because of how scary they were and the violence, but it was obvious who the bad guys were: the zombies and the Wolves. Even when Rick and the gang murdered the Termites, I felt they kind of deserved it because they ate people. But this episode turns that upside down, and gives Rick, his plan, and the Alexandrians an anti-hero edge: where first Daryl kills “Negan’s” people with a rocket launcher (though admittedly they were threatning his friends) and next Rick kills more of “Negan’s” people for food.

The argument over striking first

One of the best parts of The Walking Dead is the moral conflict: Shane and Herschel and Dale, all with their own morality, all in conflict with Rick. This plot device re-surfaces this season, where the perfectly pacifist Morgan is the only detractor at striking first at the Saviors. While the storytelling has set Morgan up to be on the opposite side of the viewer’s feelings, it remains to be seen whether he’s right. In fact, a point that was not addressed in Rick’s town hall was: how do we know Negan and his Saviors are bad? In fact, quite to the contrary, it’s Jesus and the Hilltop that’s supplied all information regarding Negan and the Saviors, and how do we know they’re not framing the situation in their own favor?

Sure, there are some fairly damning signs: Negan seems to have evidently killed a teenager to prove a point, the Saviors seem to pit Hilltop against itself and kidnap people, and finally his name is Negan, as if it couldn’t be any more Dickensianly evil. But I hope that The Walking Dead plays on (to bring back the Star Wars analogy) the notion of  “the Empire did nothing wrong”, where sure, Negan’s henchman threatened Daryl, and extorted Hilltop, but perhaps they never intended to harm Daryl and co. And in the end, it was Daryl that struck first, and with a rocket launcher.  Even given this, Morgan’s plea for non-violence was ineffective, and at least in part because it was so weak. Morgan should have appealed to practical reasons that the gang shouldn’t murder an entire compound of people. Here’s Nick Statt from the Verge on this point:

There should be a counter-argument to Rick’s belligerent and hawkish approach to diplomacy, but Morgan is more often than not making nonsensical appeals to non-violence. He doesn’t articulate why characters shouldn’t kill, so viewers are tempted to show him the same disdain as Carol does. At least he’s building a jail — Warden Morgan would at least have a purpose.

In any case, there are plenty of reasons that Rick and the gang might be in the wrong here. If I were Rick, I’d have wanted more information before needing to commit to his plan, but I’d probably also have been eaten in season 1. I look forward to seeing this moral debate continue, I imagine Negan will be sure to bring it up when we meet him.

The pre-emptive strike

The invasion on Negan’s compound was all-around well-executed: on a meta-level, the direction and acting were exciting and believable, with regards to the story, the plan was ambitious and ruthless. Here’s Brian Bishop of the Verge on this point:

… [I]t’s all brilliantly executed both in front of and behind the camera, and as the second guard is taken out and the team pours into the compound it’s clear that director Greg Nicotero has been doing his action movie homework.

But this comes at a terrible cost, because as entertaining and wild as this scene was, Rick, Glenn, and the gang that are so known to have a moral compass in an evil world, murder people in their sleep. It was unsettling to watch Glenn slide a knife through (even a henchman’s) eye. Here’s Zack Handlen of A.V. Club on this point:

Some sort of line is being crossed here, albeit one that will inevitably become less important once we get first hand proof of just how vile Negan actually is. (I’m guessing.) But it’s chilling to watch Rick and Glenn murder dudes in their sleep, even as we’re offered ample proof that those dudes weren’t very nice at all.

Clearly the emotion we were meant to feel when we saw those Polaroids was that what Rick was doing was right, but for me, it did little to help. Again, it’s a very bad sign, but it’s no evidence that can’t be reasonably doubted. Clearly, at least Glenn feels this. Matt Fowler of IGN:

The fight, though, was really intense. First a walker head (complete with busted nose) to stand in for Gregory’s melon. Then some stealth kills. Then the rescue. Then…the sweep inside to collect guns and kill everyone on site. And sure, you’re not going to mourn much a guy who keeps polaroids of bashed in faces taped above his bed, but offing a stranger in their slumber is stilla heavy deal. So much so that Heath couldn’t do it. Glenn had to take over. And even he had severe qualms.

I think we’re going to see this plan horribly backfire: I don’t yet fully trust Hilltop to be telling the truth, it’s clear that this wasn’t Negan’s only lair (nice try, “I wonder which one was Negan?”), and Rick and co. are so clearly in the wrong.

And now they have Maggie

Matters have already taken a turn for the worse, where the unarguably unneeded Maggie was captured becaused Carol didn’t want the future mother to get her hands dirty. The gang already seem outgunned, and I look forward to finding out how they get out of this one.

Custom fonts with Dynamic Type in Interface Builder

Managing custom font text styles in Interface Builder and in code has always been a pain point for me when developing for iOS. For instance, what’s the best place to define text styles? Is it in the Interface Builder document? This grants you a great WYSIWYG experience, allows you to quickly change and iterate, and maybe even lets non-developers modify appearance. Or should it be in code? This makes changes to the appearance more explicit and easier to merge, as well as being an easier target for large-scale refactoring when an app-wide design change inevitably happens. I thought there must be a better way, and here’s my proposal. If you aren’t one for rhetoric, here’s some working code.

In both of the above scenarios, the text style is static: it’s defined either in the nib file or in the source file, and barring some runtime changes, it is constant. On the contrary, if your app uses the default iOS font, which is the beautifully utilitarian San Fransisco font since iOS 9, your app can take advantage of a system-level feature known as Dynamic Type. Dynamic Type allows the user to set the base font size used by the operating system on a scale from extra small to extra large. Apps that use system text styles can scale their fonts’ sizes up or down to account for the user’s preferences. But not all of us live in an all-white room where beauty can meet form and function: sometimes an app needs a custom font to express its own personality. It would be a shame if this requirement came at the cost of adjusting type size to a user’s preference, and fortunately, I have some code which lets you have the best of all these worlds:

  1. Define text styles in Interface Builder to take advantage of the WYSIWYG editor and great user experience;
  2. Change custom fonts quickly and easily by modifying source code;
  3. Adjust your custom font to user text style preferences using Dynamic Type.

The way that I accomplished this is two-fold: first you need to define your custom font’s various text styles, and secondly you need to override your Label’s and Text View’s font with your own with a custom subclass which overrides the font descriptor for text style method, as we’ll see.

I found out how to define custom sizes and font styles from this Stack Overflow post. The Stack Overflow answer isn’t quite right for me, because I wanted an all-Swift solution with all text styles, but it lays out the methodology for an implementation which I’ve used. Here’s the definition for UIFontTextStyleBody:

extension UIFontDescriptor {
    class func preferredAvenirNextFontDescriptorWithTextStyle(style: String) -> UIFontDescriptor {
        var onceToken: dispatch_once_t = 0
        var fontSizeTable: [String: Dictionary] = Dictionary()
        dispatch_once(&onceToken, { fontSizeTable = [
            UIFontTextStyleBody: [
                UIContentSizeCategoryAccessibilityExtraExtraExtraLarge: 21,
                UIContentSizeCategoryAccessibilityExtraExtraLarge: 20,
                UIContentSizeCategoryAccessibilityExtraLarge: 19,
                UIContentSizeCategoryAccessibilityLarge: 19,
                UIContentSizeCategoryAccessibilityMedium: 18,
                UIContentSizeCategoryExtraExtraExtraLarge: 18,
                UIContentSizeCategoryExtraExtraLarge: 17,
                UIContentSizeCategoryExtraLarge: 16,
                UIContentSizeCategoryLarge: 15,
                UIContentSizeCategoryMedium: 14,
                UIContentSizeCategorySmall: 13,
                UIContentSizeCategoryExtraSmall: 12
            ], ...
        ]})
        let contentSize = UIApplication.sharedApplication().preferredContentSizeCategory
        let sizes = fontSizeTable[style]!
        let size = sizes[contentSize]!
        return UIFontDescriptor(name:self.preferredFontName(), size: CGFloat(size))
    }
}

This code will first key on your text style name, then key on your users content size, which will yield a font size that you or your designers define. Next, we’ll get an example nib going with some labels with all of the text styles we want to support. I added a label for each text style and placed them in a Stack View:

Screen Shot 2016-03-07 at 10.14.43 PM

Interface Builder is going to show the system font with Apple’s font sizes. While we cannot change this about Interface Builder, we can change how our labels will interpret their text styles at runtime, and we can do that with a short and sweet label subclass, which we’ll set all our labels to. This way of getting a Label’s font description comes from this Stack Overflow post. Check it out:

class CFDTLabel: UILabel {
    override func awakeFromNib() {
        super.awakeFromNib()
        if let textStyle = self.font.fontDescriptor().objectForKey(UIFontDescriptorTextStyleAttribute) as? String {
            let font = UIFont(descriptor: UIFontDescriptor.preferredAvenirNextFontDescriptorWithTextStyle(textStyle), size: 0)
            self.font = font
        }
    }
}

Now, each time we have a label and set its text style, it’ll ask out custom method for the text style we defined in our UIFont extension. And that’s it, when we run our app we see our beautiful custom font which adjusts wit Dynamic Type.

Simulator Screen Shot Mar 7, 2016, 10.30.42 PMThis approach will be well-suited to you if you need a solution which lets define text styles in Interface Builder, adjust text styles quickly across your whole application, and scales up or down to meet your user’s font preferences. This last point is an important feature for people with different eyesight than the average: I’ve seen people use smaller text to fit more on the screen and larger text to make it easier to see.

LinkedIn and the network effect

Finding new professional contacts and keeping existing ones used to be a lot more difficult before the Internet, and now it’s becoming more difficult because of the Internet, or well, they way the Internet is monetized.

LinkedIn doesn’t cost anything to sign up and put your information on, and it would have a hard time convincing job-seekers or the employed if it wasn’t gratis. It’s kind of like free beer at other professional events, where the gratis stuff attracts people that might not otherwise bother. But unlike the free beer at that glorified sales info sessions, LinkedIn sticks to you, it becomes your online business card and professional directory. Furthermore, and like the free beer, LinkedIn has got to recoup the cost of the beer and more, as it must feed Wall Street’s insatiable thirst for growth. The conflict between being good at being your online professional network and being good at making money is the core of what’s wrong with LinkedIn: their interests aren’t the same as their users’ interests.

You may reasonably decide to do a quick query for “Paul Jones” on LinkedIn to see if I’m a hypocrite, and you would likely be slowed down by how many entries there are, so I’ll save you the trouble: I’m still on LinkedIn. Why? Evert Pot has a great way of putting it:

My only issue is that I feel, as an independent contractor, I’m obligated to maximize my potential in acquiring new customers. I don’t yet have the luxury to shut down an entire channel for new leads, despite the fact that LinkedIn has actually done very little for me in that regard. On top of that LinkedIn has become so ubiquitous that it’s actually become a standard question during some interview processes to ask for my profile. I feel that “I don’t have one” because of “principles” is never a great opener when you just made a new connection with someone.

Richard Stallman is often mocked on these grounds, of being unreasonable because of principles. A business person might deem this the “network effect” while a 5 year old might identify it more cogently as “peer pressure.” But it’s true. Everyone (in the professional scene) seems to be on LinkedIn, which means I have many reasons to be on there too. Then, because I’m now on it, LinkedIn as a service is more (even if only ever so slightly) valuable to a potential user. This compounds across millions of users until it’s inescapable. Facebook and Twitter have this same property as networks, and at least Facebook has found a pretty good way of monetizing without harming users too much: displaying engaging content from advertisers for a price. It isn’t perfect because advertising is annoying and has privacy concerns, but these are by no means insurmountable for users or for Facebook.

The biggest place that I see LinkedIn getting paid is for the “InMail” they sell to recruiters for the privilege of contacting people on platform. Unfortunately, just like every member of my trade which joins LinkedIn adds value, every sham recruiter and message they send me removes value from the network. Here’s Henrick Warne on the problem with recruiters:

Plenty of times, I have received messages from recruiters asking if I am interested in an “amazing opportunity”. Even if I am happy at my current job, I am always a little bit curious. You never know whether it is a great job or not. But before I can say if I am even remotely interested, I need to know some details. “OK, please send us your CV”. What? LinkedIn is my CV, you have already seen it. Next, they want to schedule a phone call. Why? Just mail me the details. If I agree to talk to them, they will act as if I contacted them, and they are now “helping me with my career” by jumping into interview mode. No, I don’t need your help. Just tell me about the “amazing opportunity”, and I will say if I am interested or not. If I am, we can take the next step.

The positive network effect that LinkedIn gets is increasingly stifled by the negative network effect of recruiters. Which is a problem, because the recruiters are the ones that are, in part, keeping the lights on. These misaligned interests are more than just some fuzzy notion I’m using to criticize LinkedIn, this conflict actually manifests itself in the product. As many people have embarrassingly realized, LinkedIn is terrible for contacting people and taking information that it tricks the user into. Here’s Dan Schlosser describing “dark patterns”:

In UX design, a dark pattern is design that works against users. It might trick them into doing the wrong thing, or just confuse them to the point where they can’t figure out how to do something that the designers don’t want them to do. This could be making it hard to delete a user account, or in LinkedIn’s case, making it really hard to use the service without importing your entire address book.

Unfortunately for LinkedIn, I’m of the opinion that the way forward is to decentralize the web from Silicon Valley unicorns, and I envision a utopia where everyone cares enough to host their own website. Perhaps it’s a pipe dream, but as technical skills are disseminated and the barrier to entry becomes lower thanks to improved tools, I have hope that people will come to desire control of their own Internet presence. Until then, I’ve un-connected with all the people I don’t know on LinkedIn and removed much of the information from my profile, and I advise everyone do the same.