<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Cantoni.org</title>
<link>http://www.cantoni.org/</link>
<atom:link rel="self" type="application/rss+xml" href="http://www.cantoni.org/rss.xml" />
<description>Brian Cantoni writes about cool web software, interesting mobile websites, and sports when possible.</description>
<language>en-us</language>
<copyright>Copyright 2010 Brian Cantoni</copyright>
<creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license>
<lastBuildDate>Fri, 26 Feb 2010 15:42:00 -0800</lastBuildDate>
<pubDate>Fri, 26 Feb 2010 16:04:36 -0800</pubDate><generator>http://www.movabletype.org/?v=4.34-en</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 
<item>
<title>Lorem Ipsum Text via YQL</title>
<link>http://www.cantoni.org/2010/02/26/lorem-ipsum-yql</link>
<description>Still finding more reasons to play with and learn YQL, and following up from my experiment with random numbers, today I implemented YQL support for lipsum.com, a &quot;Lorem Ipsum&quot; text generator. (261 Words)</description>
<guid isPermaLink="true">http://www.cantoni.org/2010/02/26/lorem-ipsum-yql</guid>
<content:encoded><![CDATA[<p>Still finding more reasons to play with and learn <a href="http://developer.yahoo.com/yql/" title="Yahoo! Query Language">YQL</a>, and following up from my experiment with <a href="http://www.cantoni.org/2010/02/22/random-numbers-via-yql" title="Random Numbers via YQL, Cantoni.org, 2010-02-22">random numbers</a>, today I implemented YQL support for <a href="http://lipsum.com/" title="Lorem Ipsum Generator">lipsum.com</a>, a &#8220;Lorem Ipsum&#8221; text generator.</p>

<p>What is Lorem Ipsum text? The lipsum.com site explains:</p>

<blockquote>
  <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry&#8217;s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
</blockquote>

<p>I made a simple custom data table to access this service via YQL. To use these services, you&#8217;ll need to reference the custom table I created, then &#8220;select&#8221; some random text. The service can create text in a specified amount of either paragraphs, words, bytes, or lists. You can also control whether or not you want each string to start at &#8220;lorem ipsum&#8230;&#8221;, or to start randomly.</p>

<p>For example, to request 5 paragraphs (try it in <a href="http://bit.ly/aqMQiU">YQL Console</a>):</p>

<pre>use "http://scooterlabs.com/yql/lorem.ipsum.xml";
select * from lorem.ipsum 
  where amount="5" and what="paras";
</pre>

<p>To request 20 lists (try it in <a href="http://bit.ly/czkuNs">YQL Console</a>):</p>

<pre>use "http://scooterlabs.com/yql/lorem.ipsum.xml";
select * from lorem.ipsum
  where amount="20" and what="lists";
</pre>


]]></content:encoded>
<category>Web</category>
<pubDate>Fri, 26 Feb 2010 15:42:00 -0800</pubDate>
</item><item>
<title>Random Numbers via YQL</title>
<link>http://www.cantoni.org/2010/02/22/random-numbers-via-yql</link>
<description>I recently discovered a very cool random number generator site appropriately called Random.org. After poking around a bit at the various generators available on the site, I created a custom data table to access these random number services via Yahoo&apos;s YQL engine. (232 Words)</description>
<guid isPermaLink="true">http://www.cantoni.org/2010/02/22/random-numbers-via-yql</guid>
<content:encoded><![CDATA[<p>I recently discovered a very cool random number generator site appropriately called <a href="http://www.random.org/" title="Random.org - True Random Number Service">Random.org</a>. After poking around a bit at the various generators available on the site, I discovered they also have a simple &#8220;http service&#8221; and sample client apps which use it.</p>

<p>As a quick exercise, I made custom data tables to access these random number services via <a href="http://developer.yahoo.com/yql/" title="Yahoo! Query Language">YQL</a>, Yahoo&#8217;s &#8220;select * from internet&#8221; service. To use these services in YQL, you&#8217;ll need to include the custom tables I created, then &#8220;select&#8221; some random numbers.</p>

<p>For example, to request a few random numbers (try it in <a href="http://bit.ly/aPVjIK">YQL Console</a>):</p>

<pre>use "http://scooterlabs.com/yql/random.integers.xml";
select * from random.integers 
  where num="10" and min="1" and max="1000";
</pre>

<p>To request a random sequence, where every number in the range is used once (try it in <a href="http://bit.ly/cciWK0">YQL Console</a>):</p>

<pre>use "http://scooterlabs.com/yql/random.sequences.xml";
select * from random.sequences 
  where min="10" and max="19";
</pre>

<p>To generate some random strings (try it in <a href="http://bit.ly/cqFvq2">YQL Console</a>):</p>

<pre>use "http://scooterlabs.com/yql/random.strings.xml";
select * from random.strings 
  where num="10" and len="20";
</pre>

<p>For a full description of each service, and more optional parameters, refer to the <a href="http://www.random.org/clients/http/" title="Random.org HTTP Interface Description">Random.org HTTP interface description</a>.</p>

<p><em>Update 2010-02-25: I heard back from the owner of the Random.org site who said he has been blocking all Yahoo! Pipes traffic. So, this YQL query may stop working at some point.</em></p>


]]></content:encoded>
<category>Software</category>
<pubDate>Mon, 22 Feb 2010 14:11:40 -0800</pubDate>
</item><item>
<title>RSS to CSV Converter</title>
<link>http://www.cantoni.org/2009/12/22/rss-to-csv-converter</link>
<description>Recently @tonyadam was asking about for a way to import Twitter search results into Excel via RSS or CSV. I couldn&#8217;t find a suitable method on my slightly out of date Excel 2003, but sent Tony a link explaining how Excel 2007 could get him closer to what he wants. Turns out he was on the Mac anyways, so we... (287 Words)</description>
<guid isPermaLink="true">http://www.cantoni.org/2009/12/22/rss-to-csv-converter</guid>
<content:encoded><![CDATA[<p>Recently <a href="http://twitter.com/tonyadam" title="Tony Adam (tonyadam) on Twitter">@tonyadam</a> was asking about for a way to import Twitter search results into Excel via RSS or CSV. I couldn&#8217;t find a suitable method on my slightly out of date Excel 2003, but sent Tony a link explaining how Excel 2007 could get him closer to what he wants. Turns out he was on the Mac anyways, so we needed an alternative way.</p>

<p>Importing into Excel usual involves using the CSV format. So all we needed was an RSS to CSV format converter, but surprisingly couldn&#8217;t find anything relevant on the web. In general there isn&#8217;t much interest in XML to CSV conversion because it would only make sense for the simplest of XML files &#8212; basically, one table with rows &amp; columns. Anything more complicated won&#8217;t fit within the confines of CSV.</p>

<p>To solve this problem, I created an <a href="http://scooterlabs.com/hacks/rss2csv.php" title="RSS to CSV Converter">RSS to CSV converter</a> script, using a bit of <a href="http://developer.yahoo.com/yql/" title="Yahoo! Query Language (YQL)">YQL</a> for the feed fetching and parsing.</p>

<p>We can test it using Tony&#8217;s original request &#8212; Twitter search results &#8212; as follows:</p>

<ol>
<li>Login to twitter</li>
<li>Search for something (my sample: nascar)</li>
<li>On the right-hand side, copy the &#8220;RSS feed for this query link&#8221;</li>
<li>Go to <a href="http://scooterlabs.com/hacks/rss2csv.php" title="RSS to CSV Converter">RSS to CSV converter</a></li>
<li>Paste in Twitter RSS link, changing &#8220;.atom&#8221; to &#8220;.rss&#8221; (my sample: http://search.twitter.com/search.rss?q=nascar)</li>
<li>Click Submit</li>
<li>Save CSV file when prompted, or import into Excel</li>
</ol>

<p>One problem I discovered (again) is that Excel is not happy with Unicode characters in CSV format. There are some alternatives described, so I may enhance this script to properly handle UTF-8 if someone has a use-case for it.</p>


]]></content:encoded>
<category>Software</category>
<pubDate>Tue, 22 Dec 2009 13:44:30 -0800</pubDate>
</item><item>
<title>Private Browsing as a Developer Tool</title>
<link>http://www.cantoni.org/2009/12/15/private-browsing</link>
<description>Having spent the better part of today debugging a problem with cookies on a couple different servers, I stumbled on the fact that the &#8220;Private Browsing&#8221; feature of Firefox was exceptionally handy for my situation. Private browsing is usually touted as a feature for &#8220;porn browsing&#8221;, or other activities in which you&#8217;re trying to not leave a trail. The same... (131 Words)</description>
<guid isPermaLink="true">http://www.cantoni.org/2009/12/15/private-browsing</guid>
<content:encoded><![CDATA[<p>Having spent the better part of today debugging a problem with cookies on a couple different servers, I stumbled on the fact that the &#8220;<a href="http://search.yahoo.com/search?p=private+browsing&amp;ei=UTF-8" title="Search internet for 'Private Browsing'">Private Browsing</a>&#8221; feature of Firefox was exceptionally handy for my situation. Private browsing is usually touted as a feature for &#8220;porn browsing&#8221;, or other activities in which you&#8217;re trying to not leave a trail. The same cleanroom features make it ideal for testing and developing web applications.</p>

<p>In a typical case where you&#8217;d need to clear browser history, clear cookies, and so on, I would usually keep one browser set up with developer tools (bugs, twiki, etc.), and launch another browser to be the guinea pig. With private browsing, I can now use my preferred browser (Firefox) for both cases.</p>


]]></content:encoded>
<category>Web</category>
<pubDate>Tue, 15 Dec 2009 19:48:58 -0800</pubDate>
</item><item>
<title>Local Flash Files Reveal Browsing History</title>
<link>http://www.cantoni.org/2009/09/03/local_flash_files_reveal_browsing_history</link>
<description>While doing some housekeeping cleanup on my Windows laptop, I noticed an interesting set of files under the Adobe/Macromedia Flash section in &quot;Application Data&quot;. Inside a directory called `#SharedObjects` was a set of sub-directories named after domains I had visited. Each directory contained one or more `.sol` files which I discovered are Local Shared Objects, basically local data storage for Flash components. (186 Words)</description>
<guid isPermaLink="true">http://www.cantoni.org/2009/09/03/local_flash_files_reveal_browsing_history</guid>
<content:encoded><![CDATA[<p>While doing some housekeeping cleanup on my Windows laptop, I noticed an interesting set of files under the Adobe/Macromedia Flash section in &#8220;Application Data&#8221;. Inside a directory called <code>#SharedObjects</code> was a set of sub-directories named after domains I had visited. Each directory contained one or more <code>.sol</code> files which I discovered are <a href="http://en.wikipedia.org/wiki/Local_Shared_Object" title="Local Shared Object, Wikipedia">Local Shared Objects</a>, basically local data storage for Flash components.</p>

<p>I&#8217;m not so worried about the privacy aspects of the sites using this local storage; it&#8217;s very similar to the issues with normal browser cookies. The surprising thing was the existence of this file set, essentially revealing all of the sites you had ever visited. In my case I had 217 unique domains from November 2007 through today.</p>

<p>For more info, see the recent article on Wired: <a href="http://www.wired.com/epicenter/2009/08/you-deleted-your-cookies-think-again/" title="You Deleted Your Cookies? Think Again, 2009-08-10, wired.com">You Deleted Your Cookies? Think Again</a>, or the Adobe article <a href="http://www.adobe.com/products/flashplayer/articles/lso/" title="What are local shared objects?">What are local shared objects?</a>. In the meantime, if you care about keeping your browsing history safe, remember to clear out these files regularly.</p>

<p><img alt="Screenshot of flash shared objects sub-directories" src="http://www.cantoni.org/images/flash-shared-objects.png" width="164" height="335" class="mt-image-none" style="" /></p>


]]></content:encoded>
<category>Web</category>
<pubDate>Thu, 03 Sep 2009 10:11:35 -0800</pubDate>
</item><item>
<title>Cash for Clunkers Market Distribution</title>
<link>http://www.cantoni.org/2009/08/27/cash_for_clunkers_market_distribution</link>
<description>Here&apos;s a quick comparison of the market share for US auto sales compared with participation in the Car Allowance Rebate System (aka &quot;Cash for Clunkers&quot;). The distribution of rebates among top manufacturers tracks pretty closely to their recent market share. But, if you look closely, you&apos;ll see that GM, Ford, and Chrysler are all slightly below expectations, while all the imports (except VW) are above. Conclusion: import manufacturers got a larger share of the incentive program than their general market share would anticipate. (108 Words)</description>
<guid isPermaLink="true">http://www.cantoni.org/2009/08/27/cash_for_clunkers_market_distribution</guid>
<content:encoded><![CDATA[<p>Here&#8217;s a quick comparison of the market share for US auto sales compared with participation in the Car Allowance Rebate System (aka &#8220;Cash for Clunkers&#8221;).</p>

<p>The distribution of rebates among top manufacturers tracks pretty closely to their recent market share. But, if you look closely, you&#8217;ll see that GM, Ford, and Chrysler are all slightly below expectations, while all the imports (except VW) are above.</p>

<p>Conclusion: import manufacturers got a larger share of the incentive program than their general market share would anticipate.</p>

<p><img alt='Chart comparing market share numbers with CARS data' src='http://www.diychart.com/Image/a6ba967c-f8d0-4d9e-a4d1-fb749a3df9b9.png'/></p>

<p>Data sources:</p>

<ul>
<li>Market share (July 2009), <a href="http://online.wsj.com/mdc/public/page/2_3022-autosales.html">Wall Street Journal online</a></li>
<li>Cash for Clunkers data (August 26 2009), <a href="http://www.cars.gov/official-information">CARS website</a></li>
</ul>


]]></content:encoded>
<category>Government</category>
<pubDate>Thu, 27 Aug 2009 08:47:59 -0800</pubDate>
</item><item>
<title>Palm Desktop to Outlook: Better Contacts Migration</title>
<link>http://www.cantoni.org/2009/08/22/palm-desktop-outlook-contacts</link>
<description>Having switched phones recently from an aging Treo 650 to a BlackBerry 8830, I once again put myself in the mess of transferring my calendar and contacts from one device to the other. (336 Words)</description>
<guid isPermaLink="true">http://www.cantoni.org/2009/08/22/palm-desktop-outlook-contacts</guid>
<content:encoded><![CDATA[<p>Having switched phones recently from an aging Treo 650 to a BlackBerry 8830, I once again put myself in the mess of transferring my calendar and contacts from one device to the other. In the past I&#8217;ve switched between Palm Desktop and Outlook by careful use of the Palm&#8217;s HotSync conduits. With the switch to a BlackBerry, those old tricks weren&#8217;t available. Luckily I was already syncing my Calendar with Outlook, so that left the migration of Contacts for me to solve.</p>  <p>I tried the old trusty CSV file export/import path, but even after painstakingly assigning field names to columns, the results were still jumbled (home phone number labeled as Work, and so on). The Palm Desktop CSV import/export process still has a few bugs in it, including not being able to reliably label the exported fields.</p>  <p>Enter vCard. Palm Desktop does have vCard support (for single or multiple contacts), and does fill in the fields more accurately. And Outlook accepts them as an import format. The only hitch was that Outlook can only handle vCard files with a single contact. Rather than repeat that process for several hundred contacts, I tried (then bought) <a href="http://www.vcard-import-export.com/">vCard ImportExport</a> by Topalt.com. This simple Outlook add-in lets Outlook handle vCards with multiple contacts.</p>  <p>With my new vCard software in hand, here&#8217;s the process that ultimately worked best for transferring my contacts from Palm Desktop to Outlook:</p>  <ol>   <li>In Palm Desktop, export each category of contacts to its own vCard (.vcf) file (e.g., Personal category -&gt; personal.vcf) </li>    <li>In Outlook, use vCard ImportExport to import the first category vCard file </li>    <li>Select all contacts just imported and assign to that category (normally they come in with no category assigned) </li>    <li>Repeat steps 2-3 for remaining categories </li> </ol>  <p>The only problem I encountered was that the Notes field from the Palm Desktop side ended up in Notes <u>and</u> in Web Page fields in Outlook. Not sure if this is a bug with the importer, or Outlook itself. I wrote a quick Outlook macro to clean those up.</p>


]]></content:encoded>
<category>Mobile</category>
<pubDate>Sat, 22 Aug 2009 00:14:46 -0800</pubDate>
</item><item>
<title>Yahoo! 360° Closing Today</title>
<link>http://www.cantoni.org/2009/07/13/yahoo_360_closing_today</link>
<description>Today is the last day the Yahoo! 360° service will be online; last chance to download or migrate old blog content over to the new Yahoo! Profiles service. (193 Words)</description>
<guid isPermaLink="true">http://www.cantoni.org/2009/07/13/yahoo_360_closing_today</guid>
<content:encoded><![CDATA[<p>The Yahoo! 360° blogging/profile/social networking product launched in April 2005. After about 2 years, talk of closing down the service began, but was delayed until there was a similar product to which existing users could switch. Now, 2 years after <em>that</em> announcement, the closure is finally here. Today is the last day 360° will be online and available for users to download or migrate their old blog content over to the new Yahoo! Profiles.</p>

<p>I did not work on Yahoo! 360­°, nor was I a serious user of it. I&#8217;m sure a lot of existing users are frustrated either because Profiles doesn&#8217;t do what they want, or the simple fact that it&#8217;s just <em>different</em>. I will say that if a product like this is no longer a high priority internally and does not have a clear future, it&#8217;s really best to close it down (in an orderly fashion) and redirect those internal resources elsewhere. Even without any new feature development, the ops impact alone for keeping a service like this online is pretty significant.</p>

<p><img src="http://www.cantoni.org/images/yahoo-360-close.png" width="500" height="380" alt="Yahoo! 360 Closure Notice Screenshot" /></p>

<p>For those that are looking for help with 360° migration or other issues, please see the <a href="http://help.yahoo.com/l/us/yahoo/360/">online help</a>.</p>


]]></content:encoded>
<category>Web</category>
<pubDate>Mon, 13 Jul 2009 13:09:26 -0800</pubDate>
</item><item>
<title>5 Years at Yahoo!</title>
<link>http://www.cantoni.org/2009/05/06/5-years-yahoo</link>
<description> (0 Words)</description>
<guid isPermaLink="true">http://www.cantoni.org/2009/05/06/5-years-yahoo</guid>
<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/svenwerk/369136782/" title="5 by svenwerk, on Flickr"><img src="http://farm1.static.flickr.com/115/369136782_35c1fd8b8e.jpg" width="370" height="500" alt="5" /></a></p>


]]></content:encoded>
<category>Career</category>
<pubDate>Wed, 06 May 2009 16:48:29 -0800</pubDate>
</item><item>
<title>Cantoni.mobi Redesign</title>
<link>http://www.cantoni.org/2009/02/25/cantoni-mobi-redesign</link>
<description>My Cantoni.mobi mobile website resource site has been cruising along with a growing user base and a steady stream of suggested new sites. I wanted to stick with the original one-page design as long as possible, but finally I realized the page size was just too large. With over 300 links, the page weighed in at almost 22KB. Worse, I... (164 Words)</description>
<guid isPermaLink="true">http://www.cantoni.org/2009/02/25/cantoni-mobi-redesign</guid>
<content:encoded><![CDATA[<p>My <a href="http://cantoni.mobi/" title="Mobile website list - Cantoni.mobi">Cantoni.mobi</a> mobile website resource site has been cruising along with a growing user base and a steady stream of suggested new sites. I wanted to stick with the original one-page design as long as possible, but finally I realized the page size was just too large. With over 300 links, the page weighed in at almost 22KB. Worse, I found it increasingly difficult to navigate within the page because the links list was just too long.</p>

<p>Tonight I&#8217;m releasing a big update to the site: we now have a &#8220;home&#8221; or index page at <a href="http://cantoni.mobi/" title="Mobile website list - Cantoni.mobi">Cantoni.mobi</a>. The home page has a list of categories, each of which are now on their own page. The structure is to simply add the category name in the URL, so News junkies for example could bookmark: http://cantoni.mobi/news/.</p>

<p>With the split, the home page is once again really lightweight (under 3KB) while the category pages are all under 8KB each.</p>

<p><a href="http://cantoni.mobi/" title="Mobile website list - Cantoni.mobi"><img alt="Cantoni.mobi redesign screenshot" src="http://www.cantoni.org/images/cantoni-mobi-redesign.png" width="440" height="409" class="mt-image-none" style="" /></a></p>


]]></content:encoded>
<category>Mobile</category>
<pubDate>Wed, 25 Feb 2009 00:44:48 -0800</pubDate>
</item>
</channel>
</rss>