Dec2015

Providing Indoor Location in the Real World

In my industry, we have a big challenge. We all intuitively feel that our phones should be able to tell us where we are at all times, including when we’re indoors at places like hospitals, shopping centers, and office buildings. But how?

Since GPS works really well outdoors, you might assume the challenge is simply to build a system like GPS, but indoors.

Many companies have been trying to solve this problem for a long time using all sorts of strategies, from using Wifi signals already in the environment, to detecting subtle variations in the Earth’s magnetic field, to decoding secret messages flashed by special lightbulbs on the ceiling (this is true).

We have our own approach that uses Bluetooth Low-Energy Beacons. And in this post, I’ll reveal our deepest secrets about how it works.

But first, I’d like to talk about how engineers typically approach problems.

Keep reading

Oct2014

Let’s Talk About Beacons

If you’ve been following the tech scene lately, you may have heard a thing or two about “Beacons”. What are Beacons?

Beacons are hardware devices emitting a unique signature that can be picked up by your smartphone. They are typically small and powered by coin-cell batteries, making them easy to stick almost anywhere.

What we call a Beacon today was originally invented and popularized by Apple way back in 2013 when they introduced the iBeacon API. In fact, referring to these devices as just “Beacons” is a bit funny, considering no one was talking about Beacons before iBeacons existed. It’s a lot like discussing the “tablet market” back when the tablet market consisted entirely of iPads.

Keep reading

Apr2014

A Superior iOS Logging Console

Update: Check out iOS Console for a quick desktop app version of this!

If you do a lot of iOS development, you will be quite familiar with the information dumping ground known as the “Console” in the Xcode Organizer.

Behold, a treasure trove of useful output that you can’t filter or search and dear lord there’s so much of it!

Those of you who have developed for Android will think fondly of logcat which you can just execute in your Terminal and filter output with grep all day.

Fortunately, Ryan Petrich has built the same thing for iOS, and called it deviceconsole.

Simply check out the repository and type make in the root directory, and it will compile a binary you can run right away to watch the output of any of your connected devices.

For even more fun, try leaving your phone plugged in all day and see what apps are draining your battery:

Suspicious!

Feb2014

SMCalloutView for iOS 7

Check out SMCalloutView on Github.

A while back, I wrote a custom “Callout View” control for iOS that replicated the otherwise-inaccessible system control that you normally only get in MapKit, and even then you can’t customize it directly.

Surprisingly, it became my most popular project on Github by far, even making its way into household-name apps like Evernote. And now I’m happy to announce it’s getting its biggest update yet - full support for the new system callout style introduced with iOS 7!

iOS 7 introduced a brand new style and animation for the system Callout view. The animation is less “bouncy”, the fonts are different, and the layout has been tweaked. Not to mention the new minimalistic background which is no longer composed of multiple images, but instead gets its appearance mostly from layer effects.

Keep reading

May2013

Meridian Goes to Aruba: Why Wifi Networks are the Future of Location-Based Mobile

First thing’s first: I’m more than a little excited to announce that our plucky startup Meridian has a new home.

image

You may not have heard of Aruba Networks, but there’s a good chance you’re connected to one of their wireless access points right now. Their customers include the Facebook campus, Venetian resort and H&M retail, and they’re currently #2 in market share (after the behemoth Cisco).

So Meridian is a mobile software company, and Aruba is a wireless hardware manufacturer. How do we fit together?

image

Well for one thing, we have the same customers. Meridian helps enterprise locations like hospitals, stadiums, and retail stores create great mobile apps for their visitors. And Aruba helps these same locations provide their visitors with great Wifi connectivity.

But there’s more to it than that. We believe that intelligent wireless networks are the key to building awesome location-based mobile apps. Here’s why.

Keep reading

May2013

Freeing Feeds: From Paid App to Open Source

Check out Feeds on Github, or Download it from the website.

