Categories » Development
I've updated my Open Calais PHP Class with the entity types added in Calais' last update. It now matches a bunch of new entertainment-related entities including movies, music and sports event names.
You can drop the new opencalais.php into the folder with either plugin for WordPress and they'll be able to add the new types of entities as tags automatically. I'll be merging and updating the plugins some time in the future as well. I just used them to tag all the articles on Website Goodies, which is getting its first update in a few years as I move it onto WordPress and add a few more goodies.
It looks like FeedBurner's API has moved in with Google at Google Code. Without an e-mail or a blog post, they made a few changes that broke W3Counter's slurping of feed stats. Notably, they are no longer reporting the "reach" metric for some feeds, and it's disappeared from the API reference... perhaps it was harder to track than they thought.
Quite tangential to everything else I've been doing recently, I wrote my first ray tracer in C++ today. It can render arbitrary triangle meshes defined in SMF format. Next weekend I'll teach myself shading.
First, I wrote a PHP class for passing content to Open Calais and getting back tags. Then, a WordPress plugin for tagging posts as you write them. Now, taking it one step further again, here's a plugin for automatic tagging of your post archives.
I tried tagging for a while last year, but wasn't consistent in my choice of tags or in tagging every post at all. That made the whole system not worth the work, so I removed the plugins I used to add tags in the first place. Now tags are as much a part of WordPress as categories, and I have almost 170 posts not tagged at all. I could edit every one and add them, manually or with the plugin, but that would take a lot of time. Instead, I wrote a plugin which goes through my entire archive of posts, sends the post title and content over to Calais and adds any tags it finds. If there were already tags on the post, only new ones found would be added. Continued »
 I just completed the WP Calais Auto Tagger plugin, the obvious first use of my Open Calais Tags class. It adds a tag suggestion box to your WordPress post writing screen which suggests tags based on your post content using the Open Calais API. The suggestions can be added to the post's tag list with a single click, or manually added if you don't want to use them all.
If you've been meaning to use WordPress's new built-in tags, but are too lazy to come up with a good list every time you blog, give the plugin a try. Comments, suggestions and bug reports are appreciated.
 In addition to a visual overhaul, WordPress 2.5 added several new plugin hooks, including a widgetized dashboard. The new Blog Stats Plugin for WordPress adds blog stats to the dashboard, and makes integrating the tracking code into a theme simple.
It's also the first use of W3Counter's "visitor labeling" I previewed in October ( spooky visitor labeling). By using the plugin instead of inserting the tracking code manually, the names of any previous commentors on your blog is picked up from the cookie WordPress sets and passed on to W3Counter.
Creating a dashboard widget was surprisingly easy. Of course, most of the code isn't in the plugin — I just fill the widget's box with an iframe that pulls up the stats from a specially formatted w3counter.com page. Some JavaScript trickery passes in the width of the box on your screen — if it's narrow, you get two columns of stats, but if your window is approximately 800 pixels or wider, you get three.
If you're using W3Counter on your blog, and have upgraded to WordPress 2.5, download it now.
Calais is a free web service from Clearforest, a Reuters company, that can perform semantic analysis on any English text. It uses natural language processing to extract concepts and relationships from the text. It's been around for a few months, but there's been very little developer activity around it, and even fewer completed applications using the technology.
Not finding any other work to build on, I wrote my own PHP class for extracting tags from content with Open Calais' API. You can get the source and read more here. This class takes a block of text or HTML, sends it to Open Calais or parsing, and extracts all of the entities (things like peoples' names, companies, technologies, etc.). It returns a multidimensional array organized by entity type.
There's more Open Calais can do, but I hope this class contributes something to those PHP developers that'd like to start using it but had no place to start with the lightweight documentation and eerily quiet official forums. I plan on putting this class to work as an auto-tagging plugin for WordPress posts. I still need some time to figure out how to integrate that into the new authoring interface of WP 2.5, which this blog is now running on.
 Inspired by this article at Read/Write Web, I decided to make a search engine out of one of my bookmark collections. Discover Semantic searches about 70 sites dealing with the semantic web (aka "web 3.0"). It covers W3 recommendations, specifications, tools, tutorials, and dozens of blogs about semweb.
If nothing else, it was interesting to see what can be done with the CSEs. I also used Microsoft Expression Web 2 Beta for the coding. Unlike the first version of Expression Web, this one's got PHP intellisense (language library and code completion) and the built-in web server can run PHP. It's a lot faster than Eclipse, which really doesn't like the size of my Symfony projects these days.
A new report I'm considering adding to W3Counter is a "Live Map" — a Google map that shows visitors arriving to your website in real-time. It updates every 3 seconds with an AJAX call, instantly recenting the map on each new visitor and popping up their information. I've had fun staring at it for half an hour now. I've also got a new website design in the works, as I seem unable to let go of it to an outside designer...
I've been thinking about Twine a lot recently. I see a lot of potential in the semantic web and I think a lot of people will be thinking that way once Twine is here. Smarter systems that start learning from our siloed information all over the web and on our desktop, then start making intelligent connections for us based on that learning, are going to change how we work. They're going to start doing the connecting we've always had to do ourselves, between our own information and relationships, and between what we know and what 's related that we have yet to discover.
The concept of intelligent systems, software that learns, applications that become more intelligent and more useful the more they're used and scale, is really appealing to me. Thinking about it today inspired a product idea I'd really like to build. I don't know why I didn't think of it sooner, since the basis is similar to something I programmed way back in 2003 between the end of high school and my freshman year of college. It was a learning algorithm that determined who a sales lead in an SFA system should be routed to based on sales representatives' past experience with similar types of leads. It worked pretty well, despite my lack of experience leading to a very inefficient implementation; the company that had contracted me to develop the product applied for a patent on that part of the system.
It's been a long time since I've had an idea for something that's not been done a thousand times already. I think I'll work on this one after I finish the work on W3Counter.
Previous Entries »
|