06/23/2009

My Review of the Slacker G2 Personal Radio

I pulled the trigger on a Slacker G2 Personal Radio Player over the weekend.

For those unfamiliar with Slacker (as was I until about 2 days ago), they are a streaming internet "radio" service, not unlike Pandora or last.fm.  

Slacker has over 100 stations covering most popular musical genres, and a couple of comedy stations.  The programming of these stations is handled by former terrestrial and satellite radio folks.  In addition to the professionally-programmed stations, users can create their own stations: You specify an artist, and the service will build a station around similar music.  Stations can be shared with other Slacker users, and there are many Slacker stations that have been created to emulate current and former XM and Sirius stations.

Both standard and user-generated stations can be tweaked to the tastes and preferences of the individual listener.  For example, you can ban particular artists or songs from a station, request specific songs, and fine tune the selection of songs (hits vs. deep cuts, current vs. older tunes, etc.) that are selected for inclusion in each station.  They have over 2 million tunes in their catalog, from Chet Atkins to Frank Zappa.

The web-based streaming music player is ad-supported, and you can skip 6 songs per hour within a given station.  For $48/yr., you can upgrade to their Radio Plus package that gets rid of the ads, and allows unlimited skips. 

However, Slacker has an additional listening option:  You can  buy a portable unit (the Slacker G2) that looks like an mp3 player and caches several hours of audio for listening offline, thereby allowing Slacker to compete with Sirius/XM.  In fact, Best Buy merchandises the Slacker alongside the satellite radios, on the opposite side of the store from the iPods and other MP3 players.  The 4GB unit can store up to 25 stations, or approximately 2500 songs.  

The portable G2 keeps its content refreshed by connecting to the slacker.com servers over Wi-Fi from your home network (incl. WEP/WPA), or via a public Wi-Fi hotspot.  Protected public hotspots are accessed by the G2 via Slacker's partnership with Devicescape, allowing you to refresh your music content at the airport/Starbucks/McDonalds/etc.

There are a bunch of very mixed reviews regarding the G2 hardware, but my first 24 hours with it have been extremely positive.  The Wi-Fi setup just worked, as did an automated firmware upgrade and the initial download of a half-dozen stations that I set up on my local account. 

My take on the G2: It feels like the offspring of an iPod and a Zippo lighter, and the packaging is such that it would feel at home at the Hard Rock Hotel gift shop.  The controls are intuitive, and the inclusion of album art, artist bios, and album reviews add to the experience, especially when discovering new artists.  I'm also very pleased with the audio quality of the device.

Of interest to Mac users:  While Slacker's desktop software is Windows-only, please note that you never need to connect the G2 to your laptop, assuming that you have a Wi-Fi connection available.

In closing, Slacker is a technology that works best if you buy into their abstraction and think of G2 like a radio, albeit a magical personalized one.  

I know it's only rock and roll cached AAC+v2 files, but I like it.


06/01/2009

Google Wave: First Impressions

Last week at their annual developer conference, Google unveiled a new collaboration offering: They took Email, Instant Messaging, Wikis, Web Applications, and Twitter, threw them into a open standards-based blender, and created an interesting new collaborative cocktail called Google Wave

If you want a sneak peek at how the cool kids will be getting things done next year, check out the developer preview video.  Wave will not likely be released as a Google offering until the end of the year, but they are starting to build out the Wave developer ecosystem sooner rather than later.

Wave's appeal will crosscut consumer, small business, and enterprise circles alike, for while Google is the creator of Wave, they are releasing specifications code so that organizations will be able to run their own Wave servers.  Additionally, Wave servers run by different organizations will be able to talk among themselves (or "federate") so that cross-organization collaboration can take place using Wave.

In other words, Wave is not the next "Gmail"-like product from Google, but rather the next "Email"-like  standard for network-based collaboration for the Internet. 

I think that Google just demoed the Next Big Thing, and CIOs will be at liberty to investigate it regardless of their stance on Software as a Service (SaaS), Cloud Computing, or many other buzzphrases of recent memory.  This is possible because Wave servers will be able be employed on either side of the corporate firewall, both literally and figuratively. 

Personally, I find Wave to be particularly interesting because I had the good fortune to spend time working with the folks from Groove Networks in the 2000/2001 timeframe.  There are many similarities between Groove and Wave, particularly around the idea of persistent, context-relevant "shared spaces" where individuals across multiple organizations can engage in secure real-time communication and collaboration aided by autonomous agents or "bots".  

One key difference between Groove and Wave is that Wave was built for a network-enabled world, where every local coffeehouse serves copious amounts of free Wi-Fi bandwidth, whereas Groove was built to thrive in austere environments (e.g. battlefield, post-disaster, etc.), where Starbucks exists only in daydreams and network connectivity is intermittent at best.

