<?xml version="1.0"?>
<rss version="2.0.">
  <channel>
    <title>Advogato blog for wainstead</title>
    <link>http://www.advogato.org/person/wainstead/</link>
    <description>Advogato blog for wainstead</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Wed, 14 May 2008 10:58:35 GMT</pubDate>
    <item>
      <pubDate>Wed, 26 Mar 2008 11:13:49 GMT</pubDate>
      <title>26 Mar 2008</title>
      <link>http://www.advogato.org/person/wainstead/diary.html?start=65</link>
      <guid>http://www.advogato.org/person/wainstead/diary.html?start=65</guid>
      <description>In to work by 6:58am. Still overcoming jet lag from my trip&#xD;
to Japan.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; I think maybe no matter how one documents a&#xD;
software&#xD;
project, it's the experience that counts more... for&#xD;
example, I was&#xD;
just reflecting on how I moved the store code to use native PHP&#xD;
sessions. This brought to mind how sessions work in the&#xD;
store and the&#xD;
changes that happened; all of that I &lt;i&gt;experienced&lt;/i&gt;&#xD;
because I did&#xD;
it. To convey that in words on a web page or a piece of&#xD;
paper somehow&#xD;
omits something. The essence, or perhaps the Quality of it,&#xD;
in the&#xD;
"Zen And The Art Of Motorcycle Maintainence" sense.</description>
    </item>
    <item>
      <pubDate>Tue, 11 Mar 2008 02:31:22 GMT</pubDate>
      <title>11 Mar 2008</title>
      <link>http://www.advogato.org/person/wainstead/diary.html?start=64</link>
      <guid>http://www.advogato.org/person/wainstead/diary.html?start=64</guid>
      <description>Got &lt;a href="http://tinyfugue.sourceforge.net/" &gt;&lt;b&gt;tinyfugue&#xD;
50b8&lt;/b&gt;&lt;/a&gt; to compile on Leopard tonight;&#xD;
one line was all that was needed. Out of the box the&#xD;
compilation failure is:&#xD;
&#xD;
&lt;p&gt; &lt;pre&gt;&#xD;
malloc.c:15: error: syntax error before 'mmalloc_base'&#xD;
malloc.c:15: warning: initialization makes integer from&#xD;
pointer without a cast&#xD;
malloc.c:15: warning: data definition has no type or storage&#xD;
class&#xD;
make[1]: *** [malloc.o] Error 1&#xD;
make: *** [files] Error 2&#xD;
&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt; Add this at line 13:&#xD;
&#xD;
&lt;p&gt; &lt;tt&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;/tt&gt;&#xD;
&#xD;
&lt;p&gt; and it should compile. I tested it against my local MOO and&#xD;
it worked fine.</description>
    </item>
    <item>
      <pubDate>Thu, 30 Aug 2007 05:00:40 GMT</pubDate>
      <title>30 Aug 2007</title>
      <link>http://www.advogato.org/person/wainstead/diary.html?start=63</link>
      <guid>http://www.advogato.org/person/wainstead/diary.html?start=63</guid>
      <description>In my spare time I'm reading "&lt;a&#xD;
href="http://www.amazon.com/Thinking-C%2B%2B-Introduction-Standard-2nd/dp/0139798099/ref=pd_bbs_1/103-1287868-7662228?ie=UTF8&amp;s=books&amp;qid=1188449991&amp;sr=1-1"&gt;Thinking&#xD;
in C++&lt;/a&gt;" and really enjoying it. I've spent a few hours&#xD;
trying to get the LambdaMOO code base to compile as C++;&#xD;
it's been really educational to change the code to get it to&#xD;
compile.&#xD;
&#xD;
&lt;p&gt; I have much larger plans along these lines... and will take&#xD;
a deeper plunge with LambdaMOO when I finish the last two&#xD;
chapters, hopefully in the next couple of days. Certainly by&#xD;
Sunday! Then I'll start volume two.</description>
    </item>
    <item>
      <pubDate>Mon, 30 Jul 2007 21:17:14 GMT</pubDate>
      <title>30 Jul 2007</title>
      <link>http://www.advogato.org/person/wainstead/diary.html?start=62</link>
      <guid>http://www.advogato.org/person/wainstead/diary.html?start=62</guid>
      <description>Today I got rails to talk to two databases at once, and to&#xD;
some legacy tables, at that. This is most yay.</description>
    </item>
    <item>
      <pubDate>Sat, 9 Jun 2007 20:16:44 GMT</pubDate>
      <title>9 Jun 2007</title>
      <link>http://www.advogato.org/person/wainstead/diary.html?start=61</link>
      <guid>http://www.advogato.org/person/wainstead/diary.html?start=61</guid>
      <description>I finally released &lt;a&#xD;
