Be sure and say hello if you’re at the meetup!
Be sure and say hello if you’re at the meetup!
What a week this has been for Denver. Farewell Democratic National Convention, it’s been fun!
The DNC has been a great opportunity to shine the national spotlight on Denver and the greater Rocky Mountain West. The city did a fantastic job as host, and the exposure for Colorado has been great!
OK folks, going to be out of pocket for the next two weeks. I’m getting married, and going on a honeymoon:
Those who need to get in contact with me while away, know how to do so. To everyone else: See you in two weeks! Bula Bula
Nothing like seeing a positive trend continue.
Around a year ago, I posted some yearly crime statistics for my home city of Denver, showing drops in both violent and property crimes compared to the prior year.
This year’s stats were recently posted, showing an 11.2% decrease in property crimes, and a 14.7% decrease in violent crimes. That’s great news. Keep it up, Denver!
Too many websites. Too little syndication.
This is a theme that’s been bouncing around my subconscious for months; something I’ve blogged about in the past.
But really, syndication is only part of the problem. Syndication normalizes data, and makes it readily accessible to 3rd parties — but it doesn’t push data where you want it. It’s a pull-focused technology.
For push, we need some sort of alerting capability.
Recently, I’ve been in the habit of checking delegate counters for the 2008 Presidential Election Primary Races. I check them daily; seeing updates to pledged delegates, super-delegates, etc.
Checking for updates doesn’t take a significant amount of time, but it’s yet another activity that can conceivably interrupt my work flow. Leveraging of automation would be a much better way to do this.
Recently, my company added Alerts capability to our AlchemyGrid beta service. You can create an alert based on anything — any sort of web content (syndicated or not). Alerts can travel over many communications mediums (Email, AIM, SMS, Twitter, etc.). They support lots of customization options (regarding how often to check for updates, what’s considered a “unique update”, etc.).
I used this new service to create an Alert that monitors delegate counts for the Democratic Presidential candidates (GOP has already chosen their candidate). Any updates to delegate counts are automatically posted to the twitter account “demdelegate08″. You can see the Twitter feed (and follow it if you wish) here:
If you aren’t a Twitter user, and are interested in getting delegate updates via Email, SMS, or AIM, you can “Subscribe to / Follow” my Alert here:
A few implementation notes, for the geeks out there: We’re using a custom-engineered AIM, Email, and SMS backend for our Alerts implementation. We’re interacting with external services directly at the Protocol/API level, not piggy-backing off 3rd-party gateways or using other unreliable modes of communication.
I’ve just added a new sidebar widget to my blog: “Related Content”.
This is a demonstration of “contextual widgets” from my company’s AlchemyGrid service.
Contextual widgets utilize a custom-engineered “statistical topic keyword extraction from Natural Language Text” facility we’ve recently integrated into our products. If you’re familiar with the “Yahoo Term Extraction” API, our system is essentially doing the same sort of stuff. Natural language processing is fun (and challenging) stuff. Here’s a few notes regarding our implementation:
1. AlchemyGrid’s Term Extraction facility supports multiple languages (English, German, French, Italian, Spanish, and Russian!). This was an important requirement for us, to enable contextual content generation for non-English websites/blogs. There are significant differences between languages in terms of punctuation rules, word stemming, and other details. Hats off to our Term Extraction developers, you’ve done a great job ensuring good initial language coverage.
2. Our Term Extraction facility is entirely statistical in its basis, not using a hard-coded lexicon, etc. This enables it to extract contextually-relevant topic keywords even when they’re (a) new topics, (b) rarely used common nouns/people-names, or (c) misspelled.
We’ve just integrated Term Extraction into our Grid service, so there may be a few minor kinks to work out in the coming weeks — but overall we’re happy with the initial results. Contextual capability vastly expands the utility of AlchemyGrid widgets, as their content can now be automatically customized to relate to your content. This applies to *any* input-enabled widget in the grid (ALL widgets are contextual). Here’s another contextual example (a related Amazon book):
We’ll be enabling the other supported languages in coming weeks, as well as rolling out some additional enhancements to our text processing algorithms (for the geeks in the audience, enhancements to our sentence boundaries detector, inline punctuation processor, etc.).
I use the Internet constantly during the course of my everyday life — looking up telephone numbers, reading restaurant reviews, etc.
One task I’m frequently engaged in is Content Monitoring; that is, checking (and re-checking) websites of interest for updates and new information.
Alas, there are many websites out there with no form of syndicated access. This is just plain irritating.
Luckily tools are starting to appear that can eliminate this irritant. My company released a new service earlier this week, which makes great strides at solving this problem.
This new service performs Automated Content Monitoring: a way of programmatically monitoring information sources that currently lack syndication features.
I’m a big fan of leveraging automated techniques to optimize my daily workflow — many of my previous blog posts have focused on this topic. Leveraging algorithms to improve efficiency, access to information, and integration of data is a central theme to the Implicit Web, both a personal interest of mine and business interest of my company. Automated Content Monitoring fits perfectly within this arena.
I’m currently using our new Automated Content Monitoring service to track a variety of information sources: new events at my preferred concert venues, special deals offered by local radio stations, etc. Monitoring each of these information sources automatically frees up my time for more useful activities, and gives notification of website updates far sooner than if I were performing these tasks manually.
We’ll likely see increased uptake of Automated Content Monitoring solutions in the near future, as more individuals succumb to the dreaded Attention Crash.
Over the weekend I went to see a new IMAX film at the Denver Museum of Nature and Science: “The Alps”.
Some really amazing imagery. Like most IMAX films, you could watch the whole thing on mute and still walk away feeling fulfilled.
Information on this film (including trailers & showtimes) is available here:
Colorado is lucky to be blessed with an exciting entrepreneurial scene and a solid local technology base. This really shows if you take the time to visit one of the great Tech Meetups in the area, and take a look at the other folks who are in attendance. A truly great group of people.
I’ve made it up to the Boulder Meetup a few times (attempted to go to the January event but was thwarted by bad traffic on highway 36), but haven’t ever gone to a Denver event. From the looks of the following blog post, we should start seeing some additional events in Denver soon:
I’m going to try and make it out to more of these events in the near future. If you see me in the crowd, be sure and say hello!
OK, just a short rant.
RFC2396 specifies support for “URI parameters” within segments of a URI “path”. For those of you who don’t enjoy reading RFCs with your morning coffee, URI parameters are the “;SESSION=f12aa” looking thingys that sometimes appear in HTTP URLs. Yahoo and some other well-known websites use them, but most don’t.
I see the usefulness of URI parameters, but making them allowed on a per-segment basis just seems like overkill to me. I’ve also seen no production environment that makes use of per-segment parameters (if you have, let me know!).
With per-segment URI params, you can do lovely stuff like this:
Which converts down to an actual URI path of:
/foo/bar/abc.txt (params: blah=x, blah2=y, blah3=z)
Looking through URI parsing routines in some common open source code, it seems not everybody is handling this scenario. It’s stated as allowed, though not really expanded upon with any meaningful examples, in RFC2396 (Section 3.3). Many folks who are parsing URI params seem to be assuming they can only appear at the last URI segment, but this is definitely not the case.
These sort of encoding/decoding tediums remind me of my days building Network Intrusion Detection Systems, where even a slight encoding error can have truly disastrous results (see the ’98 Ptacek/Newsham paper on NIDS Insertion/Evasion for the reasons why). I’ve gone ahead and implemented per-path-segment URI parameter support in our AlchemyPoint core code, but I shudder to think of how many HTTP application layer proxies, firewalls, and NIDS systems aren’t handling this sort of thing correctly.