(As an aside, one other curious similarity is that they were both created by small teams anchored by two brothers:  Wave was created by Lars and Jens Rasmussen, and Groove was created by Ray and Jack Ozzie.) 

Christian and I did some non-trivial bot development in Groove, and did a bunch of XMPP bot-related stuff in ProjectPipe.   We're looking forward to start building useful things in Wave, and will certainly have more to say about Wave in the coming months.

06/25/2008

SproutCore, Cocoa, and The Idiomatic Web

If you follow web technology news, you may have seen a number of postings about SproutCore over the last couple of weeks. SproutCore is the framework that Apple’s using for their MobileMe applications.

The “sync-all-your-devices-to-the-cloud” functionality is MobileMe’s core value proposition. The beautiful and rich web client experience is icing on the cake, and could have been implemented using a half-dozen existing JavaScript libraries.

Therefore, my intitial reaction to these “Cocoa apps for the Web” and “Flash Killer” reviews was that the revolutionary-ness of SproutCore was definitely overblown.

I figured that the hype would be over in a couple of days. Since articles like Why Objective-J, Cappuccino and SproutCore are completely changing the web app industry are still cropping up all over the place, I figured that I’ll weigh in on the discussion. I hesitated because I think that the techniques in question are very clever. Just not “Completely-Change-The-World-As-We-Know-It-Forever” clever

I’ll hedge a bit here here by saying that all bets are off if Apple leverages technologies like these to allow Cocoa developers to use Interface Builder and XCode to build web apps and/or build special stuff into Safari to natively render SproutCore markup as native Cocoa. But at the current time, I think that the hype machine is in overdrive.

SproutCore and Cappucccino extend Cocoa concepts such as Key-Value Coding (KVC) and Key-Value Observing (KVO), and it’s great to see these ideas brought to the world of web development in a big way. But I think that SproutCore and similar frameworks will have limited long term appeal to the broad web technology marketplace, considered niche players alongside the Java-based Google Web Toolkit (GWT). Methinks that web app architectures that rely on code generation will have limited appeal moving forward.

Keep in mind that I’m not anti-niche: Creating the framework that powers Apple’s MobileMe apps by itself is quite the accomplishment, and their approach is both novel and effective. I’m simply making the case that web app development in the large is not likely to follow MobileMe’s direction from a client engineering perspective.

I think that if we fast-forward the clock by a few months, we’ll see a backlash against these SproutCore-like frameworks, since they go against the grain of traditional web development approaches. Instead, they’ll be a call for a return to The Idiomatic Web, where semantic markup, stylesheets, and good JavaScript are top-tier building blocks, not simply implementation details below a new set of alternate client architecture abstractions.

The real widespread change will come to web app development when KVO/KVC approaches are employed in conjunction with idiomatic web frameworks like YUI.

When staking out the future of the Web, Evolution rather than Revolution will rule the day.

04/10/2008

Google App Engine = World’s Biggest PDA

Here’s my recommendation for evaluating the Google App Engine: Think of it as the world’s biggest, baddest embedded device, like a smartphone designed by Chuck Norris.

Remember that, just like the folks that build PDA software, you are writing code to be deployed atop a purpose-built, specialized hardware/OS combination that has profound intentional differences from your Mac/XP/Linux desktop environment. And while the hardware/OS vendor (i.e. Google) does everything that they can to bridge that gap, many of these differences cannot be effectively abstracted away.

The teams that will successfully launch apps atop the Google App Engine are the ones that understand and embrace the nature of the platform (both pros and cons), rather than those that grudgingly work around its idiosyncrasies, pining for the Ubuntu-y goodness of their favorite deployment environments.

Folks who treat App Engine simply as an alternate deployment platform for Python-based web applications run the risk of hitting the wall before they get their app out the door. Anything but the simplest applications will likely require some serious RDBMS-to-”Datastore API” architectural transmogrification. And there are still a bunch of Python libraries (Paste, Mako, etc.) that cannot be used in the App Engine environment.

For time spent in the App Engine world will make for an interesting life:

Infinite scalability. Minimal administrative headaches. But no way to run a query with a “GROUP BY” clause.

Plan accordingly.

04/08/2008

Google App Engine

Google App Engine was announced last night. This is a service that allows you to write a web application in Python and deploy it to Google, where it can run atop Google’s uber-scalable infrastructure. Here is the transcript and video of the announcement, where Kevin Gibbs from Google explains the App Engine’s value proposition (Easy to use, Easy to scale, and Free to get started.)

