<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Musings of a Trained Monkey: Tag ajax</title>
    <link>http://www.stevelongdo.com/articles/tag/ajax</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Loose Ends</title>
      <description>Some loose ends will be tied up here soon.  Here is a quick list of things that I intend to post more about soon.  Suggestions/requests will be taken from comments as well :-)
&lt;ul&gt;
&lt;li&gt;AJAX-ed &lt;a href="http://openrico.org"&gt;OpenRico&lt;/a&gt; Accordion widget&lt;/li&gt;
&lt;li&gt;$LOAD_PATH and Revealing some &lt;a href="http://www.rubyonrails.org"&gt;Rails&lt;/a&gt; Magic Tricks&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.typosphere.org"&gt;Edge Typo's&lt;/a&gt; New Pluggable Sidebars&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;Installing &lt;a href="http://www.rubygems.org"&gt;RubyGems&lt;/a&gt; on &lt;a href="http://www.textdrive.com"&gt;TextDrive&lt;/a&gt;&lt;/strike&gt; &lt;a href="http://www.stevelongdo.com/articles/2006/08/31/installing-a-patched-rubygems-on-textdrive"&gt;Done!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Further Exploring the Limits on &lt;a href="http://www.textdrive.com"&gt;TextDrive&lt;/a&gt;:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
[rhesus@davie ~]$ &lt;b&gt;ulimit -a&lt;/b&gt;&lt;br /&gt;
core file size          (blocks, -c) 0&lt;br /&gt;
data seg size           (kbytes, -d) 40960&lt;br /&gt;
file size               (blocks, -f) unlimited&lt;br /&gt;
max locked memory       (kbytes, -l) 32768&lt;br /&gt;
&lt;b&gt;max memory size         (kbytes, -m) 49152&lt;/b&gt;&lt;br /&gt;
open files                      (-n) 240&lt;br /&gt;
pipe size            (512 bytes, -p) 1&lt;br /&gt;
stack size              (kbytes, -s) 16384&lt;br /&gt;
cpu time               (seconds, -t) 1200&lt;br /&gt;
max user processes              (-u) 20&lt;br /&gt;
virtual memory          (kbytes, -v) 81920&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; </description>
      <pubDate>Fri, 25 Aug 2006 04:07:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:a187992a-d7d1-4fc5-abcb-2bb7bbafd19e</guid>
      <author>Steve Longdo</author>
      <link>http://www.stevelongdo.com/articles/2006/08/25/loose-ends</link>
      <category>todo</category>
      <category>ajax</category>
      <category>textdrive</category>
      <category>rails</category>
    </item>
    <item>
      <title>Adobe Flex2 is out...</title>
      <description>Apparently &lt;a href="http://www.adobe.com/products/flex/"&gt;Adobe Flex2&lt;/a&gt; is available for download today.
&lt;a href="http://www.cbronline.com/article_news.asp?guid=3542F4FC-2852-452E-BDC4-7F1E7B42BA5C"&gt;
&lt;blockquote&gt; When Adobe first announced Flex 2 last fall, it said that it would make the core software development kit (SDK), which provides the core programmer tooling without the bells and whistles of a visual IDE, available for free. The SDK just released includes the framework itself, compiler, documentation, and a command line debugger.
&lt;/blockquote&gt;&lt;/a&gt;It would be great to be able to  use the free SDK compiler to make a simple AJAX driven 3D pie-chart not unlike the ones in &lt;a href="http://www.google.com/analytics"&gt;Google Analytics&lt;/a&gt;.  Adobe even provides an open source &lt;a href="http://labs.adobe.com/wiki/index.php/Flex_Framework:FABridge"&gt;Flash-Ajax bridge&lt;/a&gt; project for linking AJAX activity to a swf file.&lt;br /&gt;&lt;br /&gt;Has someone already done this or am I ahead of the curve?</description>
      <pubDate>Wed, 28 Jun 2006 15:58:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:458078c5-9bee-4f1d-b303-b3031806e2b0</guid>
      <author>Steve Longdo</author>
      <link>http://www.stevelongdo.com/articles/2006/06/28/adobe-flex2-is-out</link>
      <category>flex</category>
      <category>adobe</category>
      <category>stats</category>
      <category>google</category>
      <category>analytics</category>
      <category>chart</category>
      <category>ajax</category>
    </item>
    <item>
      <title>Typo Administration: article tagging III...</title>
      <description>Last time I alluded to using an &lt;a href="http://www.adaptivepath.com/publications/essays/archives/000385.php"&gt;AJAX-less&lt;/a&gt; solution for the tagging auto completion feature. In fact in the &lt;code&gt;controls.js&lt;/code&gt; JavaScript file distributed with &lt;a href="http://typosphere.org"&gt;Typo&lt;/a&gt; there is a "class", Autocompleter.Local, that does what we are after.   As the name implies it does completion from a local JavaScript array. &lt;br /&gt;&lt;br /&gt;
