@benguild: The official homepage of Ben Guild.

A cool project that I never released from 10 years ago.

05 Jan 2016  |  Tags: , , , ,

While reorganizing some older files on my computer, I stumbled upon a few of my archived projects from the 2005-2006 era. Back then, I had had this idea for a site/app called “RSSoasis” that would enable people to enjoy news from around the web collectively based on their interests. It had social features that supported converged site-wide discussion and mass-voting on the most interesting/popular stories of the day.

What is “RSS? Essentially, it is a technology that enables other software to cleanly pull in news stories from virtually any other website, as well as other frequently updated content in “feed” format. My unreleased “RSSoasis” project would let users subscribe to their favorite sources/websites and then filter their stories by interest and popularity. Users could also then upvote and discuss them each day, automatically bookmarking these stories for the future by engaging with them even just briefly.

RSSoasis (screenshot)
It was a social RSS reader. Think Digg + Flickr + Del.icio.us, but with a “dark” design and different types of voting.

If I had released this and had it gained any traction, it might have presented a very distinct view of each day's news, and users wouldn't have had to manually check several different websites or posts for updates just to keep tabs on the latest stories and discussions.

Many elements of this idea remained fairly new concepts at the time of this project's initial development, with sites like Digg having just launched and begun offering the first popular online user and software-aggregated news sources. The “Web 2.0” was still evolving, and RSS remained foreign to most web users. Even today, most users still do not understand how RSS offers syndicatable content from blogs and news outlets, even with the proliferation of Twitter accounts somewhat popularizing a similar concept but in a less direct and more socially-annotated manner.

Now, there are more evolved newsreaders like Flipboard and Feedly coming very close to what almost was in full prototype with “RSSoasis” about 10 years ago, but I'm not sure if web users ever really converged enough on a single “reader” application for something like “RSSoasis” to have ever taken off. There are so many newsreader apps today, with more than a few key favorites standing out from the rest.

RSSoasis banner (promo)

While it's possible that a later “RSSoasis” iteration could have been successful following its release, I never ended up finishing it and making it public because it never felt like it could achieve a mass audience. The concept just wasn't coming together. Years later, RSS even began to fade in popularity in lieu of social media as its indirect replacement, and even Google's own newsreader “Google Reader” (once considered a standard of the industry) was shutdown.

More thumbnails I found, from the former “landing” page:

RSSoasis bookmarks (promo) RSSoasis read (promo) RSSoasis trends (promo)

Years later, Digg finally launched Digg Reader in 2013.

A lot of the best ideas start as something very small that a lot of people can understand. Developing something very complex immediately from the start can prove too intricate for some people to adopt the idea of. And yet, some of the coolest ideas just can't easily be described in a really simple way. The challenge can sometimes be to make a very complex product extremely relatable to push its adoption. (think the iPhone)

  Comments  | 

Don't put your life on hold. — 0°N 0°W 0°E 0°S

04 Jan 2016  |  Tags: , , , , , , , , , ,

Back in 2013, I drafted a blog post about starting, running, and selling my company — all within seven years. I never got around to publishing it because it never felt finished. There was never a “next step” that I stumbled upon, a next big idea, or serious revelation besides really just the title of the post itself and the message that it tried to convey.

Recently, I went back to this unfinished story and realized that withholding the post was almost contradictory to its message. I was putting the post on hold for the sake of some future thing(s) that hadn't happened.

Don't do that. Here's the story, and the reason why…

Mobile17 Homepage (final version)
My final “Version 3.0” of Mobile17. (homepage shown)

The Pre-Web 2.0 generation

In 2005, I left school. The internet was still the “wild west,” and web services that we now take for granted had yet to be invented. Phones were still “dumb,” and so we spruced them up with ringtones and sometimes Java software that was slow to launch and often clunky to use.

  Read more of the full post »

  Comments  | 

Low Battery for iOS and Apple Watch, get iPhone battery level notifications and a glance view.

06 Jun 2015  |  Tags: , , ,

UPDATE 2016/04/18: This app is currently for sale on Flippa!

I built this simple Apple Watch and iOS app as a test of working with “WatchKit” and designing for a very small screen.

Low Battery for iPhone and Apple Watch.

The app is free and provides a watch “glance view” for quickly checking your iPhone's battery level from your Apple Watch. For those with/without Apple Watches, you can receive customizable notifications of various battery levels, but this requires an optional in-app purchase ($0.99 USD) to enable forever.

