Development


17
Jun 11

Ruby API Wrapper for Rainmaker

I’ve created a Ruby wrapper for the Rainmaker API. Rainmaker is sponsoring a developer contest and I built this gem to assist coders interested in entering.

You can find it on RubyGems.org or on Github. My goals when creating this wrapper were to allow developers to use the API in an idiomatic way they were familiar with: accessing properties of an object rather than keys of a collection, using lowercases and underscores instead of camel casing; and to decouple the JSON/XML parsers and HTTP adapters. This was achieved using the excellent Faraday gem.

Feel free to make changes or file issues on Github, and happy coding!


14
Mar 11

Using YSlow to Improve Website Performance

Optimizing web requests and responses is a multi-faceted endeavor. Using YSlow can help you sort through all the available vectors and quickly identify where your website’s optimization opportunities lie.

Continue reading →


6
Feb 10

Posting a Lead to SugarCRM from Drupal via Webform

I was helping a friend solve the issue of capturing a lead to Sugar 5.2 from a form in Drupal 6 and my searching was not turning up a clear answer. This article was a good start but was a bit out of date and missing a couple steps. On the issues page for the SugarCRM Drupal module, I found a couple other useful hints. This guide should work for Drupal 6 and SugarCRM 5.1+.
Continue reading →


21
Dec 09

Indexing Legacy Data with NHibernate.Search

While configuring NHibernate.Search, I ran into an issue while attempting to batch process a million or so legacy records. When I created the index directly from Lucene.Net, things were speedy and working as expected. When I created the index via NHibernate.Search, the indexer was generating way too many index files, numbering into the hundreds of thousands. As a result, the number of file operations was increasing drastically with each iteration of the indexer, such that the FullTextSession.Index call would never finish.

I spent a long time messing about with different merge factors and max file parameters for Lucene.Net, but I was never able to make it work as I expected. The solution ended up being to force an optimize on the index after a certain number of records. Optimizing a Lucene index is analogous to defragging a harddrive; it orders and compacts the thousands of splintered .cfs files into one big file, thereby solving the problem of having to scan a growing number of files before each write.
Continue reading →