We need to coerce the &lt;span style="background-color:#EEEEEE; color: #77BBBB;"&gt;@tags&lt;/span&gt; attribute we set up in the content_controller last time, into a JavaScript array. Then hook up the Autocompleter.Local to the Keywords field on the Article form and pass it the JavaScript array of tags.  The Autocompleter.Local needs a &amp;lt;DIV&gt; element to update with matches for what we type into the Keywords field.  Also for everything to work properly, turn off the browser's native "autocomplete" feature by setting it to "off" in the text_field method's options hash for the Keywords field. Now that we know what the next steps are lets code:
&lt;div class="typocode"&gt;&lt;div class="codetitle"&gt;app/views/admin/content/_form.rhtml&lt;/div&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;&lt;notextile&gt;&lt;/notextile&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="ieislame"&gt;&lt;pre&gt;
...
&amp;lt;p&gt;
  &amp;lt;label for="article_keywords"&gt;Keywords:&amp;lt;/label&gt;&amp;lt;br /&gt;
  &amp;lt;%= text_field 'article', 'keywords', :autocomplete =&gt; 'off'  %&gt;&amp;lt;br /&gt;
  &amp;lt;div id="completer" style="max-width: 75px; display: none; overflow: auto; border: 1px solid black; background-color: white;"&gt;&amp;lt;/div&gt;
&amp;lt;script type="text/javascript" language="javascript" charset="utf-8"&gt;
  opts = new Array(&amp;lt;%= @tags.sort_by{|t| t.display_name}.collect!{|t1| '"' + t1.display_name + '",'} -%&gt;'');
// &amp;lt;![CDATA[  
  new Autocompleter.Local('article_keywords','completer', opts
  , { tokens: new Array(' ',',','\n'), partialChars: 1, choices: 20, partialSearch: false});
// ]]&gt;
&amp;lt;/script&gt;
&amp;lt;/p&gt;
...
&lt;/pre&gt;&lt;/div&gt;
This code reads well, it is &lt;a href="http://ruby-lang.org"&gt;Ruby&lt;/a&gt; after all, but the line right after the &amp;lt;script&gt; element may deserve some special explanation.  That dense little line of &lt;a href="http://ruby-lang.org"&gt;Ruby&lt;/a&gt; code sorts our &lt;span style="background-color:#EEEEEE; color: #77BBBB;"&gt;@tags&lt;/span&gt; by their display_name and then collects them together into a String that will look like this: ("tag1","tag2",...,''). This String will  in turn be evaluated into a JavaScript Array.  The options being passed to the Autocompleter {tokens,choices,etc.} are documented in the &lt;code&gt;controls.js&lt;/code&gt; JavaScript file distributed with &lt;a href="http://typosphere.org"&gt;Typo&lt;/a&gt;. 
&lt;br /&gt; Let's create a new article and check out the fruits of our labor thus far by seeing what happens when we enter the letter 'a':
&lt;div style="margin: 0 auto; padding: 0 auto;"&gt;
&lt;a href="/files/tagging2.png" rel="lightbox"&gt; &lt;img title="ugly tag complete" alt="ugly tag complete" src="/files/tagging2.png" height="200px"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;br /&gt;
The CSS styling provided is pulled from the admin panel's CSS stylesheet, hence the redness.  Also you can see that my guess at making the completer &amp;lt;DIV&gt; element's &lt;span style="background-color:#eeeeee"&gt;&lt;span style="color: #994444;"&gt;max-width:&lt;/span&gt; &lt;span style="color: #BBBB77;"&gt;75px&lt;/span&gt;&lt;/span&gt;, didn't work out too well.  Using &lt;a href="http://chrispederick.com/work/webdeveloper/"&gt;Chris Pedrick's WebDeveloper Extension&lt;/a&gt; to view the generated source of our completer &amp;lt;DIV&gt; element, the HTML markup provided by the Autocompleter is pretty basic. We'll work on augmenting it and making the CSS styling better looking next time.
</description>
      <pubDate>Wed, 15 Mar 2006 03:47:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:d4a1e692-971c-494f-b37f-d2d985f8cdf2</guid>
      <author>Steve Longdo</author>
      <link>http://www.stevelongdo.com/articles/2006/03/15/typo-administration-article-tagging-iii</link>
      <category>ajax</category>
      <category>css</category>
      <category>javascript</category>
      <category>rails</category>
      <category>ruby</category>
      <category>tag</category>
      <category>typo</category>
      <trackback:ping>http://www.stevelongdo.com/articles/trackback/97</trackback:ping>
    </item>
    <item>
      <title>Typo Administration: article tagging II...</title>
      <description>Let's go through the the steps I have taken so far to add auto completion of the tagging capabilities of &lt;a href="http://typosphere.org"&gt;Typo&lt;/a&gt;.  

