Fixed Atom and RSS Generation

Posted Aug 20, 2009 12:23:30 AM

Just implemented a quick RSS and ATOM renderer in HawkEye... my feeds were being generated by some legacy code that used to host my website. Once I'd began hosting several other blogs, including my girlfriend's yoga journal, in the same database - everything got fed into the same generator.

The error appears to be fixed, and as a consequence, Josephine's site now support's RSS and ATOM feeds as well!

Thanks for bearing with me... keep the feedback coming!

Mashed up website...

Posted Aug 19, 2009 12:15:34 AM

Spent some time working on the website this afternoon... with Matt and Josephine both interested in running the software, there's been a ton of development work going on.

As of this afternoon, my website runs a mashup of two versions of Blosxonomy-J... the version that drives the front page, tag searches, and item permalinks is the current development version. My old beta software still hosts my about page, and the page that supports posting new entries.

Note: comment support is broken for the time being. It should be back up sometime this week. In the meantime, please e-mail me your feedback: tim@timfanelli.com.

The new code is essentially a web-service mashup, called HawkEye. HawkEye pulls "stories" from any number of webservices - which right now includes Radar, the blogging engine behind HawkEye, and Twitter. Matt is developing a del.icio.us plugin, and flickr plugin as well - though that code isn't checked into SVN yet. I also plan on developing a generic ATOM and RSS consumer, making HawkEye a consumer of virtually anything.

My upcoming major undertakings include an event-notification system, allowing modules to react to events in HawkEye. An event would be anything new that posted in any of the story sources. This would allow you to things like tweet new blog posts; blog new tweets; udpate facebook with links to flickr photos; and any other such inter-operable nonsense that has become part of our daily routines -- all without thinking about it. HawkEye should become the basis around which your social networking life revolves.

Ofcourse, every good piece of software needs a name, and all you children of the 80's and earlier will have picked up on the theme already. In fact, at Matt's request, the project's admin console will be called "Hotlips." So what we need now is a clever name that matches the theme. Suggestions are desperately needed!

Also, if you are interested in using the code, or helping to advance it, please get in touch... the platform is growing quickly, but any help would be greatly appreciated.

Blosxonomy-J Update

Posted Aug 6, 2009 5:10:04 PM

Just a quick post about Blosxonomy, which believe it or not is still alive and well.

I've recently spent some time refactoring the code a little. Blosxonomy is turning into a little social mash-up engine. At it's core, it provides blogging services exposed as RESTful API's. The layer above that provides the UI, which currently consumes the blog services, and also Twitter's services, which you can see in action on my website.

Matt's also now got his hands on Blosoxnomy-J and is going to be playing around with it. My hope is to spend a good bit of time this weekend, and next, and have an alpha release by the end of the month.

Stay tuned!

Introducing Blosxonomy-J

Posted Mar 5, 2009 1:25:52 AM

Just a quick post to announce that timfanelli.com is now running "Blosxonomy-J" - a pure J2EE rewrite of the almost forgotten Blosxonomy blogging software.

Blosxonomy began back in 2004 as a hobby project so that I could learn Ruby, and I did a very poor job of maintaining it, mostly because Ruby just isn't a part of my day-to-day life and I didn't have the time for it. Based on pyBlosxom as a model, and Folksonomy as a concept, Blosxonomy has been hosting my websites without fail for 5 years now.

Every so often, I'd even get an e-mail from people hosting their own websites on Blosxonomy, which would give me the warm and fuzzies all over and start the ball rolling on updating and applying patches... but sure enough, it would always eventually lose my attention.

Well, most recently, I decided I wanted to begin updating my site and adding functionality to make my life simpler - but in order to do that, it needed to be in J2EE. I am, after all, a professional J2EE application developer. So after about a week and a half of coding after work, I have "Blosxonomy-J" - a poorly named, but very nice piece of software, if I do say so myself.

