<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AnySpeak.Org</title>
	<atom:link href="http://www.anyspeak.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.anyspeak.org</link>
	<description></description>
	<lastBuildDate>Sat, 21 Aug 2010 01:47:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Alex eReader by Spring Design, Inc.</title>
		<link>http://www.anyspeak.org/?p=56</link>
		<comments>http://www.anyspeak.org/?p=56#comments</comments>
		<pubDate>Sat, 21 Aug 2010 01:44:43 +0000</pubDate>
		<dc:creator>tomas</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[eReader]]></category>
		<category><![CDATA[Alex]]></category>
		<category><![CDATA[eInk]]></category>
		<category><![CDATA[LCD]]></category>
		<category><![CDATA[Spring Design]]></category>

		<guid isPermaLink="false">http://www.anyspeak.org/?p=56</guid>
		<description><![CDATA[With all the new E-Book readers out there and the popularity of the Amazon&#8217;s Kindle I finally decided I would check this out. The Alex Duet Navigator DSB-10 E-Book reader by Spring Design, Inc.
Features
600MHz Marvell CPU
6&#8243; E-Ink Display
3&#8243; Color LCD Touchscreen
Android 1.5
2Gb Internal Memory
MicroSD card slot in back (2Gb Card Included)
Microphone in Front
2.5mm Headphone jack [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_55" class="wp-caption alignleft" style="width: 310px"><a href="http://www.anyspeak.org/wp-content/uploads/2010/06/alexTwilight300x527.png"><img class="size-full wp-image-55" title="alexTwilight300x527" src="http://www.anyspeak.org/wp-content/uploads/2010/06/alexTwilight300x527.png" alt="Alex eReader eInk and LCD dual display" width="300" height="527" /></a><p class="wp-caption-text">Alex eReader, runs Android and has eInk and LCD display</p></div>
<p>With all the new E-Book readers out there and the popularity of the Amazon&#8217;s Kindle I finally decided I would check this out. The Alex Duet Navigator DSB-10 E-Book reader by <a href="http://www.springdesign.com/us/index.action">Spring Design, Inc</a>.<br />
<strong>Features</strong></p>
<p>600MHz Marvell CPU<br />
6&#8243; E-Ink Display<br />
3&#8243; Color LCD Touchscreen<br />
Android 1.5<br />
2Gb Internal Memory<br />
MicroSD card slot in back (2Gb Card Included)<br />
Microphone in Front<br />
2.5mm Headphone jack on top (not a regular 3.5mm jack like most headphones)<br />
Includes 2.5mm headphones with microphone<br />
Includes Neoprene sleeve<br />
Screen syncing button to push display to and from the E-Ink and LCD ( button is in between the two screens)<br />
Left side buttons for previous page and back<br />
Right side buttons for next page and power</p>
<p><strong>Supported Formats:</strong></p>
<p>Adobe DRM pdf<br />
Adobe e-pub<br />
epub<br />
PDF</p>
<p><strong>What I like:</strong></p>
<p>I love the fact that it runs Android, mainly because Android is Linux based and as such is a pretty open platform.  Add in that Android apps are written in the Java Programming Language means that lots of people can create new apps for it.</p>
<p>I found the ability to push what you see from one screen to the other with the sync button an awesome feature, particularly in helping mitigate some shortcomings (see below).</p>
<p>The Alex feels fairly solid, although I have noticed that occasionally when pressing on the bezel around the e-Ink display there is a little give and you can hear the bezel flex.</p>
<p>So far it has been able to connect to all the wireless access points available to me without issue, including 802.11b and 802.11g with various security methods including WEP, WPA, and WPA2.</p>
<p>The ability to add other Android applications, Pandora Internet Radio for instance is also very nice.</p>
<p>The original unit that I received was not fully updated and did not include all the software that it should have.  The Adobe DRM was broken and while it was still a cool device I really wanted it so that I could checkout e-books from my local library.  Why is this in the I like area, well, because it meant I contacted customer support.  Rusty and Michelle at Spring Design were great.  Rusty diagnosed my problem ( unit shipped with incorrect firmware ) quickly and got me in contact with Michelle to get a prepaid shipper to send the unit back.  It was late on Friday and I really didn&#8217;t expect much to happen (though Rusty did say that if I got it in the mail and he got it Saturday that he would fix it and send it right back).  They did exactly that and I had my unit back early on Tuesday.</p>
<p><strong>What I don&#8217;t like:</strong></p>
<p>First and foremost is the font size and layout when viewing PDF&#8217;s. I don&#8217;t know for sure if this is the fault of the Alex or Adobe but the default text size starts out at Tiny and if you put it up to Normal then you won&#8217;t see the entire page and unlike e-pub&#8217;s, when you press the next page button it just goes to the next page and skips over any text that wasn&#8217;t visible.  This was particularly frustrating since it took me a couple of pages before I noticed that the last sentence and a half of the page was not visible.</p>
<p>DRM, it&#8217;s nice that the Alex supports the Adobe DRM but DRM is just plain frustrating to deal with.</p>
<p><strong>Overall</strong></p>
<p>I find myself using it more as an android device then a e-reader but I have found it to be very useful and has just about replaced my netbook for checking e-mail and simple web browsing.  I have started reading a couple of epub formatted books and they seem to work well on the E-Ink and the text adjusts well.  I was also really hoping that I would have Android 1.6 so that I could try out the Android Kindle app but so far I am still waiting for an update from 1.5.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyspeak.org/?feed=rss2&amp;p=56</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails: CentOS 5.5, Apache, mod_fcgid, and UserDir</title>
		<link>http://www.anyspeak.org/?p=62</link>
		<comments>http://www.anyspeak.org/?p=62#comments</comments>
		<pubDate>Fri, 09 Jul 2010 18:24:45 +0000</pubDate>
		<dc:creator>tomas</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS-5.5]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[FastCgi]]></category>
		<category><![CDATA[Httpd]]></category>
		<category><![CDATA[UserDIr]]></category>

		<guid isPermaLink="false">http://www.anyspeak.org/?p=62</guid>
		<description><![CDATA[My notes for getting Ruby on Rails installed on CentOS 5.5 running through Apache and mod_fcgid and working with UserDir]]></description>
			<content:encoded><![CDATA[<div id="attachment_89" class="wp-caption alignleft" style="width: 310px"><a href="http://www.anyspeak.org/wp-content/uploads/2010/07/RoRWelcome-300x302.png"><img class="size-full wp-image-89" title="RoRWelcome-300x302" src="http://www.anyspeak.org/wp-content/uploads/2010/07/RoRWelcome-300x302.png" alt="Ruby on Rails Welcome aboard Getting Started" width="300" height="302" /></a><p class="wp-caption-text">Ruby on Rails Welcome aboard</p></div>
<p>I admin a web server that is used by some students to experiment with web technologies.  In the past I ran this using Fedora Core Linux.  I had cause recently to upgrade to something with longer term support so I chose CentOS 5.5 (being that I also admin a large number of Red Hat Enterprise servers I&#8217;m fairly comfortable with the Red Hat way of doing things).</p>
<p>Along with the normal html, php, mysql, SOAP, perl, and CGI things I was asked to add support for Ruby on Rails.  I remember when I added this years ago to the Fedora Core 5 server and It was kind of painful.  I believe I have it setup for CentOS 5.5 (took a lot of reading, trial and error, and web searches but finally after about 2 full work days I think I have a working system figured out).  I&#8217;m posting what I did here in case someone else finds it useful.</p>
<p>I have to assume that you already have a working apache and UserDir setup to use public_html</p>
<p><strong>Quick Notes:</strong></p>
<ul>
<li>Intstalled Ruby 1.8.7 from source ( initially tried 1.9.1 which I could not get to work so I downgraded with better success)</li>
<li>Installed RubyGems 1.3.5 from source and updated to 1.3.7</li>
<li>Installed sqlite-3.6.23.1 from source ( the packaged sqlite3 apparently is not recent enough to work with the sqlite3-ruby)</li>
<li>Installed mod_fcgid-2.3.5 from source</li>
<li>Used gem to install rails-2.3.6 (had issues with 2.3.8)</li>
<li>Used gem to install sqlite3-ruby v 1.2.5 ( there are issues apparently with 1.3.0)<span id="more-62"></span></li>
</ul>
<p><strong>Install some system dependencies: </strong>I went through many iterations so  the following might not all be needed, for example since I wound up installing sqlite3 from source I don&#8217;t think I&#8217;m actually using the sqlite-devel and sqlite system packages.  I don&#8217;t think that having these packages will hurt anything though.<strong> </strong></p>
<blockquote><p>yum -y install mysql-devel git gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel httpd-devel openssl-devel sqlite-devel</p></blockquote>
<p><strong>Install sqlite-3.6.23.1 from source:</strong></p>
<blockquote><p>cd /usr/local/src/</p>
<p>wget http://www.sqlite.org/sqlite-amalgamation-3.6.23.1.tar.gz</p>
<p>tar -zxvf sqlite-amalgamation-3.6.23.1.tar.gz</p>
<p>cd sqlite-3.6.23.1/</p>
<p>CFLAGS=&#8221;-DSQLITE_ENABLE_COLUMN_METADATA &#8221; ./configure &#8211;prefix=/usr/local/sqlite-3.6.23.1</p>
<p>make</p>
<p>make install</p></blockquote>
<p><strong>I</strong><strong>nstall Ruby-1.8.7:</strong> When I install from source I normally put the results into /usr/local/[name-version] and so that I can install different versions and test them without effecting the entire system as a whole (that is overwrite files that came from a package or put stuff in /usr/bin that will later bite me).</p>
<blockquote><p>cd /usr/local/src</p>
<p>wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz</p>
<p>tar -zxvf ruby-1.8.7.tar.gz</p>
<p>cd ruby-1.8.7</p>
<p>./configure &#8211;prefix=/usr/local/ruby-1.8.7 &#8211;enable-pthread &#8211;with-openssl-dir=/usr</p>
<p>make</p>
<p>make install</p></blockquote>
<p><em>When I install from source I will normally create a symbolic link to the current version I am using with it&#8217;s non-version  name, this way I can set my paths to something shorter and change versions by changing the symlink.  So for my ruby install I did the following:</em></p>
<blockquote><p>cd /usr/local/</p>
<p>ln -s ruby-1.8.7 ruby</p></blockquote>
<p><strong>Set paths to ruby-1.8.7:</strong> I like to create source files to include new apps in my path using /etc/profile.d so I created the following in /etc/profile.d</p>
<p>/etc/profile.d/ruby.csh</p>
<blockquote><p>setenv RUBY_HOME /usr/local/ruby<br />
setenv PATH $RUBY_HOME/bin:$PATH<br />
setenv LD_LIBRARY_PATH $RUBY_HOME/lib</p></blockquote>
<p>/etc/profile.d/ruby.sh</p>
<blockquote><p>RUBY_HOME=/usr/local/ruby<br />
PATH=$RUBY_HOME/bin:$PATH<br />
LD_LIBRARY_PATH=$RUBY_HOME/lib<br />
export LD_LIBRARY_PATH<br />
export RUBY_HOME<br />
export PATH</p></blockquote>
<p>After creating these or changing the symlink to another version I usually log out and then log back in so that it sources these files and updates my paths.</p>
<p><strong>Install RubyGems-1.3.5:</strong></p>
<blockquote><p>cd /usr/local/src</p>
<p>wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz</p>
<p>tar -zxvf rubygems-1.3.5.tgz</p>
<p>cd rubygems-1.3.5</p>
<p>/usr/local/ruby/bin/ruby setup.rb</p></blockquote>
<p><strong>Update gem to 1.3.7 before installing anything else via gem:</strong></p>
<blockquote><p>gem update &#8211;system</p></blockquote>
<p><strong>Install rails and some support packages via gem:</strong> I installed 3 gems that deal with fast cgi, don&#8217;t know if all of them are needed, pretty sure that I needed fcgi.</p>
<blockquote><p>gem install rails -v 2.3.5</p>
<p>gem install sqlite3-ruby -v 1.2.5 &#8212; &#8211;with-sqlite3-include=/usr/local/sqlite-3.6.23.1/include &#8211;with-sqlite3-lib=/usr/local/sqlite-3.6.23.1/lib</p>
<p>gem install  mysql &#8212; &#8211;with-mysql-config=/usr/lib64/mysql/mysql_config</p>
<p>gem install fcgi</p>
<p>gem install  fcgiwrap</p>
<p>gem install  ruby-fcgi</p></blockquote>
<p><strong>In the end gem list shows the following:</strong></p>
<blockquote><p>gem list</p>
<p>*** LOCAL GEMS ***</p>
<p>actionmailer (2.3.6)<br />
actionpack (2.3.6)<br />
activerecord (2.3.6)<br />
activeresource (2.3.6)<br />
activesupport (2.3.6)<br />
fcgi (0.8.8)<br />
fcgiwrap (0.1.6)<br />
mysql (2.8.1)<br />
rack (1.1.0)<br />
rails (2.3.6)<br />
rake (0.8.7)<br />
ruby-fcgi (0.8.9)<br />
rubygems-update (1.3.7)<br />
sqlite3-ruby (1.2.5)</p></blockquote>
<p><strong>Install mod_fcgid-2.3.5: </strong>I did attempt using mod_fastcgi but that kept failing with making the sockets and had issues with permissions on the directory that held them so I went with mod_fcgid which I think is the preferred method for apache2 (there is also passenger but I didn&#8217;t quite understand how to tie that into rails using my UserDir setup, all the examples I found just dealt with Virtual  Hosts which I already use for other purposes on this server and didn&#8217;t want to muck around with that since users should not be able to change the Virtual Hosts anyway).</p>
<blockquote><p>cd /usr/local/src<br />
wget http://mirrors.axint.net/apache/httpd/mod_fcgid/mod_fcgid-2.3.5.tar.gz<br />
tar -zxvf mod_fcgid-2.3.5.tar.gz<br />
cd mod_fcgid-2.3.5<br />
./configure.apxs<br />
make<br />
make install</p></blockquote>
<p><strong>Note: </strong>make install will put the module into /usr/lib64/httpd/modules/mod_fcgid.so at least on my 64bit system it did, it also adds &#8220;LoadModule fcgid_module /usr/lib64/httpd/modules/mod_fcgid.so&#8221; to /etc/httpd/conf/httpd.conf.  I commented that line out and added my own conf into  /etc/httpd/conf.d/ so that all the fastCGI stuff was in one config file.  This is what mine looks like</p>
<p>/etc/httpd/conf.d/fcgid.conf</p>
<blockquote><p>LoadModule fcgid_module /usr/lib64/httpd/modules/mod_fcgid.so</p>
<p>&lt;IfModule mod_fcgid.c&gt;</p>
<p># Use FastCGI to process .fcg .fcgi &amp; .fpl scripts<br />
# Don&#8217;t do this if mod_fastcgi is present, as it will try to do the same thing<br />
&lt;IfModule !mod_fastcgi.c&gt;<br />
AddHandler fcgid-script .fcgi<br />
&lt;/IfModule&gt;<br />
# Sane place to put sockets<br />
FcgidIPCDir /tmp/fcgid_sock/<br />
FcgidIdleTimeout 3600<br />
FcgidProcessLifeTime 7200<br />
FcgidMaxProcesses 1000<br />
FcgidMinProcessesPerClass 3<br />
FcgidMaxProcessesPerClass 100<br />
FcgidConnectTimeout 8<br />
FcgidIOTimeout 360<br />
FcgidBusyTimeout 300<br />
&lt;/IfModule&gt;</p></blockquote>
<p>After adding the config file don&#8217;t forget to:</p>
<blockquote><p>service httpd configtest</p>
<p>service httpd restart</p></blockquote>
<p><strong>So now that we have all of that, how does a user make and configure their rails app:</strong></p>
<p>I really don&#8217;t know much about ruby or ruby on rails and what I do know is probably not exact.  What I came up with worked via trial and error and with a lot of searching.  I think the simple example that I came up with should work for larger apps so your mileage may vary.</p>
<p>I am going to use the example of a user called demo, a server name train and make a simple hello world app named myapp:</p>
<blockquote><p>ssh demo@train</p>
<p>cd public_html</p>
<p>rails myapp &#8211;with-dispatchers</p>
<p>cd myapp/public</p>
<p>create a .htaccess file that looks like (I took parts of this from the README file that is created in the myapp directory):</p></blockquote>
<p>~demo/public_html/myapp/public/.htaccess</p>
<blockquote><p># General Apache options<br />
AddHandler fcgid-script .fcgi<br />
Options +FollowSymLinks +ExecCGI<br />
RewriteEngine On<br />
RewriteBase /~demo/myapp/public</p>
<p>RewriteRule ^$ index.html [QSA]<br />
RewriteRule ^([^.]+)$ $1.html [QSA]<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]<br />
ErrorDocument 500 /~demo/myapp/public/500.html</p></blockquote>
<p><strong>Create a controller:</strong></p>
<blockquote><p>cd ~demo/public_html/myapp</p>
<p>script/generate controller myappcontroller</p></blockquote>
<p>edit the myappcontroller to actually do something, mine looks like the following ( it will create two pages, index and stuff which will just display a simple message ):</p>
<blockquote><p>class MyappcontrollerController &lt; ApplicationController<br />
def index<br />
render:text =&gt; &#8220;Hello World&#8221;<br />
end<br />
def stuff<br />
render:text =&gt; &#8220;Hello World and stuff&#8221;<br />
end<br />
end</p></blockquote>
<p><strong>Add routes to link a URL to the controller: </strong>I added the following two lines above &#8220;map.connect &#8216;:controller/:action/:id&#8217;&#8221;.</p>
<blockquote><p>map.connect &#8216;~demo/myapp/public/&#8217;, :controller =&gt; &#8220;myappcontroller&#8221;, :action =&gt; &#8216;index&#8217;<br />
map.connect &#8216;~demo/myapp/public/stuff/&#8217;, :controller =&gt; &#8216;myappcontroller&#8217;, :action =&gt; &#8217;stuff&#8217;</p></blockquote>
<p>So my routes looks like the following (with commented lines removed):</p>
<p>~demo/public_html/myapp/config/routes.rb</p>
<blockquote><p>ActionController::Routing::Routes.draw do |map|</p>
<p>map.connect &#8216;~demo/myapp/public/&#8217;, :controller =&gt; &#8220;myappcontroller&#8221;, :action =&gt; &#8216;index&#8217;<br />
map.connect &#8216;~demo/myapp/public/stuff/&#8217;, :controller =&gt; &#8216;myappcontroller&#8217;, :action =&gt; &#8217;stuff&#8217;</p>
<p>map.connect &#8216;:controller/:action/:id&#8217;<br />
map.connect &#8216;:controller/:action/:id.:format&#8217;<br />
end</p></blockquote>
<p><strong>At this point I was able to go to http://train/~demo/myapp/public/stuff and get a page that says:</strong></p>
<p>Hello World and stuff</p>
<p>If I want the index to show more than just the default Welcome aboard message that I just need to remove ~demo/public_html/myapp/public/index.html and then going to http://train/~demo/myapp/public/ will show</p>
<p>Hello World</p>
<p><strong>Databases:</strong> At this point I haven&#8217;t really tested anything with the database but I believe that since the following works or at least does not return an error, then I should at least be able to use sqlite3 (the default).</p>
<blockquote><p>rake db:migrate</p></blockquote>
<p>I did do a test using mysql and that also worked after adjusting ~demo/public_html/myapp/public/config/database.yml</p>
<p>I hope that helps somebody.</p>
<p><strong>Update:</strong> One problem with this setup is that the  config files and stuff above the public directory are accessible, so you will probably need to craft a .htaccess file to restrict access and put it in the myapp directory.  When I come up with something that works I&#8217;ll post it here.</p>
<p><strong>Update:</strong> One possibility would be to have something like the following in ~demo/public_html/myapp/.htaccess this will pretty much send any page inside of the myapp directory but outside of the public directory to an error page.</p>
<blockquote><p>RewriteEngine On</p>
<p>RewriteBase /~demo/myapp</p>
<p>RewriteRule ^(.*)$ public/500.html [QSA,L]</p></blockquote>
<p><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" id="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b"  WIDTH="468px" HEIGHT="60px"> <PARAM NAME="movie" VALUE="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=GetDisplayTemplate"><PARAM NAME="quality" VALUE="high"><PARAM NAME="bgcolor" VALUE="#FFFFFF"><PARAM NAME="allowscriptaccess" VALUE="always"><embed src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=GetDisplayTemplate" id="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b" quality="high" bgcolor="#ffffff" name="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b" allowscriptaccess="always"  type="application/x-shockwave-flash" align="middle" height="60px" width="468px"></embed></OBJECT> <NOSCRIPT><A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=NoScript">Amazon.com Widgets</A></NOSCRIPT></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyspeak.org/?feed=rss2&amp;p=62</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Chumby One</title>
		<link>http://www.anyspeak.org/?p=36</link>
		<comments>http://www.anyspeak.org/?p=36#comments</comments>
		<pubDate>Sun, 17 Jan 2010 16:59:52 +0000</pubDate>
		<dc:creator>tomas</dc:creator>
				<category><![CDATA[Chumby]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Chumby one]]></category>
		<category><![CDATA[squeezebox server]]></category>
		<category><![CDATA[squeezeslave]]></category>

		<guid isPermaLink="false">http://www.anyspeak.org/?p=36</guid>
		<description><![CDATA[In December of 2009 I bought a Chumby One from chumby.com.  My main reason for purchasing it was so that I could have an easy way to play my music collection from my home server. I&#8217;ve been using my Sansa e230 or my wifes Sansa e130 connected to my home stereo via headphone jack to [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_42" class="wp-caption alignleft" style="width: 310px"><img class="size-medium wp-image-42" title="Chumby One Top-Front View" src="http://www.anyspeak.org/wp-content/uploads/2010/01/PICT0060-300x224.jpg" alt="Chumby One shown from the Top Front" width="300" height="224" /><p class="wp-caption-text">Chumby One shown from the Top Front</p></div>
<p>In December of 2009 I bought a Chumby One from chumby.com.  My main reason for purchasing it was so that I could have an easy way to play my music collection from my home server. I&#8217;ve been using my Sansa e230 or my wifes Sansa e130 connected to my home stereo via headphone jack to stereo RCA.  This works but it means I have to put the music on the player and fiddle with the limited playlist abilities.</p>
<p>The Chumby has a headphone out and a touch screen.  I have a DVD player that can play mp3 cd/dvd but I don&#8217;t want to have to turn my TV on in order to listen to music so that is why the Chumby caught my eye.  Especially since the Chumby One had an intro price of $99 which was about the cheapest thing I could find that would do what I wanted and not require a Windows box.</p>
<p>My other plan would have been to buy a <a title="BeagleBoard" href="http://beagleboard.org" target="_self">beagleboard</a> and try to put something together myself or possible shell out a lot more cash to pick up a Touchbook from Always Innovating.</p>
<div id="attachment_46" class="wp-caption alignleft" style="width: 310px"><img class="size-medium wp-image-46" title="Chumby One Back and Bottom View" src="http://www.anyspeak.org/wp-content/uploads/2010/01/PICT0064-300x224.jpg" alt="Chumby One Back and Bottom View.  The back has heat vents, one USB port, one headphone jack, and a 5V power plug.  Bottom has access to the battery (optional) compartment and the FM radio wire antenna." width="300" height="224" /><p class="wp-caption-text">Chumby One Back and Bottom View.  The back has heat vents, one USB port, one headphone jack, and a 5V power plug.  Bottom has access to the battery (optional) compartment and the FM radio wire antenna.</p></div>
<p>I contacted chumby.com through their chat before purchasing and I found their chat support to be very helpful.   The person suggested to me that I could use a the <a title="Squeezebox Server Download" href="http://www.mysqueezebox.com/download" target="_blank">Squeezebox server</a> and use the Chumbys music function to connect to the squeezebox server.  He also told me that he had his Chumby connected to his receiver at home and that it sounded good.  ( My other problem with the Sansa players that I was using was that the headphone jack doesn&#8217;t really provide line level output so I have to crank up the reveiver and have the player volume maxed out in order to get decent volume to listen to.)</p>
<p>I wasn&#8217;t too sure about this but I thought I would try out the Squeezebox server and see what it had to offer.  So I set that up on my home CentOS server and then after some searching I found Squeezeslave which I installed on my eeebuntu netbook.  This seemed to work pretty well so I thought I would go for the Chumby and see.</p>
<p>That&#8217;s all the time I have for right now.  More on the Chumby One later.</p>
<p><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" id="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b"  WIDTH="468px" HEIGHT="60px"> <PARAM NAME="movie" VALUE="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=GetDisplayTemplate"><PARAM NAME="quality" VALUE="high"><PARAM NAME="bgcolor" VALUE="#FFFFFF"><PARAM NAME="allowscriptaccess" VALUE="always"><embed src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=GetDisplayTemplate" id="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b" quality="high" bgcolor="#ffffff" name="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b" allowscriptaccess="always"  type="application/x-shockwave-flash" align="middle" height="60px" width="468px"></embed></OBJECT> <NOSCRIPT><A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=NoScript">Amazon.com Widgets</A></NOSCRIPT></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyspeak.org/?feed=rss2&amp;p=36</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blender at TECS workshop</title>
		<link>http://www.anyspeak.org/?p=31</link>
		<comments>http://www.anyspeak.org/?p=31#comments</comments>
		<pubDate>Tue, 13 Oct 2009 12:20:31 +0000</pubDate>
		<dc:creator>tomas</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[acm]]></category>
		<category><![CDATA[game engine]]></category>
		<category><![CDATA[tecs]]></category>

		<guid isPermaLink="false">http://www.anyspeak.org/?p=31</guid>
		<description><![CDATA[Recently I was asked to give a 1 hour presentation on Game Design using Blender at Kettering University for a Teacher Enrichment in Computer Science (TECS) workshop.  While I didn&#8217;t have a whole lot of time to put something together I thought that what I came up with was helpful and worth the time I [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_32" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-32" title="tecs" src="http://www.anyspeak.org/wp-content/uploads/2009/10/tecs-150x150.png" alt="Suzanne in a sparse game environment with coins." width="150" height="150" /><p class="wp-caption-text">Suzanne in a sparse game environment with coins.</p></div>
<p>Recently I was asked to give a 1 hour presentation on Game Design using Blender at <a title="Kettering University" href="http://www.kettering.edu/visitors/storydetail.jsp?storynum=2930" target="_blank">Kettering University</a> for a Teacher Enrichment in Computer Science (<a title="TECS" href="http://tecs.acm.org/" target="_blank">TECS</a>) workshop.  While I didn&#8217;t have a whole lot of time to put something together I thought that what I came up with was helpful and worth the time I did put in making it. I decided that I would post the material for others who might be interested in using the open-source 3D content creation suite Blender.</p>
<p>We only had an hour during the workshop and that made it difficult to both introduce the interface and cover the topic of Game Design using Blender. I tried to put something together that would introduce the interface, modeling objects, navigating 3D space, game design, and just Blender in general.  I broke the tutorial out into 5 parts and unfortunately most participants only made it to part 3.  I think the material does lend itself to being completed as a self-study so I&#8217;m posting it here.  While walking around and seeing how people progressed and the questions they had both about blender and about the tutorial I think I&#8217;ve learned a number of things to help with future presentations and tutorials. If you do go through the tutorial I appreciate any suggestions for improving it or just comments in general.</p>
<p>The tutorial in pdf form: <a title="TECS_2009.pdf" href="http://paws.kettering.edu/~thajek/tecs/TECS_2009.pdf" target="_blank">TECS_2009.pdf</a></p>
<p>Supporting files (includes the tutorial): <a title="tecs.zip" href="http://paws.kettering.edu/~thajek/tecs.zip" target="_blank">tecs.zip</a></p>
<p><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" id="Player_a4f0eb67-0fd1-4cbe-9952-c7bcec89b3e9"  WIDTH="600px" HEIGHT="200px"> <PARAM NAME="movie" VALUE="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8010%2Fa4f0eb67-0fd1-4cbe-9952-c7bcec89b3e9&#038;Operation=GetDisplayTemplate"><PARAM NAME="quality" VALUE="high"><PARAM NAME="bgcolor" VALUE="#FFFFFF"><PARAM NAME="allowscriptaccess" VALUE="always"><embed src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8010%2Fa4f0eb67-0fd1-4cbe-9952-c7bcec89b3e9&#038;Operation=GetDisplayTemplate" id="Player_a4f0eb67-0fd1-4cbe-9952-c7bcec89b3e9" quality="high" bgcolor="#ffffff" name="Player_a4f0eb67-0fd1-4cbe-9952-c7bcec89b3e9" allowscriptaccess="always"  type="application/x-shockwave-flash" align="middle" height="200px" width="600px"></embed></OBJECT> <NOSCRIPT><A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8010%2Fa4f0eb67-0fd1-4cbe-9952-c7bcec89b3e9&#038;Operation=NoScript">Amazon.com Widgets</A></NOSCRIPT></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyspeak.org/?feed=rss2&amp;p=31</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSP Includes</title>
		<link>http://www.anyspeak.org/?p=15</link>
		<comments>http://www.anyspeak.org/?p=15#comments</comments>
		<pubDate>Fri, 04 Sep 2009 16:57:24 +0000</pubDate>
		<dc:creator>tomas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[include]]></category>
		<category><![CDATA[jsp]]></category>

		<guid isPermaLink="false">http://www.anyspeak.org/?p=15</guid>
		<description><![CDATA[I occasionally dabble with Java Server Pages (JSP) and in this I often find myself wanting to include the contents of other pages.  There might be other ways to do this but generally I use one of two methods depending on the type of page I need to include.

Compile-Time include: Contents of the included [...]]]></description>
			<content:encoded><![CDATA[<p>I occasionally dabble with Java Server Pages (JSP) and in this I often find myself wanting to include the contents of other pages.  There might be other ways to do this but generally I use one of two methods depending on the type of page I need to include.</p>
<ul>
<li><strong>Compile-Time</strong> include: Contents of the included file are inserted into the JSP page before it is compiled into a servlet.  I normally use compile-time includes with pages that tend to have static content.</li>
</ul>
<p style="padding-left: 60px;"><strong>&lt;%@ include file=&#8221;includeFile.html&#8221; %&gt;</strong></p>
<ul>
<li><strong>Run-Time</strong> include: Results of the included page are inserted into the JSP page when the servlet engine reaches the include directive.</li>
</ul>
<p style="padding-left: 60px;"><strong>&lt;jsp:include page=&#8221;includePage.jsp&#8221; flush=&#8221;true&#8221;/&gt;</strong></p>
<p style="padding-left: 60px;">Using flush=&#8221;true&#8221; tell the servlet engine to flush the output buffer before including the file.  This helps to make sure that you don&#8217;t get an old version of the included page. One reason to include a page at run-time is to be able to pass parameters to it like this:</p>
<p style="padding-left: 90px;"><strong>&lt;jsp:include page=&#8221;salary.jsp&#8221; flush=&#8221;true&#8221;&gt;<br />
&lt;jsp: param name=&#8221;employeeId&#8221; value=&#8221;1022&#8243;/&gt;<br />
&lt;/jsp:include&gt;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyspeak.org/?feed=rss2&amp;p=15</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handy info and commands for Linux and Video Capture</title>
		<link>http://www.anyspeak.org/?p=13</link>
		<comments>http://www.anyspeak.org/?p=13#comments</comments>
		<pubDate>Fri, 04 Sep 2009 14:02:58 +0000</pubDate>
		<dc:creator>tomas</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[arecord]]></category>
		<category><![CDATA[capture]]></category>
		<category><![CDATA[lspci]]></category>
		<category><![CDATA[v4l2-ctl]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[video4linux2]]></category>

		<guid isPermaLink="false">http://www.anyspeak.org/?p=13</guid>
		<description><![CDATA[While tinkering with a Viewcast Osprey-230 on one of my Linux boxes at work I found the following commands and information useful.  Maybe someone else will too. The command deal mainly with getting information about my card and video and audio settings.
arecord -l: lists ALSA audio capture device information
**** List of CAPTURE Hardware Devices [...]]]></description>
			<content:encoded><![CDATA[<p>While tinkering with a Viewcast Osprey-230 on one of my Linux boxes at work I found the following commands and information useful.  Maybe someone else will too. The command deal mainly with getting information about my card and video and audio settings.<span id="more-13"></span></p>
<p><strong>arecord -l: <em>lists ALSA audio capture device information</em></strong><br />
**** List of CAPTURE Hardware Devices ****<br />
card 1: Bt878 [Brooktree Bt878], device 0: Bt87x Digital [Bt87x Digital]<br />
Subdevices: 1/1<br />
Subdevice #0: subdevice #0<br />
card 1: Bt878 [Brooktree Bt878], device 1: Bt87x Analog [Bt87x Analog]<br />
Subdevices: 1/1<br />
Subdevice #0: subdevice #0<br />
<strong>lspci -v</strong>: <strong><em>lists card information with verbose output, I&#8217;ve only listed the output here relevant to my capture card.</em></strong><br />
02:06.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)<br />
Subsystem: Hauppauge computer works Inc. Viewcast Osprey 200<br />
Flags: bus master, medium devsel, latency 32, IRQ 20<br />
Memory at f7800000 (32-bit, prefetchable) [size=4K]<br />
Capabilities: [44] Vital Product Data &lt;?&gt;<br />
Capabilities: [4c] Power Management version 2<br />
Kernel driver in use: bttv<br />
Kernel modules: bttv</p>
<p>02:06.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)<br />
Subsystem: Hauppauge computer works Inc. Viewcast Osprey 200<br />
Flags: bus master, medium devsel, latency 32, IRQ 20<br />
Memory at f7801000 (32-bit, prefetchable) [size=4K]<br />
Capabilities: [44] Vital Product Data &lt;?&gt;<br />
Capabilities: [4c] Power Management version 2<br />
Kernel driver in use: Bt87x<br />
Kernel modules: snd-bt87x</p>
<p><strong>rpm -qf /usr/bin/v4l2-ctl : <em>On rpm based systems queries the rpm package manager for the package that owns /usr/bin/v4l2-ctl, I like to think of this as what package provided this program.  This helps me when setting up a new system to know where a particular utility came from.<br />
</em></strong></p>
<p>ivtv-utils-1.3.0-1.fc10.i386</p>
<p><strong>dpkg -S /usr/bin/v4l2-ctl:</strong> <em><strong>On Debian based systems like Ubuntu you can use this to find what installed package (if any) owns this file.</strong></em></p>
<p>ivtv-utils: /usr/bin/v4l2-ctl</p>
<p><strong>v4l2-ctl &#8211;info</strong><br />
Driver Info:<br />
Driver name   : bttv<br />
Card type     : BT878 video (Osprey 210/220/230<br />
Bus info      : PCI:0000:02:06.0<br />
Driver version: 2321<br />
Capabilities  : 0&#215;05000015<br />
Video Capture<br />
Video Overlay<br />
VBI Capture<br />
Read/Write<br />
Streaming</p>
<p><strong>v4l2-ctl &#8211;all</strong><br />
Driver Info:<br />
Driver name   : bttv<br />
Card type     : BT878 video (Osprey 210/220/230<br />
Bus info      : PCI:0000:02:06.0<br />
Driver version: 2321<br />
Capabilities  : 0&#215;05000015<br />
Video Capture<br />
Video Overlay<br />
VBI Capture<br />
Read/Write<br />
Streaming<br />
Format Video Capture:<br />
Width/Height  : 640/480<br />
Pixel Format  : &#8216;YU12&#8242;<br />
Field         : Interlaced<br />
Bytes per Line: 640<br />
Size Image    : 460800<br />
Colorspace    : Unknown (00000000)<br />
Format Video Overlay:<br />
Left/Top    : 0/0<br />
Width/Height: 384/288<br />
Field       : Interlaced<br />
Chroma Key  : 0&#215;00000000<br />
Global Alpha: 0&#215;00<br />
Clip Count  : 0<br />
Clip Bitmap : No<br />
Format VBI Capture: (vertical blanking interval (VBI), also known as the vertical interval or VBLANK)<br />
Sampling Rate   : 28636363 Hz<br />
Offset          : 244 samples (8.52064e-06 secs after leading edge)<br />
Samples per Line: 2048<br />
Sample Format   : GREY<br />
Start 1st Field : 10<br />
Count 1st Field : 16<br />
Start 2nd Field : 273<br />
Count 2nd Field : 16<br />
Framebuffer Format:<br />
Capability    : Clipping List<br />
Flags         :<br />
Base          : 0&#215;0xf0000000<br />
Width         : 1680<br />
Height        : 1050<br />
Pixel Format  : &#8216;BGR4&#8242;<br />
Bytes per Line: 6784<br />
Size image    : 0<br />
Colorspace    : Unknown (00000000)<br />
Crop Capability Unknown (00000000):<br />
Bounds      : Left 68, Top 22, Width 838, Height 504<br />
Default     : Left 128, Top 46, Width 768, Height 480<br />
Pixel Aspect: 910/780<br />
Crop: Left 128, Top 46, Width 768, Height 480<br />
Video input : 0 (Composite0)<br />
Frequency: 980 (61.250000 MHz)<br />
Video Standard = 0&#215;0000b000<br />
NTSC-M/M-JP/M-KR</p>
<p><strong>v4l2-ctl &#8211;get-freq</strong><br />
Frequency: 980 (61.250000 MHz)</p>
<p><strong>v4l2-ctl &#8211;list-ctrls</strong><br />
brightness (int)  : min=0 max=65535 step=256 default=32768 value=32768<br />
contrast (int)  : min=0 max=65535 step=128 default=32768 value=32768<br />
saturation (int)  : min=0 max=65535 step=128 default=32768 value=32768<br />
hue (int)  : min=0 max=65535 step=256 default=32768 value=32768<br />
balance (int)  : min=0 max=65535 step=655 default=32768 value=0<br />
bass (int)  : min=0 max=65535 step=655 default=32768 value=0<br />
treble (int)  : min=0 max=65535 step=655 default=32768 value=0<br />
mute (bool) : default=0 value=0<br />
chroma_agc (bool) : default=0 value=0<br />
combfilter (bool) : default=0 value=0<br />
automute (bool) : default=0 value=0<br />
luma_decimation_filter (bool) : default=0 value=0<br />
agc_crush (bool) : default=0 value=1<br />
vcr_hack (bool) : default=0 value=0<br />
whitecrush_upper (int)  : min=0 max=255 step=1 default=207 value=207<br />
whitecrush_lower (int)  : min=0 max=255 step=1 default=127 value=127<br />
uv_ratio (int)  : min=0 max=100 step=1 default=50 value=50<br />
full_luma_range (bool) : default=0 value=0<br />
coring (int)  : min=0 max=3 step=1 default=0 value=0</p>
<p><strong>v4l2-ctl &#8211;list-formats</strong><br />
ioctl: VIDIOC_ENUM_FMT<br />
Index       : 0<br />
Type        : Video Capture<br />
Pixel Format: &#8216;GREY&#8217;<br />
Name        : 8 bpp, gray</p>
<p>Index       : 1<br />
Type        : Video Capture<br />
Pixel Format: &#8216;HI24&#8242;<br />
Name        : 8 bpp, dithered color</p>
<p>Index       : 2<br />
Type        : Video Capture<br />
Pixel Format: &#8216;RGBO&#8217;<br />
Name        : 15 bpp RGB, le</p>
<p>Index       : 3<br />
Type        : Video Capture<br />
Pixel Format: &#8216;RGBQ&#8217;<br />
Name        : 15 bpp RGB, be</p>
<p>Index       : 4<br />
Type        : Video Capture<br />
Pixel Format: &#8216;RGBP&#8217;<br />
Name        : 16 bpp RGB, le</p>
<p>Index       : 5<br />
Type        : Video Capture<br />
Pixel Format: &#8216;RGBR&#8217;<br />
Name        : 16 bpp RGB, be</p>
<p>Index       : 6<br />
Type        : Video Capture<br />
Pixel Format: &#8216;BGR3&#8242;<br />
Name        : 24 bpp RGB, le</p>
<p>Index       : 7<br />
Type        : Video Capture<br />
Pixel Format: &#8216;BGR4&#8242;<br />
Name        : 32 bpp RGB, le</p>
<p>Index       : 8<br />
Type        : Video Capture<br />
Pixel Format: &#8216;RGB4&#8242;<br />
Name        : 32 bpp RGB, be</p>
<p>Index       : 9<br />
Type        : Video Capture<br />
Pixel Format: &#8216;YUYV&#8217;<br />
Name        : 4:2:2, packed, YUYV</p>
<p>Index       : 10<br />
Type        : Video Capture<br />
Pixel Format: &#8216;YUYV&#8217;<br />
Name        : 4:2:2, packed, YUYV</p>
<p>Index       : 11<br />
Type        : Video Capture<br />
Pixel Format: &#8216;UYVY&#8217;<br />
Name        : 4:2:2, packed, UYVY</p>
<p>Index       : 12<br />
Type        : Video Capture<br />
Pixel Format: &#8216;422P&#8217;<br />
Name        : 4:2:2, planar, Y-Cb-Cr</p>
<p>Index       : 13<br />
Type        : Video Capture<br />
Pixel Format: &#8216;YU12&#8242;<br />
Name        : 4:2:0, planar, Y-Cb-Cr</p>
<p>Index       : 14<br />
Type        : Video Capture<br />
Pixel Format: &#8216;YV12&#8242;<br />
Name        : 4:2:0, planar, Y-Cr-Cb</p>
<p>Index       : 15<br />
Type        : Video Capture<br />
Pixel Format: &#8216;411P&#8217;<br />
Name        : 4:1:1, planar, Y-Cb-Cr</p>
<p>Index       : 16<br />
Type        : Video Capture<br />
Pixel Format: &#8216;YUV9&#8242;<br />
Name        : 4:1:0, planar, Y-Cb-Cr</p>
<p>Index       : 17<br />
Type        : Video Capture<br />
Pixel Format: &#8216;YVU9&#8242;<br />
Name        : 4:1:0, planar, Y-Cr-Cb</p>
<p>Index       : 0<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;GREY&#8217;<br />
Name        : 8 bpp, gray</p>
<p>Index       : 1<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;HI24&#8242;<br />
Name        : 8 bpp, dithered color</p>
<p>Index       : 2<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;RGBO&#8217;<br />
Name        : 15 bpp RGB, le</p>
<p>Index       : 3<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;RGBQ&#8217;<br />
Name        : 15 bpp RGB, be</p>
<p>Index       : 4<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;RGBP&#8217;<br />
Name        : 16 bpp RGB, le</p>
<p>Index       : 5<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;RGBR&#8217;<br />
Name        : 16 bpp RGB, be</p>
<p>Index       : 6<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;BGR3&#8242;<br />
Name        : 24 bpp RGB, le</p>
<p>Index       : 7<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;BGR4&#8242;<br />
Name        : 32 bpp RGB, le</p>
<p>Index       : 8<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;RGB4&#8242;<br />
Name        : 32 bpp RGB, be</p>
<p>Index       : 9<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;YUYV&#8217;<br />
Name        : 4:2:2, packed, YUYV</p>
<p>Index       : 10<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;YUYV&#8217;<br />
Name        : 4:2:2, packed, YUYV</p>
<p>Index       : 11<br />
Type        : Video Overlay<br />
Pixel Format: &#8216;UYVY&#8217;<br />
Name        : 4:2:2, packed, UYVY</p>
<p><strong>v4l2-ctl &#8211;set-fmt-video=width=640,height=480</strong>:<em><strong>Set capture resolution to 640&#215;480</strong></em><br />
<strong>v4l2-ctl &#8211;set-ctrl=mute=0</strong>: <em><strong>(mute on (1) / off (0) )</strong></em><br />
<strong>v4l2-ctl &#8211;set-ctrl=automute=0</strong><br />
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" id="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b"  WIDTH="468px" HEIGHT="60px"> <PARAM NAME="movie" VALUE="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=GetDisplayTemplate"><PARAM NAME="quality" VALUE="high"><PARAM NAME="bgcolor" VALUE="#FFFFFF"><PARAM NAME="allowscriptaccess" VALUE="always"><embed src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=GetDisplayTemplate" id="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b" quality="high" bgcolor="#ffffff" name="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b" allowscriptaccess="always"  type="application/x-shockwave-flash" align="middle" height="60px" width="468px"></embed></OBJECT> <NOSCRIPT><A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=NoScript">Amazon.com Widgets</A></NOSCRIPT></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyspeak.org/?feed=rss2&amp;p=13</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Capturing video input for authoring to DVD with Linux</title>
		<link>http://www.anyspeak.org/?p=6</link>
		<comments>http://www.anyspeak.org/?p=6#comments</comments>
		<pubDate>Thu, 23 Jul 2009 14:23:15 +0000</pubDate>
		<dc:creator>tomas</dc:creator>
				<category><![CDATA[FFmpeg]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[dvd]]></category>
		<category><![CDATA[ntsc]]></category>
		<category><![CDATA[osprey]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[video4linux2]]></category>
		<category><![CDATA[viewcast]]></category>

		<guid isPermaLink="false">http://www.anyspeak.org/?p=6</guid>
		<description><![CDATA[The goal that I am trying to achieve is to capture video from an external source and encode it into a format that will be easily authored to a DVD. I will cover the DVD authoring process in another article.
Since I am using Linux one obvious solution is to use ffmpeg which is what I [...]]]></description>
			<content:encoded><![CDATA[<p>The goal that I am trying to achieve is to capture video from an external source and encode it into a format that will be easily authored to a DVD. I will cover the DVD authoring process in another article.<br />
Since I am using Linux one obvious solution is to use ffmpeg which is what I am going to use.<br />
My video source is a dvd player (via composite video out and RCA audio) and I&#8217;m capturing video with a Viewcast Osprey 230 (capturing via the composite video ) and audio via the motherboard onboard AC-97 line-in.</p>
<p>The Osprey 230 uses the Bt878 chipset and does have both audio and video capture capabilities but I have not yet had any success in actually capturing audio from the device so I&#8217;m using the motherboard onboard audio.</p>
<p>Here is the ffmpeg capture line that I am currently testing:</p>
<p><strong>ffmpeg -y -t 01:08:52 -f oss -ac 1 -i /dev/dsp -f video4linux2 -r 30000/1001 -s 720&#215;480 -i /dev/video -target ntsc-dvd -vcodec mpeg2video -ab 256k -acodec ac3 -r 30000/1001 -aspect 1.3333 -async 1 -b 3200k dv d19.mpg<span id="more-6"></span><br />
</strong></p>
<p>Here are the explanations of the options I&#8217;m using and why I think I need them.</p>
<p>First let me mention my understanding of ffmpeg and how the parameters work. It is my understanding that you set the options for the input audio and/or video and output audio and/or video and output file by putting parameters directly before the -i (input audio and/or video), -acodec (audio codec output), -vcodec (video codec output) or the output file.</p>
<p>So you can have the same option multiple times but for different inputs and the final output, you can see for instance that I set the frame rate to 30000/1001 (29.97 fps for NTSC) for both the video input and the output file.</p>
<p>There are some options however that this doesn&#8217;t necessarily apply to such as the -y flag which only makes sense for the output file.</p>
<p><strong>-y:</strong> overwrite output file without prompting, I&#8217;m testing various parameters so this makes sense at the moment.</p>
<p><strong>-t 01:08:52:</strong> timed capture of one hour, eight minutes and 52 seconds, I don&#8217;t want to sit there waiting to hit &#8216;q&#8217; to stop encoding so I&#8217;m setting the time to the length of my input video. I want to be able to compare output file size and quality so having the exact same length of video is helpful.</p>
<p><strong>-f oss:</strong> Setting the audio input format to oss (Open Sound System), this appears to be my only real option as I don&#8217;t believe that ALSA is supported at this time except via the ALSA OSS emulation.</p>
<p><strong>-ac 1:</strong> Set the audio input channels to one (mono) for the input device (/dev/dsp), haven&#8217;t been able to get stereo to work yet but for the audio that I&#8217;m working with it&#8217;s currently not important. I will attempt to find out why this doesn&#8217;t work in the future as I&#8217;m aware that I (or others) may want to have stereo audio.</p>
<p><strong>-i /dev/dsp:</strong> Specify the audio input device (/dev/dsp(n) is the digital sampling and recording device for audio, this may take some trial and error if you have multiple audio capture devices ( I have two for instance /dev/dsp onboard AC-97 audio and /dev/dsp1 the Osprey 230 audio capture device).</p>
<p><strong>-f video4linux2:</strong> Set the format for the input (/dev/video) to video4linux2 (out video capture driver).</p>
<p><strong>-r 30000/1001:</strong> Set the frame rate at which we want to capture our video from (/dev/video). This translates to an NTSC frame rate of 29.97fps.</p>
<p><strong>-s 720&#215;480:</strong> set the resolution size for the video input (/dev/video). I was using 640&#215;480 which is what the max capture size is suppose to be for the Osprey 230 but I haven&#8217;t seen any problems with setting this to 720&#215;480 which is what I would prefer for DVD output. Maybe there is some interpolation going on with the video4linux2 driver that I&#8217;m not seeing, I&#8217;ll have to investigate that further. NOTE: if I don&#8217;t set this then I get the following error: [video4linux2 @ 0x9e46990]Wrong size (0&#215;0)</p>
<p><strong>-target ntsc-dvd:</strong> set the target output for the video codec (-vcodec mpeg2video). So far this has yielded good output.</p>
<p><strong>-vcodec mpeg2video:</strong> Setting the output video codec to mpeg2video, this would be MPEG 2 video which should be able to be put on a DVD without transcoding since DVD&#8217;s use MPEG 2 for the video stream.</p>
<p><strong>-ab 256kb:</strong> Setting the audio bit rate for the output audio codec (-acodec ac3), this is probably higher than is needed (64kb would be sufficient) since the audio I am dealing with is primarily spoken word with little music but for future use this would probably be good.</p>
<p><strong>-r 30000/1001:</strong> Setting the output video frame rate to for NTSC 29.97, my target output, this might not be necessary since I set the -target of the video codec to ntsc-dvd. Maybe these options would make more sense flip-flopped or just have one, probably should look into it.</p>
<p><strong>-aspect 1.3333:</strong> Set the aspect ratio for the output video, I think this could also be 4:3 (4/3 = 1.3333). This is somewhat confusing since I&#8217;ve set the resolution size to 720&#215;480 which is standard for DVD&#8217;s but 720&#215;480 would in fact be and aspect ratio of 1.5. Standard (non widescreen) TV&#8217;s however use an aspect ratio of 4:3 or 1.3333 so the DVD aspect ratio of 1.5 (720&#215;480) would get adjusted to fit the TV aspect ratio of 1.3333. So, maybe I should set my capture size to 640&#215;480 and save myself some space? Again, have to look into this further as setting the input size to 640&#215;480 might conflict with the -target ntsc-dvd setting for the video output codec. Confused yet? I am.</p>
<p><strong>-async 1:</strong> This tells ffmpeg to try to sync the audio with the video once at the beginning, this seems to help keep the audio and video in sync, without this the audio tended to drift away from the video and started to look like a poorly dubbed film.</p>
<p><strong>-b 3200k:</strong> Set the bit rate for the output video, this was my attempt at making the output video files a little smaller.</p>
<p><strong>dvd19.mpg:</strong> The name of the output file.</p>
<p>So the resulting file that I have is 1.8GB for one hour, eight minutes and 52 seconds of video, seems to be of decent quality and requires minimal modification for DVD authoring.</p>
<p>For Hardware and Software specifications please see below:</p>
<p><strong>Testing Hardware:<br />
Capture Card:</strong> Viewcast Osprey 230<br />
<strong>Input source:</strong> Philips DVP5982 DVD Player<br />
<strong>Computer:</strong> Dell Precision 530<br />
<strong>Specs:<br />
</strong><strong>Processor(s):</strong> 2 32bit Physical CPU&#8217;s</p>
<ol>
<li> Intel(R) XEON(TM) CPU 1.80GHz</li>
<li> Intel(R) XEON(TM) CPU 1.80GHz</li>
</ol>
<p><strong>Memory:</strong> 1 GB Total Memory</p>
<ol>
<li> 256MiB RIMM RDRAM RAMBUS 400 MHz (2.5 ns)</li>
<li> 256MiB RIMM RDRAM RAMBUS 400 MHz (2.5 ns)</li>
<li> 256MiB RIMM RDRAM RAMBUS 400 MHz (2.5 ns)</li>
<li> 256MiB RIMM RDRAM RAMBUS 400 MHz (2.5 ns)</li>
</ol>
<p><strong>Hard Disk(s):</strong></p>
<ol>
<li> 36GB SCSI Disk – IBM IC35L036UWDY10-0</li>
</ol>
<p><strong>Optical Disk:</strong></p>
<ol>
<li> DVD reader &#8211; HL-DT-ST RW/DVD GCC-4521B</li>
<li> CD-ROM &#8211; Lite-On LTN486S 48x Max</li>
</ol>
<p><strong>Audio:</strong> Onboard Intel Corporation 82801BA/BAM AC&#8217;97 Audio Controller (rev 04)<br />
<strong>Lan: </strong>Onboard 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)<br />
<strong>Graphics Adapter:</strong> nVidia Corporation NV18 [GeForce4 MX 440 AGP 8x] (rev c1)<br />
<strong>PCI Cards:</strong></p>
<ol>
<li> Viewcast Osprey 230 ( Brooktree Corporation Bt878 Video Capture (rev 11) )</li>
<li> Adaptec AIC-7892P U160/m SCSI storage controller</li>
</ol>
<p><strong>Testing Software:<br />
</strong><br />
<strong>Operating System:</strong> Ubuntu Linux 9.04</p>
<p><strong>Kernel:</strong> Linux 2.6.28-13-generic #45-Ubuntu SMP Tue Jun 30 19:49:51 UTC 2009 i686 GNU/Linux</p>
<p><strong>Capture Software:<br />
</strong><br />
<strong>ffmpeg:</strong> SVN-r19426</p>
<p><strong>Configuration:</strong> &#8211;enable-libmp3lame &#8211;enable-libfaad &#8211;enable-libxvid &#8211;enable-libfaac &#8211;enable-gpl &#8211;enable-libvorbis &#8211;enable-libfaadbin &#8211;enable-libgsm &#8211;enable-pthreads &#8211;enable-postproc &#8211;enable-nonfree &#8211;enable-libtheora</p>
<p>libavutil 50. 3. 0 / 50. 3. 0<br />
libavcodec 52.32. 0 / 52.32. 0<br />
libavformat 52.36. 0 / 52.36. 0<br />
libavdevice 52. 2. 0 / 52. 2. 0<br />
libswscale 0. 7. 1 / 0. 7. 1<br />
libpostproc 51. 2. 0 / 51. 2. 0<br />
built on Jul 13 2009 16:08:32, gcc: 4.3.3</p>
<p><strong>Support Software:<br />
</strong><br />
<strong>v4l2-ctrl:</strong> ivtv-utils 1.2.0-1</p>
<p><strong>Kernel Modules (drivers):</strong></p>
<p><strong>v4l2_common:</strong><strong></strong><br />
<strong> description :</strong> misc helper functions for v4l2 device drivers<br />
<strong> srcversion : </strong>3CA2C700C624D5A395E16FC<br />
<strong> vermagic :</strong> 2.6.28-13-generic SMP mod_unload modversions 586</p>
<p><strong>bttv :</strong><br />
<strong>description :</strong> bttv &#8211; v4l/v4l2 driver module for bt848/878 based cards<br />
<strong>srcversion :</strong> 97A8FA06F360905675E7702<br />
<strong>vermagic : </strong>2.6.28-13-generic SMP mod_unload modversions 586<br />
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" id="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b"  WIDTH="468px" HEIGHT="60px"> <PARAM NAME="movie" VALUE="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=GetDisplayTemplate"><PARAM NAME="quality" VALUE="high"><PARAM NAME="bgcolor" VALUE="#FFFFFF"><PARAM NAME="allowscriptaccess" VALUE="always"><embed src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=GetDisplayTemplate" id="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b" quality="high" bgcolor="#ffffff" name="Player_c3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b" allowscriptaccess="always"  type="application/x-shockwave-flash" align="middle" height="60px" width="468px"></embed></OBJECT> <NOSCRIPT><A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Fanyspeakorg-20%2F8009%2Fc3c8ab8e-00b6-4ab5-a6ce-3d7ece7bea8b&#038;Operation=NoScript">Amazon.com Widgets</A></NOSCRIPT></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anyspeak.org/?feed=rss2&amp;p=6</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