About a year ago, I created Feeds to scratch an itch. I wanted a desktop app that would help me keep tabs on our team’s commits to Github. Designer Eric Grossnickle wanted a way to see his Dribbble activity without having to check the website every day.

So, we built a little app that lives in your Mac menubar and notifies you when things happen on your favorite sites. It provides your notification history, read/unread status, and popover content previews.

image

In building Feeds, we wanted something that other non-developers could use to stay up to date not only with Github, but also with other services people depend on like the CRM tool Highrise or the collaboration app Trello.

Thanks to Eric, Feeds is beautiful. It’s easy to use and supports a decent set of third-party sites, as well as supporting RSS/ATOM feeds directly.

image

But I think we can do better. In order to support more services and keep the existing ones up to date, we need the support of other developers who personally use Feeds.

So we decided that the best way to expand the services Feeds supports is to open it up to the community. Starting today, Feeds is now free for direct download from the official website.

The App Store version will be removed (existing customers will continue to receive support), and the code is now available on Github so that anyone can contribute fixes and add support for new services.

So how did we end up here?

Keep reading

Oct2012

A lightweight XML parser for NodeJS/JavaScript

Check out xmldoc on Github or just npm install xmldoc.

Ever need to parse a bit of XML in NodeJS? If so, you may be quite confused by your options. You might initially find an (excellent) callback-based parser, but that results in code like this:

Hm, I’m getting deja vu.

Of course, there are plenty of other libraries that let you deal with the whole document in memory at once. Libxmljs is solid, but requires bindings to libxml2 which means you have to compile it. I wanted a “pure JavaScript” module for simplicity and ease of deployment.

Node-elementtree is pure JS and looks pretty great, but I wanted a “one file” solution.

So, long story short, I wrote one and it’s a single JS file and it suits my needs perfectly. It uses the awesome pure-JS XML parser sax behind the scenes to build up an easily-traversable object hierarchy.

Behold:

You can use it in your Node.js app easily:

npm install xmldoc
…later…
var xmldoc = require('xmldoc');

Or just put it in a <script> tag and use it in the browser if you’d like. You can find examples for both cases in the repository.

As usual, you probably shouldn’t be loading large XML documents with this class if you are tight on memory. But if you’re just parsing little SOAP request snippets like I am, you’ll find it’s much easier to work with than stream-based parsers.

Go try it out and let me know what you think!

Aug2012

A Custom Callout View for iOS

Update: This is the post describing the original iOS 6-styled callout view. For an updated version, see the latest post.

Check out SMCalloutView on Github.

There’s a great UI widget that’s been on iOS since day one:

Ever wonder what that black pointy bubble is exactly? It’s kind of a strange beast. The way it “bounces” when opening is an animation that I believe is unique across the entire iOS platform. It kind of grows out from the tip of the arrow then springs back like a UIAlertView. I still find it fun and satisfying to watch.

So when we were creating our indoor mapping UI for Meridian, I naturally wanted to use this widget. Unfortunately, it’s considered a private API. Bummer!

There are some existing 3rd-party controls out there that mimic this one, but they aren’t a perfect replica. And I demand perfection! So I made my own version, and dubbed it SMCalloutView.

Keep reading

Jun2012

How to create a new file in the editors I use every day.

ME Eclipse, I’d like to do something with this folder.

ECLIPSE You can do lots of things with this folder!

ME Let’s create something new in here.

ECLIPSE There’s all sorts of new things we could make together! How about a Java Class?

Keep reading

Feb2012

Feeds

Here’s an app I whipped up with the help of designer Eric Grossnickle. It has one purpose: to live in your Mac menubar and notify you when things happen on your favorite sites. That’s pretty much it.

You also get a little menubar app with your notification history, read/unread status, and popover content previews (Lion only).

It currently supports Dribbble, Basecamp, Highrise, Github, Beanstalk, Trello, and UserVoice.

If you would like us to support a particular service, cast a vote in our UserVoice forum!