href="http://lhhreplay.sourceforge.net"&gt;LHHReplay&lt;/a&gt; today.&#xD;
Someone emailed me looking for it! For weeks there's been&#xD;
nothing but an empty SourceForge project.&#xD;
&#xD;
&lt;p&gt; LHHReplay is a Perl script that uses the output saved from&#xD;
&lt;a&#xD;
href="http://livehttpheaders.mozdev.org/"&gt;LiveHTTPHeaders&lt;/a&gt;.&#xD;
The goal is cheap, easy, high level web application testing.&#xD;
&#xD;
&lt;p&gt; Some knowledge of Perl is required, and you'll have to&#xD;
install &lt;a&#xD;
href="http://search.cpan.org/dist/Test-WWW-Mechanize/"&gt;Test::WWW::Mechanize&lt;/a&gt;&#xD;
, which has usually required a lot of modules itself.</description>
    </item>
    <item>
      <pubDate>Wed, 4 Apr 2007 20:50:03 GMT</pubDate>
      <title>4 Apr 2007</title>
      <link>http://www.advogato.org/person/wainstead/diary.html?start=60</link>
      <guid>http://www.advogato.org/person/wainstead/diary.html?start=60</guid>
      <description>I've been burning cassettes to CD with my new &lt;a&#xD;
href="http://www.tascam.com/Products/CC-222mkiii.html"&gt;Tascam&#xD;
CC-222 MKIII&lt;/a&gt;. I've been conflicted over whether to blog&#xD;
about it here or on MySpace, since it's a cross between the&#xD;
technical stuff I do (programming, scripting) and the&#xD;
creative stuff from my past (old radio talk shows). But I'm&#xD;
kinda sorta journaling the process on &lt;a&#xD;
href="http://blog.myspace.com/wainstead"&gt;my MySpace blog&lt;/a&gt;.&#xD;
&#xD;
&lt;p&gt; But I do want to put a plug in for &lt;a&#xD;
href="http://rb-appscript.rubyforge.org/"&gt;rb-appscript&lt;/a&gt;,&#xD;
which lets you use Ruby instead of AppleScript to script Mac&#xD;
applications. Just playing with &lt;tt&gt;irb&lt;/tt&gt; and appscript&#xD;
is major fun!&#xD;
&#xD;
&lt;p&gt; I found this weekend that I only needed to skim the first 60&#xD;
pages of &lt;i&gt;Agile Development with Ruby On Rails&lt;/i&gt; to build a&#xD;
quickie database entry form: CD title, original air date,&#xD;
burn date,&#xD;
notes, etc. But after I post the data, the return page&#xD;
doesn't tell me the ID, which I need to write on the newly&#xD;
burned disc. I have to dig through the Rails API docs to&#xD;
figure that&#xD;
one out.&#xD;
&#xD;
&lt;p&gt; Then I need to write an rb-appscript that prompts me for the&#xD;
disc ID when I insert the newly burned CD. The script will&#xD;
automagically fill in all&#xD;
the CD data for me.</description>
    </item>
    <item>
      <pubDate>Sat, 10 Mar 2007 16:46:10 GMT</pubDate>
      <title>10 Mar 2007</title>
      <link>http://www.advogato.org/person/wainstead/diary.html?start=59</link>
      <guid>http://www.advogato.org/person/wainstead/diary.html?start=59</guid>
      <description>Been slowly reading "&lt;a&#xD;
href="http://en.wikipedia.org/wiki/Gtd"&gt;Getting Things&#xD;
Done&lt;/a&gt;" and found &lt;a&#xD;
href="http://www.43folders.com/2004/09/04/quicksilver-append-to-a-text-file-from-anywhere/"&gt;this&#xD;
great post&lt;/a&gt; on using &lt;a&#xD;
href="http://en.wikipedia.org/wiki/Quicksilver_%28software%29"&gt;Quicksilver&#xD;
&lt;/a&gt;for quickly adding things to a todo list. The post is&#xD;
out of date though; to get the "Append to..." action in&#xD;
Quicksilver, pull up QS's "Preferences," click "Plugins,"&#xD;
and check "Text Manipulation Actions." Create a text file in&#xD;
a folder that QS catalogs, and you're all set to go.&#xD;
&#xD;
&lt;p&gt; With this setup I can add to my todo lists almost as fast as&#xD;
I think of them, and without interrupting my workflow by&#xD;
switching applications.</description>
    </item>
    <item>
      <pubDate>Thu, 1 Mar 2007 18:39:54 GMT</pubDate>
      <title>1 Mar 2007</title>
      <link>http://www.advogato.org/person/wainstead/diary.html?start=58</link>
      <guid>http://www.advogato.org/person/wainstead/diary.html?start=58</guid>
      <description>Converted my first cassette to CD last night on my new&#xD;
