Active Realtime is the newest addition to our product incubator labs.active.com. Every day thousands of people are searching and registering for things to do at Active. The idea behind Active Realtime is to provide a window in to actual user activity, giving a sense of whats happening right now at Active. We also aggregate popular activities on a local level, which reveals favored events and activities in a region. We also have the opportunity to look at trending topics over time, which will perhaps yield new insight into what is keeping us Active.
Presently data for Active Realtime is provided by our newly launched search engine . In the future we hope to include realtime data from other parts of Active, such as event registration openings or community posts. Keeping this in mind, we designed a technical infrastructure for Active Realtime that would allow us to add additional sources of data in the future, as well as allow other applications at Active tap into the information.
To accomplish this, we used XMPP Publish Subscribe, an addition to the venerable IM protocol. Using XMPP PubSub, we are able to keep Active.com Search and Active Realtime loosely coupled, so each service can be independently maintained and scaled. Additionally, we developed a Search Logger, which acts independently of the Search site. The Search Logger acts as the Publisher, and pushes search data over the XMPP bus. Any interested part of the Active infrastructure may subscribe to receive these updates, and the Realtime application is just that. The Realtime architecture includes a Ruby daemon that acts as Subscriber, registering an interest for search activity and receiving data accordingly. This data is recorded into the Realtime database, which then can be displayed on the Realtime site. A diagram showing the architecture is included to the side.
The payoff for investing the time to create this architecture, rather than just querying the search infrastructure directly, is twofold. First, it provides a simple and scalable way for future datasource additions to be made to the Realtime application. Secondly, it de-couples realtime with each of the data publishers, allowing all systems to function and scale independently, without having an impact on one another.
I hope you enjoy this window into Active. The data on Active Realtime is generated by Active users, so perhaps another like minded person will help you to find a great local activity to participate in.
Our last release was a big one for Active.com. We pushed out some long-awaited improvements to the site – some designed to make people happy, others search engines.
The inclusion of course routes on our event details pages has been a fixture on our roadmap for some time. Developing the functionality was never the issue. (The ActiveTrainer team has a fine route plotting mash-up in their arsenal.) Our challenge was attaining a critical mass of route data.
That’s where MapMyFitness came in. One of the earliest organizations to build a viable business out of a mash-up, MapMyFitness (makers of MapMyRun.com, MapMyRide.com and others) had a huge head start in both data and mind share. So we figured, why fight it. We’re great at event aggregation. They’re great at social route sharing.
After a call or two with Kevin Callahan and the MapMyFitness team, we were off and running. (Pun only partially intended.) And here we are, just few development cycles later; and we have MapMyFitness routes fully integrated with Active.com events.
2) MapMyFitness read our events and matched their routes by an algorithm they developed. (A route needs a confidence score over 70 to earn a relation.)
3) We added functionality that allows event directors and organizers with appropriate credentials to log in and select, edit or create their official course route and apply their seal of approval.
4) MapMyFitness developed a nice, light application that makes Event Director authorization of routes a breeze.
5) We finished up by integrating the related routes into our event pages.
What we’re all really excited about is the fact that endurance athletes now have a resource for official course routes. Event Directors and Organizers use our software every day. And we’ve made it ridiculously simple for them to publish their official routes to the largest audience of endurance enthusiasts anywhere.
With search engine-friendly URLs a commodity feature in even the most basic open source CMS, it’s easy to take them as given. But when you’re working with a variety of legacy in-house systems that are vital to business operations, introducing SE-friendly URLs isn’t as easy as it might sound.
Along with clean URLs, we release a comprehensive Directory of all our current events. The Directory is primarily designed for search engine consumption. But we’re finding people are also taking to it; which is a welcomed side effect of the ultra-lean interface.
I want to thank our developers, designers, QA and IT teams for all the great work that went into this release.
We’re looking forward to watching how our audience takes to the improvements – people and robots, alike.
I'm happy to announce that I'll be speaking at the Business of APIs Conference in New York City on Monday, 16 November, 2009. We've been steadily investing in our public API over the past few months with the Search API being the most recent addition to our portfolio. I'm going to be telling the "Active Story", starting from the origins of our company and how we grew through acquisitions. The prime directive of active.com was to become the world's most comprehensive directory for things to do, and in order to accomplish this we needed to ingest data produced by the products we'd acquired in order to make them discoverable on the site. An internal initiative, then, drove us to consider interoperable APIs as a means to facilitate integration between systems we owned, and at that APIs that could be accessed across data centers. As a by product of this initiative we found that external developers were interested in our data, hence the birth of developer.active.com.
Demand Media's LIVESTRONG.com, a “practical resource to find a wealth of health-related information from a wide range of sources”, taps into the Active.com directory of community events to add to the relevance and usefulness of its business listings. For example, the site includes an Active-powered list of nearby events to each of the pages in its Restaurant section:
ESPN Rise uses the SportsPower API Service to better fulfill its goal of offering “all the latest high school sports information, including scores, stats, rankings, polls and athlete profiles”. The site features the top ranked high school football teams across five classifications according to the Active Power Ratings. New ratings and rankings are unveiled every week throughout the season, and are generated at the national, state and local level.
We're well underway developing the new search.active.com, and I thought I'd take a moment to discuss a realt-time, publish/subscribe messaging layer we're inserting into the Search architecture. In the beginning of my career I worked building distributed OSS/BSS applications integrating various line of business systems with products from a middleware vendor called TIBCO. During this time I was introduced to the concept of "[publish/subscribe|http://en.wikipedia.org/wiki/Publish/subscribe]", whereby an application sends one message that may be consumed by many disparate applications. For example, when a customer calls into a call center to order broadband internet, the customer service rep enters order details into a CRM system. When the order details have been captured, the CRM system submits the order for processing. Various applications might be interested in that order, including the workflow system which manages the provisioning process and the Customer Data Store application which warehouses all customer records. Though the publish/subscribe pattern, the CRM system simply publishes the "new order" message knowing nothing about the applications that might be interested in it. Interested systems then consume it and do work with the data.
Decoupling in this way yields a powerful layer of extensibility whereby "n" number of applications can be integrated to consume messages with no modification required to those that produce them.
TIBCO provided a messaging layer called Rendezvous that I worked with on several projects back in the early days. Rendezvous was the medium, or "Enterprise Service Bus" (ESB), through which messages were exchanged. It also cost about $100K. Cheaper (i.e. free) alternatives have come about since then, including an implementation of the XMPP protocol called ejabberd. While XMPP is widely thought to be an instant messaging protocol, it's publish/subscribe plugin makes it a good ESB candidate for simple messaging solutions. There are XMPP clients written in .NET, Java, Ruby, etc., so interoperability is maintained.
The new Search solution is trialing XMPP to synchronize ratings data with the search index. Functionally we've proven XMPP does the job as our prototype is using it today, and we're hoping the platform will be robust enough that we can broaden its use to other AMP initiatives which might include real-time registration notification and social message streaming.
I'm excited about the options publish/subscribe gives us architecturally speaking. Hopefully this is the first of many posts heralding this new design paradigm and highlighting its uses.
The update to active.com last week brought with it a significant improvement in load time and page size. We met last month to determine how we could give the site a bit more zip and came up with a solid list of about 8 items. One of those items, removal of VIEWSTATE, was included in our latest update. VIEWSTATE is a variable used in ASP.NET to make HTTP, a stateless protocol, act like a stateful one. Most of the pages on active.com, however, dont require state, making VIEWSTATE extraneous. And on average VIEWSTATE added an additional 50 to 150 KB to page sizes to the site.
In our latest release we turned VIEWSTATE off. Data shows us that the site is about 23% faster and, with an average page size reduction of 27%, well lower consumed bandwidth out of our production data center by about 500 to 800 GB/month.
I’d like to address feedback we’re received about active.com from our uservoice forum and Twitter. I know I’ve written a few posts here already but thought it appropriate to take the time to introduce myself before diving in. I’m the Director of Product Development for what we internally call “Web Properties”. This includes half of www.active.com, results.active.com, search.active.com, community.active.com, coolrunning.com, sportspower.com, laxpower.com, developer.active.com and a slew of services that support these products. My job is to oversee a team of developers and quality assurance engineers administratively and architecturally. My team and I work closely with Product Management who’s job it is to prioritize features and bugs and communicate important information with the rest of the company. I came on board in February, 2008 with a background as an Enterprise 2.0 guy (I co-authored this book) and Management and Technology consultant where I talked to large companies about how best to leverage social media (Web 2.0).
In 2006 a bunch of smart people (Tim O’Reilly, Martin Fowler, John Musser from Programmableweb) met to define attributes of Web 2.0, and these attributes highlight a positive mental shift in the approach to developing web-based products. The first of the six attributes they identified was “Do one thing well”; stay single-purposed. Looking at the current active.com homepage it’s hard to tell what we’re trying to get you to do. We have information about events. We also have links to articles and blog posts produced by our Content team. And we have ads (gotta pay the bills somehow). We have a lot of purposes manifested on that page.
I have a passion for Web 2.0 and believe firmly that web properties should focus on you, the consumer. The fourth attribute the group defined was “Encourage participation”. To-date we haven’t always done a good job there. We have a lot of very interesting information that could help runners discover other runners – to make you want to connect with other like-minded athletes - but we’re not exploiting the data to that end…yet. We do have a strong Community team that oversees community.active.com where it is easy to participate. But we haven’t presented a clear path for you to understand that this option is available to you after you’ve registered for an event or when you’re planning your events for the year.
Web 2.0 preaches “Honest voice over Corporate speak”, and in following this spirit I wanted to address some of the feedback we’ve received over the past few months. We do get a lot of positive feedback, such as this "@activenetwork love active.com and use it for the races i sign up for. any opinion on my idea for sunblock+running? http://twurl.nl/wrws3h", and our page view metrics seem to indicate that people like using our site. But here are some not so positive things people have said.
“Pardon me but your site is the most ridiuculous site I have ever used. It is not only confusing, it is difficult to navigate. Please hire a pro to re-organize the site, otherwise we "Active" people will be forced to use a crappy monopoly like ticketmaster to preregister for events.”
This is fair, in part, as we’re not giving you clear direction as to what we want you do to on our site. Regarding the half of www.active.com that I oversee technically, we’re working to make navigation more intuitive and consolidate the site’s purpose to make things much clearer for you. We’ll be launching the redesign in Beta in the next few months and will be looking for user feedback at that time.
We’re also working on a new registration platform (the part of the site I don’t oversee) that will improve user experience significantly when it comes to race registration. That product isn’t scheduled to be released for several months, but I’m excited about what I’ve seen so far.
“you send out unwanted e-mails and then your unsubscribe link doesn't work so you tell people they can write to an address to unsubscribe. I don't think so. Fix your link!!!!”
Our unsubscribe links do work, but in most cases only unsubscribe you from that specific newsletter. Generally speaking, unsubscribing to newsletters is a complaint we receive often, and I understand how this can be frustrating. Soon we will be releasing a new page on www.active.com where you can view all of our newsletters, view those you’ve been subscribed to, and either A) opt-in to more or B) unsubscribe from each.
We know that search.active.com is far from perfect, and we set out at the beginning of the year to deliver a significantly enhanced search experience on active.com. While still in early alpha, we’re expecting to unveil the new search.active.com in Q4, and will reach out to a handful of you when we release our closed Beta for feedback.
When you sign up for a race you have the option to opt-in to Active Advantage – a program that provides discounts on race registration and other products. And that program costs $59.95 annually. To be fair, the “opt-in” checkbox used to be automatically checked (a year or so ago, so it was an “opt-out” checkbox), and we received a lot of complaints like this one. But that’s no longer the case, and you have to check the box to be signed up. Regardless, if you think you were erroneously signed up for Active Advantage, email@example.com can always help you out.
I’m excited about how far active.com has come, and for where we will be in the near future. We have a bunch of new features and enhancements (such as improved page load times) in development now that I, as a Web 2.0 enthusiast, find enticing. More to come on these enhancements as they become available.
After much anticipation I'm happy to announce the launch of our Event (Asset*) Syndication API. This is a simple XML/HTTP API that returns a list of events matching specified filters as per API documentation. A subset of our events can be queried through this service. These are (note the api_key below is a demo key, so use it at your own risk):
*Note the word "Asset" appears in the title of this API as we have more than just event in our database, so generically we call these things assets.
During a recent meeting somebody on my team came up with the idea of pulling in "inspirational" tweets, photos, videos from around the web for a given Active topic, like marathon or 10k. I thought it was a great idea, so we worked together to build a prototype and threw it on Labs.
Enter Active Inspiration. We're pulling in the latest tweets and photos about marathons, triathlons and cycling. I suppose you could say this was also inspired by flickrvision and twittervision, except ours is meme-based and also aggregates from multiple sources (we'll be adding more soon).
We think there are lots of interesting things we can do with this data. This is just the beginning. As always, let us know what you think.
Consider the following statements: Microsoft Corporation created C#. C# is used to develop computer programs.
Now think of all of the concepts and relationships between them that are introduced in this statement. As a human, interpreting these is dead simple.
Microsoft is a company
C# is a computer programming language
Microsoft created C#
But, making it so that a computer program can reduce this statement to concepts and the relationships between them is difficult. It is indeed a harrowing task to make computers derive the same meaning from natural language that people do.
Enter the The Semantic Web. The Semantic Web wants to convert the Internet into a database; to make it so computer programs can understand concepts and relationships between concepts contained within in the natural language on web pages.
Microformats are an element of the Semantic Web that define concepts (but don't do a good job of defining relationships), and we've recently introduced them on active.com. Microformats "...are a set of simple, open data formats built upon existing and widely adopted standards" that make it possible to annotate a web page with metadata describing concepts contained within them. On active.com we've implemented the hCalendar microformat to annotate events.
Consider, for example, the Carlsbad 5000. Peering into the HTML source, you'll find:
By annotating the "class" name attributes within the HTML elements according to the hCalendar standard, we can let a computer program know there's an event called the "Carlsbad 5000" on this web page, its start time, end time and location. The Tails Export Firefox plugin, for example, is a computer program that detects microformats on web pages. In the screenshot below we can see it detecting the hCalendar microformat on the Carlsbad 5000 event page:
This stuff's a little geeky sure. But we're proud to contribute to the Semantic Web! on active.com to come.
When I started working at active.com the first thing I noticed was that there were no RSS feeds on our pages. It seemed like a simple oversight to me. But, it turned out adding RSS was harder than one might think, mainly because we had to make sure all was kosher with our content partners.
Well, the time has finally arrived. RSS is now on active.com! Here are some feeds you may want to subscribe to:
active.com is an aggregator of data from disparate sites within the Active Network. Because the source of content is distributed and because we have so much of it, creating a sitemap.xml file for SEO purposes has become challenging. We're working on a new search solution (which you can access in Beta at http://labs.active.com/search) , and the engine behind that has a sitemap.xml generating capability.
But there's only one problem: the file it generates is huge.
We needed an application that would split the sitemap.xml file, according to the constraints above. I searched all over the internet for something that would do this, and was found only with commercial applications that wanted to crawl my site before generating/splitting the sitemap.xml files.
So, my team developed a simple, .NET-based application that splits a large sitemap.xml file into smaller ones, and also creates the sitemap index file which references them.
Because I'm feeling philanthropic, I decided to give you access to this tool, free of charge. Download it here.
In the latest installment of "[No man can...|http://www.imdb.com/title/tt0061512/]" challenges, we bring you the Active.com Product Developer Pepsi Challenge. Can any of these fine men drink 2-liters of Pepsi in less than 4 minutes? Let's, as they say, go to the video tape...