&lt;ol&gt;
&lt;li&gt;Checked out a fresh copy of the trunk from svn://typosphere.org/typo/trunk &lt;/li&gt;
&lt;li&gt;Ran it against my backup database of this site.&lt;/li&gt;
&lt;li&gt;Fired up &lt;a href="http://www.macromates.com"&gt;TextMate&lt;/a&gt; and started to work!&lt;/li&gt;

&lt;/ol&gt;
I made a decision right off to not use &lt;a href="http://www.adaptivepath.com/publications/essays/archives/000385.php"&gt;AJAX&lt;/a&gt; for this.  Building the entire list of tags in use for an individual user's blog shouldn't be too much overhead to send down the wire once, versus pinging the server each time a key is typed. &lt;cite&gt;(Although &lt;a href="http://typosphere.org"&gt;Typo&lt;/a&gt; foils my effort to reduce roundtrips to the server, because live preview of Articles monitors the whole Article form not just the Title and Body fields...)&lt;/cite&gt;
I am sticking by my decision for now, if we want to add &lt;a href="http://del.icio.us"&gt;del.icio.us&lt;/a&gt;, &lt;a href="http://technorati.com/"&gt;technorati&lt;/a&gt; or even &lt;a href="http://ma.gnolia.com/"&gt;ma.gnolia.com&lt;/a&gt; tags in the future then &lt;a href="http://www.adaptivepath.com/publications/essays/archives/000385.php"&gt;AJAX&lt;/a&gt; will come back into the picture.  For now we will &lt;strong&gt;K&lt;/strong&gt;eep &lt;strong&gt;I&lt;/strong&gt;t &lt;strong&gt;S&lt;/strong&gt;imple &lt;strong&gt;S&lt;/strong&gt;...teve :-)&lt;br /&gt;

First off we will need to get the Tags down to the view code. So off to the admin controller code's new and edit methods to get our Tags included:&lt;pre style="overflow: auto"&gt;&lt;div class="typocode"&gt;&lt;div class="codetitle"&gt;app/controllers/admin/content_controller.rb&lt;/div&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;new&lt;/span&gt;
&lt;span class="punct"&gt;...&lt;/span&gt;
    &lt;span class="attribute"&gt;@categories&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Category&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:all&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:order&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;UPPER(name)&lt;/span&gt;&lt;span class="punct"&gt;')&lt;/span&gt;

    &lt;span class="attribute"&gt;@tags&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Tag&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find_all_with_article_counters&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;666&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="punct"&gt;...&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;edit&lt;/span&gt;
&lt;span class="punct"&gt;...&lt;/span&gt;
    &lt;span class="attribute"&gt;@selected&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="attribute"&gt;@article&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;categories&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;collect&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;cat&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;cat&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;id&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_i&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;

    &lt;span class="attribute"&gt;@tags&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Tag&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find_all_with_article_counters&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;666&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    
    &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;request&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;post?&lt;/span&gt; 

&lt;span class="punct"&gt;...&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/pre&gt;
The &lt;code class="typocode_ruby"&gt;&lt;span class="attribute"&gt;@tags&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Tag&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find_all_with_article_counters&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="number"&gt;666&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;/code&gt; is how we are accomplishing this. I could just get all the Tags with &lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;Tag&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="symbol"&gt;:all&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;/code&gt; but this little bit of premature optimization will come in handy if we want to show a count of how many articles are already tagged with a given tag. We can also limit our search to less than 666 records. I just like to tag things a lot.