This post is to serve two purposes... first and foremost, to announce Blosxonomy-J to the world. Details and source will be coming soon, after a brief testing period here... check for announcements at Blosxonomy for more information. Second, to test the "post entry" module in my newly configured production environment. If you're reading this, well, it worked.

What is up With Blosxonomy

Posted Feb 23, 2009 11:16:27 PM

This was originally posted at blosxonomy, but comments are broken on that site. So I'm reposting here to allow for comments

Well I'm sure the few of you who did like Blosxonomy have realized that I hadn't been putting the time into it.

My sincere apologies for that.

Blosxonomy, though, is not dead. Well, not entirely. I have been working diligently in what little free time I have to make major updates and modernizations. Please stay tuned for more! I am migrating my personal site, http://www.timfanelli.com, to the beta code this week, and will release the source here once I'm convinced its fairly stable.

All I will say, for now, is that I do not have time to maintain the Ruby release. I am a JavaEE developer, through and through, and as such moving foward Blosxonomy will reflect that. If anyone would like to maintain the Ruby code base, please let me know, and I'd be happy to continue hosting it here!

Your feedback is welcome - and you can e-mail me at tim <at> timfanelli <dot> com

Blosxonomy Comments

Posted Jan 22, 2007 9:09:34 PM

Well after a months-long hiatus from doing anything even remotely related to Blosxonomy, I finally got around to implementing a simple user-confirmation system for the comments system.

Now, when you post comments to an entry, your email is verified against a list of authorized emails. If your email isn't in my list, a verification email is automatically generated and sent to you, containing a link. All you need to do is click the link to confirm your email, and voiala, your comment appears, and you're free to comment as much as you like.

Hopefully this simple step will significantly reduce the amount of comment spam I recieve on this site.

In other sad news, a simple typo in a bash script resulted in the accidental deletion of all comments in my database. *Oops*. Guess I should have made a backup.

Protecting Content with SSL and mod_rewrite

Posted Dec 5, 2005 9:21:46 PM

Now that I've migrated my blog to a SQL Database, Blosxonomy had lost some of Blosxom like ease of use, so I decided it was necessary to create a web-based interface to post to my blog. I had originally thought I'd just use my entry-conversion utility and continue to write Blosxom style posts, but quickly decided that was absurd. For those of you keeping track of Blosxonomy, this feature will be included in 0.7.3, which is in the final testing stages now.

In any event, I needed to protect the page that posts to my website from being accessed, and use mod_ssl and mod_rewrite to do it.

In particular, I needed to hide /post from general access - to do this, I added a simple rewrite rule to redirect it to my SSL secured site:

RewriteRule ^/post(.*) https://www.timfanelli.com/post$1

Then, in my :443 virtual host, I added two redirect rules to pass anything other than /post back to the main site:

NameVirtualHost *:443

<VirtualHost *:443>
  ServerName www.myhostname.com

  # SSL Engine options go here
  # Directory authentication options go here

  RewriteEngine On
  RewriteRule /post(.*) /post$1 [PT,L]
  RewriteRule ^(.*)$ http://www.timfanelli.com$1 [R=301]
</VirtualHost>

That way, any requests to /post stay on the SSL protected site, any other requests go back to the main, non-SSL site. The SSL Engine options section enables SSL and directs apache to use my self-signed certificate (see how to create one here), and I copied the <Directory> element from my main site into the virtual host, and added a Require valid-user statement using DIGEST authentication.

This provides a secure place for me to make entries to my blog, and prevents general viewing of my site via SSL to minimize the performance overhead (while I love my mac and the G4 processor, SSL is not its strong point).

Blosxonomy and Databases - a Perfect Pair

Posted Dec 2, 2005 6:20:26 PM

Blosxonomy 0.7 will be up momentarily at Blosxonomy.com - I just finished upgrading timfanelli dot com to make use of it's new database support. Blosxonomy now has the option of storing entries in either the traditional Blosxom style files, or in its own database format.

