<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Martian Intuition - Work</title>
  <id>tag:marsorange.com,2010:mephisto/handyman</id>
  <generator uri="http://mephistoblog.com" version="0.8.0">Mephisto Drax</generator>
  <link href="http://marsorange.com/feed/handyman/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://marsorange.com/handyman" rel="alternate" type="text/html"/>
  <updated>2009-07-29T03:10:38Z</updated>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2009-07-29:9043</id>
    <published>2009-07-29T02:46:00Z</published>
    <updated>2009-07-29T03:10:38Z</updated>
    <category term="Work"/>
    <category term="bugfix"/>
    <category term="rails"/>
    <link href="http://marsorange.com/archives/on-ruby-stack-trace-limits" rel="alternate" type="text/html"/>
    <title>on Ruby stack trace limits</title>
<summary type="html">&lt;p&gt;LoadErrors raised from Ruby on Rails' ActiveSupport may look something like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:426:in `load_missing_constant':
Expected /path/to/the/rails/root/app/models/bacon.rb to define Bacon (LoadError)
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:80:in `const_missing'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:92:in `const_missing'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:437:in `load_missing_constant'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:80:in `const_missing'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:437:in `load_missing_constant'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:80:in `const_missing'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:437:in `load_missing_constant'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:80:in `const_missing'
         ... 26 levels...
        from /usr/local/lib/ruby/1.8/irb/init.rb:250:in `load_modules'
        from /usr/local/lib/ruby/1.8/irb/init.rb:21:in `setup'
        from /usr/local/lib/ruby/1.8/irb.rb:54:in `start'
        from /usr/local/bin/irb:13
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The folded/clipped/omitted middle of the stack trace leads to a very frustrating debugging experience.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;LoadErrors raised from Ruby on Rails' ActiveSupport may look something like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:426:in `load_missing_constant':
Expected /path/to/the/rails/root/app/models/bacon.rb to define Bacon (LoadError)
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:80:in `const_missing'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:92:in `const_missing'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:437:in `load_missing_constant'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:80:in `const_missing'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:437:in `load_missing_constant'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:80:in `const_missing'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:437:in `load_missing_constant'
        from /usr/local/lib/ruby/1.8/gems/activesupport-2.3.3/lib/active_support/dependencies.rb:80:in `const_missing'
         ... 26 levels...
        from /usr/local/lib/ruby/1.8/irb/init.rb:250:in `load_modules'
        from /usr/local/lib/ruby/1.8/irb/init.rb:21:in `setup'
        from /usr/local/lib/ruby/1.8/irb.rb:54:in `start'
        from /usr/local/bin/irb:13
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The folded/clipped/omitted middle of the stack trace leads to a very frustrating debugging experience.&lt;/p&gt;
&lt;p&gt;To expand the backtrace &amp;amp; see the full stack, load the application environment manually in &lt;code&gt;irb&lt;/code&gt; with a liberal trace limit:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;%  cd /path/to/the/rails/root
%  export RAILS_ENV=development
%  irb --back-trace-limit 1000
irb(main):001:0&gt; require 'config/boot.rb'
irb(main):002:0&gt; require 'config/environment.rb'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You will hopefully see the exception raised + the complete stack trace.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2009-01-11:6645</id>
    <published>2009-01-11T01:35:00Z</published>
    <updated>2009-01-11T01:50:20Z</updated>
    <category term="Work"/>
    <category term="bugfix"/>
    <category term="error"/>
    <category term="osx"/>
    <link href="http://marsorange.com/archives/svn-segmentation-fault-on-os-x" rel="alternate" type="text/html"/>
    <title>svn Segmentation Fault</title>
<summary type="html">&lt;p&gt;I recently tried to do a Subversion copy from a remote repository into my local working copy, but I got a segmentation fault, like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% svn cp http://xxxxx.xxxxx.com/xxxxx/xxxxx/xxxxx
Segmentation fault
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It leaves behind an unversioned &lt;code&gt;.tmp&lt;/code&gt; copy of the file being copied, &amp;amp; &lt;code&gt;svn cleanup&lt;/code&gt; must be run to release the lock. (I'm using OS X 10.5.6 Leopard [Darwin]).&lt;/p&gt;

&lt;p&gt;Here's the info for my local working copy...&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;I recently tried to do a Subversion copy from a remote repository into my local working copy, but I got a segmentation fault, like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% svn cp http://xxxxx.xxxxx.com/xxxxx/xxxxx/xxxxx
Segmentation fault
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It leaves behind an unversioned &lt;code&gt;.tmp&lt;/code&gt; copy of the file being copied, &amp;amp; &lt;code&gt;svn cleanup&lt;/code&gt; must be run to release the lock. (I'm using OS X 10.5.6 Leopard [Darwin]).&lt;/p&gt;

&lt;p&gt;Here's the info for my local working copy...&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% svn info
Path: .
URL: http://mars@xxxxx.xxxxx.com/xxxxx/xxxxx
Repository Root: http://mars@xxxxx.xxxxx.com/xxxxx
Repository UUID: xxxxx-xxxxx-xxxxx
Revision: 11327
Node Kind: directory
Schedule: normal
Last Changed Author: mars
Last Changed Rev: 11327
Last Changed Date: 2009-01-06 15:46:57 -0800 (Tue, 06 Jan 2009)
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;The Fix&lt;/h2&gt;

&lt;p&gt;The working copy URL has a username prefix&lt;code&gt;mars@&lt;/code&gt; that the &lt;code&gt;svn cp&lt;/code&gt; URL is missing. So switch the local copy URL to drop the username prefix:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% svn switch --relocate http://mars@xxxxx.xxxxx.com/xxxxx/xxxxx http://xxxxx.xxxxx.com/xxxxx/xxxxx
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now the &lt;code&gt;svn cp ...&lt;/code&gt; will work without segfaulting.&lt;/p&gt;

&lt;h2&gt;Epilog&lt;/h2&gt;

&lt;p&gt;My favorite GUI Subversion client &lt;a href=&quot;http://versionsapp.com/&quot;&gt;Versions.app&lt;/a&gt; checks out local copies with this &quot;username@&quot; URL convention. Fortunately, switching the URL seems to have no effect on Versions' ability to use the working copy.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2008-03-04:1101</id>
    <published>2008-03-04T05:16:00Z</published>
    <updated>2008-05-07T02:55:53Z</updated>
    <category term="Work"/>
    <category term="broadband"/>
    <category term="bugfix"/>
    <category term="ev-do"/>
    <category term="osx"/>
    <link href="http://marsorange.com/archives/work-around-for-os-x-sierra-wireless-crashes" rel="alternate" type="text/html"/>
    <title>work-around for OS X Sierra Wireless crashes</title>
<content type="html">
            &lt;p&gt;If you're trying to use a &lt;a href=&quot;http://www.sierrawireless.com/product/ac597e.aspx&quot;&gt;Sierra AirCard 597E&lt;/a&gt; on OS X 10.5 Leopard via the bundled Sierra Wireless &lt;em&gt;Watcher Lite&lt;/em&gt; software, then you're probably &lt;a href=&quot;/archives/sierra-wireless-579e-leopard&quot;&gt;frustrated like me&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Since my &lt;a href=&quot;/archives/mobile-broadband-review-aircard-597e-sprint&quot;&gt;original review&lt;/a&gt;, Sierra did release a new version 1.1.3 of the beleaguered PowerPC binary (no it's not Universal/Intel-native). While the new version starts less slowly than 1.1.1, it still mysteriously crashes, sometimes taking the connection with it.&lt;/p&gt;

&lt;p&gt;The fix? Simply use Apple's built-in modem dialer, leaving &lt;em&gt;Watcher Lite&lt;/em&gt; dormant unless its device provisioning or activation functions are required.&lt;/p&gt;

&lt;h3&gt;Step 1: In the Network Preferences Panel, check &quot;Show modem status in menu bar&quot;&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2008/3/4/osx_enabled_modem_menu.jpg&quot; height=&quot;540&quot; alt=&quot;&quot; width=&quot;670&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Step 2: Enjoy the nicely integrated, crash-free EV-DO connectivity&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2008/3/4/osx_modem_menu.jpg&quot; height=&quot;200&quot; alt=&quot;&quot; width=&quot;577&quot; /&gt;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-12-20:694</id>
    <published>2007-12-20T21:39:00Z</published>
    <updated>2007-12-20T21:44:40Z</updated>
    <category term="Personal"/>
    <category term="Work"/>
    <category term="rails"/>
    <category term="sanfrancisco"/>
    <category term="scoutlabs"/>
    <link href="http://marsorange.com/archives/to-the-west-to-san-francisco" rel="alternate" type="text/html"/>
    <title>to the West, to San Francisco</title>
<summary type="html">&lt;p&gt;On December 9th, after over twelve-years living in Austin, ten of them working as a pro web developer, I accepted a web dev position in San Francisco with &lt;a href=&quot;http://scoutlabs.com&quot;&gt;Scout Labs&lt;/a&gt;. January 7th I start the job: front-end &lt;a href=&quot;http://rubyonrails.org/&quot;&gt;Ruby on Rails&lt;/a&gt; web development.&lt;/p&gt;

&lt;p&gt;The company's product, the Scout, already received a &lt;a href=&quot;http://www.techcrunch.com/2007/12/11/track-blog-reactions-to-your-brands-with-scout-labs/&quot;&gt;revealing write-up by TechCrunch&lt;/a&gt;. The possibilities of the Scout are just beginning, and I'm ecstatic to become part of the team building this phenomenally useful tool.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;On December 9th, after over twelve-years living in Austin, ten of them working as a pro web developer, I accepted a web dev position in San Francisco with &lt;a href=&quot;http://scoutlabs.com&quot;&gt;Scout Labs&lt;/a&gt;. January 7th I start the job: front-end &lt;a href=&quot;http://rubyonrails.org/&quot;&gt;Ruby on Rails&lt;/a&gt; web development.&lt;/p&gt;

&lt;p&gt;The company's product, the Scout, already received a &lt;a href=&quot;http://www.techcrunch.com/2007/12/11/track-blog-reactions-to-your-brands-with-scout-labs/&quot;&gt;revealing write-up by TechCrunch&lt;/a&gt;. The possibilities of the Scout are just beginning, and I'm ecstatic to become part of the team building this phenomenally useful tool.&lt;/p&gt;
&lt;p&gt;Over the past three days, I visited the city to hunt for an apartment, when ideally I would be wrapping up my life in Austin. With little time to ponder the possibilities, much less explore and find vacancies in &lt;a href=&quot;http://notfortourists.com/sf-pdfs.aspx?city=SF&quot;&gt;the neighborhoods of SF&lt;/a&gt;, I homed-in on the SOMA/South Beach area. SOMA gives me walking proximity to the new office, the Embarcadero, Whole Foods, &amp;amp; many public transit possibilities (Caltrain &amp;amp; Muni blocks away; BART Powell Station a 15-minute walk away). My beloved bicycle, already my primary transit in Austin, now becomes my only personal vehicle.&lt;/p&gt;

&lt;p&gt;Thanks to a reference from a friend, I found an ideal one-bedroom &lt;a href=&quot;http://www.flickr.com/photos/marsi/2121544997/&quot;&gt;with a view&lt;/a&gt; &amp;amp; quickly decided to take it.&lt;/p&gt;

&lt;p&gt;Now here I am, flying back to Texas for two short weeks of project-wrapping, &lt;a href=&quot;http://austin.craigslist.org/car/511490623.html&quot;&gt;car-selling&lt;/a&gt;, move-out-prepping, traveling to Dallas for family Christmas, &amp;amp; saying &quot;see ya later&quot; to many loved friends &amp;amp; beautiful connections.&lt;/p&gt;

&lt;p&gt;California, here I come!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-11-05:352</id>
    <published>2007-11-05T22:35:00Z</published>
    <updated>2007-11-06T22:19:19Z</updated>
    <category term="Work"/>
    <category term="austin"/>
    <category term="austin"/>
    <category term="broadband"/>
    <category term="ev-do"/>
    <category term="review"/>
    <link href="http://marsorange.com/archives/mobile-broadband-review-aircard-597e-sprint" rel="alternate" type="text/html"/>
    <title>a Mobile Broadband Review: AirCard 597E + Sprint</title>
<summary type="html">&lt;p&gt;&lt;img class=&quot;content_left&quot; src=&quot;/assets/2007/10/11/sierra_wireless_watcher_os_x_in_use.png&quot; height=&quot;164&quot; alt=&quot;Sierra Wireless  in OS X&quot; width=&quot;254&quot; /&gt;&lt;/p&gt;

&lt;p&gt;How does Sprint's Mobile Broadband service perform in Austin? Is it worth a twenty-four month commitment totaling over $1500?&lt;/p&gt;

&lt;p&gt;In an effort to answer this question, here's a summary of my experiences &amp;amp; observations during this first month of going mobile.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;&lt;img class=&quot;content_left&quot; src=&quot;/assets/2007/10/11/sierra_wireless_watcher_os_x_in_use.png&quot; height=&quot;164&quot; alt=&quot;Sierra Wireless  in OS X&quot; width=&quot;254&quot; /&gt;&lt;/p&gt;

&lt;p&gt;How does Sprint's Mobile Broadband service perform in Austin? Is it worth a twenty-four month commitment totaling over $1500?&lt;/p&gt;

&lt;p&gt;In an effort to answer this question, here's a summary of my experiences &amp;amp; observations during this first month of going mobile.&lt;/p&gt;
&lt;h3&gt;Bandwidth &amp;amp; Latency&lt;/h3&gt;

&lt;p&gt;During an ssh terminal session—where characters typed are sent across the network and echoed back for display—the cellular radio link makes the network feel springy. When transmission delays occur, responses eventually snap back with a quickness.&lt;/p&gt;

&lt;h4&gt;Here's an example of a typical session with a 4-bar signal:&lt;/h4&gt;

&lt;p&gt;For 125MB of Amazon's MP3 downloads, a single-connection download started out strong, bursting up to 153KBps:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2007/10/11/sprint_mobile_observed_bandwidth_1.png&quot; height=&quot;117&quot; alt=&quot;Sierra Wireless  in OS X&quot; width=&quot;330&quot; /&gt;&lt;/p&gt;

&lt;p&gt;and then wobbled around 90KBps, continuing more slowly than those initial bursts.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2007/10/11/sprint_mobile_observed_bandwidth_2.png&quot; height=&quot;119&quot; alt=&quot;Sierra Wireless  in OS X&quot; width=&quot;332&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Concurrent connections saturating the bandwidth (e.g. the iTunes Music Store default three-connection downloads) tend to maintain ~200KBps combined. Even during download-heavy traffic, the connection remained responsive for other network traffic.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2007/10/20/sprint_mobile_observed_bandwidth_3.png&quot; height=&quot;117&quot; alt=&quot;Sierra Wireless  in OS X&quot; width=&quot;338&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Stuck in a spot with weak signal, 2-bars or less? As expected, connection latency rises &amp;amp; throughput drops; still usable but hardly &quot;broadband.&quot; Concurrent connections can falter at 1-bar. I observed ssh/scp sessions stalling indefinitely with such little signal.&lt;/p&gt;

&lt;h3&gt;Stability&lt;/h3&gt;

&lt;p&gt;In some locations with either weak signal or from within a building, the PPP connection will be &quot;ended by the remote host&quot;, within the first 20-seconds. That's a symptom of my signal being to noisy to reach the base-station. Landline/analog modems drop calls with this error when the line signal is to noisy.&lt;/p&gt;

&lt;p&gt;Disconnecting &amp;amp; reconnecting can yield a dramatic improvement in connection quality. Once connected, sessions that start out as only 1xRTT (that's one 144Kbps CDMA2000 channel) may rev up to EV-DO.&lt;/p&gt;

&lt;p&gt;Once established, the connection is reliable &amp;amp; stable. Not once was my connection dropped during up to 3-hour sessions. YMMV when in a moving vehicle.&lt;/p&gt;

&lt;h3&gt;Power Consumption&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.sierrawireless.com/product/AC597E_Specifications.aspx&quot;&gt;official specs&lt;/a&gt; state:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voltage: 3.3V&lt;/li&gt;
&lt;li&gt;Typical Current - 370mA (1x), 470 mA (EV-DO)&lt;/li&gt;
&lt;li&gt;Maximum Current - 1000 mA (EV-DO)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means typical EV-DO usage will drain between 1.5 &amp;amp; 3.3 Watts. For comparison, the power-hungry &lt;a href=&quot;http://www.fujitsu.com/us/services/computing/storage/hdd/mobile/mhw2160bh-sata.html&quot;&gt;hard drive&lt;/a&gt; in the MacBook Pro consumes between 0.6 &amp;amp; 1.9 Watts.&lt;/p&gt;

&lt;p&gt;This extra battery drain is quite noticeable, cutting an hour from my normal 3:15 of work time on a full charge. For comparison, the Mac's built-in AirPort (802.11 a|b|g|n wireless) makes no noticeable difference on battery-powered work time.&lt;/p&gt;

&lt;h3&gt;Network Address&lt;/h3&gt;

&lt;p&gt;The client IP address is dynamically allocated. It changes on every connection.&lt;/p&gt;

&lt;h3&gt;The Verdict&lt;/h3&gt;

&lt;p&gt;I'm sticking with the service. The advantages of a private, mobile internet connection outweigh the admittedly expected downsides. The uncertainty: can Sprint hang in there? It's &lt;a href=&quot;http://blog.wired.com/business/2007/11/sprint-customer.html&quot;&gt;tough times in pin-drop land&lt;/a&gt;. Maybe I'll get an early break from my two-year contract!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-10-19:364</id>
    <published>2007-10-19T23:00:00Z</published>
    <updated>2007-10-19T23:13:02Z</updated>
    <category term="Work"/>
    <category term="adobe"/>
    <category term="ui"/>
    <link href="http://marsorange.com/archives/an-obnoxiously-inconsistent-adobe-short-cut" rel="alternate" type="text/html"/>
    <title>an Obnoxiously Inconsistent Adobe Short-cut</title>
<content type="html">
            &lt;p&gt;Cycle through open documents using &lt;strong&gt;Command + `&lt;/strong&gt; in Illustrator &amp;amp; InDesign; that's the OS&amp;nbsp;X system-standard short-cut.&lt;/p&gt;