&lt;br /&gt;&lt;br /&gt;
I will post the next part later today as this post is getting a bit longish.</description>
      <pubDate>Wed, 08 Mar 2006 23:31:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:57f9832d-7f72-45a8-8127-77f39e7df089</guid>
      <author>Steve Longdo</author>
      <link>http://www.stevelongdo.com/articles/2006/03/08/typo-administration-article-tagging-ii</link>
      <category>ajax</category>
      <category>javascript</category>
      <category>tag</category>
      <category>typo</category>
      <category>ruby</category>
      <category>rails</category>
      <trackback:ping>http://www.stevelongdo.com/articles/trackback/95</trackback:ping>
    </item>
    <item>
      <title>Typo Administration: article tagging...</title>
      <description>&lt;p&gt;I&amp;#8217;ve been working on adding support to &lt;a href="http://typosphere.org"&gt;Typo&lt;/a&gt; for tagging suggestions.  Similiar to how &lt;a href="http://del.icio.us"&gt;del.icio.us&lt;/a&gt; makes recomendations when you are tagging a resource.  Saw it on the &lt;a href="http://typosphere.org/trac/wiki/TypoWishlist"&gt;Typo wishlist&lt;/a&gt; and it seemed like a fun quick hit.&lt;/p&gt;


	&lt;p&gt;I have it working with pulling the tags from the existing tags in your &lt;a href="http://typosphere.org"&gt;Typo&lt;/a&gt; database.  I am still working out some JavaScript issues.  The invaluable &lt;a href="http://www.joehewitt.com/software/firebug/"&gt;FireBug&lt;/a&gt; is helping me track them down and I am working on extracting the &lt;span class="caps"&gt;CSS&lt;/span&gt; markup into the admin.css file.  I hope to contribute this to &lt;a href="http://typosphere.org"&gt;Typo&lt;/a&gt; in time for the official 4.0 release.  I&amp;#8217;ll update the article when I have submitted a patch.  It will probably take me longer to write test cases than implement the feature! That is right, no use of &lt;a href="http://www.agiledata.org/essays/tdd.html"&gt;&lt;span class="caps"&gt;TDD&lt;/span&gt;&lt;/a&gt; on this one&amp;#8230;&lt;/p&gt;


&lt;div style="margin:0 auto; padding: 0 auto;"&gt;
&lt;a href="/files/Picture_3.png" rel="lightbox"&gt; &lt;img title="tagging in progress" alt="Tagging in progress" width="350px" src="/files/Picture_3.png"/&gt;&lt;/a&gt;
&lt;/div&gt;&lt;br /&gt;

	&lt;p&gt;I also made the &amp;#8220;Categories&amp;#8221; section toggle like the &amp;#8220;Extended Content&amp;#8221; and &amp;#8220;Advanced Options&amp;#8221; sections.  Once this is out who will still use categories?  :-)&lt;/p&gt;</description>
      <pubDate>Tue, 07 Mar 2006 18:25:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:68d9b057-3c1a-4058-a253-466783af9406</guid>
      <author>Steve Longdo</author>
      <link>http://www.stevelongdo.com/articles/2006/03/07/typo-administration-article-tagging</link>
      <category>typo</category>
      <category>tag</category>
      <category>javascript</category>
      <category>ajax</category>
      <trackback:ping>http://www.stevelongdo.com/articles/trackback/93</trackback:ping>
    </item>
    <item>
      <title>Spreading faster than the bird flu...</title>
      <description>&lt;p&gt;Congratulations to &lt;a href="http://www.alaska.gov/"&gt;Anchorage, Alaska&lt;/a&gt; for coming into the fold. Leaving just a few more states to go.  As excited as I am to pick up another United State, something even cooler has happened: &lt;strong&gt;&lt;a href="http://www.bodoe.com/e/v2/velkommen.shtml"&gt;Norway&lt;/a&gt;&lt;/strong&gt;.  Thanks to the city of &lt;a href="http://www.bodoe.com/e/v2/velkommen.shtml"&gt;Bodø&lt;/a&gt; for stopping by.&lt;/p&gt;


	&lt;p&gt;Also a very special thanks to Shlomo(Toda Raba!, תודה רבה) for visiting from &lt;a href="http://www.index.co.il/tourism/"&gt;Israel&lt;/a&gt;!&lt;/p&gt;


	&lt;p&gt;So I think I am going to have reprioritize which countries to get to visit &lt;a href="http://www.stevelongdo.com"&gt;here&lt;/a&gt; next.  I was thinking South America, but they are finding me on their own, &lt;a href="http://www.turismo.gov.ar/"&gt;Argentina&lt;/a&gt;, &lt;a href="http://www.braziltourism.org/"&gt;Brazil&lt;/a&gt;, and &lt;a href="http://www.visit-chile.org/"&gt;Chilé&lt;/a&gt;. Literally the &lt;span class="caps"&gt;ABC&lt;/span&gt;&amp;#8217;s of South America have already stopped by. I would like to get a visit from &lt;a href="http://www.venezuelatuya.com/caracas/"&gt;Venezuela&lt;/a&gt; though. I traveled there many years ago. If anyone from there stops by I will try to find some of my old photos from &lt;a href="http://www.venezuelatuya.com/caracas/"&gt;Caracas&lt;/a&gt; and post them.&lt;/p&gt;


	&lt;p&gt;Geting visits from more countries that the US doesn&amp;#8217;t get along with well would be neat.  I noticed that I have had two visitors from &lt;a href="http://www.vietnamtourism.gov.vn/"&gt;Vietnam&lt;/a&gt; one even from Ho Chi Minh City. Strange to think about my father fighting there in the war and now people are beginning to exchange ideas and information again.&lt;/p&gt;


	&lt;p&gt;Next on the list &lt;a href="http://www.cubatravel.cu/client/home/index.php"&gt;Cuba&lt;/a&gt;, I am not sure what kind of internet access is allowed there, but I hope someone finds the way &lt;a href="http://www.stevelongdo.com"&gt;here&lt;/a&gt;.  Visitantes agradables de Cuba.&lt;/p&gt;


	&lt;p&gt;I would be equally excited to pick up some traffic from the &lt;a href="http://english.tour2korea.com/"&gt;Korean Peninsula&lt;/a&gt;. Both &lt;a href="http://english.tour2korea.com/"&gt;North and South&lt;/a&gt; are welcome: 여보세요 한반도에서 방문자에.&lt;/p&gt;


	&lt;p&gt;Last but certainly not least &lt;a href="http://www.tourismus.li/de/welcome.cfm"&gt;Lichtenstein&lt;/a&gt;  I am not sure if the anyone besides the &lt;a href="http://www.fuerstenhaus.li/fhl/en/"&gt;Prince on the Hill&lt;/a&gt; has internet access there, but if so &amp;#8220;Willkommen im voraus zu den Besuchern von Lichtenstein.&amp;#8221; I think I have pictures from when I was there to post as well&amp;#8230;&lt;/p&gt;


	&lt;p&gt;Yes I know the US gets along with South Korea and Lichtenstein&amp;#8230; for now :-) &lt;br /&gt;