Download it for free from the App Store today!

  Comments  | 

Finding a new owner for ‘App Map’...

05 May 2015  |  Tags: , , ,

UPDATE 2015/05/19: The auction did not exceed its reserve price, so the app has been taken offline and archived.

Just a brief post to mention that App Map, an app that I worked on back in 2012 to map out “what apps people are using nearby”, is currently for sale on Flippa.

Apple's “Apps Near Me” compared with App Map

This predated Apple's own “Near Me” feature that was included in iOS 7 and 8, and supported iOS 4.3 and above. It was a pretty cool project to work on. Now that there are more modern variants in circulation (such as Homescreen.is), I'm hoping to find a new home for it. I am focused on other things so I don't have time to maintain it any longer, and yet I'm also sure that someone could do a lot with its app, code, and data! If it doesn't sell, I may close it down. Not sure yet. Stay tuned.

  Comments  | 

Accounts is "on pause." Stay tuned for what’s next.

25 Apr 2015  |  Tags: , , ,

I've pulled Accounts from the App Store because the next generation of the product will be vastly different from its current iteration. A lot of great ideas were demonstrated in this release, and people will be able to enjoy both these and others when the next iteration is announced and made available. For now, I want to limit any additional signups before our new product is debuted.

Accounts website (final screenshot)

Conceptually, I'm really excited about what Accounts has accomplished. What is important to me about the next steps for any social network or contacts matching/sharing/connecting platform is that no company actually owns the network's unobfuscated data. It's your data... based on the real-world connections that you've made with real people. That is life. Although Accounts focused not only on sharing minimal data with others but also in sharing said data selectively with the individual groups that your contacts were organized into, I still feel that for any amount of data shared on whatever social network it is that we all use going forward... said data must be completely and absolutely obfuscated on said network from any and all involved service-providers, including itself. Any service-provider can not only could be compromised in terms of spying or security but may also choose to act in ways that are only in their best interests and not yours. Today's providers already make it nearly impossible to smoothly migrate your data to any other service in its entirety because such a departure would not be in their best interests. This has to stop, because everyone should only use services because they like them and want to stay with them, and not because they have to. Accounts aimed to ease these constraints by giving people a universal and neutral way to be connected whilst only sharing minimal data with the people that they are connected to. Something was missing from this product, however, and that “thing” will not be missing from its next iteration. Please stay tuned for that.

The service will remain active and reachable until April 30th, 2015. After this date, all operations will be “paused” and sync services to the released iOS/iPhone software will no longer be available. The Android and Web versions' release for this generation of product will be postponed indefinitely in lieu of their successor. The current iOS app will no longer be available for download after today on the App Store. Thanks for checking it out, and my apologies for any inconvenience. Please follow me for updates on future products!

  Comments  | 

How to restore disappearing iTunes song star ratings.

14 Feb 2015  |  Tags: , , , , , , ,

A little over a week ago I noticed that my song star ratings in iTunes were randomly disappearing. Entire playlists were blanked out, and so were other tracks scattered across various albums. To put into perspective how this feels… some of these tracks I hadn't modified the rating for in over 10 years.

I can't understand how this happened en masse, but I believe that it's due to a current bug involving the combination of iTunes Match being active on my Mac yet disabled on my iPhone, and having iTunes music manually syncing back and forth to my iPhone only via a few designated playlists that I have selected. — This issue is actually still happening to me periodically at this time of writing! Yikes!

…Not cool! But luckily, I was able to write some code to repair the ongoing damage.

I generally don't ever remove a song's star rating. Once it's rated, it stays rated… even if its rating is later changed to something else by me. Because of this, I was able to write a script to find any songs that were not currently rated at all in my iTunes Library, and then have it look for the most recent rating that could be found amongst a series of backup iTunes Library files that I restored from a backup drive. That's the key here… I keep routine backups! You should, too.

With some preprocessing (described below), the script that I wrote will output a custom AppleScript for your Mac that will reassign the most recently recovered rating when run for songs whose rating is missing but present in one or more of the backup files that you provide to it.

“This PHP script will find songs in your iTunes Library without star ratings, and will then scour your specified backup files to find the most recent star rating for that file in case it was somehow removed or lost somewhere along the way for some reason. It will generate an AppleScript as output that can be run on your Mac to automatically re-set all of the missing ratings!”

