MPOV

my point of view (programming stuff mostly)

csv2wufoo.com

Csv2wufoo

csv2wufoo.com is a little side project I wrote using Sinatra, my WufooParty lib, and James Edward Gray's FasterCSV lib.

After the tenth time my wife asked me to write a one-off script to import data into her Wufoo form, I decided to generalize it a bit, slap a Sinatra app around it, and give it a domain name (well, there was a little more to it than that, but ya know...)

It hasn't quite been battle tested yet, but hopefully it will be useful to someone.

We love Wufoo at our church and use it almost daily for all sorts of things. Gathering submissions is only one small trick in its bag of 'em -- Wufoo's reporting makes it a really good platform for visualizing flattened data, among other things. Staff in our church use Wufoo in ways they should probably be using Excel, but Wufoo makes it so much easier.

With csv2wufoo, we should now have a better way of getting data into the system.

FacebookParty

I wanted to understand the Facebook REST API better, and decided I needed a simple wrapper for it. HTTParty to the rescue again!

FacebookParty (rdoc) is along the same lines as my other _party style api wrappers. I can't take much credit for it though, since HTTParty is what makes this stuff so easy. Slap a pretty class on an api endpoint, and the rest is cake. And cake goes good with parties.

Fbparty

Flickr API for Ruby Using HTTParty

Continuing with my HTTParty, I've created a fairly simple Flickr API wrapper for Ruby: flickr_party. This one was a bit more difficult than the Campaign Monitor one, but still fun nonetheless.

Why reinvent the wheel?

  1. It's fun.
  2. I always learn something.
    • Sometimes I learn to not reinvent the wheel.
    • But sometimes I learn so much more.
  3. The libraries out there I spent 10 minutes looking at didn't seem to fully support application authentication. Yes, I'm sure I'm wrong, and they all support it just fine. Or maybe I was just looking at the wrong ones. But in any event, I took this as the opportunity to build something cool (see item #1 above).

CascadingRubies - Ruby DSL for Generating CSS

I've been working on a little experiment lately... a Ruby domain-specific language for generating Cascading Style Sheets called CascadingRubies.It's an internal DSL, meaning it uses plain Ruby syntax, like this:
Media_httpmpovwordpresscomfiles200906rcsscodepng_ksvedhykhsgbbzt
Output:
Media_httpmpovwordpresscomfiles200906rcssoutput1png_jxdjmydgddlfeow
Being just Ruby, of course, you can mix in variables, arithmetic, require external code, hit the database, or whatever.The guys on the Tulsa.rb mailing list have provided some great feedback, and from that I've released the the second gem version (0.2.0). If this looks interesting to you, head over to the GitHub project and check it out. Please let me know what you think.

Install the Ruby Gem "Dnssd" on Ubuntu

1
2
sudo aptitude install libavahi-compat-libdnssd-dev
sudo gem install technomancy-dnssd -s http://gems.github.com
1
2
require 'rubygems'
require 'dnssd'

ShrinkSafe With Prototype 1.6

I didn't find this information anywhere, so here it is for the Google archives...To get Prototype to run after squeezing it through ShrinkSafe, you need to put back every instance of the variable $super. ShrinkSafe replaces variable names with shortened versions, and because of some Prototype voodoo, it breaks on this one name. There are about 8 places you'll find it, and unfortunately, it takes some manual hunting once ShrinkSafe has changed a bunch of names, but there you have it.I suppose someone smarter than I could tweak ShrinkSafe to ignore this variable name, but for me, this works.

Ditch Pagination

I build web apps. Almost every one has a screen or two somewhere that shows a listing, and at the bottom it has pagination links, e.g. next page, page 3, etc. For a recent app I've been working on, the interface is very search-driven, i.e. the user enters some criteria the results are displayed.As an experiment, I left off the pagination links. In this app, there is no "next page." Instead, if the results are not on the first page, then the user must refine their search.If you think about it, how often do you scroll through a Google search results page and then choose to change your search query rather than click on the next page? If you're like me, a lot. Even if you do click the next page, I would bet you don't click much past page 2.For users who see the Web and web apps as a necessary evil, they might be more apt to page through thousands of results rather than think about what they're looking for and change the query. Ditching the pagination links lights up a different part of the brain I would guess (of course I have no idea considering I am only a web geek).What do you think? Am I evil? Can it work?By the way, I haven't had any complaints yet. We'll see...