&lt;a href="/images/geo4.png" title="bigger map" rel="lightbox"&gt;&lt;img width="450px" alt="Steve Longdo World Domination Map" src="/images/geo4.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="/images/geo4.png" title="bigger map" rel="lightbox"&gt;Click for larger size&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 02 Mar 2006 03:07:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:f2021673-03a6-4fa6-918c-3bfdba6cc118</guid>
      <author>Steve Longdo</author>
      <link>http://www.stevelongdo.com/articles/2006/03/02/spreading-faster-than-the-bird-flu</link>
      <category>google</category>
      <category>analytics</category>
      <category>stats</category>
      <category>norway</category>
      <category>israel</category>
      <category>ajax</category>
      <category>theme</category>
      <trackback:ping>http://www.stevelongdo.com/articles/trackback/83</trackback:ping>
    </item>
    <item>
      <title>AJAX Accordion...</title>
      <description>&lt;p&gt;I&amp;#8217;ve added a little &lt;a href="http://openrico.org/"&gt;&lt;span class="caps"&gt;AJAX&lt;/span&gt; Accordion&lt;/a&gt; to my sidebar.  You may have noticed I have a fasicination with where vistors to my site are located, geographically speaking.  I will probably be posting an updated &lt;a href="http://www.google.com/analytics"&gt;Google Analytics map&lt;/a&gt; in the next few days just to show my progress towards world domination.&lt;/p&gt;


	&lt;p&gt;Imagine my surprise to discover that while my good friends from Iceland have finally arrived (&lt;strong&gt;þakka þú&lt;/strong&gt;), I haven&amp;#8217;t even completed penetration of the entire United States!&lt;/p&gt;


	&lt;p&gt;As you can see from the new Visitors Sidebar there are &lt;del&gt;nine&lt;/del&gt; seven states holding out on me.  I would like to take this opportunity to see if anyone out there knows anyone from the &lt;a href="http://www.uaf.edu/"&gt;University of Alaska &amp;#8211; Fairbanks&lt;/a&gt; or &lt;a href="http://www.uaa.alaska.edu/"&gt;University of Alaska &amp;#8211; Anchorage&lt;/a&gt;, if so tell them to avoid further shaming &lt;a href="http://www.alaska.gov/"&gt;Alaska&lt;/a&gt; by &lt;a href="http://www.stevelongdo.com/"&gt;visiting me&lt;/a&gt;!&lt;/p&gt;