Proceed with these steps at your own risk! This process and code are only designed to work on Mac OS X, and there's no warranty here for the code or anything, of course. I just wanted to share my solution with you in case you ran into this same problem and wanted a head start on fixing it programmatically. :)

The script uses the XML variant of the “iTunes Library” database files as mentioned. If you're restoring these files from a Time Machine backup of your Mac, please know that Time Machine automatically excludes these files from being backed up. To recreate the XML files from ITL files (which are backed up), you're best off creating a temporary additional user account on your Mac and replacing that user's “iTunes Library.itl” file with your backed up version then (…one at a time) opening and quitting iTunes to generate the XML equivalent in the same folder. — I have a tweakable Automator workflow that I used to do this with 30+ files automatically. You can reconfigure and use it (at your own risk) to do the same.

Once you have a folder of your “iTunes Music Library.xml” files of the past (not the *.itl version!), you can run the PHP script as outlined in its included “README.md” file. The output, as mentioned, is an AppleScript that contains unique commands to fix each missing rating for songs in your library. You can run the PHP script as often as you want to find any missing ratings, since it will only generate output if there are ratings missing and the output is only for those particular songs! — I hope that this helps you out if you're a Mac user who has run into this issue, but please keep in mind (again) that this process and any of its steps can potentially make drastic changes to your music library and should be followed at your own risk! Be sure to backup your data, as you hopefully have been doing already. :)

  Comments  | 

Accounts, official launch.

14 Nov 2014  |  Tags: , , ,

Last week was an exciting week for Accounts. We officially launched on Thursday, November 6th!

Download Accounts for iOS…

Accounts launch release screenshot
The design, feel, and function continue to evolve.

Our beta period was lengthy. Over 6 months. Although I first posted about Accounts back in May, we'd been working on the platform for quite some time even before that. So, this launch was a big one for us.

For those that are unfamiliar, Accounts is a contacts network that serves as your own “futureproof communication layer” for relationship retention. It's designed to be a cross-platform system that works with any device, operating system, or app/service. At the surface, it's a sort-of “social, auto-updating address book” at first glance. — The idea is that you can add your contacts once, and then have pointers to whatever services those contacts use to communicate with others (and you!) in the future. By connecting within the simple context of, “What's your username or handle on ‘Service XYZ’?” or “What app or email is the best way to contact you?”… this information can change anytime but you'll still be in touch with that person via Accounts. Furthermore, you'll automatically receive notifications when people change their information or join a new app or service.

There are other perks to the system as well, such as our future API for contact portability between apps, and the ability to limit which of your contact information can be seen by your contacts based on the group that you place them into. (ie. Family, Friends, Work, etc.)

Rather than retain various overlapping social media accounts (with out-of-sync contacts lists) for sole the purpose of staying in touch, or fuss with updating your contact information manually amongst your contacts, wouldn't you rather just let that information be updated automatically and control who sees it? Wouldn't you like a contacts system that supported all of your apps? Wouldn't it be great to receive notifications when someone that you know joins a cool new messaging app, or to automatically notify your contacts of the same? — Bring your contacts list to Accounts, a place where it won't lose relevance as your needs and interests change. Free yourself from the privacy constraints and concerns of content sharing for the sake of remaining active on various social networks. Be connected through any service now or in the future, and always have everyone's latest contact information.

I see the future of apps and social media being people maintaining smaller contacts lists within their favorite apps. There are so many apps nowadays that the fragmentation is out of control. Maintaining a primary list of contacts in a contentless, platform neutral environment makes sense. Accounts is an exciting initiative.

Now that our first non-beta version has been released to the public, we're working even harder on what's next. Stay tuned, and please check out the app if you haven't already! It's the simplest way to stay connected, longterm.

  Comments  | 

Accounts, Beta 2 for iOS

17 Sep 2014  |  Tags: , , ,

Accounts has been a very intense project to design and architect. For this reason, it has been released in stages. — Each stage… more and more exciting.

Accounts, Beta 2 (promo)

The first public beta of the App was an MVP, and the current is (even still) a very functional “work in progress”. While no piece of complex software is ever truly finished, I believe that this one will continue to evolve alongside human needs and nature. We will soon be at a crossroad where Accounts will introduce things that you have never seen before, and the “beta” tag will be removed.

