Nate Stedman

Internet

Work

Ringly

Ringly is a wearable Bluetooth ring that communicates with your smartphone and notifies you via light and vibration. I integrate it with iOS, via a companion application, which handles information from ANCS, performs device firmware updates, and allows the user to configure the ring’s settings.

eBay

Built an app to run a set of smart mirrors that is currently installed in Rebecca Minkoff’s boutique on Greene Street in SoHo. The mirror is a touchscreen, created with a piece of highly reflective glass, a vertically-mounted television, and a bezel that detects finger placement with infrared technology. The display is powered by a Mac Mini, running a fullscreen Cocoa app written in Swift – one of the first pure Swift apps to be used in production. The fitting room automatically detects when products enter, using RFID, and displays them on the mirror, alongside recommendations for complimentary items.

The interface is unobtrusive, so that the mirror can remain effective as a mirror. Only the margins are used for automatically-provided information, until the user expresses interest by tapping on an item.

The store associates are issued an iOS device with a companion app, which integrates with the app running on the mirror. This allows them to receive and respond to requests for items. The fitting room also features Phillips Hue multicolor lightbulbs, which the user can control from the mirror.

The fitting room has been successful in increasing Minkoff’s clothing sales, allowing the brand to expand out of its handbag focus. It has also been trialed in two Nordstrom stores. The fitting room has been covered in The New York Times, Fast Company, and other publications.

Svpply

A social network for people and the well-designed things that they want. I wrote the Svpply app for iOS and Android. The main interactions were wanting items, building collections, and following users or stores, which added their actions to your feed. Items came from stores, not from pictures on blogs, so items could be easily purchased by clicking a link back to the original store – the network was essentially a meta-store.

Svpply did flat design and swipe navigation before iOS 7 was announced, and despite only being updated to support new phone models, still felt current after Apple redesigned iOS.

Svpply created navigation patterns that have been widely used (overused?) since, but at the time the app was as fresh as it gets. When iOS 7 showed up, the app was already right at home. With zero updates in two years, it still feels absolutely current today.

Adios Svpply, A. Craig Williams

When building gesture interaction for the Svpply app, I paid great attention to detail to ensure that objects on screen moved as expected. In particular, the iPad app included an exposé-like feature that unwrapped the entire navigation stack for the app and allowed users to pan and tap their way through each item individually.

Svpply was acquired by eBay on September 6th, 2012, and was shut down two years later, on August 31st, 2014. Throughout its life, the app had consistently maintained a five-star rating in the App Store.

Code

Attributed

A Swift DSL for Foundation’s NSAttributedString, which is used for rich text formatting on iOS and OS X. The goal is to provide a logical, nested structure reminiscent of markup languages, in a type-safe, composable manner, and to reduce the use of mutable state by eliminating the need for mutable attributed strings.

UIColor.greenColor().foregroundAttribute(
    "There is some ",
    UIColor.blueColor().foregroundAttribute(
        "blue text "
    ),
    "embedded in this green text."
)

Attributed supports installation via Carthage, and is available on Github. Additionally, I’ve written a post on Attributed with more details.

Codable

Minimal encoding and decoding protocols for Swift types. Serves as a generic replacement for NSCoding. All conforming types implicitly gain JSON and property list support – if those conversions are invalid, an appropriate error is thrown.

/// Describes the encoded type
typealias Encoded

/// Decodes a value of the encoded type, or throws an error
static func decode(encoded: Encoded) throws -> Self

/// Encodes the value to the encoded type.
func encode() -> Encoded

The library provides two distinct protocols, one for encoding and one for decoding, which share the Encoded type. Therefore, conforming types can be decode-only or encode-only. The Codable protocol is provided as a shorthand for types that support both encoding and decoding.

Codable supports installation via Carthage, and is available on Github.

Snowflake

Uniqued value types, using ReactiveCocoa to handle state changes. Intended as a replacement for KVO property binding to mutable properties of unique instances for an immutable value type world.

Snowflake is a great companion to Codable.

Snowflake supports installation via Carthage, and is available on Github.


In addition to these projects, I have other repositories available on Github - primarily, Swift µframeworks. Generally, code on my Github account is released into the public domain with Creative Commons Zero.