Archive for May 10, 2015

Sunday, May 10, 2015

Flickr Update

Tim A. Miller:

Tap into what feels like unlimited storage with our new Uploadr for Mac and Windows. You can finally upload as many as half a million photos that would otherwise be scattered across your laptop, desktop, an external hard drive, iPhoto and more. Then, turn on Auto-Uploadr on your mobile device and free up valuable space on your phone.

[…]

View your photos, videos and albums from anywhere - web or mobile - then browse through thousands of photos in seconds, easily navigating your entire catalog by date or by using the dynamic Magic View. Built with our advanced image recognition technology, the new Magic View will identify the content of your photos and organize them across more than 60 categories, such as landscapes, animals, screenshots, panoramas, black and white, symmetrical, and more.

[…]

We’ve made the new Flickr consistent across devices and platforms so that you can enjoy the same amazing experience whether you’re looking at a lifetime of images or videos on iPhone, iPad, iPod, Apple TV, Android, or on the web.

Don’t count them out yet.

Update (2015-05-10): Unfortunately, the Flickr Apple TV app doesn’t seem to be able to display albums with more than a few hundred photos.

Update (2015-05-12): adstads:

Starting this morning, in addition to any tags that you add to your photos, you’ll notice that Flickr may also add tags to help make them more discoverable in search. This is thanks to Flickr’s image recognition technology, which recognizes patterns in photos. For instance, when our technology recognizes patterns commonly found in car photos, it will label the image “car” and when it finds patterns commonly found in cat photos, it will label the image “cat.”

You’ll notice that tags added by Flickr will appear in an outlined box to make them visually distinct from the ones you add (which appear in a gray box). As the photo’s owner, you can delete any tags you don’t want or tags that are inaccurate.

[…]

We see your feedback and we’re sorry to hear that some of you are frustrated by this update.

(1) As promised above, we will be adding batch editing capabilities. If you want to change or remove lots of tags, this will get easier.

Update (2015-05-26): Matt Henderson:

After uploading some 30,000 images, however, I discovered a huge problem: The Flickr uploader created a new Flickr Album for every single folder of photos I’ve ever created in the above-listed Step 2.

So now, instead of a carefully curated set of perhaps 100 albums at Flickr, I now have over 1,400!

[…]

There’s no way to auto-arrange albums alphabetically in Flickr. So I now have albums with names like “1998 Nepal” listed ahead of albums like “2010 Trip to San Francisco”, and the only way to correct this is to manually drag the album around within the “Organizr” interface.

Programming Advice

David Smith (tweet):

Your goals are to reduce the number of things that you have to keep in your head at any given moment, and to rely as little as possible on your own ability to consistently do things right.

Failable Initializers, Revisited

Jesse Squires:

In a previous post, I discussed how Swift’s failable initializers could be problematic. Specifically, I argued that their ease of use could persuade or encourage us to revert to old (bad) Objective-C habits of returning nil from init. Initialization is usually not the right place to fail. We should aim to avoid optionals as much as possible to reduce having to handle this absence of values.

[…]

The issues above can be addressed by removing the model’s dependency on JSON (or XML) and creating single-purpose objects for each step of the process: (1) validating the JSON, (2) parsing the JSON, and (3) constructing the model.

[…]

The combination of a phantom type and a closure property enable us to construct many unique validators, while maintaining a single generic interface through which validation occurs. In other words, we do not have to create many different concrete validators (or validator subclasses) for many different models. Additionally, in this example you can see how this brings type-safety and readability to the validator. We know that this validator is for MyModel instances.

[…]

We have divided the problem into smaller subproblems and addressed each one individually. Even better, we can now unit test each component in isolation.

Under the Hood of Xcode Server

Honza Dvorsky (via Ole Begemann, comments):

As part of building a project called Buildasaur, I had a chance to explore the ins and outs of Xcode Server. Xcode Server is a combination of two of Apple’s apps, OS X Server and Xcode. Together, they can provide a continuous integration server for your repository.

[…]

Well, luckily, the engineers in Cupertino are indeed using the same open source tools as we do, like Node.js, Express, Redis and CouchDB, among others. And all of that lives inside of Xcode’s bundle, specifically in /Applications/Xcode.app/Contents/Developer/usr/share/xcs.

This is a goldmine of the source code of all the important parts of Xcode Server, in addition to /Applications/Xcode.app/Contents/Developer/usr/bin, where the closed source binaries live, e.g. xcscontrol, xcsbuildd, xcsbridge, xcssecurity and others.