&lt;p&gt;But that window switcher function is &lt;strong&gt;Ctrl + Tab&lt;/strong&gt; in Photoshop.&lt;/p&gt;

&lt;p&gt;Why Adobe, why?&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-10-05:350</id>
    <published>2007-10-05T19:44:00Z</published>
    <updated>2007-11-06T00:55:29Z</updated>
    <category term="Work"/>
    <category term="austin"/>
    <category term="broadband"/>
    <category term="ev-do"/>
    <link href="http://marsorange.com/archives/on-the-unbinding-of-work-locality" rel="alternate" type="text/html"/>
    <title>on The Unbinding of Work &amp; Locality</title>
<summary type="html">&lt;p&gt;&lt;img class=&quot;feature_photo content_right&quot; src=&quot;http://marsorange.com/assets/2007/10/5/behold_the_sprint_ev-do_expresscard.jpg&quot; height=&quot;240&quot; alt=&quot;Behold the EV-DO ExpressCard&quot; width=&quot;320&quot; /&gt;After years of working out of an office &amp;amp; local cafes with WiFi, I've been jonesing for the ability to do my web work &lt;strong&gt;anywhere&lt;/strong&gt;; especially under a shady tree in the park. I love loving my work. So, after comparing the only cellular broadband options available here in Austin TX (just two: Verizon &amp;amp; Sprint), I just picked up a cellular broadband internet card &amp;amp; plan with Sprint.&lt;/p&gt;

