Tyler Hall

Incoming! – A New Twitter Search Client For Your Mac

Thursday, July 23rd, 2009

For the last few months I’ve been hard at work on a new type of Twitter client for Mac, and today I’m excited to release the first public beta of Incoming!.

Incoming! is different from every other Twitter client – it’s wholly focused on searching Twitter. You can’t even sign-in if you wanted to. It’s a tool for following your favorite topics, catching breaking news, and seeing what users are saying about your brand and your products.

Think of it as an RSS reader for Twitter. Create a search, add the terms you’re looking for, and watch the tweets start rolling in.

But with all those tweets there’s bound to be a lot of noise – Incoming! helps you filter through the tweets that don’t matter and zero in on the users who do. Our Influencer score lets you pinpoint the most influential users within the topic you’re researching. This doesn’t mean you should ignore everyone else, but it does let you find the most authoritative voices and respond to them first.

Incoming! (the exclamation mark is part of the name) is filled with advanced features for all you marketing types out there, too. You can flag tweets for followup, keep track of the ones you’ve replied to, and even mark them as good or bad. It’s a great way to see what the prevailing opinion is of your brand. And, once you’re done, you can export your results to Excel and easily calculate word of mouth impressions to share with a client.

Did I mention that Incoming! speaks different languages? If you come across a Tweet in a foreign language, Incoming! can translate it for you with one click.

Incoming! also extracts every link and photo from your tweets. This lets you see an aggregated view of the most popular links and photos. Watching a breaking news story? Instantly find the best news link brought to you by the wisdom of the crowd. Following the Iranian election? View photos from the streets of Tehran as they’re posted.

Incoming! does this all – and more – with a sleek UI built exclusively for Mac OS X Leopard.

Now that the marketing speak is out of the way, it’s your turn. Incoming! is in beta, so please download and let me know what you think. Now’s the perfect time to send in your feature requests and tell me about the parts you don’t like, so I can build the best Twitter search client possible, for you.

VirtualHostX 2.0

Sunday, July 19th, 2009

Today I’m thrilled to announce that VirtualHostX 2.0 is available. It’s been a long time coming (probably too long), but I’m glad it’s now available for everyone to download. Aside from a new icon and a polished UI, VHX 2.0 offers many refinements and a few major improvements.

VirtualHostX Screenshot

First on the list is Bonjour sharing of your virtual hosts. This means that your virtual hosts can be seen by other users on your local network. All they need is a Bonjour capable browser like Safari or Firefox (with the BonjourFoxy plugin).

Shared hosts will appear with a special sharing icon in the sidebar so you can easily see what you’re sharing with the world.

In addition to working with Apple’s built-in web server, version 2.0 also adds improved support for MAMP and compatibility with XAMPP. You can choose which of the three web servers to use from VHX’s Preferences window.

Finally, VirtualHostX now offers finer grained control over your web server. You can manually start, stop, and restart, check its current status, and also scan for problems with your config files.

VHX 2.0 is available for $15. Existing users can upgrade for $5.

Moving From WordPress to Chyrp

Monday, July 13th, 2009

I’m in the process of moving this blog (and the whole site) over to Chryp and off of WordPress (which has served faithfully for two years). I plan on going into the details of why after the switch. But, in the mean time, I thought there may be other people looking to switch. I’ve posted a small PHP script to GitHub which imports your WordPress posts into Chyrp. Maybe it’ll be useful to someone else.

Download wordpress2chyrp here.

Sosumi – A MobileMe Scraper

Monday, June 22nd, 2009

Sosumi is a PHP script that scrapes MobileMe and exposes Apple’s Find My iPhone functionality to the command line or your own web application. This lets you pull your phone’s current location and push messages and alarms to the device.

Like my previous blog post that dealt with AT&T’s Family Map service, my goal was to connect my iPhone with Fire Eagle by Yahoo!. There are a few iPhone Fire Eagle updaters available, but they’re all limited by Apple’s third-party application restrictions. Sosumi gets around those restrictions by running every few minutes on your own server rather than the device itself. In my case, I’ve setup a cron job to run the script every fifteen minutes and push my location to Fire Eagle.

Until Apple releases a location API for MobileMe (not likely, and not their job), this will have to do.

Grab the code on GitHub.

Example:


$ssm = new Sosumi('username', 'password');

$location_data = $ssm->locate();

$ssm->sendMessage('Daisy, daisy...');

Persistant Location Updates From iPhone to Fire Eagle

Monday, April 20th, 2009

Location Based Services are hot. They add an extra layer of usefulness on top of the web sites and products we’re already using. The trick is keeping your location updated in the cloud as frequently, comfortably, and securely as possible.