The database offers significant performance improvements over the file system; especially when you're working with folksonomies. There was previously no way for me to generate my tag cloud and related links without parsing parts of entry entry file on my site; and with about 200 entries right now, my response times for a typical page request were very near 2.5 seconds.

With the new database schema in place, and a complete rewrite of the underlying folksonomy engine to make use of it, I'm looking at about 1 second response times, which is a significant improvement. I'd recommend that anyone who decides to switch to Blosxonomy start using it, but the Blosxom style entry support will always be there too :).

To facilitate the migration, Blosxonomy also now has a utility to convert your entries between the two formats, so you can move back and forth as you like. For now, it's also the easiest way to get new entries into the database - just make a Blosxom style post and import it. Similary, updating old entries can be achieved by exporting the entry, editing it as you would any Blosxom post, and then reimporting it -- a process which does not affect your timestamps :).

I have one or two more things to clean up, and then it'll be available for download over at Blosxonomy. Stay tuned!

Homepage Summaries in Blosxonomy

Posted Nov 15, 2005 11:09:22 PM

Whipped out a quick plugin tonight along the lines of optimizing my fold at timfanelli.com. It trims my entries down to 20 words summaries when you're viewing my home page. When you visit my homepage then, you only see the first 2 lines of text for recent entries, and you can follow the title link to view the full story.

When you browse by tags, the ReadMore plugin takes effect showing you potentially more content than you'd see on my home page, but still not the entire story (unless, of course, I neglected to add a <!-- BREAK --> to my post.). The home page summary plugin strips any markup from the summary to prevent bastardizing otherwise valid markup, and also to prevent my other plugins (such as ReadMore) from taking effect.

Home page summaries will be released when I post Blosxonomy 0.6 - but if you're curious to see how it works, here's the method I use to generate an entry's summary:

def generateSummary( body )
	# Remove markup from the body
	body = body.gsub( /<[^>]+>/, '' )

	# Split the body into words (consecutive blocks of non-whitespace)
	words = body.scan( /[^\s]+/ )

	# Take the first 20 words
	words = words.slice( 0, [20, words.length].min )
	
	# Join them back together in a paragraph.
	return "<p>%s...</p>" % words.join( " " )
end

I use this same method now to generate <atom:description> content in my Atom 1.0 renderer plugin.

Gravatar Support enabled

Posted Nov 15, 2005 8:56:14 PM

I saw Gravatar support implemented at Pete's blog and thought it was pretty cool - so I signed up and enabled it in my comment's plugin as well. I'm currently searching for a good default avatar to use, but for now their system's 1x1 px image is working just fine.

Gravatar is a globally recognizable Avatar system - your register an avatar associated with your email address at their site, and then anyone can look it up by taking an MD5 hash of your email address as your gravatar id. This is very simple in Ruby, just do:

require 'md5'

email = 'users_email@domain.com'
gravatar_id = MD5::new( email ).hexdigest
gravatar = '<img src="http://www.gravatar.com/avatar.php?gravatar_id=%s"/>' % gravatar_id

More details about URL parameters can be found at Gravatar's implementation page.

Advanced Tag Searching in Blosxonomy

Posted Nov 14, 2005 9:55:44 PM

I revisted my tagsearch implementation this evening and realized I could make it both much simpler and much more powerful. I now support queries with mixed and/or syntax. "and" has higher precedence - so:

http://www.timfanelli.com/tags/python/folksonomy+ruby/blosxonomy

Will return all posts the are tagged ( "python" and "folksonomy" ) or ( "ruby" and "blosxonomy" )

This is accomplished by taking the request string that matches /^\/tags/(.*)/ and splitting it first on +. I then take each element in the resulting array, split on / and find entries that match all the tags. The results are appended together to build the final response.

This is all accomplished in a few simple lines:

m = Regexp::compile( config['tags_path'] + "/(.*)", Regexp::IGNORECASE ).match( pathinfo )
if m
	ortags = m[1].split('+')		
	ortags.each { |andtags| app['entries'] |= fel.getEntriesWithAllTags( andtags.split('/') ) }
end