To digress for a moment, seriously Norway, what is the deal?  I have been getting a lot of traffic from Finland, Sweden, and even Denmark, but you continue to elude my grasp and so now a special plea:
	&lt;blockquote&gt;
		&lt;p lang="nw"&gt;Norge hvorfor vil ikke du komme til besøk meg for &lt;a href="http://www.stevelongdo.com/"&gt;www.stevelongdo.com&lt;/a&gt;? Er den språkbarrieren? Til tross for&lt;span class=\"caps\"&gt;&lt;span class="caps"&gt;JEG&lt;/span&gt;&lt;/span&gt; er for gammel å delta &lt;span class=\"caps\"&gt;&lt;span class="caps"&gt;JEG&lt;/span&gt;&lt;/span&gt; ville elske å besøk &lt;a href="http://www.uio.no/"&gt;Oslo&lt;/a&gt; i løpet av Kanskje når det &lt;a href="http://www.aftenposten.no/english/bildeserier/article1027893.ece?start=19"&gt;&amp;#8216;russ&amp;#8217; festen&lt;/a&gt; er under utvikling.&lt;/p&gt;
	&lt;/blockquote&gt;


For my English readers that is a little something like this:
	&lt;blockquote&gt;
		&lt;p lang="en"&gt;Norway why won&amp;#8217;t you come to visit me at &lt;a href="http://www.stevelongdo.com/"&gt;www.stevelongdo.com&lt;/a&gt;?  Is it the language barrier?  Although I am too old to participate I would love to visit Oslo during May when the &lt;a href="http://www.aftenposten.no/english/bildeserier/article1027893.ece?start=19"&gt;&amp;#8216;russ&amp;#8217; celebration&lt;/a&gt; is in progress.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;:&lt;/strong&gt; I picked up two states already!  Welcome aboard South Dakota and Kansas.  I will allow the sun to resume shining there immediately.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE2&lt;/span&gt;:&lt;/strong&gt; I&amp;#8217;ve received reports that the &lt;a href="http://openrico.org/"&gt;&lt;span class="caps"&gt;AJAX&lt;/span&gt; Accordion&lt;/a&gt; doesn&amp;#8217;t like &lt;span class="caps"&gt;IE 6&lt;/span&gt; or otherwise messes up the alignment of my content?  I only tested with &lt;a href="http://www.getfirefox.com"&gt;real&lt;/a&gt; &lt;a href="http://webkit.opendarwin.org/"&gt;browsers&lt;/a&gt; and it worked great with them.  I don&amp;#8217;t have a Windoze box at home so I will check it out tomorrow at work&amp;#8230;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE3&lt;/span&gt;:&lt;/strong&gt; I found documentation on this problem &lt;a href="http://www.positioniseverything.net/explorer/creep.html"&gt;here&lt;/a&gt; and implemented a &lt;a href="http://blog.lemongarden.co.uk/testcase/blockquote_borderbug.html"&gt;fix&lt;/a&gt;  So the 12% of users browsing my site in IE can now see the text of the articles lined up correctly again.  Seriously though join the other 88% of visitors using &lt;a href="http://www.getfirefox.com"&gt;real&lt;/a&gt; &lt;a href="http://webkit.opendarwin.org/"&gt;browsers&lt;/a&gt; you can even &lt;a href="http://www.opera.com/"&gt;use this one&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 28 Feb 2006 16:50:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:99a77294-a88e-4e05-9257-db3e0a81ec38</guid>
      <author>Steve Longdo</author>
      <link>http://www.stevelongdo.com/articles/2006/02/28/ajax-accordion</link>
      <category>ajax</category>
      <category>stats</category>
      <category>analytics</category>
      <category>norway</category>
      <category>alaska</category>
      <category>javascript</category>
      <trackback:ping>http://www.stevelongdo.com/articles/trackback/81</trackback:ping>
    </item>
    <item>
      <title>Ruby, Rails, Selenium and testing...</title>
      <description>People that have worked with me in the past know how much I think unit tests are worth.  In fact I won't say any more about them.  White box testing has a place, it just isn't on my &lt;a href="http://www.stevelongdo.com/"&gt;blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.openqa.org/selenium/"&gt;Selenium&lt;/a&gt; is an open source testing framework that will be making products like &lt;a href="http://www.mercury.com/us/products/quality-center/functional-testing/winrunner/"&gt;Mercury Interactive's WinRunner&lt;/a&gt; quake in their boots.  Being able to do acceptance/functional/regression/Black Box testing of web applications across browser and OS platform boundaries from a single script file is already possible with &lt;a href="http://www.openqa.org/selenium/"&gt;Selenium&lt;/a&gt;.  The major testing/QA vendors can't even boast  that level of functionality yet.  Even better &lt;a href="http://adaptivepath.com/publications/essays/archives/000385.php"&gt;AJAX&lt;/a&gt; applications are supported by &lt;a href="http://www.openqa.org/selenium/"&gt;Selenium&lt;/a&gt;.    There is a &lt;a href="http://www.openqa.org/selenium-ide/"&gt;Selenium IDE&lt;/a&gt; that works as an extension to &lt;a href="http://www.getfirefox.com"&gt;Firefox&lt;/a&gt;.  You can simply record your actions "macro-like" as you navigate through the web application you want to test.