Like most big announcements, it’s the most sensational aspects of the story that emerge first. But I think that the broader impact of Google App Engine is a fundamental rethinking of the relational database value proposition among the RDBMS’ staunchest allies. Google makes a compelling case for deployment, so long as your application can live within its constraints.

I see data management as the biggest impedence mismatch between the Google App Engine and the traditional web application design. However, over time I’m certain that a set of patterns will emerge to aid the masses in bridging the gap between the relational model and the Datastore API.

They have some great stuff in the Datastore API, and Christian and I are already at work putting together some offerings to help companies attracted to Google’s Infrastructure-as-a-Service model objectively evaluate and/or embrace the App Engine for their web application needs. Email me if you’d like to discuss.

So that being said, I’ll argue the following:

  • Is it a giant piece of flypaper to help Google acquire the next generation of startups? Maybe, but I contend that the real killer next-generation apps will need more feature-rich networking capabilities. Let’s wait until we see what kind of XMPP/GoogleTalk integration comes along.
  • Is it a sign that commodity web hosting providers are going the way of the corner video store? Perhaps.
  • Is it a welcome counterbalance to the Ruby-on-Rails hype machine in the dynamic language arena? Yep.
  • Is it a final blow in the in the Google vs. [INSERT NAME HERE] battle for the hearts, minds, and wallets of the IT crowd? No, the Infrastructure-as-a-Service game is just beginning. The Amazon infrastructure offerings are generalized and piecemeal (by design), whereas the Google App Engine is more of a “vertical” play tailored to traditional data-backed web applications.
  • Is it a symbolic victory of Django over Pylons in the Python web frameworks world? No, it’s a victory for WSGI. Django just happens to be up on stage, ably and graciously accepting the award on WSGI’s behalf. I think that the stuff coming out of the App Engine ecosystem in the coming weeks will provide additional validation to the idea that WSGI is Python’s not-so-secret weapon.

Lastly, I’ll throw out some predictions, none of which are Earth-shattering:

  • An Open Source application stack that emulates the Google App Engine SDK’s runtime environment will emerge from the community for folks that want to build applications that are compatible with the App Engine, but do not want to deploy their application to Google’s cloud at the current time. Also, this stack would provide an option for companies that deploy a custom app to the App Engine, but subsequently wish to take their application in-house.
  • Within time, you’ll see integration with other elements of the Google infrastructure (Docs, GTalk, Search, etc.).
  • The next language to be supported will be JavaScript, but that will not come for quite some time.

03/28/2008

10 Million Reasons to Be Bullish on PostgreSQL

IBM invests in PostgreSQL vendor EnterpriseDB.

This is good news for two reasons: First, it throws yet another (big) blue chip name behind the PostgreSQL brand and ecosystem. IBM was one of 4 firms participating in EnterpriseDB’s C round of venture financing, which raised $10 million for the firm.

Second, EnterpriseDB is also rebranding their value-add packagings of PostgreSQL as Postgres Plus and Postgres Plus Advanced Server. The products used to be branded as EnterpriseDB Server and EnterpriseDB Advanced Server respectively. This new naming scheme should bring more brand recognition to the underlying PostgreSQL project.

For those not familiar with EnterpriseDB, their main claim to fame is an Oracle compatibility layer that they’ve built atop PostgreSQL. This allows firms to save a few bucks by replacing Oracle databases with EnterpriseDB’s distribution of PostgreSQL. They also provide support and other value-added software and services for customers using PostgreSQL.

Speaking of databases, I highly recommend checking out FLOSS Weekly: Episode 26 where the guest is D. Richard Hipp, the creator of SQLite. SQLite is the most widely distributed relational database in the world. Aside from the interesting technical content, the interview can stand on the merits as a human interest story of how one man’s pet project can have a huge impact on the world.

My PM Network Interview, or Tales from the Cutting Room Floor

couple of months back, I had the pleasure of being interviewed by Susan Ladika for PM Network magazine (a publication of the Project Management Institute). They were doing an article about managing small project teams for the March 2008 issue.

I put together a bunch of content in advance of the interview. Now that the magazine’s hit the streets, I figured that I’ll publish the stuff that I wrote that didn’t make it into the article.

I did my prep work by writing out a fake interview with myself. I’m certain that I’ll recycle some of this content in future writings and talks, but here it is in its original form for your reading enjoyment:

–[BEGIN FAKE INTERVIEW]—————————————–

1) Your company uses the slogan “We help small teams solve large problems.” Please explain.

The needs of small, disciplined project teams are largely unrecognized and under-served in the project management community. We started our company to bring the necessary people, process, and technology to small teams so that they can leverage their constraints and deliver value to their customers in a predictable and instrumented fashion.