Fire Eagle fulfills the security requirement — brokering your whereabouts only to parties you’ve authorized. And iPhone applications like Sparrow and Voila make it a cinch to update Fire Eagle on-the-go. But they’re limited to manual updates as they can’t run in the background. (And you wouldn’t want them to because of the drain GPS has on battery life.)

For me, the holy grail has always been a way to update your location persistently from iPhone. And until Apple offers their own solution (fingers crossed) I’d like to present mine. It’s a dirty hack (the best always are), and has the added benefit of working with any AT&T phone — not just iPhone.

To do this, we’ll be scraping AT&T’s new Family Map service and then pushing the data we retrieve into Fire Eagle ourselves.

(Family Map is an overpriced add-on to your monthly plan that lets you track the phones on your account using AT&T’s website. It’s limited, but surprisingly good considering it came from within the bowels of a cellphone company.)

There will be three parts to this hack.

  1. Scraping our location data from AT&T’s website.
  2. Pushing that data to Fire Eagle.
  3. Making the script run automatically.

Let’s get started.

Scraping the Data

The Family Map website uses Microsoft’s VirtualEarth maps plus some other AJAXy fanciness. I briefly poked around to see if there were any JSON or XML data sources I could hijack but didn’t see anything. Instead, I opted to directly scrape their mobile website as it’s plain vanilla HTML.

I won’t go into the details of scraping the data (you can see the code for yourself), but it was pretty simple. Login, send a “locate my phone” request, wait for the data, and parse out our coordinates.

Pushing Data to Fire Eagle

Fire Eagle is an excellent API to work with. They’ve got a clear spec and tons of example code. The only tricky part is handling the initial OAuth setup. I’ve included a simple web page (setup.php) you can use to do the authentication. It’s based on Fire Eagle’s PHP API kit example.

Once OAuth is setup, it’s only one line of code to publish our location.

Making it Automatic

Running this script automatically will vary depending on your setup. In my case, I’ve created a cron jon that runs the included update.php script every five minutes.

Download the Code

And that’s it. This code is only a few hours old, but it seems to work well so far. I watched as Fire Eagle was updated with my location this morning on the way to work. That said, it’s definitely not user friendly — clearly something only someone familiar with a command line would want to setup. But if you’re interested in developing a friendlier solution, let me know and perhaps we can work together.

Grab the code from GitHub.

Google Voice Dialer

Thursday, March 26th, 2009

Last year I posted a PHP script that lets you dial phone numbers using Grand Central. I updated it this morning to support Google Voice as well.

The syntax is the same

$gv = new GoogleVoice('you@gmail.com', 'password');

$gv->call($your_number, $their_number);

You can grab the code from my google-voice-dialer project on GitHub.

VirtualHostX Free For Students

Wednesday, March 11th, 2009

I’ve been tossing this idea around for a while now and decided last night to just go ahead and do it. VirtualHostX is now free for students. All you need is a .edu email address and I’ll send you a license free of charge.

Um, why?

Good question. There’s no master plan or secret motive behind giving away free licenses. I do it all the time, actually. I just think that students have enough expenses on their plate without needing to fork over a few bucks for an app that, more than likely, is only used in their spare time until they graduate.

I’ve been programming for a long time — since I was ten. I started out writing small programs in GW and QBasic. When I was thirteen I mowed lawns and saved money until I could afford a copy of Visual Basic 3, but only because Microsoft offered an educational discount. I couldn’t have afforded it otherwise.

Now I’m not saying that if it weren’t for Microsoft and Visual Basic I wouldn’t have become a developer, but it definitely made the the trip easier.

So that’s what I’m trying to do here. If there are high school or college students just starting out in web development — maybe building small sites to help pay for books or beer — and VirtualHostX can help, that’s awesome. It’s the least I can do.

YUI App Theme

Sunday, March 8th, 2009

Tonight I pushed a new project to GitHub called yui-app-theme. It’s a generic, skinnable layout designed for web applications — particularly admin areas — built using YUI Grids.

In other words, it’s a starting point.

Usually when doing freelance work for clients, unless you’re building on top of an existing CMS like WordPress or MiaCMS, you’ll have to create an admin area for the client to login and manage their site. Or maybe you’re building a bug tracker or some other web application. Whatever the situation, yui-app-theme provides a solid foundation to start your work.

It offers a tabbed layout with many of the common UI elements that web apps need. Content blocks, tabbed modules, one and two-column forms, error messages, etc. But most importantly it’s built using YUI Grids so it’s semantically structured, cross-browser, and easy to extend. You can radically alter the layout with just a few quick changes. Try clicking through the layout options on the demo page.