&lt;br /&gt;&lt;br /&gt;
What makes this all the more exciting is the recent &lt;a href="http://andthennothing.net/archives/2006/02/19/new-version-of-selenium-on-rails"&gt;selenium_on_rails&lt;/a&gt; plugin.  It allows you to embed and run your   &lt;a href="http://www.openqa.org/selenium/"&gt;Selenium&lt;/a&gt; tests as &lt;code class="typocode_ruby"&gt;&lt;span class="keyword"&gt;rake&lt;/span&gt;&lt;/code&gt; tasks.  Automated quality assurance has never been this compelling to include as part of the development process.&lt;br /&gt;&lt;br /&gt;  So far the only short coming I've observed is the lack of i18n support, however the new .rsel format probably could be used to overcome this. Rsel lets you define your &lt;a href="http://www.openqa.org/selenium/"&gt;Selenium&lt;/a&gt; tests in terms of &lt;a href="http://ruby-lang.org/"&gt;Ruby code&lt;/a&gt;. To see all of this in action take a look at the excellent &lt;a href="http://andthennothing.net/archives/2006/02/20/show-dont-tell"&gt;screencast over at and then nothing.net&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; Someone made a good point that I maybe didn't make clear here, &lt;a href="http://www.openqa.org/selenium/"&gt;Selenium&lt;/a&gt; can be used to test &lt;u&gt;ANY&lt;/u&gt; web application, not just &lt;a href="http://rubyonrails.org"&gt;Rails&lt;/a&gt; powered, but even legacy &lt;a href="http://java.sun.com"&gt;Java&lt;/a&gt;, &lt;a href="http://www.microsoft.com/net/default.mspx"&gt;.NET&lt;/a&gt;, &lt;a href="http://www.php.net/"&gt;PHP&lt;/a&gt;, or any &lt;a href="http://www.infogoal.com/cbd/cbdhome.htm"&gt;other caveman languages&lt;/a&gt; &lt;a href="http://www.perl.com/"&gt;from the last century&lt;/a&gt;.  :-)</description>
      <pubDate>Thu, 23 Feb 2006 03:44:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:1fac5e60-0661-42e5-a94d-d53290e519a6</guid>
      <author>Steve Longdo</author>
      <link>http://www.stevelongdo.com/articles/2006/02/23/ruby-rails-selenium-and-testing</link>
      <category>ruby</category>
      <category>rails</category>
      <category>ajax</category>
      <category>selenium</category>
      <category>testing</category>
      <category>plugin</category>
      <trackback:ping>http://www.stevelongdo.com/articles/trackback/80</trackback:ping>
    </item>
    <item>
      <title>Rails acts_as_rateable plugin...</title>
      <description>I've gotten quite a bit done on rating.  Models can now use the act_as_rateable plugin to track rating information.  I've written ActionView Helpers to implement a &lt;a href="http://komodomedia.com/blog/index.php/2006/01/09/css-star-rating-part-deux/"&gt;star  rating system&lt;/a&gt; and a very &lt;a href="http://www.robarov.be/rate/"&gt;cool 1..10 style bar&lt;/a&gt;.  I've done some preliminary studying of integration with the sciptaculous_slider rails plugin as well.&lt;br /&gt;&lt;br /&gt;