Too many small project teams either wander their way through the project lifecycle alone, or end up suffocating under a heavy, inappropriate layer of bureaucratic oversight that makes project delivery slower and more painful, but doesn’t necessarily reduce any tangible delivery risks.

We know that there’s a better way, so we put our money where our mouth is. ProjectPipe.com is our project management software solution that embodies our approach to disciplined, high-performance small team project management. Our target customers in corporate settings are the small boats of ambition floating in the sea of big company mediocrity. While we’re not here today to discuss ProjectPipe, any interested readers can find out more at ProjectPipe.com.

We are convinced that the future of project delivery is small, distributed teams. We are fortunate to be in a position to expedite this trend through our software, consulting, and writing.

2) But isn’t bigger generally better?

No. Having more people on your team is not like having more money in the bank.

For example, jazz quartets don’t want to be orchestras when they grow up. The two are different beasts.

If you try to run a jazz quartet like a symphony, you get bad jazz. Run a 20-piece orchestra like a jam session, and you end up with chaos. The same goes for project teams. If you run a small project like a miniature large project, you end up with….pretty much what you see in corporate environments everyday. Namely, too many meetings, lots of low-value boilerplate documentation, and other adminstrative overhead that gets in the way of solving the real problems at hand.

Don’t get me wrong, a team of 4 people still needs to play by the book, but it’s a different book.

3) Why does the size of a team matter? Aren’t there universal best practices for project management?

At a high-level, there are a number of universal truths that the Project Management Institute, and other organizations have done a wonderful job categorizing and articulating. However, when it comes time to tactically implement these best practices, you see the entire spectrum of implementation choices, from hyper-bureaucratic process overkill to Wild West-style chaos.

In theory, practice and theory are the same. In practice, they are profoundly different.

This is why it is so important to have strict adherence to a lightweight process. As a project manager, you want to spend your overhead capital wisely, applying documentation and other process-related protocols to the specific areas of project risk that are relevant to your project.

4) What types of things are more difficult for small teams, aside from the shortage of manpower?

There are three general challenges for a small team. First of all, distractions and overhead can be a significant drain of time and attention. Second, context switching can be expensive, as members of small teams often wear multiple hats. Lastly, having fewer team members to draw insight from can result in less diverse domain expertise brought to the table.

5) Are there any advantages that come from having a small team?

Certainly. Small effective teams understand the nimble clarity that comes with having few moving parts. They have conversations rather than meetings.

Small teams separate the wheat from the chaff, since there’s nowhere for underperformers to hide. As a result, I’ve found that higher-skilled resources are more likely to prefer working in smaller teams, since there’s a bit of self-selection at play. For example, rock stars know that poor performers are more interested in being the 16th person on a 16-person team than the 3rd person on a 3-person team.

6) What kinds of special needs do small teams have?

Small teams need to behave like small teams, not miniature versions of large teams, because bureaucracy doesn’t scale down particularly well. Small teams need to be led by a project manager that understands the dynamics of small team delivery. Specifically, someone who picks their battles carefully and doesn’t mind getting their hands dirty from time-to-time. Additionally, small teams need to use the best tools available, as they cannot afford to arbitrarily throw labor at problems.

7) Are there particular issues that come when team members are dispersed around the globe?

Small teams should strive for “location transparency”, regardless of the team’s physical locale. Collaborative technology (and the day-to-day practices that support collaborative processes) should be employed whether team members are separated by a hallway or an ocean.

8) What ways can small teams work most effectively to accomplish big tasks?

There are four aspects that drive small-team effectiveness: Planning, Process, Automation, and Asset Management.

  • Planning: Small teams need to focus their efforts on understanding how the key moving parts of their project fit together so that they can proactively categorize and manage delivery risk. This is far more important than trying to optimize the workload balancing in your project plan, since you’re not trying to distribute lots of work among interchangeable resources on a large team.
  • Process: Small teams should maintain strict adherence to a lightweight process. Individual heroics are not scalable nor predictable over time. Even small teams need to play by the book, but they need to make sure that it’s the right book for them.
  • Automation: Small teams need to maximize the amount of work that they don’t do, and focus their efforts on the important stuff. If work cannot be avoided, it should be automated. Computers are really good at doing predictable stuff really fast.
  • Asset Management: Small teams should manage their important data using some sort of version control mechanism. A good version control system acts as a time machine in case users need to review and/or compare previous versions of a document or other artifact, and a bank vault to protect a single, current version of the truth for each project asset.

