<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Cafe Silencio</title>
	<atom:link href="http://www.cafesilencio.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cafesilencio.net/blog</link>
	<description>Adventures In Developing Rich Internet Applications</description>
	<pubDate>Fri, 26 Mar 2010 12:17:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Easy file sharing with Kaze Cloud</title>
		<link>http://www.cafesilencio.net/blog/easy-file-sharing-with-kaze-cloud</link>
		<comments>http://www.cafesilencio.net/blog/easy-file-sharing-with-kaze-cloud#comments</comments>
		<pubDate>Mon, 22 Mar 2010 16:08:11 +0000</pubDate>
		<dc:creator>seth</dc:creator>
		
		<category><![CDATA[Adobe AIR]]></category>

		<category><![CDATA[AIR]]></category>

		<category><![CDATA[file sharing]]></category>

		<category><![CDATA[file tranferring]]></category>

		<category><![CDATA[S3]]></category>

		<guid isPermaLink="false">http://www.cafesilencio.net/blog/?p=318</guid>
		<description><![CDATA[Very often when working with clients I have a need to send them files or get files from them. This is never a convenient experience.  I have to setup an FTP account on my server and then send the user info to my client.  Very often my client doesn&#8217;t have an FTP client or know [...]]]></description>
			<content:encoded><![CDATA[<p>Very often when working with clients I have a need to send them files or get files from them. This is never a convenient experience.  I have to setup an FTP account on my server and then send the user info to my client.  Very often my client doesn&#8217;t have an FTP client or know how to use FTP so the whole thing gets more complicated than it needs to be and takes a lot of my time.</p>
<p>I decided I could streamline this process by creating a simple to use file sharing application using Adobe&#8217;s AIR platform and Amazon.com&#8217;s S3 file storage service.</p>
<p>My goal was to develop an application that would be easy to use and secure.  Thus Kaze Cloud was born.</p>
<p><a title="Link to Kaze Cloud file sharing page" href="http://www3.kazecloud.com" target="_blank">Using Kaze Cloud to share files is simple</a>.  With the admin. application you create storage destinations where you and your clients/colleagues can upload/download files.  When a storage destination is created a pass key is generated which allows individuals using the client application to access the storage destination to upload/download files.  <a title="tutorial page for kaze cloud file sharing program" href="http://www3.kazecloud.com/tutorial.html" target="_blank">With Kaze Cloud the transferring of files is done securely and the files are stored securely in S3</a>.</p>
<p>After creating the file storage destination with the admin. tool you simply send the pass key along with the URL to download the client application ( Kaze Cloud generates the instructions for you ) to you client.  After he/she downloads the free Kaze Cloud client application and enters the pass key you generated, the file destination in S3 is available for uploading/downloading via drag and drop.</p>
<p>When you are finished you simply delete the file destination you created and it is no longer accessible.</p>
<p>I&#8217;ve already been using this application with my clients and the feedback from them has been positive.  Not only has it been easy for them to use but it has made my life less complicated than using FTP.</p>
<p>Head over to the <a href="http://www3.kazecloud.com" target="_blank">Kaze Cloud website</a> and give the program a try.  I&#8217;m sure you will find it useful as well. This is a program I&#8217;m very excited about because it&#8217;s the type of tool I&#8217;ll use on an almost daily basis.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cafesilencio.net/blog/easy-file-sharing-with-kaze-cloud/feed</wfw:commentRss>
		</item>
		<item>
		<title>Actionscript utility to get the mime type of a file</title>
		<link>http://www.cafesilencio.net/blog/actionscript-utility-to-get-the-mime-type-of-a-file</link>
		<comments>http://www.cafesilencio.net/blog/actionscript-utility-to-get-the-mime-type-of-a-file#comments</comments>
		<pubDate>Wed, 02 Sep 2009 18:49:06 +0000</pubDate>
		<dc:creator>seth</dc:creator>
		
		<category><![CDATA[actionscript]]></category>

		<category><![CDATA[code snippets]]></category>

		<category><![CDATA[mime type]]></category>

		<guid isPermaLink="false">http://www.cafesilencio.net/blog/?p=312</guid>
		<description><![CDATA[On more than one occasion during my Flex development I&#8217;ve found myself needing to get the mime type of a file and I have never been able to find a utility to generate it for me.  So I wrote the method below that very simply returns the mime type based on the file extension. [...]]]></description>
			<content:encoded><![CDATA[<p>On more than one occasion during my Flex development I&#8217;ve found myself needing to get the mime type of a file and I have never been able to find a utility to generate it for me.  So I wrote the method below that very simply returns the mime type based on the file extension.  It doesn&#8217;t contain every mime type known but it&#8217;s a pretty good list and a good starting point that ought to save others a lot of typing.  Just paste the method below into your class and use/modify as you wish.</p>
<pre class="prettyprint">
		public static function getMimeTypeFromExtension(ext:String):String
		{
			var mimeType:String = "";
			switch(ext.toLocaleLowerCase())
			{
				case "stl":
					mimeType = "application/SLA";
				break;
				case "stp":
					mimeType = "application/STEP";
				break;
				case "step":
					mimeType = "application/STEP";
				break;
				case "dwg":
					mimeType = "application/acad";
				break;
				case "ez":
					mimeType = "application/andrew-inset";
				break;
				case "ccad":
					mimeType = "application/clariscad";
				break;
				case "drw":
					mimeType = "application/drafting";
				break;
				case "tsp":
					mimeType = "application/dsptype";
				break;
				case "dxf":
					mimeType = "application/dxf";
				break;
				case "xls":
					mimeType = "application/excel";
				break;
				case "unv":
					mimeType = "application/i-deas";
				break;
				case "jar":
					mimeType = "application/java-archive";
				break;
				case "hqx":
					mimeType = "application/mac-binhex40";
				break;
				case "cpt":
					mimeType = "application/mac-compactpro";
				break;
				case "pot":
					mimeType = "application/vnd.ms-powerpoint";
				break;
				case "pps":
					mimeType = "application/vnd.ms-powerpoint";
				break;
				case "ppt":
					mimeType = "application/vnd.ms-powerpoint";
				break;
				case "ppz":
					mimeType = "application/vnd.ms-powerpoint";
				break;
				case "doc":
					mimeType = "application/msword";
				break;
				case "bin":
					mimeType = "application/octet-stream";
				break;
				case "class":
					mimeType = "application/octet-stream";
				break;
				case "dms":
					mimeType = "application/octet-stream";
				break;
				case "exe":
					mimeType = "application/octet-stream";
				break;
				case "lha":
					mimeType = "application/octet-stream";
				break;
				case "lzh":
					mimeType = "application/octet-stream";
				break;
				case "oda":
					mimeType = "application/oda";
				break;
				case "ogg":
					mimeType = "application/ogg";
				break;
				case "ogm":
					mimeType = "application/ogg";
				break;
				case "pdf":
					mimeType = "application/pdf";
				break;
				case "pgp":
					mimeType = "application/pgp";
				break;
				case "ai":
					mimeType = "application/postscript";
				break;
				case "eps":
					mimeType = "application/postscript";
				break;
				case "ps":
					mimeType = "application/postscript";
				break;
				case "prt":
					mimeType = "application/pro_eng";
				break;
				case "rtf":
					mimeType = "application/rtf";
				break;
				case "set":
					mimeType = "application/set";
				break;
				case "smi":
					mimeType = "application/smil";
				break;
				case "smil":
					mimeType = "application/smil";
				break;
				case "sol":
					mimeType = "application/solids";
				break;
				case "vda":
					mimeType = "application/vda";
				break;
				case "mif":
					mimeType = "application/vnd.mif";
				break;
				case "xlc":
					mimeType = "application/vnd.ms-excel";
				break;
				case "xll":
					mimeType = "application/vnd.ms-excel";
				break;
				case "xlm":
					mimeType = "application/vnd.ms-excel";
				break;
				case "xls":
					mimeType = "application/vnd.ms-excel";
				break;
				case "xlw":
					mimeType = "application/vnd.ms-excel";
				break;
				case "cod":
					mimeType = "application/vnd.rim.cod";
				break;
				case "arj":
					mimeType = "application/x-arj-compressed";
				break;
				case "bcpio":
					mimeType = "application/x-bcpio";
				break;
				case "vcd":
					mimeType = "application/x-cdlink";
				break;
				case "pgn":
					mimeType = "application/x-chess-pgn";
				break;
				case "cpio":
					mimeType = "application/x-cpio";
				break;
				case "csh":
					mimeType = "application/x-csh";
				break;
				case "deb":
					mimeType = "application/x-debian-package";
				break;
				case "dcr":
					mimeType = "application/x-director";
				break;
				case "dir":
					mimeType = "application/x-director";
				break;
				case "dxr":
					mimeType = "application/x-director";
				break;
				case "dvi":
					mimeType = "application/x-dvi";
				break;
				case "pre":
					mimeType = "application/x-freelance";
				break;
				case "spl":
					mimeType = "application/x-futuresplash";
				break;
				case "gtar":
					mimeType = "application/x-gtar";
				break;
				case "gz":
					mimeType = "application/x-gzip";
				break;
				case "hdf":
					mimeType = "application/x-hdf";
				break;
				case "ipx":
					mimeType = "application/x-ipix";
				break;
				case "ips":
					mimeType = "application/x-ipscript";
				break;
				case "js":
					mimeType = "application/x-javascript";
				break;
				case "skd":
					mimeType = "application/x-koan";
				break;
				case "skm":
					mimeType = "application/x-koan";
				break;
				case "skp":
					mimeType = "application/x-koan";
				break;
				case "skt":
					mimeType = "application/x-koan";
				break;
				case "latex":
					mimeType = "application/x-latex";
				break;
				case "lsp":
					mimeType = "application/x-lisp";
				break;
				case "scm":
					mimeType = "application/x-lotusscreencam";
				break;
				case "mif":
					mimeType = "application/x-mif";
				break;
				case "bat":
					mimeType = "application/x-msdos-program";
				break;
				case "com":
					mimeType = "application/x-msdos-program";
				break;
				case "exe":
					mimeType = "application/x-msdos-program";
				break;
				case "cdf":
					mimeType = "application/x-netcdf";
				break;
				case "nc":
					mimeType = "application/x-netcdf";
				break;
				case "pl":
					mimeType = "application/x-perl";
				break;
				case "pm":
					mimeType = "application/x-perl";
				break;
				case "rar":
					mimeType = "application/x-rar-compressed";
				break;
				case "sh":
					mimeType = "application/x-sh";
				break;
				case "shar":
					mimeType = "application/x-shar";
				break;
				case "swf":
					mimeType = "application/x-shockwave-flash";
				break;
				case "sit":
					mimeType = "application/x-stuffit";
				break;
				case "sv4cpio":
					mimeType = "application/x-sv4cpio";
				break;
				case "sv4crc":
					mimeType = "application/x-sv4crc";
				break;
				case "tar.gz":
					mimeType = "application/x-tar-gz";
				break;
				case "tgz":
					mimeType = "application/x-tar-gz";
				break;
				case "tar":
					mimeType = "application/x-tar";
				break;
				case "tcl":
					mimeType = "application/x-tcl";
				break;
				case "tex":
					mimeType = "application/x-tex";
				break;
				case "texi":
					mimeType = "application/x-texinfo";
				break;
				case "texinfo":
					mimeType = "application/x-texinfo";
				break;
				case "man":
					mimeType = "application/x-troff-man";
				break;
				case "me":
					mimeType = "application/x-troff-me";
				break;
				case "ms":
					mimeType = "application/x-troff-ms";
				break;
				case "roff":
					mimeType = "application/x-troff";
				break;
				case "t":
					mimeType = "application/x-troff";
				break;
				case "tr":
					mimeType = "application/x-troff";
				break;
				case "ustar":
					mimeType = "application/x-ustar";
				break;
				case "src":
					mimeType = "application/x-wais-source";
				break;
				case "zip":
					mimeType = "application/x-zip-compressed";
				break;
				case "zip":
					mimeType = "application/zip";
				break;
				case "tsi":
					mimeType = "audio/TSP-audio";
				break;
				case "au":
					mimeType = "audio/basic";
				break;
				case "snd":
					mimeType = "audio/basic";
				break;
				case "kar":
					mimeType = "audio/midi";
				break;
				case "mid":
					mimeType = "audio/midi";
				break;
				case "midi":
					mimeType = "audio/midi";
				break;
				case "mp2":
					mimeType = "audio/mpeg";
				break;
				case "mp3":
					mimeType = "audio/mpeg";
				break;
				case "mpga":
					mimeType = "audio/mpeg";
				break;
				case "au":
					mimeType = "audio/ulaw";
				break;
				case "aif":
					mimeType = "audio/x-aiff";
				break;
				case "aifc":
					mimeType = "audio/x-aiff";
				break;
				case "aiff":
					mimeType = "audio/x-aiff";
				break;
				case "m3u":
					mimeType = "audio/x-mpegurl";
				break;
				case "wax":
					mimeType = "audio/x-ms-wax";
				break;
				case "wma":
					mimeType = "audio/x-ms-wma";
				break;
				case "rpm":
					mimeType = "audio/x-pn-realaudio-plugin";
				break;
				case "ram":
					mimeType = "audio/x-pn-realaudio";
				break;
				case "rm":
					mimeType = "audio/x-pn-realaudio";
				break;
				case "ra":
					mimeType = "audio/x-realaudio";
				break;
				case "wav":
					mimeType = "audio/x-wav";
				break;
				case "pdb":
					mimeType = "chemical/x-pdb";
				break;
				case "xyz":
					mimeType = "chemical/x-pdb";
				break;
				case "ras":
					mimeType = "image/cmu-raster";
				break;
				case "gif":
					mimeType = "image/gif";
				break;
				case "ief":
					mimeType = "image/ief";
				break;
				case "jpe":
					mimeType = "image/jpeg";
				break;
				case "jpeg":
					mimeType = "image/jpeg";
				break;
				case "jpg":
					mimeType = "image/jpeg";
				break;
				case "png":
					mimeType = "image/png";
				break;
				case "tif":
					mimeType = "image/tiff";
				break;
				case "tiff":
					mimeType = "image/tiff";
				break;
				case "ras":
					mimeType = "image/x-cmu-raster";
				break;
				case "pnm":
					mimeType = "image/x-portable-anymap";
				break;
				case "pbm":
					mimeType = "image/x-portable-bitmap";
				break;
				case "pgm":
					mimeType = "image/x-portable-graymap";
				break;
				case "ppm":
					mimeType = "image/x-portable-pixmap";
				break;
				case "rgb":
					mimeType = "image/x-rgb";
				break;
				case "xbm":
					mimeType = "image/x-xbitmap";
				break;
				case "xpm":
					mimeType = "image/x-xpixmap";
				break;
				case "xwd":
					mimeType = "image/x-xwindowdump";
				break;
				case "iges":
					mimeType = "model/iges";
				break;
				case "igs":
					mimeType = "model/iges";
				break;
				case "mesh":
					mimeType = "model/mesh";
				break;
				case "":
					mimeType = "";
				break;
				case "msh":
					mimeType = "model/mesh";
				break;
				case "silo":
					mimeType = "model/mesh";
				break;
				case "vrml":
					mimeType = "model/vrml";
				break;
				case "wrl":
					mimeType = "model/vrml";
				break;
				case "css":
					mimeType = "text/css";
				break;
				case "htm":
					mimeType = "text/html";
				break;
				case "html":
					mimeType = "text/html";
				break;
				case "asc":
					mimeType = "text/plain";
				break;
				case "c":
					mimeType = "text/plain";
				break;
				case "cc":
					mimeType = "text/plain";
				break;
				case "f90":
					mimeType = "text/plain";
				break;
				case "f":
					mimeType = "text/plain";
				break;
				case "h":
					mimeType = "text/plain";
				break;
				case "hh":
					mimeType = "text/plain";
				break;
				case "m":
					mimeType = "text/plain";
				break;
				case "txt":
					mimeType = "text/plain";
				break;
				case "rtx":
					mimeType = "text/richtext";
				break;
				case "rtf":
					mimeType = "text/rtf";
				break;
				case "sgm":
					mimeType = "text/sgml";
				break;
				case "sgml":
					mimeType = "text/sgml";
				break;
				case "tsv":
					mimeType = "text/tab-separated-values";
				break;
				case "jad":
					mimeType = "text/vnd.sun.j2me.app-descriptor";
				break;
				case "etx":
					mimeType = "text/x-setext";
				break;
				case "xml":
					mimeType = "text/xml";
				break;
				case "dl":
					mimeType = "video/dl";
				break;
				case "fli":
					mimeType = "video/fli";
				break;
				case "flv":
					mimeType = "video/flv";
				break;
				case "gl":
					mimeType = "video/gl";
				break;
				case "mp2":
					mimeType = "video/mpeg";
				break;
				case "mp4":
					mimeType = "video/mp4";
				break;
				case "mpe":
					mimeType = "video/mpeg";
				break;
				case "mpeg":
					mimeType = "video/mpeg";
				break;
				case "mpg":
					mimeType = "video/mpeg";
				break;
				case "mov":
					mimeType = "video/quicktime";
				break;
				case "qt":
					mimeType = "video/quicktime";
				break;
				case "viv":
					mimeType = "video/vnd.vivo";
				break;
				case "vivo":
					mimeType = "video/vnd.vivo";
				break;
				case "fli":
					mimeType = "video/x-fli";
				break;
				case "asf":
					mimeType = "video/x-ms-asf";
				break;
				case "asx":
					mimeType = "video/x-ms-asx";
				break;
				case "wmv":
					mimeType = "video/x-ms-wmv";
				break;
				case "wmx":
					mimeType = "video/x-ms-wmx";
				break;
				case "wvx":
					mimeType = "video/x-ms-wvx";
				break;
				case "avi":
					mimeType = "video/x-msvideo";
				break;
				case "movie":
					mimeType = "video/x-sgi-movie";
				break;
				case "mime":
					mimeType = "www/mime";
				break;
				case "ice":
					mimeType = "x-conference/x-cooltalk";
				break;
				case "vrm":
					mimeType = "x-world/x-vrml";
				break;
				case "vrml":
					mimeType = "x-world/x-vrml";
				break;
				case "spx":
					mimeType = "audio/ogg";
				break;
			    default:
			    	mimeType = "application/unknown";
			    break;
			}
			return mimeType;
		}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.cafesilencio.net/blog/actionscript-utility-to-get-the-mime-type-of-a-file/feed</wfw:commentRss>
		</item>
		<item>
		<title>Exciting updates to SimpleDB Tool Bolso</title>
		<link>http://www.cafesilencio.net/blog/exciting-updates-to-simpledb-tool-bolso</link>
		<comments>http://www.cafesilencio.net/blog/exciting-updates-to-simpledb-tool-bolso#comments</comments>
		<pubDate>Sat, 21 Mar 2009 18:15:25 +0000</pubDate>
		<dc:creator>seth</dc:creator>
		
		<category><![CDATA[Adobe AIR]]></category>

		<category><![CDATA[Amazon SimpleDB]]></category>

		<category><![CDATA[Bolso]]></category>

		<category><![CDATA[Amazon]]></category>

		<category><![CDATA[explore]]></category>

		<category><![CDATA[simpleDB]]></category>

		<guid isPermaLink="false">http://www.cafesilencio.net/blog/?p=301</guid>
		<description><![CDATA[Version 1.3 of my SimpleDB tool Bolso has been released today and it has some great new features.  Firstly there is support for queries using SQL syntax which SimpleDB has recently begun supporting.  The original query method is still supported in Boslo and Amazon.com says they&#8217;ll continue to support but not enhance the [...]]]></description>
			<content:encoded><![CDATA[<p>Version 1.3 of my <a href="http://www.cafesilencio.net/bolso">SimpleDB tool Bolso</a> has been released today and it has some great new features.  Firstly there is support for queries using SQL syntax which SimpleDB has recently begun supporting.  The original query method is still supported in Boslo and Amazon.com says they&#8217;ll continue to support but not enhance the original query method for about 15 months.</p>
<p>The most interesting feature to ver. 1.3 is an enhanced data grid.  One of the aspects of a standard data grid I never liked as it related to SimpleDB was that there could be more than one attribute with the same name but different values.  For example an item could have an attribute name of &#8216;color&#8217; with a value of &#8216;blue&#8217; and also an attribute named &#8216;color with a value of &#8216;red&#8217;.  Typically data grids expect each row/column cell to have one value.  So in a standard data grid what to do?  This is one of the reasons I created a <a href="http://www.cafesilencio.net/bolso/treeview-user-interface-for-simpleDB.html">tree view for viewing SimpleDB data in Bolso</a>. So that it offered a different way of viewing the data that in some cases I think is more intuitive and easier to use.  In this release I added an enhanced data grid that can better accommodate  the SimpleDB feature of the same attribute name with multiple values.  Now for each row and column all of the attribute values for a given attribute name will be displayed without additional columns.</p>
<p>The enhanced data grid also has in-place edit fields so that each attribute value can be modified simply by clicking the field and then saving the item attributes.  This makes for quick editing of values especially if there&#8217;s a simple spelling error. </p>
<p>If you haven&#8217;t already tried using Bolso as an aid in exploring your SimpleDB contents then I suggest you give it a try.  There&#8217;s also a <a href="http://www.cafesilencio.net/bolso/bolso-simple-tutorial.html">tutorial page</a> illustrating the usage of the various features.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cafesilencio.net/blog/exciting-updates-to-simpledb-tool-bolso/feed</wfw:commentRss>
		</item>
		<item>
		<title>AWS Tools Cloudberry for S3</title>
		<link>http://www.cafesilencio.net/blog/aws-tools-cloudberry-for-s3</link>
		<comments>http://www.cafesilencio.net/blog/aws-tools-cloudberry-for-s3#comments</comments>
		<pubDate>Mon, 09 Mar 2009 21:44:43 +0000</pubDate>
		<dc:creator>seth</dc:creator>
		
		<category><![CDATA[stuff i learned]]></category>

		<guid isPermaLink="false">http://www.cafesilencio.net/blog/?p=289</guid>
		<description><![CDATA[While working on some enhancements for my SimpleDB explorer tool Bolso I started wondering what other Amazon Web Service tools were out there.  When I first came across S3 I considered writing a FTP-like tool for using it.  My schedule at the time was pretty full and I thought that FTP vendors would [...]]]></description>
			<content:encoded><![CDATA[<p>While working on some enhancements for my <a href="http://www.cafesilencio.net/bolso">SimpleDB explorer tool Bolso</a> I started wondering what other Amazon Web Service tools were out there.  When I first came across S3 I considered writing a FTP-like tool for using it.  My schedule at the time was pretty full and I thought that FTP vendors would be integrating S3 functionality into their existing applications so I decided not to pursue the project.</p>
<p>I spent some time recently searching out the S3 tools that have been developed.  I was curious what kind of functionality was available and if there was something available that was better than what I was already using.</p>
<p>One of the <a href="http://www.cloudberrylab.com/">S3 tools I found which is worth mentioning is CloudBerry explorer</a> for S3.  CloudBerry has some valuable functionality that goes beyond simple file transferring between the localhost computer and S3.  One of the features I really liked is that files can be transferred between buckets within S3, and at no cost.  This is really useful.  I often find myself having to make these kinds of transfers when I initially put files into the wrong bucket.  </p>
<p>It&#8217;s often the little features that make an application stand out among its rivals.  Another noteworthy feature in CloudBerry is the &#8216;weburl&#8217; function accessible by right-clicking on a file in S3.  While I&#8217;ve seen similar S3 programs offer the same basic feature there are two added features that are included that I think are really useful.  One is the CNAME text box with modifies the URL if I type in a domain name alias.  I use domain name aliases a lot when making S3 content available to websites.  Usually I&#8217;ll create a sub-domain called &#8216;images&#8217; for example and I&#8217;ll alias it with a CNAME pointing to S3.  This way the urls to the images look like http://images.mydomain.com but the files are actually stored in S3.  Offering that CNAME text box means I don&#8217;t have to modify the url after pasting into my browser ( or anywhere else ).  It&#8217;s a nice little feature that saves me a few seconds every time I use it.</p>
<p>Another sub-feature I like is that CloudBerry will generate a link to the file that has an expiration date.  This isn&#8217;t a process that can be done by hand since the expiration date has to be signed as part of the request.  I think the inclusion of something like this really shows the application designer(s) really thought about how their tool would be used and how they could make life easier for people.</p>
<p>Recently they added support in CloudBerry for their <a href="http://www.streamincloud.com">streamincloud FLV encoding service</a>.  Oh how I wish this would have been available to me a few months ago.  I had a project for a client that required video uploads and FLV encoding.  I had to do everything by hand with PHP and FFMPEG.  I could have saved so much time with a feature like this.  In fact as I write this I am thinking that I could use this service with another one of my clients soon.  They have been talking about adding video to their website.  So anyway, big things from CloudBerry Lab, keep an eye on them and check out their wares.</p>
<p>I only have one gripe about CloudBerry for S3, where&#8217;s the mac version?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cafesilencio.net/blog/aws-tools-cloudberry-for-s3/feed</wfw:commentRss>
		</item>
		<item>
		<title>Update to Actionscript SimpleDB Library for Adobe AIR</title>
		<link>http://www.cafesilencio.net/blog/update-to-actionscript-simpledb-library-for-adobe-air</link>
		<comments>http://www.cafesilencio.net/blog/update-to-actionscript-simpledb-library-for-adobe-air#comments</comments>
		<pubDate>Sun, 08 Mar 2009 14:35:36 +0000</pubDate>
		<dc:creator>seth</dc:creator>
		
		<category><![CDATA[Adobe AIR]]></category>

		<category><![CDATA[Amazon SimpleDB]]></category>

		<category><![CDATA[actionscript]]></category>

		<category><![CDATA[AIR]]></category>

		<category><![CDATA[Amazon]]></category>

		<category><![CDATA[api]]></category>

		<category><![CDATA[library]]></category>

		<category><![CDATA[simpleDB]]></category>

		<guid isPermaLink="false">http://www.cafesilencio.net/blog/?p=282</guid>
		<description><![CDATA[I&#8217;ve finally had a little time to update the opensource Actionscript library for SimpleDB I wrote some time back.  It now has support for the SQL syntax query method available in Amazon.com&#8217;s SimpleDB.  There&#8217;s also a bug fix for a defect in the library in which a query with multiple &#8216;!=&#8217; would generate [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finally had a little time to update the <a href="http://www.cafesilencio.net/blog/simpledb-library-for-adobe-air-actionscript">opensource Actionscript library for SimpleDB</a> I wrote some time back.  It now has support for the SQL syntax query method available in Amazon.com&#8217;s SimpleDB.  There&#8217;s also a bug fix for a defect in the library in which a query with multiple &#8216;!=&#8217; would generate an incorrect signature.</p>
<p>Although I think it&#8217;s great that Amazon has added support for SQL syntax in queries, they&#8217;ve announced that the <a href="http://developer.amazonwebservices.com/connect/ann.jspa?annID=409">previous query method will be deprecated</a>.  This is a real bummer because everybody who has created applications using the original query method now has to go back and retrofit their code so support the SQL syntax method.  Granted we have 15 months to do it but for those of us who have done work for clients we now have to go back rewrite a lot of code which not only takes time that often can&#8217;t be billed for, it leaves open the possibility of introducing bug in what might already be stable code.  If Amazon decided not to enhance the original query method but leave it in place I think that would be a much better decision.</p>
<p><a href="http://cafesilencio.s3.amazonaws.com/cafeSilencioSimpleDBLib.zip"><del datetime="2009-04-16T18:40:30+00:00">The SimpleDB Actionscript library can be downloaded here</del></a>.<br />
<a href="http://www.cafesilencio.net/blog/simple-tutorial-for-using-simpledb-actionscript-library">There is a tutorial illustrating the SimpleDB Actionscript library usage here</a>.</p>
<p>***UPDATE: <a href="http://code.google.com/p/actionscript-simpledb-library/">The latest source code for this SimpleDB Actionscript library can now be accessed  via google code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cafesilencio.net/blog/update-to-actionscript-simpledb-library-for-adobe-air/feed</wfw:commentRss>
		</item>
		<item>
		<title>SimpleDB library for Adobe Air / Actionscript</title>
		<link>http://www.cafesilencio.net/blog/simpledb-library-for-adobe-air-actionscript</link>
		<comments>http://www.cafesilencio.net/blog/simpledb-library-for-adobe-air-actionscript#comments</comments>
		<pubDate>Sun, 18 Jan 2009 13:33:43 +0000</pubDate>
		<dc:creator>seth</dc:creator>
		
		<category><![CDATA[Adobe AIR]]></category>

		<category><![CDATA[Amazon SimpleDB]]></category>

		<category><![CDATA[actionscript]]></category>

		<category><![CDATA[AIR]]></category>

		<category><![CDATA[Amazon]]></category>

		<category><![CDATA[Bolso]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[explore]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[simpleDB]]></category>

		<guid isPermaLink="false">http://www.cafesilencio.net/blog/?p=202</guid>
		<description><![CDATA[I&#8217;ve been working with Amazon.com&#8217;s SimpleDB webservice for some time now, developing a database exploration utility called Bolso using the Adobe AIR platform.  I haven&#8217;t had to make any modifications to my actionscript library for a while now so it&#8217;s feeling stable enough to release to the public.  So I&#8217;ve decided to make [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working with <a href="http://aws.amazon.com/simpledb/">Amazon.com&#8217;s SimpleDB</a> webservice for some time now, developing a database exploration utility called <a href="http://www.cafesilencio.net/bolso">Bolso</a> using the Adobe AIR platform.  I haven&#8217;t had to make any modifications to my actionscript library for a while now so it&#8217;s feeling stable enough to release to the public.  So I&#8217;ve decided to make the source code for accessing SimpleDB via actionscript available to other developers out there.  Hopefully others will find it useful and easy to use.  The source is available as well as a binary swc both are available under the Apache 2.0 license.  </p>
<p>I think the applications created on the Adobe AIR platform utilizing SimpleDB as the database layer make for an effective combination in many (but not all) situations.  From my observations a lot of the Flex/AIR developers out there are coming from Flash and are unfamiliar with working on the server side with php or ruby and mysql.  This SimpleDB library for actionscript makes it easy to incorporate a server side shared database into an Adobe AIR application without having to know a lot about server side development and maintenance.  If you haven&#8217;t yet checked out SimpleDB take a look at the Amazon website.  </p>
<p>As of this writing the actionscript library I&#8217;m making available has the following functionality:</p>
<ul>
<li>support for signature version 2</li>
<li>listing/creating/deleting domains</li>
<li>creation/deletion of items</li>
<li>creation/deletion of attributes</li>
<li>queries</li>
<li>support for <a href="http://www.mgateway.com/mdb.html">M/DB from M/Gateway</a></li>
</ul>
<p>I&#8217;ve also created a helpful <a href="http://www.cafesilencio.net/bolso">development tool called Bolso</a> which allows you to view the contents of your SimpleDB and test queries.  </p>
<p>NOTE: at this time the library does NOT work in a Flex application because SimpleDB doesn&#8217;t have a crossdomain.xml</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_donations">
<input type="hidden" name="business" value="488ULP5JSTMHN">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="item_name" value="SimpleDB actionsript library from CafeSilencio">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHosted">
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="">
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"><br />
</form>
<h2><a href="http://cafesilencio.s3.amazonaws.com/cafeSilencioSimpleDBLib.zip"><del datetime="2009-04-16T18:42:03+00:00">Download actionscript library for accessing SimpleDB via Adobe AIR</del></a></h2>
<p>***UPDATE: <a href="http://code.google.com/p/actionscript-simpledb-library/">The latest source code for this SimpleDB Actionscript library can now be accessed  via google code</a>.</p>
<p>The SimpleDB library requires the excellent <a href="http://code.google.com/p/as3crypto/">AS3 Crypto library.</a></p>
<p><a href="http://www.cafesilencio.net/blog/simple-tutorial-for-using-simpledb-actionscript-library">There are some code snippets illustrating the usage of the SimpleDB library available.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cafesilencio.net/blog/simpledb-library-for-adobe-air-actionscript/feed</wfw:commentRss>
		</item>
		<item>
		<title>Bolso updates</title>
		<link>http://www.cafesilencio.net/blog/bolso-updates</link>
		<comments>http://www.cafesilencio.net/blog/bolso-updates#comments</comments>
		<pubDate>Sat, 10 Jan 2009 13:45:24 +0000</pubDate>
		<dc:creator>seth</dc:creator>
		
		<category><![CDATA[Amazon SimpleDB]]></category>

		<category><![CDATA[Bolso]]></category>

		<category><![CDATA[m/db]]></category>

		<category><![CDATA[simpleDB]]></category>

		<guid isPermaLink="false">http://www.cafesilencio.net/blog/?p=194</guid>
		<description><![CDATA[Although I&#8217;m a little behind schedule, Bolso is developing well.  I added some features over the holidays which I think people will find useful.  I added a tree view of the SimpleDB data that I think in some situations can be more useful then viewing the items and attributes in a grid.  [...]]]></description>
			<content:encoded><![CDATA[<p>Although I&#8217;m a little behind schedule, Bolso is developing well.  I added some features over the holidays which I think people will find useful.  I added a <a href="http://www.cafesilencio.net/bolso/treeview-user-interface-for-simpleDB.html">tree view of the SimpleDB data</a> that I think in some situations can be more useful then viewing the items and attributes in a grid.  Given that the items in a given SimpleDB domain don&#8217;t have to be identical, that is they don&#8217;t all have to have the same attributes I think the tree view of the data makes it easier to navigate and view the data in some cases.  There are a couple minor issues I have to iron out as of this writing but so far I&#8217;ve found the tree view a useful way of navigating the data inside my SimpleDB domains.  </p>
<p>In addition I added support for <a href="http://gradvs1.mgateway.com/main/index.html?path=mdb">M/DB</a> ver. 1.6+ from M/Gateway.  M/DB is SimpleDB compatible system that runs inside a VM either on one&#8217;s local computer or on an Internet server.  The command syntax for M/DB is exactly the same as getting/putting item/attribute data with SimpleDB.  Best of all it&#8217;s free!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cafesilencio.net/blog/bolso-updates/feed</wfw:commentRss>
		</item>
		<item>
		<title>photo slide component for Flex AIR</title>
		<link>http://www.cafesilencio.net/blog/photo-slide-component-for-flex-air</link>
		<comments>http://www.cafesilencio.net/blog/photo-slide-component-for-flex-air#comments</comments>
		<pubDate>Fri, 09 Jan 2009 20:17:47 +0000</pubDate>
		<dc:creator>seth</dc:creator>
		
		<category><![CDATA[actionscript]]></category>

		<category><![CDATA[code snippets]]></category>

		<category><![CDATA[AIR]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[flex component]]></category>

		<category><![CDATA[photo slide]]></category>

		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://www.cafesilencio.net/blog/?p=265</guid>
		<description><![CDATA[For a project I recently worked on I needed to display images on the screen looking like (old fashioned) photo slides.  It wasn&#8217;t that difficult especially since degrafa is so easy to use.  I thought I&#8217;d go ahead and make the component available to other Flex/AIR developers to save some time.  The [...]]]></description>
			<content:encoded><![CDATA[<p>For a project I recently worked on I needed to display images on the screen looking like (old fashioned) photo slides.  It wasn&#8217;t that difficult especially since degrafa is so easy to use.  I thought I&#8217;d go ahead and make the component available to other Flex/AIR developers to save some time.  The component is easy to use and will re-size the image after it has loaded in order to save memory.  </p>
<p><object type="application/x-shockwave-flash" width="290" height="290">
<param name="movie" value="http://cafesilencio.s3.amazonaws.com/PhotoSlideDemo.swf" />
<embed type="application/x-shockwave-flash" width="290" height="290" src="http://cafesilencio.s3.amazonaws.com/PhotoSlideDemo.swf" >
</object>
</p>
<p>After adding the <a href="http://cafesilencio.s3.amazonaws.com/photoSlideComponent.zip">source code</a> to your project just add the component to a container and specify the URL to the image in the &#8216;imageSourceURL&#8217; variable.</p>
<p>You&#8217;ll need the <a href="http://www.degrafa.org/">degrafa library</a> in order for this to work.  The example above uses Degrafa_Beta3_Flex3.swc.</p>
<p>The component also uses a <a href="http://grakl.com/wordpress/?p=5">spinner class which came from here</a>.</p>
<p>In addition the image resizing utility class uses code from the <a href="http://clevrlib.riaforge.org/">clevr lib</a>.</p>
<p>The image resizing routine could use some optimization but I&#8217;ll leave that as a fun exercise for <em>you</em>. <img src='http://www.cafesilencio.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  My code is licensed under the Creative Commons ver. 3.  Refer to the other libraries for their licensing terms.<br />
Please link to this post if you use the component. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cafesilencio.net/blog/photo-slide-component-for-flex-air/feed</wfw:commentRss>
		</item>
		<item>
		<title>Explore your Amazon SimpleDB with Bolso</title>
		<link>http://www.cafesilencio.net/blog/explore-your-amazon-simpledb-with-bolso</link>
		<comments>http://www.cafesilencio.net/blog/explore-your-amazon-simpledb-with-bolso#comments</comments>
		<pubDate>Tue, 25 Nov 2008 20:29:29 +0000</pubDate>
		<dc:creator>seth</dc:creator>
		
		<category><![CDATA[Adobe AIR]]></category>

		<category><![CDATA[Amazon SimpleDB]]></category>

		<category><![CDATA[Bolso]]></category>

		<category><![CDATA[actionscript]]></category>

		<category><![CDATA[AIR]]></category>

		<category><![CDATA[cloud computing]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[explore]]></category>

		<guid isPermaLink="false">http://www.cafesilencio.net/blog/?p=163</guid>
		<description><![CDATA[I&#8221;m proud to announce the availability of Bolso, a utility I created to explore the Amazon SimpleDB.
Although Amazon.com&#8217;s SimpleDB is still in limited beta testing it looks to garner wide usage as an alternative to more traditional SQL databases.  Of course it&#8217;s not a one size fits all solution, for certain applications it can [...]]]></description>
			<content:encoded><![CDATA[<h2>I&#8221;m proud to announce the availability of <a href="http://www.cafesilencio.net/bolso">Bolso, a utility I created to explore the Amazon SimpleDB</a>.</h2>
<p>Although <a href="http://aws.amazon.com/simpledb/" target="_blank">Amazon.com&#8217;s SimpleDB</a> is still in limited beta testing it looks to garner wide usage as an alternative to more traditional SQL databases.  Of course it&#8217;s not a one size fits all solution, for certain applications it can dramatically reduce development time as well as eliminate the maintenance costs in managing and maintaining a SQL database.  </p>
<p>When I started looking into its features and working with it, the Amazon SimpleDB reminded me a lot of object databases I&#8217;ve worked with in the past.  It&#8217;s always been more intuitive for me to think of my objects as objects rather than rows and tables.  Of course for a person with a strong SQL background rows and tables are second natrue, but I come from an object oriented programming background.  </p>
<p>In case you&#8217;re unfamiliar with the Amazon SimpleDB service, it&#8217;s true to its name.  It&#8217;s a simple database service from Amazon.com.  Objects are organized into &#8216;domains&#8217; which are analogous to a table in the SQL world.  Each domain contains some number of items which are analogous to rows.  Each item is made up of attribute-value pairs of data.  Each attribute name would be like a column.  </p>
<p>Although switching one&#8217;s thought process away from rows and tables to objects of attribute-value pairs might at first be a little difficult.  One quickly becomes accustomed to thinking of their objects as objects floating around in a giant cloud repository.  </p>
<p>The Amazon SimpleDB service makes it easy to store a lot of small objects that are easy to get and put.  There is even a query API to retrieve objects according to certain criteria.  In addition, the items in a given domain need not have the same format so you could put objects representing sweaters and Amazon SimpleDB was designed to offer fast response times so it&#8217;s meant to store lots of small objects rather than large amounts of data.  Large amounts of data are better stored in <a href="http://aws.amazon.com/s3/" target="_blank">Amazon.com&#8217;s S3</a> service.  The Amazon SimpleDB makes a great compliment to Amazon&#8217;s S3 service because it can store meta data which can be queried and can point to larger data files stored in Amazon.com&#8217;s S3 service.</p>
<p>One difficulty with object databases that I&#8217;ve worked with is the ability to visualize the data I&#8217;ve inserted and/or see it to make sure it&#8217;s really there.  So I began work on a utility called <a href="http://www.cafesilencio.net/bolso">Bolso to see the contents of Amazon SimpleDB</a>. As of this writing it has only basic functionality: adding/removing/editing domains,items, and item attributes.  However I have in mind several other features that I think will be very useful.  </p>
<p>I created Bolso using the Adobe AIR framework so I&#8217;m attempting to offer a utility with a rich user interface.  I think the AIR platform will allow for some very interesting and useful features which I will add as time goes on.  I&#8217;m eager to continue development on this project and I hope others out there will find the utility useful in exploring their Amazon SimpleDB repositories while they work on their own applications utilizing Amazon.com&#8217;s very cool SimpleDB service.</p>
<p>Head over to the <a href="http://www.cafesilencio.net/bolso">Bolso website</a> and give it a spin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cafesilencio.net/blog/explore-your-amazon-simpledb-with-bolso/feed</wfw:commentRss>
		</item>
		<item>
		<title>mmm maté</title>
		<link>http://www.cafesilencio.net/blog/mmm-mate</link>
		<comments>http://www.cafesilencio.net/blog/mmm-mate#comments</comments>
		<pubDate>Fri, 10 Oct 2008 13:55:31 +0000</pubDate>
		<dc:creator>seth</dc:creator>
		
		<category><![CDATA[Adobe AIR]]></category>

		<category><![CDATA[stuff i learned]]></category>

		<category><![CDATA[event handling]]></category>

		<category><![CDATA[flex framework]]></category>

		<category><![CDATA[mate]]></category>

		<guid isPermaLink="false">http://www.cafesilencio.net/blog/?p=39</guid>
		<description><![CDATA[Tasty maté.  Not only is it a popular cultural beverage in Argentina and the south of Brazil.  It&#8217;s also a great event based Adobe Flex framework.  I found this too late to incorporate into the WidgetCircles&#8482; PersonalMediaBook&#8482; project I recently worked on, unfortunately.  I discovered this framework toward the end of [...]]]></description>
			<content:encoded><![CDATA[<p>Tasty <a href="http://mate.asfusion.com/">maté</a>.  Not only is it a popular cultural beverage in Argentina and the south of Brazil.  It&#8217;s also a great event based Adobe Flex framework.  I found this too late to incorporate into the <a href="http://www.widgetcircles.com">WidgetCircles</a>&#8482; PersonalMediaBook&#8482; project I recently worked on, unfortunately.  I discovered this framework toward the end of the project and I wasn&#8217;t willing to risk destabilizing the code in order to retrofit the code with mate.  </p>
<p>I had been using a similar event framework I developed for my own needs but mate is superior and more mature.  I&#8217;ve been using mate for a couple of smaller projects but I have yet to put it to use in a large project (at the time of writing).  I have to say congratulations and thank you to the people at mate for their hard work in developing mate.  It&#8217;s intuitive, easy to use, and powerful.  </p>
<blockquote><p>
tidbit: In Brazil there is a drink similar to the maté consumed in Argentina but the Brazilian version is cold and has a slightly different spelling (matte) and pronunciation. The best place to get matte in Brazil is on Ipanema beach between lifeguard tower 9 and 10.  Look for the guys with a large silver container hanging from each shoulder.  One container has matte and one has lemon aide.  Get a cup filled with about 1/4 lemon aide and the rest matte.  It&#8217;s Heaven in a plastic cup.  Each matte guy makes the matte and some make it better than others, you may have to experiment before finding a guy you can get it from regularly.
</p></blockquote>
<p><br/><br />
<br/><br />
Experiment with the maté framework too!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cafesilencio.net/blog/mmm-mate/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