Tascam CC-222. Totally great: this unit is a dream to use&#xD;
and the results were fantastic. I only converted one hour,&#xD;
though, of about nine hundred hours of stuff. The road is long.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; I signed up for Amazon's S3 during lunch so I'll have a&#xD;
cheap place to dump this stuff as time goes on. It's all my&#xD;
old radio shows.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; I'm doing a kind of load test with Gallery's Java applet and&#xD;
Safari: upload 12,000 photos. The applet's interface froze&#xD;
around 3,347 photos but the uploading continues. Gallery&#xD;
continues to do just fine though, and that's amazing because&#xD;
all those photos are stored as a pickled array of AlbumItem&#xD;
objects.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; OK, this is really freaky: the applet interface just unfroze&#xD;
after more than half an hour of nothingness.&#xD;
&#xD;
&lt;p&gt; So I have a lot to think about: I have maybe a thousand&#xD;
hours of radio shows, tens of thousands of photographs and&#xD;
maybe a lot of scans to store online. I need a way not just&#xD;
to distribute it, but a way to let people help annotate&#xD;
everything; a lot of the radio shows lack dates on them. A&#xD;
lot of the photos have no dates, or I've forgotten who the&#xD;
band is or who the people are. The collective memory of&#xD;
everyone involved can be facilitated with a Web site that's&#xD;
built the right way. I wonder if anyone else has tackled&#xD;
this idea.</description>
    </item>
    <item>
      <pubDate>Tue, 27 Feb 2007 22:18:07 GMT</pubDate>
      <title>27 Feb 2007</title>
      <link>http://www.advogato.org/person/wainstead/diary.html?start=57</link>
      <guid>http://www.advogato.org/person/wainstead/diary.html?start=57</guid>
      <description>Ouch. Twice today I spent way too much time hunting for a&#xD;
bug that turned out to be a typo in a variable name! Shame&#xD;
on me for programming in PHP and not using&#xD;
&lt;tt&gt;error_reporting(E_ALL)&lt;/tt&gt;, which is akin to doing&#xD;
&lt;pre&gt;&#xD;
use strict;&#xD;
use warnings;&#xD;
&lt;/pre&gt;&#xD;
in Perl. It would have saved me a lot of time.&#xD;
&#xD;
&lt;p&gt; In other news, I see Sourceforge's shell server(s) are&#xD;
available again so I need to get cracking and release&#xD;
LHHReplay. I need to work out a simple document first... in&#xD;
fact better I relearn POD, which I haven't touched in years,&#xD;
so the doc can eventually be module documentation.&#xD;
&#xD;
&lt;p&gt; And my Tascam &lt;a&#xD;
href="http://www.tascam.com/Products/CC-222mkiii.html"&gt;CC-222&lt;/a&gt;&#xD;
came today, a cassette-to-cd burner&#xD;
with the most important feature of all: pitch control on the&#xD;
cassette deck. I can finally start converting my old radio&#xD;
shows into podcasts.</description>
    </item>
    <item>
      <pubDate>Sat, 17 Feb 2007 18:44:17 GMT</pubDate>
      <title>17 Feb 2007</title>
      <link>http://www.advogato.org/person/wainstead/diary.html?start=56</link>
      <guid>http://www.advogato.org/person/wainstead/diary.html?start=56</guid>
      <description>I finally registered with Sourceforge for a new project:&#xD;
lhhreplay. This is a Perl script I started developing a&#xD;
couple years&#xD;
ago to replay the output of &lt;a&#xD;
href="http://livehttpheaders.mozdev.org/"&gt;LiveHTTPHeaders&lt;/a&gt;.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; I'd searched high and low for a good testing solution for&#xD;
web applications; I should have written an article at the&#xD;
time. I tried Selenium, HTTP::Recorder, and a &lt;a&#xD;
href="http://del.icio.us/wainstead/testing"&gt;few others&lt;/a&gt;&#xD;
but one key obstacle was being able to go from HTTP to HTTPS&#xD;
and back again.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; So I worked out a small Perl script that uses the saved&#xD;
output of a LiveHTTPHeaders session, and installed &lt;a href="http://search.cpan.org/dist/Test-WWW-Mechanize/" &gt;Test::WWW::Mechanize&lt;/a&gt;.&#xD;
 This little tool has been such a huge timesaver for me that&#xD;
I feel the need to release it.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; One of my typical uses is to open LiveHTTPHeaders, fill up&#xD;
the shopping cart I'm working on with a lot of items, and&#xD;
then save the script. Whenever I've emptied the cart I can run:&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; &lt;tt&gt;lhhreplay.pl fillcart.lhh&lt;/tt&gt;&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; where fillcart.lhh is the LiveHTTPHeaders output that I&#xD;
saved to disk. Some of the items that go in the cart are&#xD;
complex, like Christmas cards that require sandwiching&#xD;
images and adding text; I'm spared the drudgery of doing&#xD;
this sort of thing over and over.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; There are a few caveats I'm going to have to solve however.&#xD;
It's almost always a good idea to delete your cookies before&#xD;
you start; to log out of the web app before you start; and&#xD;
the set of rules that I use for Test::WWW::Mechanize are&#xD;
specific to my needs, so that will have to be factored out&#xD;
somehow. But these issues can be solved.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; Inevitably I will have to factor the code out of the script&#xD;
in to a Perl module. And one longstanding "bug" is how the&#xD;
script handles 302s, but that would take up too much space&#xD;
here to go into.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; For now I am waiting for Sourceforge to approve my project&#xD;
request. An example run is &lt;a&#xD;
href="http://wainstead.info/advogato/lhhreplay.txt"&gt;here&lt;/a&gt;.&#xD;
When there's failures the Test harness system reports the&#xD;
number of failures at the end of the run.</description>
    </item>
  </channel>
</rss>
