Mobile Phone GPS – Where are we going?

BlackBerry 8800 GPS

Most smartphones slated for release over the next 12-months include a GPS receiver, built in. After that, it will be a marked failure to not include a GPS in a phone. The functionality that comes with GPS is outstanding – mapping, directions, location based experiences, etc. We’re about to enter an age of advancement in technological capabilities that we’re just beginning to imagine.

Consumers are moving to smartphones. The hottest smartphones (iPhone 3G, BlackBerry Bold 9000, most of Nokia’s Symbian and HTC’s Windows Mobile offerings) all include GPS and an exposed API for developing applications utilizing their hardware. Anything people can conceive of for location based mashups will be coming (more on these mashups in later posts)…

trackinghistory

Here’s a first application…

BlackBerry is a leader in mobile phone GPS. Recently a few services that announce the location of one’s phone emerged. Initially these were billed as a sort of low-jack for one’s phone, a security service for the insecure (or those who want to spy on their kids, etc).

I decided to try a few of these. Most felt slimy, like, “you always know where your phone is, and you could also know where your wife is!” … I don’t know about you, but my phone is loyal and doesn’t run off with strangers… And I trust my wife far more than a phone.

My goal with trying these services was to mash Twitter, Pownce, Facebook, and other social networking services with my location. Such a mashup will allow me to share my real-time location with all friends. I came across BlackberryTracker.com. Much like the others, the idea is to provide you with the location of your phone. However, they have something the other’s don’t… Facebook and Google Earth integration (as well as a drop-dead-simple semi-RESTful API).

Friends can pinpoint me down to the meter on my Facebook profile, updated every 30 seconds. To be honest, it feels strange to openly publish this data. Security, and lack thereof, has us believing we shouldn’t share such information. But this fear is caused by the exception and not the rule. And in reality, my location in public isn’t private. Additionally, there are laws and common courtesies we live by, and I trust that people are inherently good.

Soon these services will be in the mainstream. Everyone will be able to pinpoint the location of anyone. Let me emphasize that… Soon everyone will be able to pinpoint the location of anyone. Not publishing your location will be like not having a mobile phone.

iofy digital audiobook platform acquired by Ingram Digital

“Ingram Digital, an Ingram Content company focused on solutions for digital content management, hosting, distribution and promotion, today announced it has acquired the iofy digital audiobook platform from Audiofy Corporation.”

It’s official. As described in the press release, the iofy digital audiobook platform is now part of Ingram Digital. I’m happy about this move. This is the iofy development team I lead and I’m confident our acquisition will bring incredible value and additional ingenuity. We’ll now be building something amazing, which iofy wouldn’t have had the resources for on its own.

Other than some title changes, the team and focus are unchanged. Cartwright Reed, iofy’s President, is now in the role of Vice President of Product Development at Ingram Digital. My team is continuing the charge to build the best audiobook platform available (look for continued web service goodness).

The culture at both companies is driven by growth, creativity, and building solutions. I’ve had only positive experiences working with the folks at Ingram. They’re great people, and we’re looking forward to being part of an Ingram company.

How to virtualize Windows on an Ubuntu host for an optimized dev / qa environment

 Ubu-Xu-dows

After converting my MacBook Pro in to a Windows developer dream, I wanted to have the same experience on a more portable, commodity hardware unit. Virtualizing Windows within Windows with VMware Server is something I’m familiar with. It’s something many Windows developers may prefer (and I recommend if you’re not comfy with linux as your host OS).

Quick background: Virtualizing a development/qa environment allows one to have an easily cleaned control environment. When a machine gets dirty (too many installs, tests, builds, or other garbage collects), you can simply delete the virtual instance and copy a fresh installation back over. This saves a ton of time. In dev, this allows a safe, clean, environment to test builds in. In a QA environment, this allows a very fast way to return to a known state.

My goal in a virtualized dev/qa environment is to run a host which consumes an absolute minimum amount of resources. I run virtualization software that allows more than one running VM at a time, such as VMware Workstation (PC), VMware Fusion (Mac), or VMware Server (PC or Linux). If you’re running Windows as your host OS, I recommend Windows 2000 Advanced Server because it is tunable to consume less resources than any other flavor of Windows (including Windows 2000 Professional).

Given that Linux runs on wrist-watch sized systems, it’s a safe assumption that one will get better performance from virtual machines than on a virtualized Windows environment. I chose Ubuntu since it’s super simple to install, is fairly reliable, offers similar features to Windows, and is still a smaller footprint my Win2kAS machines.

I started with version 8.04 desktop (hardy). The installation was a piece of cake, but there are no tuning options in the basic .iso. I installed VMware Server, but just while running the OS I could tell I would run in to performance issues later. The desktop flavor of Ubuntu isn’t light enough to pass all the processing power through to the VMs.

Instructions

Continue Reading

Teaching class classes for PHP development – Rock Band Example

PHP classes

Object-Oriented Programming (OO or OOP) is the best way to have re-usable, sharable, less-bug-ridden, easily readable, easier to debug, and easier-to-pick-up-later professionally written software.

“Learning classes” is the functional way to describe learning object-oriented programming. One skill begets the other. When in college my professor played a video of a band playing music. The band represented a program, and each musician represented a class.

I hope that’s not how it’s described nowadays for comp-sci peeps because it’s a completely backwards way to learn it. It is backwards because you’re already looking at a finished product. To understand OO and classes, think in terms of small portions. Then grow from there.

To give an example of how to build out a class, let’s build a musician or rocker since we’ve been on a Rock Band kick.

Before continuing, this assumes you’ve written some PHP – including at least making a function or two…

.

Now, what does a rocker have?

  • Name
  • Gender (probably)
  • Instrument
  • Talent Level

These will be the variables we put in our Rocker class, here’s the code to support us…

<?php

class Rocker {
// OOP classes are usually capitalized. Good form.
var $name;
var $gender;
var $instrument;
var $talentLevel;
}
?>


Continue Reading

Flow – Day 9 – I switched to iChat for Twitter XMPP

iChat Count 386 – 7 minutes

:

When following a lot of friends in a flow environment and using XMPP, one sees the above numbers in less than ten minutes. I’d been using Adium, but Adium doesn’t smooth scroll between each received tweet. It constantly jerks messages upwards and has made it virtually impossible to have a meaningful experience. There are often times when I want to read each incoming tweet. A good, smooth, reading experience was needed.

iChat has a slightly smoother hit at each received message, and is therefore much more enjoyable to read. The interface is customizable enough, but nothing quite as nice as some of Adium’s minimal themes.

I was mostly hesitant to switch since Adium has outstanding AppleScript support. I’ve been thinking of prototyping something (given a couple hours – someday). Apparently iChat has something even better which I should have known about… Callbacks! A script can fire for each received message.

This will make dynamic, real-time, filtering a reality.

iChat AppleScript

The start of something very cool…