Wednesday, 29 June 2016

The ultimate Apple I/O death chart →

[…] You can see that all of the heralded “Apple kills X” products like the iMac really just set the stage for Apple to slowly transition various tech out of its lineup. So while the iMac killed ADB, SCSI, and the floppy drive, Apple still shipped all those things in various other (mostly pro) machines for another couple years, because it had lots of customers who wanted those things. That gave the market for USB devices time to mature — creating temptation for those same pro customers to upgrade to newer machines that could take better advantage of all those USB devices.

Nilay Patel (author of the controversial “Taking the headphone jack off phones is user-hostile and stupid“) came up with a chart of I/O things Apple obsoleted over time. The “death chart” is quite interesting. As he observes, most I/O standards last about 15 years. If we put this together with other things Apple “killed” over time (like Flash*, which is worth mentioning), it should offer a perspective of the company’s vision of the future.

Moreover John Gruber mentions the Ethernet port is missing from that chart. Both Macbook Air & Pros lacked Ethernet for awhile now. Macbook laptops’ battery life is one of the best I’ve seen in laptops, so having a truly portable, cable-free laptop that can last for a whole day is a great achievement.

The more I think about it, the more I realize the trend isn’t just toward eliminating ports on devices — it’s about reducing the number of cables you use.

John Gruber

Read Gruber’s comments here:

However, I do agree that if you replace something, you need to come up with something better. Time will tell if killing the headphone jack outgrew its convenience and ubiquity. Let’s give it a few years, shall we? After all, they haven’t killed it yet.

*Steve Jobs dismissed Adobe’s solution in his piece “Thoughts on Flash”. He called out Flash for being a major battery drainer on mobile devices, as well as its reliability and security. As it turns out, he was right. It’s 2016 and everyone hates Flash. If we think of laptops as mobile devices too, it’s easy to see why with macOS Sierra, Flash will be disabled by default.

Tuesday, 21 June 2016

A Perl toolchain for building microservices at scale

The guys at Semantics3 explain how they came with a workflow that was tuned for micro-services and capable of scaling up with the team. Here are the problems they needed to address:

  1. Each code artifact (a library, script or service) should be owned by one engineer. It should do one thing and one thing only (Unix philosophy).
  2. Each code artifact must be checked in to its own VCS repository and must have tagged releases with semantic versioning.
  3. The experience of authoring a code artifact must be both seamless for an individual developer and uniform across the team with tooling present to take care of scaffolding boilerplate code, identifying dependencies, packaging, testing and releasing. The tooling available should enable a single engineer to own multiple code artifacts easily.
  4. Private libraries that we write must be installable from services in exactly the same way that third-party libraries are.
  5. Each code artifact must declare its dependencies (code and environment) explicitly i.e. clean contracts. Ideally, any developer must be able to run any script/service on their development environment easily.
  6. An engineer’s development environment must be as isolated as possible so that we don’t step on each others’ toes.

Why Perl?

Comprehensive article explaining why Perl (a question I’ve received a few times myself as well) and how they managed to resolve their issues using Pinto, Minilla, Carton, Perlbrew, Github and Mojolicious. In my job I use Plenv instead of Perlbrew, however they address the same problem. One thing I came to realise over the last year is Perl is a lot more present and capable than many think it is. Look at many solutions hosting providers offer, for instance, cPanel. That is Perl. Moreover, glad to see Mojolicious making the cut, as that is my go-to framework now. And I like it so much that I’ve decided to write a Beginner’s Guide for it. More on that soon.

Monday, 20 June 2016

iOS 10 Photos App

Behind Apple’s Advanced Computer Vision for Photos App→

Photos app recognises and distinguishes the following 7 facial expressions. Expressions are distinguished after forming a “faceprint”. These distinction are used for searching. They are also rated and indexed for generation Memories and montages.

Greedy, Disgust, Neutral, Scream, Smiling, Surprise, Suspicious

Photos app will generate Moments that falls within the following 33 categories. Default name of the moment will be automatically generated using metadata from the photos and tags from analysis of photos.

Memories from areas of interest, Best of past memories, Memories that break out of routine, Celebration in history, Contextual memories, Crowd, Day in history, Holiday in history, Location of interest, Nearby, New contextual memories, New memories, Person’s Birthdays, Person’s memories, Recent events (calendar, crowd, holiday, people, person, social, trip, weekend), Region of interest, Social group memories, Sometime memories, Special memories, Favourited, Trips, Week in history, Weekend, Year summary, Last week, Last Weekend

Kay Yin

I’m impressed to see what the Photos app is able to generate and distinguish, only computing data locally. The Photos app is also pretty accurate when recognising faces and objects. This compliments nicely the memories it is able to put together in nicely theme-matched videos. In addition to the above, Kay also provides a complete list of things the Photos app can be queried for as well as the categories to which they belong to. This list will continue to grow over time and it could easily be part of OTA updates. As Craig Federighi said in John Gruber’s The Talk Show (53:40)

There is this idea that if you don’t have the data, how would you ever learn? As it turns out, if you wanna get pictures of mountains, you don’t need to get it out of people’s personal photo libraries.