YUI App Theme preview

I’ve done my best to keep things logical and easy to use. Here’s a quick example of how to use and extend the built-in content blocks.

A basic content block, or module, is created with the following markup

<div class="block">

    <div class="hd">

        <h2>Your Header Content</h2>

    </div>

    <div class="bd">

        <p>Your body content goes here.</p>

    </div>

</div>

You have a containing div with a class name of block surrounding two inner divs, which make up the head and body content of the block. In the browser you’ll see

YUI App Theme content block preview

Content blocks resize to fit their surroundings. That means you can take the same markup used for a body content block and move it into a sidebar — the block will automatically shrink to fit the smaller space.

We can also extend the block to have a tabbed appearance. To do this, we just need to add an extra tabs class and define our tabs using a <ul>.

<div class="block tabs">

    <div class="hd">

        <ul>

            <li class="active"><a href="#">Tab 1</a></li>

            <li><a href="#">Tab 2</a></li>

            <li><a href="#">Tab 3</a></li>

        </ul>

        <div class="clear"></div>

    </div>

    <div class="bd">

        <p>Your body content goes here.</p>

    </div>

</div>

YUI App Theme content block with tabs preview

Easy.

However, you’ll notice than by using an unordered list to build our tabs, we had to remove the <h2> tag. In some situations we may want to keep that header around for SEO purposes — visible to search engines but hidden from users. yui-app-theme handles this situation automatically by hiding any <h2> and <h3> tags inside a content block’s header. (Technically, it applies an extreme negative left margin to move it outside the browser window.)

Let’s take this example one step further and change the appearance of the tabs by making them look separated. All we have to do is add a spaces class to the content block.

<div class="block tabs spaces">

    <div class="hd">

        <ul>

            <li class="active"><a href="#">Tab 1</a></li>

            <li><a href="#">Tab 2</a></li>

            <li><a href="#">Tab 3</a></li>

        </ul>

        <div class="clear"></div>

    </div>

    <div class="bd">

        <p>Your body content goes here.</p>

    </div>

</div>

And we get

YUI App Theme content block with separated tabs preview

It’s that simple. With the right CSS, minor HTML edits can create powerful changes when rendered.

If you explore the demo you’ll see that applies to the page layout as well. You can very quickly change the color scheme or page width. And even adjust the sidebar, move it to the opposite side, or switch the layout to a single column. It’s all possible because yui-app-theme, itself, is built on top of a solid foundation — YUI.

I’ve already started using this template in my own projects and found it incredibly helpful to have my application layout up and running so quickly. I hope you can benefit from it, too. And, please, feel free to fork yui-app-theme on GitHub and contribute your own improvements.

Sparrow Now Free on the iTunes App Store

Sunday, March 1st, 2009

In case you missed it, Sparrow, my iPhone Fire Eagle updater, is now available for free on the App Store.

In addition to the much improved price, Sparrow now updates your Twitter profile with your location name rather than your coordinates. So instead of something ugly like “37.321, -121.999″, you’ll get a much more attractive “1 Infinite Loop, Cupertino, CA”.

But what if you don’t want your Twitter profile to show your exact address? Simple. Login to Fire Eagle and go to your My Applications section. From there, you can edit Sparrow’s permissions and restrict it to your zip code, neighborhood, city, state, etc — whatever you feel comfortable sharing. It’s a great example of how flexible and, more importantly, empowering Fire Eagle’s security model is. It’s a web service that really does put its users first.

I’d Like to Thank the Academy…

Sparrow has gotten some great press in the past month. In an article about the privacy implications of Google’s new Latitude service, Wired called out Sparrow as among the best mobile Fire Eagle updaters. And Programmable Web chose Sparrow as their Mashup of the Day saying it’s “a good example of how a few web APIs can be elegantly implemented for use on a mobile device.”

So now that Sparrow is free, what are you waiting for? Download your copy today and go, go, Fire Eagle!

PHP Wrapper for Yahoo! GeoPlanet

Wednesday, February 25th, 2009

Earlier this month I wrote a quick PHP wrapper for Yahoo!’s GeoPlanet API. It’s a super useful service for querying geographical information about nearly any place on earth — addresses, landmarks, colloquial locations, etc. Or, as the official description says

GeoPlanet helps bridge the gap between the real and virtual worlds by providing an open, permanent, and intelligent infrastructure for geo-referencing data on the Internet.

There were already Perl, Python, and Ruby wrappers. I figured I’d throw PHP into the mix.

Pete Warden has already written some example code that uses the wrapper to emulate Twitter’s nearby location search.

You can download the source from GitHub. As usual, it’s licensed under the MIT License and free to use in any way you like.