Archive for March 28, 2015

Saturday, March 28, 2015

BusyContacts 1.0

BusyMac:

BusyContacts is a contact manager for OS X that makes creating, finding, and managing contacts faster and more efficient.

BusyContacts brings to contact management the same power, flexibility, and sharing capabilities that BusyCal users have enjoyed with their calendars. What’s more, BusyContacts integrates seamlessly with BusyCal forming a flexible, easy to use CRM solution that works the way you do.

BusyContacts syncs with the built-in Contacts app on OS X and iOS and supports all leading cloud services, including iCloud, Google, Exchange, Facebook, Twitter and LinkedIn.

Dan Moren:

You may not need everything BusyContacts can do, because it’s a lot. But if you’ve felt limited by Apple’s Contacts (or just hate its interface, as TidBITS publisher Adam Engst does), BusyContacts might fill some of the gaps you’ve encountered. In particular, if you need to share contacts among a group of people, say, in a small business, or if you need to log and manage your interactions with people, then BusyContacts is likely what you’re looking for.

[…]

That’s one place where BusyContacts’ useful filtering and tagging tools come in. Tags work essentially like groups in Apple’s Contacts, whereas filters are the equivalent of Smart Groups, letting you specify a set of criteria and then quickly view just the contacts that match them. But BusyContacts’ filters are far more powerful: for one thing, Apple only lets you create Smart Groups where a card matches a single criterion. BusyContacts supports multiple conditions, and you can see cards that match any, all, or none of them. It also lets you match on factors that Contacts doesn’t, so, for example, I can filter to see just those contacts that don’t have an associated picture.

I’ve been anticipating this for a while now because, like Engst, I’ve never been a fan of Apple’s Contacts application (or the former Address Book). My initial impression (after being put off by the installer) is that it has more features and a CRM focus that are interesting but not really what I’m looking for. I just want something basic with an interface that doesn’t get in my way, a sort of Fantastacts. As Moren points out, it doesn’t fix one of the most frustrating parts of Contacts:

I also wish I could easily rearrange the information in BusyContacts’ contact records. Reordering phone numbers requires a frustrating copy-and-paste dance; it’d be great if, in that aforementioned example with the area codes, I could simply drag my friend’s home phone number to the top of the list.

Update (2015-06-04): Gabe Weatherhead:

After using BusyContacts on my Mac for the past 6 months, I can declare it’s the most I will ever enjoy managing contacts.

ifo Apple Store Shuts Down

Gary Allen (via Peter Cohen):

After following Apple retail for 14 years, I’ve reached a happy ending, and am gracefully backing away from the crazy world of following the company and its stores. No more stories or analysis, or flying out to far-flung locations to join overnight crowds,waiting for the excitement of new store opening (NSO). I began this Web site as simply a way of celebrating the fun of grand openings and the close friendship of the people I met when I arrived in a new country or city.

Update (2015-10-15): Stephen Hackett:

Gary died on Sunday after a battle with brain cancer. I’ll miss Gary and his writing, and wish his wife, son and family all the best.

Michael S. Rosenwald:

Allen, a retired EMS dispatcher, traveled around the world — obsessively and expensively — to be among the first in line at the company’s new stores. He attended more than 140 openings, collecting all sorts of trivia. He could even tell you where Apple store tables are made (Utah; he stopped by the factory once to say thanks).

The history of Apple’s global conquest is stamped in Allen’s passport.

MailMate 1.9

Benny Kjær Nielsen:

As explained in the previous blog post I’ve been working on making MailMate a 64 bit application. This change is now complete and it involved numerous optimizations making MailMate faster while also making it use much less memory.

The migration to 64 bit is far from the only thing I’ve been working on. As always, the release notes are ridiculously long. Note that some of the listed features were also available in earlier releases as experimental 2.0 features enabled in the General preferences pane.

One of the new features is a bundle for importing the selected messages into EagleFiler. (It has long had built-in support for SpamSieve.)

ResearchKit and Open Source

Russell Ivanovic (tweet):

I’ve talked to a lot of people since the launch, and the problem is no one seems to know exactly what parts of it are open source, or even what it does. Are the 5 iOS apps built to date open source? Is the data in an open format? Is it the server part that’s open source?

[…]

So, currently at least, there’s no open source server components, no open format for exchanging data and an iOS only open source framework that Apple want developers to build modules for.

Instant Cocoa

Instant Cocoa (via Soroush Khanlou, tweet):

Instant Cocoa is an Objective-C framework for making iOS apps. It makes intelligent guesses about how your system is set up using introspection, and provides convenient points to override those guesses when you need to.

[…]

When push notifications and x-callback-urls come in, having a dedicated way to handle your URL schemas is a life-saver. Instant Router lets you register routes and automatically handles view controller allocation and presentation, so you can get back to making the stuff in your app that you care about.

Instant Cocoa provides a rich model framework for representing your domain in memory. It can flexibly map JSON objects from an API, and perform API actions on each of your domain objects. Features such as Serializers and Value Objects let you write less code and more effectively model your business logic.

[…]

The Data Source module helps you manage all your index path logic with ease. Remote data sources can download and map objects from your API. Multi Data Sources can keep track of several data sources and marshall all their objects for you, putting each data source into one section, or preserving the sections of each child data source.

Swift Protocols and Generics

Airspeed Velocity:

So it looks like Printable is some kind of fixed-sized box that holds any kind of value that is printable. This kind of boxing is quite a common feature in other languages like Java and C#. But here even references to classes are put inside this 40-byte box, which might surprise you if you’re used to thinking of protocols as like refereces to pure virtual base classes. This Swift box is geared up to hold both value and reference types.

[…]

OK, so protocols used like this seem to add some level of indirection. Does that cost us anything compared to using the generic placeholder approach? To test this out, we can construct some trivial structs that perform a basic operation, and then attempt to run that operation multiple times via both a protocol and a generic placeholder.

[…]

Speaking of dynamic behaviour – that might be one occasion when you might prefer to use protocols rather than generics. […] A contrived example obviously, but it shows how even structs in Swift can get dynamic behaviour at runtime via protocols, that you might find a use-case for.

Scenery 1.0

Scenery:

Scenery is an application for the Mac that creates product mockups. Want to present your latest design work to your client or get a killer visual for your app’s marketing website? Scenery has got you covered.

Download our free Mac application and create an account. Browse our store of template packs, and check out the Free Starter Pack. Simply drop your screenshot or design, and you’ll instantly see it mocked up in all device photos. Once you’ve found the right style and scene you can purchase a pack—or simply use the free, watermarked previews.

We sell royalty-free licences for images, sold in packs. That means that you can use the image as often as you want, without having to make further payments to the photographer.

I’m not really a fan of these type of product images, but it seems to be what people are doing these days.

It’s written completely in Swift:

In the beginning, we spent a lot of time waiting for the compiler, but the stability and speed of the tooling has improved a lot in recent releases, so we hardly ever have issues anymore. Even when you take the time spent waiting on the compiler into account, I think we were still writing better code at a higher speed than with Objective-C.

The code base we ended up with makes me much happier than most Objective-C code bases I’ve seen. Having Swift’s type-safety greatly improves my trust in refactorings: I feel free to change a function’s type, add parameters or change parameter types. I know that the compiler will help me catch any type-related errors. We use a lot of functional patterns: tiny networking, typed observers, configuration values, wrapper types, and the list goes on.