9) I also found the comment intriguing that large teams are usually bands of small teams in disguise, and I’d like your thoughts on that.

We coined that phrase to help decision makers understand the true nature and composition of their organizations, and soften any negative connotations that the “small teams” concept would have in larger organizations.

At the end of the day, projects get talked about by large teams and completed by small teams (or groups of small teams working together).

Any team can make a decision. Only small teams make great decisions.

Any team can do work. Only small teams do efficient work.

It’s true that there is strength in numbers, but sometimes that strength lies in small numbers.

–[END FAKE INTERVIEW]——————————————

01/25/2008

XMPP and “Cloud Services” (or why Polling is Evil)

Great article on Jive Software’s Community Blog: XMPP (a.k.a. Jabber) is the future for cloud services.

The Tivo example that Matt provides is good conversational fodder if you ever need to explain why Polling is Evil to a non-technical audience.

Personally, I don’t love the “Cloud Services” moniker, but that’s neither here nor there. Regardless of what they call it, we’re starting to see that the app networking world is sliding into standardization, using HTTP for simple round-trip synchronous communications, and XMPP for asynchronous communications and/or stateful conversational communications.

The consolidation of the major Instant Messaging providers around XMPP will do much to glue the “Web” and “Non-Web” elements of the Internet together in ways that we’ve only started to think about.

Also, here’s a link (found in the comments of the aforementioned article) about the new XMPP Logo.

01/23/2008

PyCOE: IT Transformation after the Gold Rush

This posting provides some background for our new Python Center of Excellence (PyCOE) consulting offering.

We are slowly entering the post-honeymoon era of Ruby on Rails (RoR). For a while, the IT press was head-over-heels in anointing RoR as the heir apparent to J2EE/.NET development in the Enterprise. Now, there is a much more balanced pro/con view of RoR, especially among the Alpha Geeks.

While the press talks about IT fashion du jour, I think that IT and business folks alike are secretly pining for the next “Visual Basic”, where an easy-to-learn syntax coupled with powerful libraries can be used by normal people to solve real problems quickly in a variety of contexts.

Python fits that bill quite nicely, and is attractive to both hardcore programmers and the “IT is my day job” crowds alike.

Other languages are arguably more [INSERT ADJECTIVE HERE] than Python, but few combine its expressiveness and ease of learning.

Unfortunately for the typical IT manager, it’s hard to figure out what technology horse to bet on, since the popular bets are rarely the good ones. Taking the advice of the high-end IT sages will land you smack-dab in the middle of the pack at best. And following the advice of your sharpest go-to person may yield an approach that doesn’t scale across the talent continuum.

Stop me if you’ve heard this one before: Bob is the smartest guy in the IT department. Bob falls in love with Rails, and makes the pitch to his boss that they should do their new development in Ruby. Bob backs this up with circa-2006/2007 praise that Rails received from…everywhere. They get started and the boss quickly learns three things:

  • Bob is happy working in Rails. Woohoo!
  • The simple stuff gets done quickly in Rails. Woohoo!
  • Everything else carries a pretty steep learning curve for everyone but Bob. D’oh!

Our PyCOE offering provides a contrasting model, one that states that You should not base technology selection solely upon the tastes and preferences of your sharpest employee.

Rather, PyCOE provides a nine-step process for helping companies adopt Python and incorporate the set of tools and approaches that are appropriate to their existing environment, making sure that the tool selection is consistent with the culture, charter, and legacy considerations of the organization, among other factors.

Paradoxically speaking, it’s exciting to help make dynamic language adoption become boring and predictable.

Our New Offerings for 2008

Introduction

As Christian mentioned the other day, we have two new service offerings in 2008, both centered around Python consulting:

  • PyCOE.com is our new offering to help organizations build core competencies in Python in a deliberate and predictable fashion in a way that is fundamentally different from the way that firms tried to adopt J2EE and .NET in the past.

    In a nutshell, we help companies create an environment where the easy thing to do is also the right thing to do for their developers, analysts, and QA personnel. We focus on culture, standards, and infrastructure as we help our customers create a Python Center of Excellence (or COE, hence the PyCOE name) in their organization. We do this by approaching Python adoption as business process re-engineering for IT, rather than programmer training.

  • PyGuys.com is our new Python consulting brand. We are focusing on small-to-midsize custom development projects, and SDLC process improvement consulting. We’ve been doing Python and Project Management consulting since the company started, but we felt that now was a good time to rebrand and grow our Python consulting business.

We also reworked the Botonomy.com company website, to reflect its role as a “holding company” for our branded service offerings.

Also, just before we launched our new websites, TIOBE declared Python as the programming language of 2007. Not a bad sign, if you ask me.