Monday, November 16, 2015 [Tweets]
JP Simard:
The whole point of Realm, or at least one of its very core ideas, is that it is objects all the way down. That was one of the driving principles that encouraged us to start fresh, rather than using an existing relational model. If you look at existing solutions that are currently out there, they tend to be ORMs. More often than not, there’s this conceptual object-oriented model that people are working with, which is really an abstraction of what’s going on underneath. Usually, these are records, tables with foreign keys, and primary keys. As soon as you start to have relationships, the abstraction starts to fall apart because you start needing expensive operations to be able to traverse these relationships.
[…]
As soon as you add this company
object to the Realm, it becomes an accessor. Once you start reading properties from it, you’re no longer accessing your ivars, you’re accessing the raw database values, with the benefit of cutting out four or five steps and a bunch of memory copy along the way.
[…]
Even though we’re doing this composition by adding one filter after another, we’re not redoing all these queries, we’re essentially building a tree of what the result should look like. Even if you just access the first result out of this query, we’re not going to have to read all the properties for all the other objects, because we really try to keep it lazy.
[…]
There are a bunch of optimizations that we can make at the core level such as native links at the file format level.
[…]
An important part and design consideration for the core file format was to make sure that the format on disk was readable in memory without having to do any deserialization. You skip that whole step. All you do is calculate the offset of the data to read in your memory-mapped memory, read that value from the offset to its length, then return that raw value from the property access.
Update (2015-11-16): Jonathan Wight:
Using Realm on a new feature here at 3DR and so far very impressed. Minor issues but on the whole better experience than using CD
C++ Programming Language Concurrency Database iOS Java Objective-C Optimization Programming Realm Swift Programming Language
Sarah Perez (comments):
A number of mobile app developers and industry observers recently noticed a significant change in the way the Apple App Store’s search algorithms are returning results. Developers say that, following a series of shifts that took place beginning on November 3, app search results now appear to be more intelligent and far more relevant – especially among the top results – than in previous months.
[…]
This new change is focused more on how apps are returned when users type in keywords to find an app – something that’s becoming a more common way to find apps in a crowded app store featuring over a million mobile applications.
David Sparks:
I’ve often thought App Store search was pretty embarrassing for Apple. My own particular canary-in-a-coal-mine on this issue is Tweetbot. When I needed to rebuild my new iPhone a few months ago. I searched “Tweetbot” in the App Store and the results came up empty. This is one of the most popular Twitter clients in the App Store and yet searching its explicit name did not find it. Searching “Twitter”, gave me a long list of Twitter-related applications but despite scrolling for a long time, Tweetbot did not show up.
He says this is fixed now.
App Store iOS Mac Mac App Store Search
Interstellar (via Jonathan Wight):
The simplest Signal<T>
implementation for Functional Reactive Programming you will ever find.
Open Source Programming ReactiveCocoa Swift Programming Language
Nimble:
Use Nimble to express the expected outcomes of Swift or Objective-C expressions. Inspired by Cedar.
// Swift
expect(1 + 1).to(equal(2))
expect(1.2).to(beCloseTo(1.1, within: 0.1))
expect(3) > 2
expect("seahorse").to(contain("sea"))
expect(["Atlantic", "Pacific"]).toNot(contain("Mississippi"))
expect(ocean.isClean).toEventually(beTruthy())
BDD has never felt right to me, but I do like using a layer on top of XCTest’s macros because they are both verbose and incomplete.
Objective-C Open Source Programming Swift Programming Language Testing
Dan Goodin:
The ultrasonic pitches are embedded into TV commercials or are played when a user encounters an ad displayed in a computer browser. While the sound can't be heard by the human ear, nearby tablets and smartphones can detect it. When they do, browser cookies can now pair a single user to multiple devices and keep track of what TV commercials the person sees, how long the person watches the ads, and whether the person acts on the ads by doing a Web search or buying a product.
Advertising Android iOS Privacy Web
Sunday, November 15, 2015 [Tweets]
Jared Sinclair:
The App Store is designed, from what it features to what it permits, to promote cheap, shallow, candy apps. It discourages developers from ever starting ambitious apps, both passively and actively.
[…]
The iPad was marketed as a third category of device, neither a phone nor a PC, but Apple has never managed to articulate what that third category really is.
[…]
iOS user interface paradigms are not suited to using more than one app at a time. iOS was designed almost a decade ago for a phone whose screen is smaller than the gap between the iPad Pro’s app icons.
He suggests bringing Gatekeeper to iOS to address the business issues, positioning it as a Mac replacement to address the category confusion, and making a separate “padOS”:
The iPad is walking backwards into all the use-cases for which the Mac was designed with deliberate intention from the Mac’s earliest days. But because of Apples bolted-on approach, tacking features onto a decade-old smartphone OS, the result is far removed from Apple’s best work. The design principles of an iPhone simply don’t scale up to an iPad, in the same way that the design principles of an iMac don’t scale up to an Apple TV.
App Store Business Gatekeeper iOS iOS 9 iPad iPad Pro Mac
Lloyd Chambers:
Something to be aware of when sending an image: Apple Mail may mangle the image you sent, recompressing it while greatly reducing it in size. One consulting client kept sending me screen shots that were so tiny so as to be unreadable.
It wasn’t obvious what the problem was, so here is the answer: check the Image Size control in the mail window.
This happens to me all the time.
Apple Mail E-mail Mac Mac OS X 10.11 El Capitan Photography
Todd Hoff:
How do you build the pool of people impacted by a disaster in a certain area? Building a geoindex is the obvious solution, but it has weaknesses.
[…]
When there’s a disaster, say an earthquake in Nepal, a hook for Safety Check is turned on in every single news feed load.
When people check their news feed the hook executes. If the person checking their news feed is not in Nepal then nothing happens.
[…]
Safety Check fans out to all their friends on their social graph. If a friend is in the same area then a push notification is sent asking if they are OK.
[…]
Using the news feed gives a random sampling of users that is biased towards the most active users with the most friends. And it filters out inactive users, which is billions of rows of computation which need not be performed.
[…]
Two machines in two different datacenters have a user that’s friends with the same person. This means both edges are traversed which ends up sending two notifications to the same person.
So they added a database and in-memory locking.
Alex Schultz:
This activation will change our policy around Safety Check and when we activate it for other serious and tragic incidents in the future. We want this tool to be available whenever and wherever it can help. We will learn a lot from feedback on this launch, and we'll also continue to explore how we can help people show support for the things they care about through their Facebook profiles, which we did in the case for Paris, too.
Algorithm Concurrency Facebook Optimization Web
Saturday, November 14, 2015 [Tweets]
John Gruber:
What I don’t get is why Apple gets singled out for its singular success, but other companies don’t. 92 percent of Google’s revenue last year came from online advertising. And more importantly, I don’t get why Apple’s non-iPhone businesses are so quickly written off only because they’re so much smaller than the iPhone.
Apple’s total revenue for last quarter was $51.5 billion. The iPhone accounted for $32.2 billion of that, which means Apple’s non-iPhone business generated about $19.3 billion in revenue. All of Microsoft in the same three months: around $21 billion. All of Google: $18.78 billion. Facebook: $4.5 billion. Take away every single iPhone sold — all of them — and Apple’s remaining business for the quarter was almost as big as Microsoft’s, bigger than Google’s, and more than four times the size of Facebook’s. And this is for the July-September quarter, not the October-December holiday quarter in which Apple is strongest.
[…]
Nothing in the world compares to Apple’s iPhone business, including anything else Apple makes. But a multi-billion-per-quarter business here (Mac), a multi-billion-per-quarter business there (iPad), a “Services” division that generates more revenue than Facebook, and an “Other” category (Watch, Apple TV, Beats, iPod) that booked $3 billion in a non-holiday quarter — and it’s clear that Apple’s non-iPhone businesses, combined, amount to a massive enterprise.
Wow.
Update (2015-11-14): Landon Fuller:
It’s not like Apple’s non-iPhone segments are totally independent of changes in the iPhone market, though.
Apple Apple Watch Business Facebook Google iOS iPhone Mac Microsoft
Marcin Krzyżanowski:
The fact is you can use where
keyword in a case label of a switch
statement, a catch
clause of a do
statement, or in the case
condition of an if
, while
, guard
, for-in
statement, or to define type constraints.
There are no Python-style list or dictionary comprehensions, though.
Language Design Programming Swift Programming Language
Juli Clover:
The first beta of iOS 9.2 introduced some changes for the Safari View Controller within apps, letting it work more like the standard Safari app with support for third-party Action Extensions and the ability to long tap on the Reload button to reload content without content blockers or request desktop site.
Much better.
iOS iOS 9 Web
Christopher Bowns:
In the same vein as diffing UTF-16 .strings files in git:
It’s easy to set up git
to show diffs for binary .plist
files.
The commands are:
git config --global diff.plist.textconv "plutil -convert xml1 -o -"
echo "*.plist diff=plist" >> .gitattributes
Git iOS Mac Programming Version Control
Jacob Torrey (via Gwynne Raskind):
By artificially deflating the cost of finding and fixing bugs in operation/shipped product through monopolistic means, bug bounties remove the economic incentive to develop better software by integrating security-aware architects into the SDLC. Bug bounties use their monopoly on setting prices (and preach the evils of selling exploits to other buyers on the market), usually after the vulnerability has been disclosed.
Bug Business Debugging Programming Security
Katie Hafnernov (via Slashdot, comments):
Dr. Amdahl rose from South Dakota farm country, where he attended a one-room school without electricity, to become the epitome of a generation of computer pioneers who combined intellectual brilliance, managerial skill and entrepreneurial vigor to fuel the early growth of the industry.
As a young computer scientist at International Business Machines Corporation in the early 1960s, he played a crucial role in the development of the System/360 series, the most successful line of mainframe computers in IBM’s history. Its architecture influenced computer design for years to come.
Computer History Museum (via Grady Booch):
In 1970, Amdahl left IBM for the second and final time to pursue his dream of building his own computers, founding Amdahl Corporation. His new company made mainframe computers that ran IBM software, but at lower cost. At its peak, it captured nearly one-fifth of the market.
Wikipedia:
FUD was first defined with its specific current meaning by Gene Amdahl the same year, 1975, after he left IBM to found his own company, Amdahl Corp.: “FUD is the fear, uncertainty, and doubt that IBM sales people instill in the minds of potential customers who might be considering Amdahl products.”
Chris Espinosa:
Gene Amdahl was the John DeLorean of mainframes (but without the cocaine). Invented, tried to out-compete, the IBM 360.
Wikipedia:
In computer architecture, Amdahl’s law (or Amdahl’s argument) gives the theoretical speedup in latency of the execution of a task at fixed workload that can be expected of a system whose resources are improved.
[…]
Amdahl’s law is often used in parallel computing to predict the theoretical speedup when using multiple processors. For example, if a program needs 20 hours using a single processor core, and a particular part of the program which takes one hour to execute cannot be parallelized, while the remaining 19 hours (p = 95%) of execution time can be parallelized, then regardless of how many processors are devoted to a parallelized execution of this program, the minimum execution time cannot be less than that critical one hour.
Update (2015-11-14): btilly:
The technical staff said that the operating system should run on microcode to abstract away the hardware. That way it would be easier for customers to migrate to new hardware as it became available. And they could easily add a new instruction if they needed to.
Gene said that it would be an order of magnitude faster if it ran directly on the hardware, and it wasn’t that hard to support that API going forward.
Both proved right. Gene built computers that were massively faster than IBM’s and perfectly compatible. IBM then added an instruction in micro-code and made all of their software use it. Gene’s installed base all crashed on IBM’s new code, while IBM’s was fine. The US government launched an anti-trust lawsuit, which wound up binding IBM’s hands for many years after.
IBM mainframes today still run on micro-code. And it still makes them massively slower than they need to be, but with better backwards compatibility. The mainframe world depends on a lot of programs from the 1960s and 1970s that runs, unchanged, today. Everyone else is using native instructions and runs faster.
John Dieffenbach:
“Because as soon as the IBM sales rep sees the Amdahl coffee cup on your desk, he’ll know I was here and he’ll drop his price by $1 million if you ask him to.”
ACM:
Amdahl left his company in 1979 to set up Trilogy Systems, an organization aimed at designing an integrated chip for even cheaper mainframes. When the chip development failed within months of the company’s $60-million public offering, Trilogy focused on developing its VLSI technology, which also did not do well. In 1985 Trilogy was merged into microcomputer manufacturer Elxsi (now Tata Elxsi), but poor results there had Amdahl leaving in 1989 for a company he founded in 1987 to produce mid-sized mainframes, Andor International, which had been driven into bankruptcy by production problems and strong competition by 1995.
[…]
Said David Patterson, a professor of computer sciences at the University of California, Berkeley, and a computer pioneer in his own right, “The IBM System/360 was one of the greatest computer architectures of all time, being both a tremendous technical success and business success. It invented a computer family, which we would call binary compatibility today. When he left to form his own company, his mainframes were binary compatible with the System/360.”
[…]
In addition to Amdahl’s Law, Patterson said, "Less well-known are Amdahl’s rules of thumb for a balanced computer system," which include, "A system needs a bit of IO per second and one byte of main memory for each instruction per second."
Business Concurrency History IBM Optimization Rest in Peace
Friday, November 13, 2015 [Tweets]
f.lux (comments):
Apple has contacted us to say that the f.lux for iOS download (previously available on this page) is in violation of the Developer Program Agreement, so this method of install is no longer available.
We understood that the new Xcode signing was designed to allow such use, but Apple has indicated that this should not continue.
[…]
It is proven that screens can negatively influence sleep, and we believe that f.lux makes a significant improvement, as it mirrors very closely the research on blocking blue light before bed. But as we’ve discovered, it is even difficult to conduct basic research in this area, because so many people today use mobile devices (with closed APIs) right before bed.
[…]
Technology and devices that know more about our bodies could make a major impact on health and wellness, and these are the reasons why we work on it every day.
For years, f.lux has been the app I most wanted to see on iOS. It really does make my life better and help me to sleep.
Juli Clover:
F.lux is a popular Mac app that’s been downloaded 15 million times, but with side-loading no longer available, f.lux for iOS is non-existant. F.lux’s developers are urging customers who want f.lux for iOS to send feedback to Apple, as the company would need new documented APIs to introduce the app through official channels.
Riccardo Mori:
Come on, Apple, at least allow f.lux’s developers to make available a regular f.lux iOS app. It really helps against eye strain.
iOS Developer Program License Agreement, 3.2(g) (via Jay Tamboli):
Applications developed using the Apple Software may only be distributed if selected by Apple (in its sole discretion) for distribution via the App Store, VPP/B2B Program Site, for beta distribution through Apple’s TestFlight Program, or for limited distribution on Registered Devices (ad hoc distribution) as contemplated in this Agreement
Mike Ash:
So every open source iOS app violates the rules? If so, the rules are insane.
Previously: Sideloading f.lux on iOS.
Update (2015-11-14): f.lux’s author:
If this were only about reverse-engineering or using LLVM to compile code I wrote, it would be reasonable to fight it. The remarkable thing about their agreement is that it concerns using information that is not provided under the agreement. This is a reasonable term for app store distribution, but it seems unprecedented and heavy-handed for unsigned binaries.
Ultimately, we pulled the app both to show good faith, and also because we were asking hundreds of thousands of people to use Xcode to make accounts and sign our software. When Apple calls up and says they don’t want that to happen, it is not really a thing you can fight. It’s their infrastructure, and they can decide how it is used.
We were feeling pretty good about introducing “building stuff in Xcode” to people who’ve never tried it before.
We have been as polite as we can to Apple in hopes that they will open up the platform to developers like us. The demand for f.lux is certainly incredible.
Riccardo Mori:
This isn’t hype — f.lux works. It works as advertised, and it’s great. I’m a night owl, I write a lot at night because it’s peaceful and I can concentrate better. Before using f.lux on my Macs, I always went to bed with red, teary, sore eyes. The strain was perceivable, and I had to take frequent breaks and turn the desk lamp off for a bit. And when I had to stay up until the wee hours of the morning, I never ended up sleeping very well, either. After installing f.lux, everything changed instantly. At first it was strange to look at the altered colour temperature of the Mac’s screen, but I adjusted quickly, and the eye strain disappeared right away. As I’ve often said, f.lux saved my eyes.
[…]
Well, I urge Apple to reconsider and look the other way, or to work with f.lux’s developers to find a way to allow them to ship a regular iOS app. It saddens me that something this useful is not allowed on the App Store, while a generous quantity of utter, useless crap is.
Flux iOS iOS 9 iOS App Mac App Store Open-source Software Private API Rejection Sideload
Thursday, November 12, 2015 [Tweets]
Supertop:
Castro is now a free app. Every feature is available without charge.
If you like Castro, please consider becoming a patron by contributing $1/month. You will support the work of a small indie app studio in a way that the standard App Store model never can. Yesterday, Supertop needed an endless stream of thousands of new customers to sustain our business. From today, we can be successful with a far smaller number of much happier customers. We can offer better support. We can add new features more often, instead of holding them back for splashy major releases. In other words, we can do the things that indies do best.
Samantha Bielefeld blames Overcast 2 for accelerating this “race to the bottom.” Overcast may have been the impetus, but I see it as more canary than cause. I think it’s likely that—given current App Store realities—this change will be a (relative) financial success for both Overcast and Castro. Patronage may be the least bad option for certain kinds of apps. Individual developers don’t make the rules; they can only respond to them, trying different ideas in the hope of finding something that works. Regardless, it’s a bad sign for the app ecosystem in general. It’s hard to believe that this is where we are given that over 1 billion iOS devices have been sold. But if cheap-paid-up-front and free-plus-in-app-purchase don’t work with this installed base, it will take more than just selling more devices to solve the problem.
See also: Jason Snell.
Update (2015-11-13): Charles Perry (tweet):
The iOS developer community has been locked in a game of the Prisoner’s Dilemma since the App Store was introduced in 2008, and we’ve lost at every turn. For us, the stakes aren’t whether we’ll go free or go to jail, but whether there will be a vibrant market for paid mobile software. Our choice isn’t whether or not to sell out an accomplice, but rather it’s whether we’ll choose short-term gains while at the same time contributing to the perception that mobile software isn’t worth paying for, or if we’ll forego those short-term gains knowing that a competitor could cash in and make our restraint all for naught. In short, it’s about the race to the bottom.
[…]
This new model, in fact, is the opposite of patronage. Instead of requiring a patron to provide money up front in exchange for an item of value, this new model gives away all the value in advance and requires nothing from those who receive it.
Michael Rockwell:
But what happens when we get even further away from the days when we paid for apps and get accustomed to a world where high-quality, best-in-class applications are free. How long will users continue paying? My guess is not very long.
I hate to say it, but I think we’re in the midst of an App Store bubble. There’s far more developers building apps then there is money in the ecosystem to support them. And the sad truth is that that if Overcast didn’t do it, somebody else was going to. That’s just the way markets evolve when there’s seemingly infinite supply.
App Store Business Castro iOS iOS App Overcast Podcasts
Tim Cook:
Yes, the iPad Pro is a replacement for a notebook or a desktop for many, many people. They will start using it and conclude they no longer need to use anything else, other than their phones.
John Gruber:
We’ve now reached an inflection point. The new MacBook is slower, gets worse battery life, and even its cheapest configuration costs $200 more than the top-of-the-line iPad Pro.
[…]
The iPad Pro is “pro” in the way MacBook Pros are. Genuine professionals with a professional need — visual artists in particular — are going to line up for them. But it’s also a perfectly reasonable choice for casual iPad users who just want a bigger display, louder (and now stereo) speakers, and faster performance.
[…]
For just plain typing, it’s not that bad […] My complaints and frustrations are more from the software, both iOS 9.1 itself and individual apps, both from Apple and third-party developers. Trying to use the iPad Pro as a laptop with the Smart Keyboard exposes the seams of an OS that was clearly designed for touchscreen use first.
[…]
I don’t think it’s inherently problematic that iOS has no conceptual support for a mouse pointer, and thus can’t work with any sort of trackpad. But, given this constraint, good support for navigating as much of the UI as possible using the keyboard is more important on the iPad than it is on the Mac. But iOS’s support for navigating using the keyboard is worse.
[…]
It brings me no joy to observe this, but the future of mass market portable computing involves neither a mouse pointer nor an x86 processor.
Andrew Cunningham:
The A9X can’t quite get up to the level of a modern U-series Core i5 based on Broadwell or Skylake (see the 2015 MacBook Air and Surface Pro 4 results), but it’s roughly on the same level as a Core i5 from 2013 or so and it’s well ahead of Core M. And despite the fact that it lacks a fan, the A9X shows little sign of throttling in the Geekbench thermal test, which bodes well for the iPad Pro’s ability to run professional-caliber apps for extended periods of time.
Daniel Eran Dilger:
When Apple first unveiled iPad Pro, it noted that its custom designed A9X chip would be faster than 80 percent of the PCs that shipped this year. Benchmarks indicate that it’s not just faster than low end generic PCs, but also faster — and less expensive — than Microsoft’s Surface Pro 4.
iFixit:
This isn’t quite what we’re used to! With the logic board situated in the center of the iPad, the display cables connect in the very middle of the device, so we can’t even lay the display down while we work.
Federico Viticci:
The feeling of a bigger-than-usual but lighter-than-I-imagined device has stuck with me. Every time I pick up the iPad Pro, I realize that it’s much bigger than the screen I’ve held every day for a year, but also not as heavy as I thought it would be.
[…]
After a week of intense usage, various trips in my car, and numerous walks around the house, I’m glad to acknowledge that the iPad Pro is still a portable iPad. I can hold it with two hands when walking around for a few minutes without feeling excessive wrist fatigue, and I can even hold it with one hand (usually my left one) if I want to interact with an app on screen with my right hand. I know that it sounds ridiculous – and I couldn’t believe Apple’s marketing shots either when I first saw them – but holding the iPad Pro with one hand in a corner is possible.
[…]
On the Home screen, the iPad Pro keeps the same 5x4 grid (in landscape, excluding the dock) of smaller iPads, only app icons are more spaced out. It’s odd to look at when coming from an iPad Air 2, and I think users should be able to keep more apps on the same page. The Home screen hasn’t been updated to take advantage of the iPad Pro at all, so even folders carry the same four-apps-per-row limitation of the Air 2 (same with the dock).
[…]
The Slide Over app picker is the leading example of how scaling some UI elements to the bigger screen isn’t going to cut it. Five months into iOS 9, I believe that the way apps are found and picked in the Slide Over interface is aging badly – you can’t search for a specific app in the tray, and if you realize that you need to re-open an app that you last used a few days ago, you’ll have to scroll all the way back to the top to launch it. This is starting to be problematic on the Air 2, and the issue is exacerbated by the iPad Pro.
[…]
The iPad Pro doesn’t use the second-generation Touch ID sensor employed on the iPhone 6s (Apple confirmed this to me) and the device doesn’t have a 3D Touch display.
Kontra:
Two ways to interpret this:
- Apple no longer cares
- New Springboard design coming in 2016
Federico Viticci:
The Apple Pencil feels great in the hand, it’s taller than I expected it to be (it’s really the size of a pencil), and its performance on screen is phenomenal.
[…]
You can pair a Pencil with the iPad Pro simply by removing the cap, plugging its Lightning connector into the device, and accepting the pairing request. The cap itself snaps magnetically onto the Pencil, which is a nice detail, and you can also remove the tip and replace it with a new one if it’s worn down too much. Apple includes a replacement tip in the box, and I’m a fan of the small tip that allows for fine strokes and small handwriting.
[…]
I noticed that iOS would have the occasional line accidentally drawn by the back of her hand; I’d say that Apple has managed to achieve a solid 90% palm rejection with the Pencil, which is impressive.
[…]
Once paired with an iPad Pro, you’ll be able to use the Pencil to interact with apps normally through taps and swipes. In fact, using the Pencil as a pointer and interactive tip when the iPad is held upright by a stand on a desk is quite nice.
[…]
The lack of special function keys makes interacting with the iPad Pro when connected to the Smart Keyboard a bit slower – I need to touch the screen to bring up Control Center for music controls, and I can’t double press a Home button shortcut to enter the app switcher.
However, the Smart Keyboard’s biggest advantage is that it doubles as a cover, it’s light, and it connects to the iPad via the Smart Connector. I can’t overstate how nice it is to not have to worry about Bluetooth pairing requests anymore – or having to recharge a Bluetooth keyboard every few months.
David Pogue:
Unfortunately, the iPad doesn’t have an adjustable kickstand like the Surface’s. Put another way: You can prop the iPad at any angle, as long as it’s 55 degrees.
There’s an upside to that inflexibility, though: The iPad’s keyboard cover is rigid enough to use on your lap.
[…]
Finally, Apple focused exclusively on the act of using the Pencil, and put no thought at all into storing it or resting it. There’s no place to carry it on the iPad, or even in the keyboard cover. It doesn’t attach magnetically during your work session, as on the Surface Pro 4. And it doesn’t even have a pocket clip, flat edge, or anything else to stop this perfect cylinder from rolling away from you.
Lauren Goode:
But the Pencil is just plain fun. It is indeed Apple white, and there are Apple-y things about it — for example, the fact that it is weighted, and won’t roll away on a table top, and always stops rolling with the word “Pencil” facing upward on its metal band.
Apple:
To move the cursor on your iPad screen, place two fingers anywhere on the keyboard until the keyboard turns gray. Then move your fingers to move the cursor around.
Previously: iPad Pro.
Update (2015-11-14): Manton Reece:
I don’t think I’ve ever been less excited to walk out of a store with a brand new $800 gadget. The iPad Pro has so much potential. I think it’s going to be a success and I’m building apps for it. But without the Pencil and keyboard, a significant part of the appeal is missing. And worse, developers who need a Pencil to start testing their apps — especially those apps like the one I’m working on that already supports third-party stylus pressure — are put at a month-long disadvantage compared to Adobe and the other early partners.
Apple Pencil Apple Smart Keyboard iOS iOS 9 iPad iPad Pro Keyboard Microsoft Surface
Nat!:
I have over 200 NIBs of which most of them have EOInterface objects in them. The problem is, that they don’t open in the newer Interface Builders anymore.
[…]
If I redo 200 NIBs manually, I am spending a year on this alone.
[…]
[IBInspectable] doesn’t really work well for the kind of custom bindings EOInterface needs. It’s good, that you can put NSObject based instances into XIBs (again ?), but the kind of typed connection EOInterface has are not possible with IBOutlet alone (unless you expose every EOAssociation). But I can’t load the NIBs anyway, because the loader complains even with all classes present.
Developer Tool Interface Builder Mac Programming
I woke up to an inbox full of e-mails from customers reporting that my apps wouldn’t launch. This included new customers who had just purchased from the Mac App Store as well as people who had purchased long ago, hadn’t made any changes, and expected that things would just keep working.
On my own Mac, 1Password and Dash wouldn’t launch until I entered the Apple ID password for my App Store account. For some customers, the fix is more complicated: restarting the Mac or deleting and redownloading the app. I was in the middle of using ReadKit, when it suddenly quit, then wouldn’t launch, with the OS reporting that it was damaged. However, redownloading the app didn’t work; I had to restart the Mac to get it running. Then I got the password dialog for Tweetbot. In some cases, there seems to be no way to get the App Store version working, so I’ve pointed customers to the direct sale versions of the apps and issued them temporary serial numbers. Fortunately, my apps don’t require iCloud, Map Kit, or other system services that are withheld from non–App Store apps.
The Mac App Store is supposed to make things easier, but it’s also a single point of failure. Not only is it neglected, but sometimes even the existing functionality stops working. Mac OS X 10.9 introduced a code signing bug that prevented me from submitting updates for several months. In June 2015, there was a month-long iTunes Connect bug that prevented my uploaded build from entering the review queue. And I currently have a bug fix update that Apple has been reviewing for 33 days (with 8 days of waiting before that). When I inquired about the status, Apple told me that everything was normal and that I should just keep waiting. In short, the system is broken on multiple levels, and there is no evidence to suggest that things will get better.
Paul Haddad shows the expired certificate that seems to be the source of the problem.
Dan Counsell shows a flurry of “App is damaged” dialogs.
Tom Harrington:
Every single app I have downloaded from the Mac app store is failing to launch, with a variety of errors. Every one.
Jonathan Wight:
Um. Launching Photoshop because MAS Acorn isn’t opening due to MASpocolypse.
Rainer Brockerhoff:
The “damaged” screen seems to be a GateKeeper glitch (fixed by reboot). Then, some apps don’t check expiring receipt certs; most do.
Mike Ash:
Turns out that the App Store is just another DRM scheme with all the nonsense and dysfunction that implies. Who’d’a thunk it.
Drew McCormack:
Whoa, serious Mac App Store problem: It is delivering a binary to users that is still waiting for review; crashing on receipt validation.
Had to pull the app from the store, because otherwise all my customers will upgrade and be left with a non-functioning app.
Lukas Mathis:
Catch-22. (Also, no, Apple. It wasn’t. I bought this app on this computer, and just yesterday, it worked fine.)
Kirk McElhearn:
Seriously, what a bunch of noobs sometimes…
Update (2015-11-12): Craig Hockenberry:
Just verified that you don’t need to reboot to work around the Mac App Store certificate problem. Instead:
$ killall -KILL storeaccountd
Craig Hockenberry:
When that dialog says “YourApp” is damaged, who’s the customer going to contact? You or Apple?
Worse, there’s no way for us to be proactive about this situation because we have no fricken’ idea who’s affected.
This is because only Apple has the customers’ contact information.
Bare Bones Software:
Restart your computer. (This is a necessary step, because the App Store’s code signing certificate has expired, and restarting will clear the local certificate cache.)
Necessary, but alas not always sufficient.
Daniel Jalkut:
Mac App Store meltdown: the less a developer heeded Apple’s own advice for validating receipts, the better they look to customers today.
Jim Matthews:
I can’t get MAS Fetch to launch on any OS.
Mihira Jayasekera:
This is some MobileMe-level brand tarnishing.
The Guardian:
Apple did not respond to request for comment.
Update (2015-11-13): John Gruber:
Inexcusable for a service that is absolutely essential to users and developers.
Harsh words, but I don’t see how anyone could disagree.
Matt Berg:
So many of their products feel this way. They’re just stretched too thin. And for what? Apple Watch? They’ve lost focus.
Steven Frank:
Every aspect of this MAS cert thing is completely infuriating to me.
Daniel Jalkut:
I spent a lot of years being sarcastic but optimistic about the Mac App Store. I guess my patience, like so many others’, has worn thin.
More than anything else, sandboxing and my assumption that the future was in the Mac App Store, has shaped my priorities the last 5 years.
Paul Haddad shows a 1-star review from a customer whose app stopped launching.
Andrew Wickliffe shows a reply from Apple Support encouraging him to post a review in the Mac App Store in the hopes of the developer contacting him. This is ironic because Apple does not let developers contact customers who post reviews.
A customer e-mailed me to say that AppleCare told him that “actually the app store certificates come from the developer of the app, not Apple. Apple only approves the certificates. […] So their current position is that it’s the responsibility of the app developer to fix it!” I think this is incorrect and that Apple itself signs the apps that the store distributes. My own certificates are for submitting to the Mac App Store and have not expired. Furthermore, if AppleCare’s explanation were correct, the workarounds (entering your password, redownloading the app, restarting the Mac to clear the caches) wouldn’t work for anyone.
Michael Yacavone:
Wishing all my favorite MAS developers the best after Apple dropped the cert and then blamed devs. Sad situation. Everyone take a month off.
I woke up in the middle of the night thinking about how egregious Apple’s behavior this week has been toward devs.
Michael Gorbach:
Between Apple nuking sideloading for f.lux and the Mac App Store issues, I’m really feeling ecosystem angst today.
Pierre Lebeaupin:
This is not just unacceptable: this is a fundamental violation of the trust that both app developers and customers have placed in Apple, namely that bought, installed and compatible apps would keep working (short of any dramatic action taken for consumer protection so that they would not, such as revoking the certificate of a malicious developer).
[…]
So, in turn, how am I supposed to trust iCloud or Apple Maps, if I am not sure I can run any app that can access it? As if these services did not already have a reputation…
But even more troubling are the implications for long-term usage and preservation of software and it data.
Rene Ritchie:
Before it expired, Apple issued a new certificate, but one using SHA-2 (secure hash algorithm 2). This was supposed to be transparent, but once the old certificate expired, some people began experiencing problems.
First, outdated certificate information was stuck in cache, which required some people to reboot or re-authenticate in order to clear it out.
Second, some apps are apparently using an old version of OpenSSL for receipt validation, and—you guessed it!—it doesn’t support SHA-2, and hence isn’t compatible with the new certificate.
This makes sense, although I suspect there are also other factors involved because it doesn’t explain all the cases that I’ve heard about.
Paul Haddad:
Grabbed a new Mac App Store receipt. They are back to using SHA1 and it now has an expiration date in 2023.
Philip Elmer-DeWitt:
A security certificate Apple installed to protect users from malware had expired on Nov. 11, 21:58:01 GMT—precisely five years after its original creation—and nobody at Apple had thought to renew it.
The company fixed the problem—pushing through a new certificate that expires in 2035—but not before breaking untold numbers of Mac apps and confusing and inconveniencing countless Mac owners.
Matt Stevens says that developers need to be careful to validate App Store receipts using the receipt’s creation date rather than the current time. The creation date field was not initially documented, and Apple’s sample code uses the current time.
Keith Gugliotto:
What we know, so far, is the receipts embedded in most, if not all, Mac App Store apps became invalid yesterday. This happened without any advance warning from the mothership. How apps reacted to this varied. Our apps are among those affected, and in the worst way. […] In the meantime, we’re giving away our apps at our online store.
Jim Matthews:
As of November 13, 2015, it appears that Apple has fixed this issue. If your copy of Fetch from the Mac App Store does not open, drag it to the trash, empty the trash, and download a fresh copy from the App Store.
Nick Heer:
Today’s ongoing certificate expiration issue is yet another reminder that Apple needs to commit more talent and resources to the Mac App Store, or get rid of it.
Graeme Devine posts another response from Apple Support blaming the developer.
Update (2015-11-14): Shawn King:
This is a huge embarrassment to Apple (and one they haven’t explained or apologized for) as well as being a giant pain point for developers. After all, when your app stops working, who do you contact? The developer or Apple?
Core Intuition:
Daniel returns from Amsterdam to find Mac App Store issues abound. Manton buys an iPad Pro but has to wait for the Pencil. The two discuss the Mac App Store’s 6-year failure to evolve substantially, and dig into the emotional highs and lows of enjoying and surviving Apple’s platform constraints.
Glenn Fleishman:
When a certificate fails—whether through an accidental expiration or due to tampering—it’s a reasonable precaution for software to act as if the sky is falling, because there’s no good reason it should fail unless an attack or compromise is underway.
[…]
And yet because Apple’s infrastructure is seemingly so brittle, not only did it happen, it inconvenienced an unknown number of Mac App Store software purchasers, while offloading the frustration and customer-service load to developers.
Rainer Brockerhoff:
There are actually several different unfortunate problems here. First, the “damaged” dialog seems to be caused by some sort of cache or memory corruption in the system processes that coordinate to implement GateKeeper and the app store updates; some reports say killing the “storeagentd” process solves this problem without rebooting. (My system doesn’t seem to run this, FWIW.) What not everyone knows is that this dialog appears before the app it allowed to run; that is, it’s not affected by any checking done inside the app itself!
Second, asking for a new AppleID password. This is caused by the app itself checking the store receipt; something strongly recommended by Apple, since otherwise, it’s easy to copy a downloaded app to another computer and having it run there; I remember some early games not doing this and being widely pirated.
[…]
When and if you get a new version of the app, all certs will probably be new ones. So there’s no “allowing” a leaf cert to expire — they do so naturally.
[…]
Apple “pushed” a new certificate that expires in 2035. This is probably just looking in the wrong place — not knowing which certificate had expired, someone glanced at the root certificate and noticed the “new” 2035 date. Nothing new to see, of course; that cert was created in 2006!
Bug Code Signing DRM DropDMG EagleFiler Gatekeeper Mac Mac App Mac App Store Top Posts
Wednesday, November 11, 2015 [Tweets]
f.lux, the excellent Mac display color adjuster, has not been available for iOS except via jailbreaking. Now, however, there is a way to sideload it (comments):
In Xcode 7, you can install apps directly to your iOS device with a free account from Apple. So we decided to make a beta version of f.lux for people to try.
It’s a few more steps than installing the app store, but there are plenty of harder things even on Pinterest. So, here’s how to get f.lux installed on your iOS device.
Note that although you are downloading an Xcode project, it’s not open source. You’re just using Xcode to codesign the app and install it on your device.
f.lux uses location services to figure out the light levels in your area. The iOS version has two settings, day and night, whereas the Mac version automatically uses a bedtime setting late at night. The iOS version does, however, have the manual Darkroom mode.
It seems crazy to me that apps like this need to use a network connection and push notifications just to ensure that they get periodic minimal background processing time.
Given that f.lux no longer requires jailbreaking, it’s not clear to me what’s keeping it out of the App Store. Presumably, it relies on an API that’s private.
Update (2015-11-11): It’s a bit disconcerting, but with f.lux installed my iPhone’s screen will turn on every once in a while. I think this is because it has to wake up the screen to change the colors. Also, I don’t like the way it makes the camera look.
Riccardo Mori has a photo showing the f.lux effect.
Update (2015-11-12): The updated FAQ suggests that you can avoid waking the screen by allowing notifications and notes that there is a bedtime mode; it just isn’t configurable yet. However, I found that with notifications enabled it still wakes up the display.
Update (2015-11-13): Jason Snell:
Here’s hoping that iOS 10 might offer a feature that makes f.lux unnecessary, but in the meantime the only way to use f.lux on iOS has been to jailbreak your devices and download it from the Cydia store.
Alas: Apple Forbids Sideloading Flux.
App Store Code Signing Flux iOS iOS 9 iOS App iOS Multitasking Jailbreak Private API Sideload Xcode
Don Norman and Bruce Tognazzini (via Don Norman, comments):
The products, especially those built on iOS, Apple’s operating system for mobile devices, no longer follow the well-known, well-established principles of design that Apple developed several decades ago. These principles, based on experimental science as well as common sense, opened up the power of computing to several generations, establishing Apple’s well-deserved reputation for understandability and ease of use. Alas, Apple has abandoned many of these principles. True, Apple’s design guidelines for developers for both iOS and the Mac OS X still pay token homage to the principles, but, inside Apple, many of the principles are no longer practiced at all. Apple has lost its way, driven by concern for style and appearance at the expense of understandability and usage.
Apple is destroying design. Worse, it is revitalizing the old belief that design is only about making things look pretty. No, not so! Design is a way of thinking, of determining people’s true, underlying needs, and then delivering products and services that help them.
[…]
What kind of design philosophy requires millions of its users to have to pretend they are disabled in order to be able to use the product? Apple could have designed its phone so that the majority of people could read and use the phone without having to label themselves as needy, disabled, and requiring assistance. Even worse, the assistive corrections destroy the very beauty Apple is so fond of as well as sometimes making the text no longer fit on the screen.
[…]
Unfortunately, visually simple appearance does not result in ease of use, as the vast literature in academic journals on human-computer interaction and human factors demonstrates.
There are lots of good points here, although I don’t think the solutions are necessarily clear. There are tough choices to make when the screen is so small. In my view, the biggest usability problem right now is not Apple’s design but rather the general buggy state of its software. On both iOS and Mac, I am running into new little things that don’t work properly every day. And then there are the larger issues, like the fact that my iPhone’s ringer sometimes sounds muffled until I reboot and that the Do Not Disturb exclusion list doesn’t always work. On the Mac, Safari and Mail routinely stop working.
Previously: Long-Term Exposure to Flat Design.
Update (2015-11-13): Lukas Mathis:
That’s not a great way to make design decisions. Remember how funny we thought the Blackberry Storm was, with its «sometime you just tap it, but sometimes you have to press harder and make it actually click» screen? Well, that’s now your iPhone.
Likewise, people made fun of Windows 8, and how people found it hard to use at first, but one of its genius decisions was to put all of its hidden features behind edge swipes. In order to figure out how to find possible actions in Windows 8, you had to learn exactly one thing: swipe from the sides of the screen to see your options.
Update (2015-11-16): Chris Pirillo:
I wouldn’t be surprised if there was a memo circulating internally which outlines a game plan for every release along the lines of: “Get our hardware out the door, but keep the software working poor.”
Accessibility Apple Apple Software Quality Bug Design Do Not Disturb History iOS iOS 9 Mac Mac OS X 10.11 El Capitan
Riccardo Mori:
The other day, my friend Alex Roddie pointed me to this article on MacRumors: Apple Patents Switch-Less Force Touch Keyboard, Could Lead to Thinner Macs. Alex’s further comments were: I know Apple patents things all the time, but this one seems particularly ominous. — I think they have an end goal in mind of paper-thin (or completely insubstantial) computers for the sake of fashion. — And the rest of the industry will inevitably copy Apple, as it always has.
[…]
Except for the PowerBook Duo 280c and the eMate 300, typing on all these keyboards has been, overall, a great experience and a better experience for my fingers, hands, and wrists than typing on more recent Apple keyboards. In some cases — like the PowerBook G3 and the iBook — the shape and design of the laptop’s top case really helps and works in synergy with the keyboard in making the typing experience pleasant. It is precisely the absence of thinness and flatness (of the computer and the keys) that makes typing better.
[…]
Perhaps all these keyboard designs weren’t as stylish as the latest flat and thin Apple trend, but they were certainly keyboards that did their job quite well, no matter how long the typing session. And, most importantly, they were keyboards that didn’t need ‘adjusting’. I spent years typing on them and my fingers, hands, wrists are still pain-free and stress-free. Three days typing on a 12-inch retina MacBook, and my fingertips hurt as if I had been tapping on a block of marble.
After trying the new MacBook keyboard, I share his concern about the future of Apple keyboards. However, I don’t miss the old Apple notebook keyboards at all. In my view, the current MacBook Air/Pro and non-magic wireless keyboards are terrific.
Design Hardware History Keyboard Mac
Tuesday, November 10, 2015 [Tweets]
David Pogue:
For decades, Microsoft was considered a company distinguished
by copycatting and mediocrity. But today, the company is leading, not following.
The latest products, like the Surface Pro 4, the Surface Book, and Windows 10, are
elegant, coherent, and truly innovative. The company name may be the same, but the
people working there seem to be completely different.
[…]
Unlike any other touchscreen smartwatch, the Band works with any brand of phone: iPhone, Android, or Windows Phone.
[…]
Your fitness data isn’t locked into the Microsoft app. You
can share its data with popular apps from other companies, like Strava, MapMyFitness,
Runkeeper, MyFitnessPal, and so on.
[…]
The Band 2 is one of the most successful fitness wearables ever made. It strikes a unique halfway position on the spectrum between fitness band and smartwatch.
Android Fitness GPS iOS iOS App Microsoft Microsoft Band Windows Phone
Manbolo quoting Apple’s Mike Stern (via Samuel Goodwin):
I’m not going to say that there’s no place for these controls categorically. I think there are some apps that could maybe use one. But I will say that their value is greatly over-stated, and they have huge usability downsides too.
[…]
Remember, the three key things about an intuitive navigation system is that they tell you where you are, and they show you where else you can go. Hamburger menus are terrible at both of those things, because the menu is not on the screen. It’s not visible. Only the button to display the menu is.
Previously: The Hamburger Menu Doesn’t Work, Hamburgers and Basements.
Apple Design iOS
Dave Caolo:
When I saw these photos of the forthcoming Apple Store in Amsterdam, I noticed how great the construction barriers look. Typically barriers like this are erected simply to discourage prying eyes, but Apple often uses them as a marketing opportunity. This practice isn’t unique to Apple, of course, nor does the company always make such an effort. But when it does, the results are often charming. Here’s a look at some clever barriers Apple has used.
[…]
I’m biased as a former Bostonian, but my favorite example graced the Boylston Street Store. Made to resemble Fenway Park’s Green Monster, Apple successfully pandered to Red Sox Nation.
Apple Apple Retail Stores Design
Stephen Wolfram:
Today is the 200th anniversary of the birth of George Boole. In our modern digital world, we’re always hearing about “Boolean variables”—1 or 0, true or false. And one might think, “What a trivial idea! Why did someone even explicitly need to invent it?” But as is so often the case, there’s a deeper story—for Boolean variables were really just a side effect of an important intellectual advance that George Boole made.
When George Boole came onto the scene, the disciplines of logic and mathematics had developed quite separately for more than 2000 years. And George Boole’s great achievement was to show how to bring them together, through the concept of what’s now called Boolean algebra. And in doing so he effectively created the field of mathematical logic, and set the stage for the long series of developments that led for example to universal computation.
[…]
It is something of an irony that George Boole, committed as he was to the methods of algebra, calculus and continuous mathematics, should have come to symbolize discrete variables. But to be fair, this took a while. In the decades after he died, the primary influence of Boole’s work on logic was on the wave of abstraction and formalization that swept through mathematics—involving people like Frege, Peano, Hilbert, Whitehead, Russell and eventually Gödel and Turing. And it was only in 1937, with the work of Claude Shannon on switching networks, that Boolean algebra began to be used for practical purposes.
CS Theory History
Kate Meyer:
Clickable UI elements with absent or weak visual signifiers condition users over time to click and hover uncertainly across pages—reducing efficiency and increasing reliance on contextual cues and immediate click feedback. Young adult users may be better at perceiving subtle clickability clues, but they don’t enjoy click uncertainty any more than other age groups.
[…]
The motivation behind minimalist and flat design was a desire to get the ugly distractions out of the interface, so that the focus is on the content and user tasks. It’s ironic, then, that the misuse of these design styles slows users down by forcing them to think harder about what options are available to them.
Design iOS Mac Web
Rob Griffiths:
A user may not know what sandboxing is, but they may wonder why a developer “chose” to put up an annoying “please grant permission” dialog box when they try to do something.
[…]
This may not seem limiting, but we’ve heard from many customers who tell us they use computers at work that are blocked from the App Store; these buyers would have no recourse if we sold solely on the Mac App Store.
[…]
App review times can be an issue if you’re trying to patch a critical bug or get a major new release in customers’ hands. Currently, the review time is about seven days[…]
More important than the average review time is its variance. A week is bad enough compared with the minutes that it takes to update a directly sold app. However, sometimes the review process stretches on for a month or two, for no discernible reason.
Business Mac Mac App Store Name Mangler Sandboxing
Sunday, November 8, 2015 [Tweets]
Craig Hockenberry:
The href
points to an SVG file and the color
is used to draw the vector shape contained in the file (the background color for the tab changes depending on whether the browser window is active and if it’s selected.)
The documentation states that the graphic should be a vector shape filled with black. In our first test, we used a fill color that wasn’t black: the image is used as a mask, so the opacity of a filled shape is the only thing that matters. Any opacity in the shape’s fill color will be used, but we don’t recommend using it (and you’ll see why in just a second.)
[…]
Of course, at such a small size, a hand-tuned bitmap graphic would be a better choice.
[…]
It’s our guess that the company has other plans for these files. They currently only appear in pinned tabs, but as more sites support this new style of “favicon”, it’s likely that they’ll make their way into lists for browser history or frequently visited sites.
[…]
Of course you’ll want to preview your work as you tune your vectors. Safari caches the SVG files, so it takes a bit of effort to clear the old data and see your changes.
Design Graphics Mac Mac OS X 10.11 El Capitan Safari SVG Web
Charles Miller:
The problem, described in the talk the exploit was first raised in —
Marshalling
Pickles — is that arbitrary object deserialization (or marshalling, or
un-pickling, whatever your language calls it) is inherently unsafe, and
should never be performed on untrusted data.
[…]
This means that if there is any object reachable from your runtime
that declares itself serializable and could be fooled into doing something
bad by malicious data, then it can be exploited through deserialization. This
is a mind-bogglingly enormous amount of potentially vulnerable and mostly
un-audited code.
In Cocoa land, this is why we have NSSecureCoding. Some things to be aware of:
If you’re decoding a collection containing custom classes, it’s not enough for them to conform to NSSecureCoding
. You also have to use -[NSCoder decodeObjectOfClasses:forKey:]
and add your classes to the set.
- Even when using
NSSecureCoding
to check that you are decoding objects with the proper classes, you should still verify that the structure of the objects is correct. There’s a special (rather inconvenient) way that you need to create your archiver and unarchiver:
tl;dr: don’t use -[NSKeyedArchiver encodeRootObject:]
or -[NSKeyedUnarchiver decodeObject]
in new code unless you need compatibility with Format 1 archives.
Since +[NSKeyedArchiver archivedDataWithRootObject:]
and +[NSKeyedUnarchiver unarchiveObjectWithData:]
don’t give you an opportunity to call -setRequiresSecureCoding:YES
, they’re out of the party as well.
That leaves us with -[NSKeyedArchiver encodeObject:forKey:NSKeyedArchiveRootObjectKey]
and -[NSKeyedUnarchiver decodeObjectForKey:NSKeyedArchiveRootObjectKey]
.
- Especially if you’re using Swift, you’ll need a top-level Objective-C wrapper to catch exceptions because
NSCoder
still doesn’t support NSError
. [Update (2015-11-08): See the comments below.] I have not tested what happens if a Swift class implements init(coder:)
and an exception is raised.
Update (2015-11-10): Paul Kim:
Even if you don’t call -decodeObject:
… in your -initWithCoder:
you still have to implement +supportsSecureCoding
and return YES in your class, even if a superclass already did it.
[…]
Objects like NSPredicate and NSSortDescriptor can take in key paths or selectors making them potentially unsafe. As a result, they are disabled after being securely decoded. To re-enable them, you have to call -allowEvaluation
(presumably after doing some sort of check).
Cocoa iOS Java Mac NSError Objective-C Programming Python Security Swift Programming Language
Friday, November 6, 2015 [Tweets]
Flickr:
On the iPhone 6s and iPhone 6s Plus, we’ve added 3D Touch support, enabling you to preview photos, people, notifications and more with a light press of your screen.
[…]
New in iOS 9, 3D Touch “Quick Actions” let you do the things you do most often, faster and in fewer steps. Lightly press our app icon to upload a photo, skip directly to notifications or the feed or to kick off a search right from your homescreen.
[…]
With universal link support, links you send or receive will now open directly in the Flickr app, instead of as a web page in Safari.
3D Touch Flickr iOS iOS 9 iOS App Universal Links
Mike Ash:
Incidentally, I think that representing all these different concepts as a single string type is a mistake. Human-readable text, file paths, SQL statements, and others are all conceptually different, and this should be represented as different types at the language level. I think that having different conceptual kinds of strings be distinct types would eliminate a lot of bugs.
[…]
Swift’s String
type takes a different approach. It has no canonical representation, and instead provides views on various representations of the string. This lets you use whichever representation makes the most sense for the task at hand.
[…]
Going from an arbitrary sequence of UTF-16 code units back to a String
is pretty obscure. UTF16View
has no public initializers and few mutating functions. The solution is to use the global transcode
function, which works with the UnicodeCodecType
protocol. There are three implementations of this protocol: UTF8
, UTF16
, and UTF32
. The transcode
function can be used to convert between them. It’s pretty gnarly, though. For the input, it takes a GeneratorType
which produces the input, and for the output it takes a function which is called for each unit of output. This can be used to build up a string piece by piece by converting to UTF32
, then converting each UTF-32
code unit to a UnicodeScalar
and appending it to a String
[…]
[…]
The various views are all indexable collections, but they are very much not arrays. The index types are weird custom struct
s. This means you can’t index views by number […] Instead, you have to start with either the collection’s startIndex
or endIndex
, then use methods like successor()
or advancedBy()
to move around […] Why not make it easier, and allow indexing with an integer? It’s essentially Swift’s way of reinforcing the fact that this is an expensive operation.
Language Design Programming Swift Programming Language Unicode
Russ Bishop:
Ah, the joys of non-garbage-collected languages. I spent some time debugging a retain cycle today and thought I’d share the process I used to locate and fix the cycle. Along the way, we’ll see how the Leaks instrument is a dirty filthy liar, watch as Xcode inexplicably mixes old and new code into the same binary yielding impossible behavior, and finally figure out how to use heap shots (or as the new Allocations instrument calls them Generations) to find the retain cycle even in the midst of a retain/release history thousands of entries long.
Instruments iOS Memory Management Objective-C Programming Xcode
John Gordon:
Dropbox, Google Drive and OneDrive all move our family data into the Cloud — and I’d like to not worry about that. Sync solutions mean new software, but perhaps only on one machine.
I’m going to stick our unused $20 SanDisk Ultra Fit 64GB flash drive in back of the Airport Extreme.
[…]
This Apple article partly explains what is supposed to happen. From Airport Utility we can create username/password “accounts”. Say “Parent” and “Kids”. When a client connects you are asked username/password, that gives access to the Folder of the same name as well as a “Shared” folder. So Emily and I connect as “Parents” and see the “Parents” and “Shared” folder, but we don’t see a “Kids” folder unless we connect with that username password.
There’s no way for me to connect with to the AE shared disk (partitions?) and see everything.
It’s so nice to be able to use USB flash drives and SD cards for smaller backups and shared volumes. They’re compact, and there are no cables or power supplies to worry about.
AirPort Extreme Base Station Cloud File Ownership File Permissions Mac Mac OS X 10.11 El Capitan USB
Dan Goodin:
Apps in both Google Play and the Apple App Store frequently send users’ highly personal information to third parties, often with little or no notice, according to recently published research that studied 110 apps.
The researchers analyzed 55 of the most popular apps from each market and found that a significant percentage of them regularly provided Google, Apple, and other third parties with user e-mail addresses, names, and physical locations. On average, Android apps sent potentially sensitive data to 3.1 third-party domains while the average iOS app sent it to 2.6 third-party domains. In some cases, health apps sent searches including words such as “herpes” and “interferon” to no fewer than five domains with no notification that it was happening.
[…]
iOS apps, meanwhile, most often sent third parties a user’s current location, with 47 percent of apps analyzed in the study transmitting such data. In total, 18 percent of apps sent names, and 16 percent of apps sent e-mail addresses. The Pinterest app sent names to four third-party domains, including yoz.io.facebook.com, crittercism.com, and flurry.com.
Android GPS iOS Privacy
Chris Lattner (via Erica Sadun):
The semantic model of swift generics is that they use runtime dispatch through “witness tables” provided by the protocol conformances of the generic types. This model allows for fast -O0 compiles and separate compilation of generics.
The problem with this model is that actually relying on this for everything would produce code that runs very slowly. To solve this problem, the optimizer uses heuristic-driven generic specialization that does code duplication where it thinks that it is profitable and sensible.
The way to contrast C++ and Swift is: C++ eagerly duplicates code in the frontend (and hopefully the optimizer can eliminate some of the copies later, with LTO…). Swift does not generate any copies in the front-end, but does generate them in the optimizer.
Also:
We are still on track to open source Swift (including Linux support) “by the end of 2015” as promised, more details will come out when they can.
C++ Programming Language Compiler Language Design Open Source Optimization Programming Swift Programming Language
Thursday, November 5, 2015 [Tweets]
Benson Leung (via Hacker News, Slashdot):
I bought the CableCreation Micro-B receptacle to Type-C plug for testing with Pixel and Nexus devices. I found that this adapter does not correctly charge the Chromebook Pixel and other Type-C devices. My analysis shows that this cable, although will charge and provide data through to the devices, does not correctly follow the USB Type C specification for power delivery identification. The CableCreation adapter advertises itself as 3A capable, but that is not appropriate because this is a legacy host port adapter.
[…]
In other words, since you are creating a USB Type-C plug to a USB 2.0 Type-B receptacle assembly, you must use a resistor of value 56kΩ. According to our testing, your cable uses a 10kΩ pull-up, which is not legal when the other end of the cable or adapter is a legacy Type-A or Type-B connector or receptacle.
By using this cable, your phone, tablet, or laptop computer may attempt to draw 3A, which may be more than the micro-b to A cable you attach to this adapter may be able to handle. This may cause damage to whatever cable, hub, pc, or charger you plug into this.
Amazon reviews have their problems, but for many types of products they’re the best available source of information.
Amazon Cable Google Chromebook Hardware USB USB-C
Rob Griffiths:
Each click on the Edit button eats a bit more of the space reserved for the Actions section. After about 25 clicks on Edit, the Actions section will be completely gone. (I have verified this on three machines, including a fully-stock El Capitan installation, so I don’t think it’s something on my end.)
At this point, the only fix is to quit and relaunch Mail—this will restore the Actions section, at least for another 25 clicks.
I’ve seen this, too.
Apple Mail Bug Mac Mac OS X 10.11 El Capitan
Apple (via Federico Viticci):
Apple News Format is the custom JavaScript Object Notation (JSON) document format for News content. With Apple News Format, you can create beautifully crafted layouts with iOS fonts, rich photo galleries, videos, and animations—all optimized for iPhone, iPad, and iPod touch.
See also: Facebook Instant Articles, Google’s Accelerated Mobile Pages.
Apple News iOS iOS 9 JSON Markdown Web
Steve Marx (via Peter Steinberger):
There are currently four SDKs for API v2: Swift, Python, .NET, and Java. We’re continuing to add new SDKs, so watch the blog for upcoming announcements. All SDKs and documentation for API v2 are managed via a code generation process, which means that they’re consistent across languages and easy to update as we add new API features.
[…]
Developers have often asked us to support the notion of a file ID: a unique identifier for a file that remains constant even when the file is moved. We’re pleased to announce that API v2 includes this highly-requested feature. Developers can now use file IDs instead of paths to make sure their apps don’t lose track of a file when it’s moved by a user.
You could call the old Objective-C API from Swift, but the new API does not work from Objective-C.
Update (2015-11-05): Matthew Abbot:
FWIW, objc support is planned as soon as the swift API leaves beta. There are a few aspects that will need a compat layer.
Update (2015-11-09): This Week in Swift links to this thread, which makes it look like Dropbox didn’t realize what they were doing.
Code Generation Dropbox iOS Mac Objective-C Open Source Programming Swift Programming Language Web Web API