[ Download the 2.0.9 beta for iOS… ]

Beta 2.1+ is already in development, but the 2.0.x series marks the native introduction of a syncable, offline iOS App for your contacts and extended networks. It's faster, smoother, and more interactive.

Stay tuned for more updates. http://accounts.ms

  Comments  | 

Fixing AutoLayout on UILabel(s) in iOS Development

15 Jul 2014  |  Tags: ,

AutoLayout is a really quick way to create responsive layouts on iOS 6, 7, and higher / Mac OS(es). However, I found that there's a really stupid problem with UILabel(s) in getting them to act like actual paragraphs that resize themselves to their own contents. They often don't do that properly using just AutoLayout constraints....

Oddly enough, calling “[label sizeToFit]” manually can band-aid the issue, but then hose the rest of your AutoLayout in some instances. — So what's wrong? Isn't AutoLayout supposed to “compress” UILabel(s) to their minimum required size based on their assigned constraints?

iOS AutoLayout UILabel Bug demonstrated (graphically)
As you can see, without this fix the pink-colored label is taller in the same context when the view is loaded on a larger screen.

The tricky thing about UILabel(s) is that they generally will actually resize themselves, but this doesn't always work predictably due to this bug in UIKit. On iPads, you might end up with taller labels… where as on a 3.5-inch iPhone they might look just fine with the display oriented vertically and then grow taller when rotated horizontally.

The easiest solution to this behavior is to subclass UILabel and add this little gem to force the “PreferredMaxLayoutWidth” on the label to reset automatically whenever the view is resized. This makes its width 100% of its container's width (as it most likely should be), and leaves only its height to be adjusted dynamically by whatever the UILabel's content and AutoLayout constraints actually should negotiate between themselves:

- (void)layoutSubviews {
    self.preferredMaxLayoutWidth = self.bounds.size.width;
    [super layoutSubviews];

This approach not only keeps your code clean but also keeps the issue isolated. One can now rely almost solely on AutoLayout for controlling text and content variations amongst varying localizations and differing device resolutions or aspect ratios. (… and in the least annoying way possible!)

  Comments  | 

Announcing "Accounts"

18 May 2014  |  Tags: , , , ,

I started this project called Accounts on a plane ride last year… while thinking, “What would a social network that I'd actually want to use look like?” — All in all, it came down to one thing: the lowest common denominator.

Accounts (logo)

[ Download the 1.0.16 beta for iOS… ]

Nowadays, we try new Apps and services constantly, but the “lock-in” of social networks somewhat limits our mobility. Our contacts list on our mobile-devices is more or less our only form of portability, and yet it doesn't provide much interactivity beyond just the traditional contact methods themselves. — No notifications, no seamless updates… you're responsible for your own address book presently, and many of them are in complete disarray.

Enter Accounts. It's currently for iOS, but there are also mobile-web and desktop (then Android) versions coming soon. It detects the Apps on your device, and gives you a list of three things: your services, your contacts, and your contacts' services.

…That's it. (oh, and their basic contact information such as email/telephone)

Account screenshot #1   Account screenshot #2   Account screenshot #5

It keeps this information up-to-date, and serves as a longterm reference. It's time for something like this to exist on all platforms, and remain simple. Forever.

“Won't I be locked into this, as well,” you ask? No, because there's nothing on it. It's just your contacts, and the services that they use. If you want to leave, there's nothing to leave because your content isn't there.

We'll even make it easy to leave by syncing your contacts through our future API interface, for both your own use and other third-party developers' use.

Account screenshot #3   Account screenshot #4

I think that this is a great way to stay connected, because it actually forms a longterm connection with no strings attached. There's no featureset to judge or become bored with, no content to manage, and no complex settings to control. We're not cramming features down your throat, violating your privacy, or making you look at ads in a spammy news feed. It's just you, the people you know, and the services that you both use for getting in touch with them. Accounts updates this information automatically for you, and through the API it can become the “contacts backbone” of the Apps that you'll love in the future. It's a stable and simple ‘base’ product, with powerful tools for developers.

This could eliminate social network lock-in, and provide true contacts and relationship portability. With your interest, I'm building a company around this idea.

Check out the beta App, and stay tuned for updates. http://www.accounts.ms

  Comments  |