&lt;p&gt;Here's my initial speed report using &lt;a href=&quot;http://www.speakeasy.net/speedtest/&quot;&gt;SpeakEasy's Speed Test&lt;/a&gt;...&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;&lt;img class=&quot;feature_photo content_right&quot; src=&quot;http://marsorange.com/assets/2007/10/5/behold_the_sprint_ev-do_expresscard.jpg&quot; height=&quot;240&quot; alt=&quot;Behold the EV-DO ExpressCard&quot; width=&quot;320&quot; /&gt;After years of working out of an office &amp;amp; local cafes with WiFi, I've been jonesing for the ability to do my web work &lt;strong&gt;anywhere&lt;/strong&gt;; especially under a shady tree in the park. I love loving my work. So, after comparing the only cellular broadband options available here in Austin TX (just two: Verizon &amp;amp; Sprint), I just picked up a cellular broadband internet card &amp;amp; plan with Sprint.&lt;/p&gt;

&lt;p&gt;Here's my initial speed report using &lt;a href=&quot;http://www.speakeasy.net/speedtest/&quot;&gt;SpeakEasy's Speed Test&lt;/a&gt;...&lt;/p&gt;
&lt;h3&gt;Sprint Mobile Broadband (with Sierra Wireless AirCard 597E; &lt;a href=&quot;http://en.wikipedia.org/wiki/Evolution-Data_Optimized&quot;&gt;EV-DO&lt;/a&gt; Rev. A capable)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Download Speed: 2289 kbps (286.1 KB/sec transfer rate)&lt;/li&gt;
&lt;li&gt;Upload Speed: 486 kbps (60.8 KB/sec transfer rate)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compare to my connection at home:&lt;/p&gt;

&lt;h3&gt;Time Warner Road Runner (urban cable modem)&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Download Speed: 6817 kbps (852.1 KB/sec transfer rate)&lt;/li&gt;
&lt;li&gt;Upload Speed: 374 kbps (46.8 KB/sec transfer rate)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the next 29-days before the trial period ends, I'll evaluate if the service merits the $60/month + two-year term that Sprint requires. I'm particularly curious about how my routine &lt;a href=&quot;http://www2.linuxjournal.com/article/4412&quot;&gt;ssh&lt;/a&gt; sessions will flow on the cellular WAN.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-09-27:312</id>
    <published>2007-09-27T19:57:00Z</published>
    <updated>2007-10-06T15:49:15Z</updated>
    <category term="Work"/>
    <category term="drm"/>
    <category term="lastfm"/>
    <category term="music"/>
    <category term="web20"/>
    <link href="http://marsorange.com/archives/itunes-missed-the-boat" rel="alternate" type="text/html"/>
    <title>Streaming Radio &amp; Pay-per-Download: a Professional Mashup</title>
<summary type="html">&lt;p&gt;What do you get when you combine a &lt;a href=&quot;http://www.last.fm/user/mars_of_earth&quot;&gt;Last.fm profile&lt;/a&gt; and &lt;a href=&quot;http://amazonmp3.com/&quot;&gt;Amazon's MP3 Downloads&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;You get personally tuned, streaming radio (my favorite is &quot;My Neighborhood&quot; in &lt;a href=&quot;http://www.last.fm/help/faq/?faqsearch=Discovery+Mode&quot;&gt;Discovery Mode&lt;/a&gt;) with inexpensive, non-&lt;a href=&quot;http://en.wikipedia.org/wiki/Digital_rights_management&quot;&gt;DRM&lt;/a&gt;, high-quality (256Kbps VBR) MP3 downloads just a few clicks away.&lt;/p&gt;

&lt;p&gt;Wow. I just suddenly realized how much the iTunes Music Store missed the Web 2.0 boat. Good luck Apple; I'll still buy your computers &amp;amp; OS.&lt;/p&gt;

&lt;p&gt;Here's a quick demo of how the Last.fm-Amazon combo works...&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;What do you get when you combine a &lt;a href=&quot;http://www.last.fm/user/mars_of_earth&quot;&gt;Last.fm profile&lt;/a&gt; and &lt;a href=&quot;http://amazonmp3.com/&quot;&gt;Amazon's MP3 Downloads&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;You get personally tuned, streaming radio (my favorite is &quot;My Neighborhood&quot; in &lt;a href=&quot;http://www.last.fm/help/faq/?faqsearch=Discovery+Mode&quot;&gt;Discovery Mode&lt;/a&gt;) with inexpensive, non-&lt;a href=&quot;http://en.wikipedia.org/wiki/Digital_rights_management&quot;&gt;DRM&lt;/a&gt;, high-quality (256Kbps VBR) MP3 downloads just a few clicks away.&lt;/p&gt;

&lt;p&gt;Wow. I just suddenly realized how much the iTunes Music Store missed the Web 2.0 boat. Good luck Apple; I'll still buy your computers &amp;amp; OS.&lt;/p&gt;

&lt;p&gt;Here's a quick demo of how the Last.fm-Amazon combo works...&lt;/p&gt;
&lt;h3&gt;Listening to a Last.fm stream:&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2007/9/27/lastfm_amazon_music_downloads_1.jpg&quot; alt=&quot;click &amp;amp;quot;Buy from Amazon&amp;amp;quot;&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Jump directly to the Amazon album page:&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2007/9/27/lastfm_amazon_music_downloads_2.jpg&quot; alt=&quot;click &amp;amp;quot;Buy the MP3 Album...&amp;amp;quot;&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Preview and buy any tracks or the whole album:&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2007/9/27/lastfm_amazon_music_downloads_3.jpg&quot; alt=&quot;buy the tracks you want&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;The barrier to entry?&lt;/h3&gt;

&lt;p&gt;You must create a Last.fm profile. That's a user account + installation of Last.fm's &lt;a href=&quot;http://www.audioscrobbler.net/&quot;&gt;audio scrobbler&lt;/a&gt; app, which acts as an iTunes bridge &amp;amp; streaming radio player.&lt;/p&gt;

&lt;p&gt;Also, an Amazon customer account with credit card on-file is required to make MP3 purchases.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-09-21:269</id>
    <published>2007-09-21T04:39:00Z</published>
    <updated>2007-09-21T04:45:20Z</updated>
    <category term="Work"/>
    <category term="error"/>
    <category term="http"/>
    <category term="ie6"/>
    <category term="mod_security"/>
    <link href="http://marsorange.com/archives/the-many-colored-http-error-406" rel="alternate" type="text/html"/>
    <title>The Many-Colored HTTP Error 406</title>
<content type="html">
            &lt;p&gt;Response code &quot;406&quot; makes it look like a web server error, but if you're troubled in Windows Internet Explorer 6, it may very well be a client-side error.&lt;/p&gt;

&lt;h3&gt;Client-side Causes&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;loading a behavior in CSS, like &lt;code&gt;img.transparent { behavior: url(iepngfix.htc); }&lt;/code&gt;, where the URL actually returns an error (self-diagnosed in Windows Internet Explorer 6)&lt;/li&gt;
&lt;li&gt;broken &lt;code&gt;meta&lt;/code&gt; tags (&lt;a href=&quot;http://cutephp.com/forum/lofiversion/index.php/t12989.html&quot;&gt;source&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Server-side Causes&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Accept-headers that do not declare any types that the server can provide (&lt;a href=&quot;http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7&quot;&gt;source&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;over-zealous mod_security (&lt;a href=&quot;http://www.wimpyplayer.com/support/faqs/docs/php_406_not_acceptable.html&quot;&gt;source&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-08-04:123</id>
    <published>2007-08-04T03:21:00Z</published>
    <updated>2009-07-29T03:01:09Z</updated>
    <category term="Work"/>
    <category term="api"/>
    <category term="ruby"/>
    <category term="schema"/>
    <category term="soap"/>
    <category term="wsdl"/>
    <category term="xml"/>
    <category term="zimbra"/>
    <link href="http://marsorange.com/archives/wsdl-for-zimbra-the-beginning" rel="alternate" type="text/html"/>
    <title>WSDL for Zimbra (The Beginning)</title>
<summary type="html">&lt;p&gt;Here's a &lt;a href=&quot;http://www.w3.org/TR/wsdl&quot;&gt;WSDL&lt;/a&gt; file for &lt;a href=&quot;http://www.zimbra.com/&quot;&gt;Zimbra&lt;/a&gt;'s Admin SOAP API.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Here's a &lt;a href=&quot;http://www.w3.org/TR/wsdl&quot;&gt;WSDL&lt;/a&gt; file for &lt;a href=&quot;http://www.zimbra.com/&quot;&gt;Zimbra&lt;/a&gt;'s Admin SOAP API.&lt;/p&gt;
&lt;h2&gt;Caveats&lt;/h2&gt;

&lt;p&gt;The following WSDL for Zimbra does not fulfill WSDL's true purpose: to make Zimbra's SOAP services immediately consumable. Ideally, WSDL enables mapping remote services to native objects without writing &lt;a href=&quot;http://en.wikipedia.org/wiki/Adapter_pattern&quot;&gt;adapter code&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Zimbra's SOAP API does not elegantly fit WSDL semantics&lt;/h3&gt;

&lt;p&gt;Every message body is wrapped in an &lt;code&gt;operationNameRequest&lt;/code&gt; or &lt;code&gt;operationNameResponse&lt;/code&gt; element. Yet the WSDL specs say,&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.w3.org/TR/wsdl#_message&quot;&gt;Multiple part elements are used if the message has multiple logical units&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Zimbra goes the route of monolithic messages. Though not functionally critical, this extra level in the SOAP message causes mapping to unique &lt;a href=&quot;http://www.w3.org/TR/xmlschema-1/#Complex_Type_Definitions&quot;&gt;complexType&lt;/a&gt; &lt;code&gt;*Request&lt;/code&gt; &amp;amp; &lt;code&gt;*Response&lt;/code&gt; objects in the client, instead of directly to part-level &lt;a href=&quot;http://www.w3.org/TR/xmlschema-1/#Simple_Type_Definitions&quot;&gt;simpleType&lt;/a&gt; &amp;amp; complexType elements. Direct mapping to usable message parts enables very slim adapter code (if any) in the client. Also, the Zimbra's method names follow the pattern &lt;code&gt;operationNameRequest&lt;/code&gt; instead of the normalized, simple &lt;code&gt;operationName&lt;/code&gt;, adding further complexity to the WSDL.&lt;/p&gt;

&lt;h3&gt;Zimbra's web API is not &lt;a href=&quot;http://en.wikipedia.org/wiki/Representational_State_Transfer&quot;&gt;RESTful&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;sessionId&lt;/code&gt; must be propagated through each request &amp;amp; updated if changed in a response. Also, an initial &lt;code&gt;AuthRequest&lt;/code&gt; gets an &lt;code&gt;AuthToken&lt;/code&gt;, and subsequent requests' headers must contain that token.&lt;/p&gt;

&lt;h2&gt;Just give me the file&lt;/h2&gt;

&lt;p&gt;Download: &lt;a href=&quot;/files/zimbra_admin-example.wsdl&quot;&gt;zimbra_admin-example.wsdl&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;This is a work-in-progress, folks.&lt;/strong&gt; Not a working solution.&lt;/p&gt;

&lt;p&gt;Operations covered thus far:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AuthRequest&lt;/li&gt;
&lt;li&gt;DelegateAuthRequest&lt;/li&gt;
&lt;li&gt;CreateAccountRequest&lt;/li&gt;
&lt;li&gt;GetAccountRequest&lt;/li&gt;
&lt;li&gt;GetAllAdminAccountsRequest&lt;/li&gt;
&lt;li&gt;ModifyAccountRequest&lt;/li&gt;
&lt;li&gt;RenameAccountRequest&lt;/li&gt;
&lt;li&gt;DeleteAccountRequest&lt;/li&gt;
&lt;li&gt;SetPasswordRequest&lt;/li&gt;
&lt;li&gt;AddAccountAliasRequest&lt;/li&gt;
&lt;li&gt;RemoveAccountAliasRequest&lt;/li&gt;
&lt;li&gt;GetAllAccountsRequest&lt;/li&gt;
&lt;li&gt;CreateDomainRequest (added: 22 August 2007)&lt;/li&gt;
&lt;li&gt;GetDomainRequest&lt;/li&gt;
&lt;li&gt;GetAllDomainsRequest&lt;/li&gt;
&lt;li&gt;ModifyDomainRequest&lt;/li&gt;
&lt;li&gt;DeleteDomainRequest&lt;/li&gt;
&lt;li&gt;CreateCosRequest&lt;/li&gt;
&lt;li&gt;GetAllCosRequest&lt;/li&gt;
&lt;li&gt;ModifyCosRequest&lt;/li&gt;
&lt;li&gt;DeleteCosRequest&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Tested with soap4r 1.5.7&lt;/h3&gt;

&lt;p&gt;I developed this file to work with &lt;a href=&quot;http://dev.ctor.org/soap4r&quot;&gt;soap4r&lt;/a&gt;'s &lt;code&gt;wsdl2ruby.rb&lt;/code&gt; script, I cannot vouch for it's performance with other WSDL consumers.&lt;/p&gt;

&lt;p&gt;The shell command I used is:&lt;/p&gt;

&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td title=&quot;click to toggle&quot; class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre&gt;ruby -d \&lt;tt&gt;
&lt;/tt&gt;  /usr/local/lib/ruby/gems/1.8/gems/soap4r-1.5.7/bin/wsdl2ruby.rb \&lt;tt&gt;
&lt;/tt&gt;  --wsdl zimbra_admin-example.wsdl --type client \&lt;tt&gt;
&lt;/tt&gt;  --module_path ZimbraAdmin --force&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; If using soap4r, make sure to actually run its &lt;code&gt;install.rb&lt;/code&gt; in addition to &lt;code&gt;gem install&lt;/code&gt;. Otherwise, Ruby's older built-in wsdl lib will override soap4r.&lt;/p&gt;

&lt;h3&gt;To Do&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;usage with a Ruby on Rails app (in progress), eventually releasing a Rails plugin&lt;/li&gt;
&lt;li&gt;ponder developing a new, RESTful web services interface for Zimbra, on top of it's shell utilities, like &lt;code&gt;zmprov&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:marsorange.com,2007-07-29:107</id>
    <published>2007-07-29T22:06:00Z</published>
    <updated>2007-11-06T00:41:36Z</updated>
    <category term="Work"/>
    <category term="bugfix"/>
    <category term="mephisto"/>
    <category term="typo"/>
    <link href="http://marsorange.com/archives/conversion-from-typo-to-mephisto" rel="alternate" type="text/html"/>
    <title>Conversion from Typo to Mephisto</title>
<summary type="html">&lt;p&gt;Just switched this site/blog from &lt;a href=&quot;http://typosphere.org&quot;&gt;Typo&lt;/a&gt; to &lt;a href=&quot;http://mephistoblog.com&quot;&gt;Mephisto&lt;/a&gt;, a process that's taken months to accomplish in spare moments of personal web productivity.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://mephisto.stikipad.com/help/show/Converting+Typo+to+Mephisto&quot;&gt;conversion process&lt;/a&gt; didn't work so well at first. It took digging in to the Mephisto Converter code to make it work going from Typo 4.1.1 to Mephisto trunk.&lt;/p&gt;

&lt;p&gt;Here's the code that made it WFM.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Just switched this site/blog from &lt;a href=&quot;http://typosphere.org&quot;&gt;Typo&lt;/a&gt; to &lt;a href=&quot;http://mephistoblog.com&quot;&gt;Mephisto&lt;/a&gt;, a process that's taken months to accomplish in spare moments of personal web productivity.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://mephisto.stikipad.com/help/show/Converting+Typo+to+Mephisto&quot;&gt;conversion process&lt;/a&gt; didn't work so well at first. It took digging in to the Mephisto Converter code to make it work going from Typo 4.1.1 to Mephisto trunk.&lt;/p&gt;

&lt;p&gt;Here's the code that made it WFM.&lt;/p&gt;
&lt;p&gt;First patch, to avoid stupid migration failure:&lt;/p&gt;

&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td title=&quot;click to toggle&quot; class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre&gt;Index: db/migrate/060_move_theme_path.rb&lt;tt&gt;
&lt;/tt&gt;===================================================================&lt;tt&gt;
&lt;/tt&gt;--- db/migrate/060_move_theme_path.rb   (revision 2936)&lt;tt&gt;
&lt;/tt&gt;+++ db/migrate/060_move_theme_path.rb   (working copy)&lt;tt&gt;
&lt;/tt&gt;@@ -23,5 +23,6 @@&lt;tt&gt;
&lt;/tt&gt;       end&lt;tt&gt;
&lt;/tt&gt;       FileUtils.rmdir new_path&lt;tt&gt;
&lt;/tt&gt;     end&lt;tt&gt;
&lt;/tt&gt;+  rescue&lt;tt&gt;
&lt;/tt&gt;   end&lt;tt&gt;
&lt;/tt&gt; end&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Then, copy Typo's &lt;code&gt;categorizations&lt;/code&gt; table to a new table named &lt;code&gt;articles_categories&lt;/code&gt;. &lt;del&gt;(See what happens when you ignore Rails' database conventions?!)&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;Next, create the file &lt;code&gt;vendor/plugins/mephisto_converters/lib/converters/typo/feedback.rb&lt;/code&gt;:&lt;/p&gt;

&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td title=&quot;click to toggle&quot; class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;r&quot;&gt;module&lt;/span&gt; &lt;span class=&quot;cl&quot;&gt;Typo&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class=&quot;r&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;cl&quot;&gt;Feedback&lt;/span&gt; &amp;lt; &lt;span class=&quot;co&quot;&gt;ActiveRecord&lt;/span&gt;::&lt;span class=&quot;co&quot;&gt;Base&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    establish_connection configurations[&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;typo&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;    set_table_name &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;feedback&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    belongs_to &lt;span class=&quot;sy&quot;&gt;:text_filter&lt;/span&gt;, &lt;span class=&quot;sy&quot;&gt;:class_name&lt;/span&gt; =&amp;gt; &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Typo::TextFilter&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    &lt;span class=&quot;r&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;fu&quot;&gt;filter&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;      &lt;span class=&quot;pc&quot;&gt;self&lt;/span&gt;.text_filter ? &lt;span class=&quot;pc&quot;&gt;self&lt;/span&gt;.text_filter.name : &lt;span class=&quot;pc&quot;&gt;nil&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Two patches to switch over to use the new &lt;code&gt;Feedback&lt;/code&gt; class:&lt;/p&gt;

&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td title=&quot;click to toggle&quot; class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre&gt;Index: vendor/plugins/mephisto_converters/lib/converters/typo/comment.rb&lt;tt&gt;
&lt;/tt&gt;===================================================================&lt;tt&gt;
&lt;/tt&gt;--- vendor/plugins/mephisto_converters/lib/converters/typo/comment.rb   (revision 2936)&lt;tt&gt;
&lt;/tt&gt;+++ vendor/plugins/mephisto_converters/lib/converters/typo/comment.rb   (working copy)&lt;tt&gt;
&lt;/tt&gt;@@ -1,5 +1,5 @@&lt;tt&gt;
&lt;/tt&gt; module Typo&lt;tt&gt;
&lt;/tt&gt;-  class Comment &amp;lt; Content&lt;tt&gt;
&lt;/tt&gt;+  class Comment &amp;lt; Feedback&lt;tt&gt;
&lt;/tt&gt; #    belongs_to :article, :foreign_key =&amp;gt; 'parentid', :class_name =&amp;gt; 'Typo::Comment'&lt;tt&gt;
&lt;/tt&gt;   end&lt;tt&gt;
&lt;/tt&gt; end&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td title=&quot;click to toggle&quot; class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;16&lt;tt&gt;
&lt;/tt&gt;17&lt;tt&gt;
&lt;/tt&gt;18&lt;tt&gt;
&lt;/tt&gt;19&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre&gt;Index: vendor/plugins/mephisto_converters/lib/converters/typo.rb&lt;tt&gt;
&lt;/tt&gt;===================================================================&lt;tt&gt;
&lt;/tt&gt;--- vendor/plugins/mephisto_converters/lib/converters/typo.rb   (revision 2936)&lt;tt&gt;
&lt;/tt&gt;+++ vendor/plugins/mephisto_converters/lib/converters/typo.rb   (working copy)&lt;tt&gt;
&lt;/tt&gt;@@ -1,6 +1,7 @@&lt;tt&gt;
&lt;/tt&gt; require 'converters/typo/content'&lt;tt&gt;
&lt;/tt&gt; require 'converters/typo/page'&lt;tt&gt;
&lt;/tt&gt; require 'converters/typo/article'&lt;tt&gt;
&lt;/tt&gt;+require 'converters/typo/feedback'&lt;tt&gt;
&lt;/tt&gt; require 'converters/typo/comment'&lt;tt&gt;
&lt;/tt&gt; require 'converters/typo/category'&lt;tt&gt;
&lt;/tt&gt; require 'converters/typo/user'&lt;tt&gt;
&lt;/tt&gt;@@ -107,4 +108,4 @@&lt;tt&gt;
&lt;/tt&gt;     sec&lt;tt&gt;
&lt;/tt&gt;   end&lt;tt&gt;
&lt;/tt&gt; &lt;tt&gt;
&lt;/tt&gt;-end&lt;tt&gt;
&lt;/tt&gt;\ No newline at end of file&lt;tt&gt;
&lt;/tt&gt;+end&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Finally, start her up:&lt;/p&gt;

&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td title=&quot;click to toggle&quot; class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre&gt;%  rake db:bootstrap RAILS_ENV=production&lt;tt&gt;
&lt;/tt&gt;%  script/runner --trace &amp;quot;Mephisto.convert_from :typo&amp;quot; -e production&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-07-05:82</id>
    <published>2007-07-05T23:50:00Z</published>
    <updated>2007-11-06T00:41:09Z</updated>
    <category term="Work"/>
    <category term="bugfix"/>
    <category term="error"/>
    <category term="rails"/>
    <category term="rmagick"/>
    <link href="http://marsorange.com/archives/rmagick-install-woes-on-os-x" rel="alternate" type="text/html"/>
    <title>RMagick install woes on OS X</title>
<content type="html">
            &lt;p&gt;Well this is quickly becoming Mars' notes from building software on OS X blog!&lt;/p&gt;

&lt;p&gt;Anyway, after following the &lt;a href=&quot;http://rmagick.rubyforge.org/install-osx.html&quot;&gt;official RMagick install&lt;/a&gt;, &lt;code&gt;gem install rmagick&lt;/code&gt; fails with an error like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/usr/local/lib/ruby/gems/1.8/gems/rmagick-1.15.7/./lib/rvg/misc.rb:321:
in `get_type_metrics': unable to read font `/Library/Fonts/Verdana' (Magick::ImageMagickError)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It seems that the examples fail because of a spurious font choice in the documented examples.&lt;/p&gt;

&lt;p&gt;All that is needed to build the RMagick gem successfully at this point is:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo gem install rmagick -- --disable-htmldoc&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And voila, the examples aren't built, thereby avoiding the problem.&lt;/p&gt;

&lt;p&gt;RMagick!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-06-05:28</id>
    <published>2007-06-05T20:38:00Z</published>
    <updated>2007-11-06T22:14:45Z</updated>
    <category term="Work"/>
    <category term="bugfix"/>
    <category term="error"/>
    <category term="fastcgi"/>
    <category term="osx"/>
    <category term="rails"/>
    <category term="ruby"/>
    <link href="http://marsorange.com/archives/stack-to-deep-ruby-error-on-os-x" rel="alternate" type="text/html"/>
    <title>"Stack to Deep" Ruby Error on OS X</title>
<content type="html">
            &lt;p&gt;Say for instance you just applied a software update to your Mac OS X Server and rebooted.&lt;/p&gt;

&lt;p&gt;Suddenly a Rails app that was running fine spits out an error when ActionPack does a redirect_to. In the Rails production.log:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;SystemStackError (stack level too deep)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Well my friend, before you set off to debugging the Ruby install on your OS X machine, try clearing the Rails sessions. At the command line:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;rake tmp:sessions:clear RAILS_ENV=production&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Everyone must login again, but alas the problem is solved! [for me]&lt;/p&gt;

&lt;p&gt;Is it because we're using Apple's built-in Apache 1.3 web server with source-compiled FastCGI support? Hmmm.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-05-30:81</id>
    <published>2007-05-30T14:17:00Z</published>
    <updated>2007-07-29T22:32:26Z</updated>
    <category term="Work"/>
    <category term="png"/>
    <category term="webdesign"/>
    <link href="http://marsorange.com/archives/serious-web-design-with-png" rel="alternate" type="text/html"/>
    <title>Serious Web Design with PNG</title>
<content type="html">
            &lt;p&gt;Want to try implementing a design with &lt;a href=&quot;http://www.libpng.org/pub/png/&quot;&gt;PNG graphics&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;The glaring problem of PNG images is synchronizing color appearance with GIF/JPEG images &amp;amp; CSS colors. This is a &lt;a href=&quot;http://hsivonen.iki.fi/png-gamma/&quot;&gt;well&lt;/a&gt; &lt;a href=&quot;http://hsivonen.iki.fi/png-gamma-test-results/&quot;&gt;documented&lt;/a&gt; &lt;a href=&quot;http://www.jessicafowler.com/archives/png-what-color-consistency/&quot;&gt;problem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;PNG vs JPEG/GIF color problems can be avoided by using PNG for all of the graphics in a site that must perfectly match.&lt;/p&gt;

&lt;p&gt;Otherwise, the best path to PNG bliss is a shell command tool that strips out all that advanced color/gamma data (since it confuses different browsers in different ways) and tries each of the 130+ compression modes to find the most efficient one.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB -brute infile.png outfile.png&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Get it at the &lt;a href=&quot;http://pmt.sourceforge.net/pngcrush/&quot;&gt;pngcrush development site&lt;/a&gt; or as I did (for Mac OS X) via &lt;a href=&quot;http://darwinports.com/&quot;&gt;Darwin Ports&lt;/a&gt;.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://marsorange.com/">
    <author>
      <name>mars</name>
    </author>
    <id>tag:marsorange.com,2007-05-19:80</id>
    <published>2007-05-19T12:12:00Z</published>
    <updated>2007-11-06T00:55:29Z</updated>
    <category term="Work"/>
    <category term="austin"/>
    <category term="ruby"/>
    <category term="webdesign"/>
    <link href="http://marsorange.com/archives/lone-star-ruby" rel="alternate" type="text/html"/>
    <title>Lone Star Ruby</title>
<content type="html">
            &lt;p&gt;Texas' premier Ruby Conference web site is now officially live.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://lonestarrubyconf.com/&quot;&gt;&lt;img src=&quot;/files/lsrc_on_orange.jpg&quot; height=&quot;165&quot; alt=&quot;Lone Star Ruby Conf&quot; width=&quot;310&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The site is powered by &lt;a href=&quot;http://radiantcms.org&quot;&gt;RadiantCMS&lt;/a&gt; running on two &lt;a href=&quot;http://mongrel.rubyforge.org/&quot;&gt;Mongrels&lt;/a&gt; balanced by &lt;a href=&quot;http://wiki.codemongers.com/Nginx&quot;&gt;Nginx&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There's not much info yet, just a pre-registration form to help the plan the event. Plan to come on down to the &lt;a href=&quot;http://lonestarrubyconf.com/&quot;&gt;Ruby Conference in Austin&lt;/a&gt;. It might actually drop under 100-degrees by September 7th!&lt;/p&gt;
          </content>  </entry>
</feed>
