So, I'm working on implementing pingbacks in Ansible. So far, this is the trickiest little part of the blog engine so far.

First, I have to send pingbacks. Each time I create a new post, I have to parse all the code for links, cue them up, then try to ping each one. This means following the link, scraping all the HTML, and looking for the pingback URL. This can be in a <LINK> tag or included in the header.

I'm stuck right now as to how to handle post updates. I tend to fudge things up when I'm typing so I'll update the post several times correcting bad grammar (just kidding. I don't worry none about no bad grammar). The last thing I want to do is re-ping the links in the post. Maybe I'll just put an admin "Re-Ping" button on the web front end so I can manually do it.

The other part is handling pings from other sites. SPAM is a problem with these things, so when you receive a ping, you have to visit the source URL, scrape the HTML, and look for an inbound link that matches what they're pinging. This ensures that at a minimum, there is an actual web page with a hyperlink to your blog.

Once I validate that a link exists, then I save the pingback into the database (the stored procedure prevents multiple pingbacks). Then, each post pulls the pingbacks and links inbound to it and displays it (not implemented yet).

All this involves database schema changes, new tables, stored procedures, etc. I'm also changing the configuration so I can turn pingbacks on and off site wide. Don't think that individual posts really require that level of granularity, so I'm not writing that in, but technically that wouldn't be hard to do.

Yes, this has all been done before, but I'm trying to keep up my programming skills and my blog is one of the best ways for me to stretch my muscles from time to time. Hopefully by the end of the day I'll have the new system in place.

posted by by Robb Allen @
Comments have been closed on this topic.