my current Work Stack

  • iOS Objective-C
  • Ruby
  • Mongo
  • Rails/Sinatra
  • jQuery
  • Capistrano
  • Passenger
  • Apache.Nginx
  • Heroku
  • Nodejs
last edited 02.10.2012

here's all my posts so far

02/10 Using the Facebook SDK in an IOS Static Library
04/11 Managing Development or Sometimes work gets in the way of work
12/21 Git Stash: For when your boss|clients|life priorities change
12/09 Picker Fields in Titanium
11/30 An Update on Raphael JS and Charts
10/08 How to make a Native App Form that doesn't suck with Titanium
09/23 Notification Subscriptions in Gowalla
09/21 Developing an API in Rails
08/26 I was promised Event Driven APIs and hoverboards. Where are my hoverboards?
08/14 A Node.js wrapper for Gowalla
08/09 Phusion Passenger Tweaking: Apache stuck in Sending(W)
06/28 HTML 5 is here and breaking old hacks we should have never done!
06/26 Simple PDFkit example in Rails 3
06/23 Raphael.serialize
06/12 Serializing RaphaelJS
06/11 Rails 3 beta4 destroyed my Tie Fighter
05/21 Rails 3 and Shoulda
05/13 Using yaml to configure default options for Paperclip
05/07 It's OK to not be pretentious
04/23 Snippet #1
04/21 I Need Closure
04/16 The Good and Bad of Github
04/08 Fun with Beards, or at least mine

here's some tweets I made

Serializing RaphaelJS

I'm in love with Raphael JS (a javascript library for SVG graphics). For the things I need to do, this is far more exciting than just using canvas. And Dmitry Baranovskiy, the author of RaphaelJS has it working in IE by using VML.

I wanted to store my drawings and load them later as SVG instead of saving them as bitmaps. I started by monkey patching Raphael to keep an array of the objects I was interested in but it began to get hairy with paths and sets.

After reading an excellent post by Ben Barnett I changed my strategy to pull the nodes out of the Raphael object when I needed them.

The main trick is that (as of 1.4.3) Raphael stores a top and a bottom and, you guess it, a linked list of nodes.

Here's the gist.

blog comments powered by Disqus