Where fel is my File Entry Locator. I envision this changing a little bit when I design the SQL Entry Locator, and supporting queries directly in the locator API.

Again, this feature will be released with Blosxonomy 0.6.

Multi Tag Searches in Blosxonomy

Posted Nov 14, 2005 12:14:22 PM

I enabled multi tag searching today in Blosxonomy. This is a feature that was already in place, but my URL processing didn't account for. Multi tag searching allows you to lookup entries that match any or all tags specified in the query string - for instance:

http://www.timfanelli.com/tags/svn/apple

Will lookup all entries that are tagged "svn" and "apple".

http://www.timfanelli.com/tags/svn+apple

Will lookup all entries that are tagged "svn" or "apple".

This opens up the possibility to do some cool things, such as showing a "related tag cloud" instead of the full tagcloud when you're searching on a tag. Clicking on a tag in the related tag cloud could append the new tag as an and or an or, allowing to your refine your results with a dynamic view of available relationships.

This feature will be relesed with blosxonomy 0.6.

Comments Fixed

Posted Nov 13, 2005 7:46:41 PM

The dangers of running your website on a -current code base - I realized today that I broke the comment plugin at timfanelli.com shortly after posting yesterday that I had implemented it! Whoops! It's patched, working, and tested. I had made a small change to support the trackback plugin which caused the comment system to return prematurely when handling post data from the web.

I checked my access logs, and I did miss a couple comments because of this. Please try again!

Blosxonomy Token Parsing

Posted Nov 13, 2005 1:27:24 PM

I just enabled the Blosxonomy's template parser to replace tokens inside your story content instead of just in your template files. This will be released in version 0.6.

You can do some pretty neat things with this, such as embed your entry's body in the body itself, like so:

$body

Note that it's not recursive, so it's a pretty safe thing to do :). Keep in mind that this means you should always use &#36; instead of $ in your posts, as the template parser will replace it as a token.

Trackback for Blosxonomy

Posted Nov 13, 2005 12:40:58 PM

I ported the pyBlosxom trackback plugin this morning, so I now have trackback support re-enabled! Very exciting.

Now that Blosxonomy has comments and trackback support, I'm going to release version 0.5 at Blosxonomy.com

Blosxonomy Comments

Posted Nov 12, 2005 7:18:32 PM

I implemented a simple comments plugin tonight for Blosxonomy - loosely based on the pyBlosxom comment plugin. pyBlosxom's comment plugin is a little more involved than I was shooting for, as one of Blosxonomy's goals is simplicity. Mine simply checks the post data for a comment, verifies all the information is there, and writes out a comment file with a simple format:

Comment Author
Author's email
Comment body

The plugin requires the current code base, which I'm going to post over at Blosxonomy sometime tomorrow (I still need to do some sanity checking on it). In the meantime though, feel free to start leaving comments!

Powered by Me

Posted Nov 10, 2005 5:35:40 PM

I recently decided it'd be fun to learn the Ruby language, and that a worthy undertaking to do so would be to port pyBlosxom - which I've been using for a little over a year now. The result is something I'm quite proud of, and am still actively working on -- Blosxonomy.

"What a name!", you say? Blosxonomy is a Blosxom-like blogging system implemented with Folksonomy in mind. Basically I've written it from the ground up to incorporate the work I've been doing in pyBlosxom to support tags, tag clouds, and external relations (specifically to Amazon products).

So now I'm proud to say that timfanelli dot com is:

Powered by me.

If you're interested, I have a guide at Blosxonomy.com that covers installing Blosxonomy in parallel with pyBlosxom, so you can try it out with out modifying your existing pyBlosxom site. In fact, timfanelli dot com still has pyBlosxom running, I use it for the Portico gallery plugin, which I haven't gotten to port yet.

Popular Tags

Recent Stories

${recent.title}

About

My name is Tim Fanelli, I am a software engineer in Northern NY. I spend most of my time working, and when I can, I try to post interesting things here.

Cigar Dossiers