Remaining todo items include:
&lt;ul&gt;&lt;li&gt;&lt;strike&gt;Rake task to copy images the helpers use to public/images directory.&lt;/strike&gt;&lt;/li&gt;&lt;li&gt;&lt;strike&gt;Rake task to setup database tables for storing rating info.&lt;/strike&gt;&lt;/li&gt;&lt;li&gt;&lt;strike&gt;Convert the SQL file I've been using into a Migrations style script.&lt;/strike&gt;&lt;/li&gt;&lt;li&gt;Increase Unit Testing coverage.&lt;/li&gt;&lt;li&gt;Tying in a rate method on ActionControllers...&lt;/li&gt;&lt;/ul&gt;
This last item is giving me pause though.  I was wanting to include a simple rating_controller with the plugin and have it automatically register its route via the init.rb file.  I sought out help from the &lt;a href="http://wrath.rubyonrails.org/pipermail/rails/2006-February/016706.html"&gt;Rails mailing list&lt;/a&gt;, but no one &lt;strike&gt;could help&lt;/strike&gt; helped. I may pursue a rake task for adding the route into the routes.rb file.  I think this isn't nearly as cool as self-registering a route within the init.rb file, but I haven't had any luck with the methods I have tried so far.</description>
      <pubDate>Thu, 09 Feb 2006 19:25:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:4f72d246-d618-4110-924b-cf8fc26c8a0b</guid>
      <author>Steve Longdo</author>
      <link>http://www.stevelongdo.com/articles/2006/02/09/rails-acts_as_rateable-plugin</link>
      <category>ajax</category>
      <category>rating</category>
      <category>rails</category>
      <category>plugin</category>
      <trackback:ping>http://www.stevelongdo.com/articles/trackback/74</trackback:ping>
    </item>
    <item>
      <title>Polling plugin for Typo III...</title>
      <description>Well I promised an update, and here it is.  Not much progress to report.  I am stalled on the sidebar issue, trying to have AJAX links in the sidebar panel to vote with and then updating the sidebar DIV with the results.  &lt;a href="http://typo.leetsoft.com"&gt;Typo&lt;/a&gt; sidebars load fine from the SidebarController, but trying to hit them directly fails with &lt;span class="typocode"&gt;uninitialized constant Plugin&lt;/span&gt; at the bottom of the error trace it mentions the controller file and the plugin.rb file.&lt;br /&gt;&lt;br /&gt;
Apparently plugin.rb is not loaded when you go to the controller directly. I wish sidebars worked more like the TextFilters.  I tried to hack it up, but didn't have much success.  I do notice that while the TextFilters are technically plugins, the controller for them lives inside the main &lt;a href="http://typo.leetsoft.com"&gt;Typo&lt;/a&gt; application, whereas the sidebar controller lives in the components directory...  Long story short I've asked for help on the typo mailing list.&lt;br /&gt;&lt;br /&gt;
In the meantime I've been researching ways to display polling results.  &lt;a href="http://openlaszlo.org"&gt;OpenLaszlo&lt;/a&gt; looked like a great candidate for this, especially for fitting into the small amount of real estate a sidebar allows. I had high hopes for its &lt;a href="http://wiki.openlaszlo.org/Charting_Components_API#piechart"&gt;PieChart control&lt;/a&gt;, but it is still beta quality.  I messed around with it a bit, but I wasn't satisfied with how it looks and also mouse events aren't supported yet.  I spent quite a bit of time getting the demo up and running mostly because when you check it out from source some of the files have moved and thus the demos don't work.  I will be keeping an eye on this project though especially now that there is a &lt;a href="http://www.rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt; integration &lt;a href="http://laszlo-plugin.rubyforge.org/"&gt;gem available&lt;/a&gt; from &lt;a href="http://osteele.com/projects/"&gt;Oliver Steele&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;
Better news for Horizontal CSS graphing though.  I was able to implement a helper based on &lt;a href="http://nubyonrails.topfunky.com/"&gt;Geoff Grosenbach's&lt;/a&gt; &lt;a href="http://nubyonrails.topfunky.com/articles/2006/01/11/css-graphs-come-and-get-em"&gt;Vertical Bar CSS graphing code&lt;/a&gt;. At this point I will just be excited to see something show up in the sidebar for results...  (grumble)</description>
      <pubDate>Tue, 24 Jan 2006 05:36:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:d5a8c977-bc23-4991-b610-d4b0133b4d26</guid>
      <author>Steve Longdo</author>
      <link>http://www.stevelongdo.com/articles/2006/01/24/polling-plugin-for-typo-iii</link>
      <category>ajax</category>
      <category>laszlo</category>
      <category>plugin</category>
      <category>poll</category>
      <category>ruby</category>
      <category>rails</category>
      <category>typo</category>
      <trackback:ping>http://www.stevelongdo.com/articles/trackback/65</trackback:ping>
    </item>
  </channel>
</rss>
