<?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/"
				  >
<channel>
<title>MortalPowers Linux, Open Source, and Gaming</title>
<link>http://mortalpowers.com/</link>
<description><![CDATA[Articles and News Regarding Linux, Technology, projects, and gaming on MortalPowers.com.]]></description>
<item>
<title>YouTube Freedom Version 2</title>
<link>http://mortalpowers.com/news/youtube-freedom-version-2</link>
<pubDate>Thu, 26 Aug 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>YouTube has a major challenge with their adoption of HTML5, they want to leverage the new format and capabilities, but they don't want to make it easy to download videos.  This is going to be one of the biggest challenges youtube faces until they realize that allowing users to download videos will not reduce their market position or decrease ad revenue.</p>
<p>Originally with the flash version, downloading youtube videos was as easy as copying the unstreamed files from <span class="code">/tmp/</span> assuming you are using linux.  With the introduction of HTML5 videos (both .h264 and webm videos) they made it a little bit harder, because HTML5 videos were not stored in adobe's cache, but in your browsers further obfuscated cache.  This was overcome by disabling a content blocking box that they put over the video.</p>
<h2>Round 2 of Downloading YouTube Videos</h2>
<p>Now it seems they have updated the site again, and some additional sleuthing was required to see what they were doing.  They are now using javascript to capture and ignore the right click event when you click on the video.  I have expanded my bookmarklet to fix this issue as well.  I left the original unblock code in there just in case they try multiple techniques.  <a href="javascript:(function(){vb=document.getElementsByClassName('video-blocker')[0];if(vb)vb.style['display'] = 'none';document.getElementsByClassName('video-content')[0].oncontextmenu = false;})();">Drag this bookmarklet to your bookmark bar.</a> This bookmarklet unhooks the context menu capturing event, and removes a blocker box if one is found.</p>]]></description>
</item>
<item>
<title>Copy Paste Instructions for ffmpeg</title>
<link>http://mortalpowers.com/news/copy-paste-instructions-for-ffmpeg</link>
<pubDate>Sun, 15 Aug 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>I love the guide found at <a href="http://ubuntuforums.org/showthread.php?t=786095">http://ubuntuforums.org/showthread.php?t=786095</a>. It's one of the best guides for getting ffmpeg working with a lot of the "encumbered" codecs and capabilities.  In order to make the process simpler, I have updated the ffmpeg connection from svn to git, and put the entire set of commands into a single spot.  Simply copy and past the following into a console to run the entire set.</p>
<div class="code">
sudo apt-get remove ffmpeg x264 libx264-dev

sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev

cd
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall --pkgname=x264 --pkgversion "2:0.`grep X264_BUILD x264.h -m1 | cut -d' ' -f3`.`git rev-list HEAD | wc -l`+git`git rev-list HEAD -n 1 | head -c 7`" --backup=no --default

cd
git clone git://review.webmproject.org/libvpx.git
cd libvpx
./configure
make
sudo checkinstall --pkgname=libvpx --pkgversion="`date +%Y%m%d%H%M`-git" --backup=no --default

cd
git clone git://git.ffmpeg.org/ffmpeg/
cd ffmpeg
git clone git://git.ffmpeg.org/libswscale/
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion "`date +%Y%m%d%H%M`-git" --backup=no --default
hash x264 ffmpeg ffplay

make tools/qt-faststart
sudo checkinstall --pkgname=qt-faststart --pkgversion "4:SVN -r`svn info | grep Revision | awk '{ print $NF }'`" --backup=no --default install -D -m755 tools/qt-faststart /usr/local/bin/qt-faststart
</div>
]]></description>
</item>
<item>
<title>Video Tag Fixed in Chromium Nightlies</title>
<link>http://mortalpowers.com/news/video-tag-fixed-in-chromium-nightlies</link>
<pubDate>Sun, 08 Aug 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>As of 2010-08-07 it is safe again to update to the chromium nightlies without losing large amounts of functionality.  As of  chromium-browser                                  6.0.487.0~svn20100806r55176-0ubuntu1~ucd1~lucid, the issue with &lt;video&gt; and &lt;audio&gt; tags has been fixed, and these pieces of HTML5 are working again.  This means that my HTML5 video gallery is working again in chromium, as well as the YouTube HTML5 preview.  Hurray!</p>]]></description>
</item>
<item>
<title>X Forwarding over Multiple SSH Hops</title>
<link>http://mortalpowers.com/news/x-forwarding-over-multiple-ssh-hops</link>
<pubDate>Sat, 07 Aug 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>X11 forwarding (AKA X Forwarding) is a slow but manageable way to run a program remotely, accessing a remote systems disk, memory, CPU, and filesystem, but sending all user interactions and display over the internet to be shown on your computer.  X forwarding allows my to run visual diagnostic tools like kdirstat, or even pull up my home photo management program (fspot) without needing to install a local copy, or connect to the remote disk and deal with those complexities.</p>
<h2>Typical X Forwarding Use Case</h2>
<p>Let's image for a moment you just want to browse the remote filesystem with dolphin.</p>
<p><strong>Step 1</strong> - <span class="code">ssh server01 -XYC</span> The XYC flags will enable X forwarding, compress the communication, and enables "trusted" X Forwarding.</p>
<p><strong>Step 2</strong> - Run your program, for example <span class="code">kdirstat /</span>  This command will run kdirstat using the memory, cpu, etc of server01, but the display will be shown, and interact with the mouse and keyboard of the client.</p>
<h2>Multiple hop X Forwarding</h2>
<p>Unfortunately it's not as easy to chain X11 forwarding as it is to chain normal SSH connections.  The workaround is to use SSH tunneling.  The general strategy is to create an SSH tunnel which you can open a second SSH connection with.</p>
<div class="code">
TERMINAL 1:
ssh server01 -L2200:server02:22

TERMINAL 2:
ssh localhost -XYC -p2200
kdirstat /
</div>
<p>Using these commands in two terminal windows (the first one will just be a normal SSH connection to server01 that you will need to leave open) will open <span class="code">kdirstat /</span> using the CPU, memory, etc of server02, on the display of the original client, as desired.</p>
]]></description>
</item>
<item>
<title>The Wave is Over</title>
<link>http://mortalpowers.com/news/the-wave-is-over</link>
<pubDate>Wed, 04 Aug 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<img src="https://wave.google.com/images/wave-60_wshadow.gif" alt="Google Wave" style="float:left;"/>
<p>After about two years in the wild, Google Wave has been declared dead.  Several important pieces of Google Wave were open source, and even more of the closed source pieces, will live on elsewhere on the internet and in Google's other services.  Despite this, Google Wave, which I consider to be one of the most important and fundamental advances in communication will cease to exist.  Google is no longer maintaining and developing Google Wave.</p>
<p>Google seems to have made a lot of mistakes with Google Wave that lead to it's demise.  The first mistake was their slow private beta release.  With a communication tool designed to replace email and IM and other forms of communication, the tool was almost pointless when you couldn't communicate with those you wanted to.  Another mistake was not building a transport mechanism to connect Google Wave to other existing communication tools.  Their final mistake that was quite likely the death blow was that their implementation was slow and buggy.  Often users of the wave would experience a crash (similar in spirit to "oh snap" from the Chromium browser, but far more frequent.</p>
<p>I'm hoping other tools such as <span class="code">pygowave</span> that implement the wave functionality more fully, with built in federation continue to grow and mature, and I still believe that a threaded dynamic open-ended communication will be the future, and will replace many of the existing tools we use today.  We will just have to wait until the market is ready for such an advanced and capable tool.</p>]]></description>
</item>
<item>
<title>Apache Setup Problem: Getting Multiple Authentication Prompts</title>
<link>http://mortalpowers.com/news/apache-setup-problem-getting-multiple-authentication-prompts</link>
<pubDate>Mon, 02 Aug 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>Apache has a very decent authentication scheme.  In Apache you define what are called "Authorization Realms".  You can define these in your apache configuration files on a directory or site, or you can define them in a .htaccess file.  Each of the Authorization Realm specifications will point to a password file and will look like this:</p>
<div class="code">
AuthType Basic
AuthName "Authorized Users Only"
AuthUserFile /var/www/.htpasswd
Require valid-user
</div>
<p>This file defines a few things, it defines which users to allow, where the passwords are stored, and the name of the Authorization Realm.  The name of the authorization realm is important, because you can have multiple layers of authentication.  For example, you could have a folder that any valid user can access, and a subfolder which only 2 specified valid users have access to.  If you ensure that the AuthName is set the same, the user will only have to enter their username and password once, whereas if you have different AuthNames, the user will be required to pass into each realm separately, even if the password file is the same.</p>
<h2>Important Security Note</h2>
<p>Any time you use Authorization through Apache, you should ensure that your users are connecting with HTTPS, otherwise the passwords will be sent in plain text, and anyone listening in the middle could see and capture them.</p>]]></description>
</item>
<item>
<title>How I Make Tough Website Decisions</title>
<link>http://mortalpowers.com/news/how-i-make-tough-website-decisions</link>
<pubDate>Sun, 01 Aug 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>I need to make some decisions soon about MortalPowers.com.  This includes questions about the appearance, functionality, the focus of my time, and what sort of browsers and codecs I want to support.  To answer these questions, I'm going to try to go back to the original question, which is asking myself what are my goals, and why am I building this site.</p>
<p>What is my goal with this website?  My goal is to increase traffic, to provide a place for my development projects to live; grow; and be shared, and finally to meet the needs of my visitors.</p>
<p>The last goal is going to be one of the most central, because it will inform the first two.  But to answer this question, I need to know as accurately as possible, who are my visitors? I'm going to use the last month as the window and breakdown my traffic from multiple source (Google Analytics and AWStats primarily).</p>
<h2>Who visits my site?</h2>
<h3>Browsers</h3>

<p class="photoexplanation"><img src="/images/articles/tough-decisions-browser-by-visits.png" alt="42.22% of visitors use firefox, 39.98% of use chrome, 7.9% use Internet Explorer, 
and 6.13% use Safari"/> Right out of the gate, 8% of my visitors will be unable to view any HTML5 videos.  At this point, I'm comfortable instantly dropping the 8% of my visitors that still use Internet Explorer.  This is partially a philosophical decision, but it's also in part because most of the people that come using that browser will have no interest in anything I have to say.</p>
<p class="photoexplanation"><img src="/images/articles/tough-decisions-firefox-by-visits.png" alt="55% use 3.6.6, 10.06% use 3.6.8, 7.82% use 3.6.7, 5.03% use 3.6.3, 3.07% use 3.0.19"/> Only about 3% of my Firefox users will be unable to view my Ogg Theora videos.  This indicates that Firefox users tend to update their browser relatively frequently.  This is great, because Firefox and Mozilla have committed to support to a lot of the technologies I want to use and support.</p>
<h3>Operating Systems</h3>
<p class="photoexplanation"><img src="/images/articles/tough-decisions-os-by-visits.png" alt="45.50% use Windows,39.62% use Linux, 13.09% use Macintosh, and about 1.63% use Mobile"/> It seems that a major plurality of my users (45.5%) still use windows to access my site.  This is acceptable to me because Windows users can still be interested in Open Source, in software development, or even interested in trying or understanding Ubuntu.  I will try to do what I can to support these individuals.  As an interesting tidbit, Windows use ends up breaking down as follows for me: 43.9% use Windows 7, 39.22% use Windows XP, and 14.03% use Vista, the rest use Windows Server 2003.</p>
<h3>Screen Resolution</h3>
<p>Less than 7% of my users have screens of 1024 width, everyone else has 1280 or much greater.</p>
<h2>What this means for Video</h2>
<p>One of the goals that has most recently bubbled to the surface for me is the idea of supporting my video gallery on mobile.  I'm continually disappointed with YouTube's mobile site because their video collection is a subset of their full video gallery.  Looking at the video support offered by the users of my site, I can cover almost all of my desktop users with Ogg Theora, and until WebM becomes a universal standard, this will be the universal standard.  I'm not anticipating WebM to become available across my user base until at least 2012, but time will tell.  On mobile, the only option is to use .h264.  Based on these competing values, I'm going to attempt to have 2 encodings for each of my videos.  I'm not sure yet whether this will mean I have a mobile version of the gallery, or whether I will try to use a single HTML5 video gallery with multiple sources, and I'm definitely open to feedback.</p>
<p>Over the next few months and years, I'm anticipating that mobile usage of my website will grow from the lowly 1% to 20%-50%.  Google itself has declared a "mobile first" strategy, and the human workflow of using a phone seems to be much more natural than the bulky process of using a laptop or desktop computer, despite the speed, cost, and additional capabilities provided by desktop computers.</p>
<p>I hate the idea of supporting the .h264 standard, but until WebM is available, I'm going to have to make a decision in favor of my users, rather than in favor of my philosophy that Android and iPhone and Internet Explorer seem to have already rejected.  It still makes no sense to me why the mobile phones and Internet Explorer don't at least offer Theora video decoding, since the software is free (as in speech) for them to implement.</p>

]]></description>
</item>
<item>
<title>Video Tag Broken in Chromium Nightlies</title>
<link>http://mortalpowers.com/news/video-tag-broken-in-chromium-nightlies</link>
<pubDate>Sat, 31 Jul 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>If you do manual upgrades and are using the Chromium Nightly (or daily) builds, you should probably not upgrade.  The last 2 nightlies released contain issues with broken HTML5 video.  Not only do they no longer support any codecs, the entire video tag doesn't work.  This can be confirmed by visiting YouTube with the HTML5 beta active, by visiting my <a href="/video-gallery/">HTML5 Video Gallery</a>, or by visiting the HTML5 Test.</p>
<h2>Affected Chromium Versions</h2>
<ul><li>6.0.478</li><li>6.0.480</li><li>6.0.483</li><li>6.0.485</li></ul>
<h2>Unaffected Chromium Versions</h2>
<ul><li>6.0.472 (and earlier)</li></ul>]]></description>
</item>
<item>
<title>Dell Fully Drops Ubuntu</title>
<link>http://mortalpowers.com/news/dell-fully-drops-ubuntu</link>
<pubDate>Mon, 26 Jul 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>Despite Dell's own statements about the quality and security of Linux (Ubuntu in particular), it seems that they have now dropped Ubuntu support from their website. As of now, Dell is no longer selling Ubuntu based machines from their website.</p>
<p>I'm continually astounded by the fact that more people don't use Linux.  Economics should dictate that when people want Ubuntu, and it sells well, they increase their offering.  The problem with Operating System economics is that there is a huge fear of changing operating systems, making lock-in much worse than with normal market economics.  The other piece is that Microsoft has an established monopoly.  In order to use the software someone wants, that software has to be built for one or more operating systems.  Most people can't switch to a better, higher quality, lower cost solution because their software is built for a specific list of operating systems (GoToMeeting, Adobe Products).  This lock-in hurts consumers, and prevents better options from being a choice.</p>
<p>This problem has been alleviated somewhat by web-based software, but the problem continues to this day.  This is why it's so saddening that Ubuntu is giving up their Ubuntu offering.</p>]]></description>
</item>
<item>
<title>Dell Makes Awesome Ubuntu Commercial - And doesn't show anyone</title>
<link>http://mortalpowers.com/news/dell-makes-awesome-ubuntu-commercial-and-doesnt-show-anyone</link>
<pubDate>Sun, 25 Jul 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>It seems that Dell's investment to Ubuntu went further than they ever let anyone know.  They actually made a pretty decent commercial for Ubuntu on Dell laptops.  Check out the video below.  The strangest part is that I've never seen it, and no one I know has seen it.  It's almost as if they made a commercial, but then decided not to market Ubuntu on Dell. The simplest explanation is that Microsoft blocked them from marketing Ubuntu, as Microsoft has done time and time again with Dell, as well as all of the major manufacturers.</p>
<object width="400" height="225" type="application/x-shockwave-flash">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10518151&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />
<embed src="http://vimeo.com/moogaloop.swf?clip_id=10518151&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"/></object>]]></description>
</item>
<item>
<title>I just bought a Samsung Vibrant (Galaxy S)</title>
<link>http://mortalpowers.com/news/i-just-bought-a-samsung-vibrant-galaxy-s</link>
<pubDate>Sat, 24 Jul 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>My first experience with the phone has been awesome.  The phone is much lighter than my G1 (and is even favorable to even my car key), it's faster, it's stable (although I haven't been able to root or replace the ROM on it yet, hee hee), and the screen is much better.  I was definitely afraid of giving up a hardware keyboard, but with Swype, it's very easy to use.  I'll post a full video review at some point, but for now I need to get back to playing with my phone.</p>
<p>While you wait, here's a picture I took from the phone on the 5MP camera:</p>
<img src="/posse/640x640/02010-07-24%2009.11.44.jpg" alt="A window with a view" style="max-width:100%;"/>]]></description>
</item>
<item>
<title>Upgrading my phone from CyanogenMod 6.0 RC1 (Froyo) to CyanogenMod 5.0.8 (Eclair)</title>
<link>http://mortalpowers.com/news/upgrading-my-phone-from-cyanogenmod-60-rc1-froyo-to-cyanogenmod-508-eclair</link>
<pubDate>Wed, 21 Jul 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>The title of this article is correct, I believe I just <em>upgraded</em> my G1 from Android 2.2 to Android 2.1.  Over a week ago now, I had upgraded to CyanogenMod 6.0 RC1, and every day it seemed to slow down a little, and get a little less reliable.  Sending messages, launching the phone, or checking settings would sometimes lock the device up for 10-20 minutes, and other times it would reboot the entire phone.</p>
<p>I flashed the CM 5.0.8 image, wiped, and flashed the image again and my phone came back with all of my settings, applications (I was previously using Apps2SD, which doesn't yet work in CM6), and my phone responds about 30 times faster than the G1 on Froyo.</p>
<p>Although I love the idea of CM6 and Froyo on the G1, for me the device was much too slow and lacked stability to continue using it. I'll switch back when the following criteria have been met:</p>
<ol><li>Android Marketplace background threads don't crash</li>
<li>Settings/Phone/Messaging/Home Screen don't take 20-360 seconds to load</li>
<li>Flash is available for the browser</li>
<li>Apps2SD works again as an option for storing applications on the SD card</li>
</ol>
<p>Until then, I'm back on CM 5.0.8 and happier than I could have imagined.</p>]]></description>
</item>
<item>
<title>Connect Multiple Screens with x2vnc</title>
<link>http://mortalpowers.com/news/connect-multiple-screens-with-x2vnc</link>
<pubDate>Mon, 19 Jul 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>There are a lot of ways to connect various Linux or Windows machines.  Linux has great support for the windows remote desktop protocol (RDP) with <span class="code">rdesktop</span>, but if you have second (or third) screen that can be seen at the same time as your main screen, you should try out <span class="code">x2vnc</span>.</p>
<h2>What is X2VNC</h2>
<p>X2VNC is a software tool readily available for linux that creates a mapping between a VNC server (on any system type) and an X screen in linux.</p>
<h2>Example X2VNC Setup</h2>
<p>I have a two screen setup on Kubuntu.  I also have a TV screen above and to the left of my two monitors.  <span class="code">x2vnc</span> allows me to map the VNC server running on the TV as a third screen on my main system.  The first step was to install a vnc server on the computer connected to my TV.  The second step was to run <span class="code">x2vnc -west yt:5900</span>, which creates the screen mapping.</p>]]></description>
</item>
<item>
<title>Example Virtual Host Apache Configuration</title>
<link>http://mortalpowers.com/news/example-virtual-host-apache-configuration</link>
<pubDate>Wed, 14 Jul 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>Someone asked for an example of Apache Virtual Hosts configuration.  All of my virtual hosts have the same format as the following two examples:</p>
<div class="code">
&lt;VirtualHost *:80&gt;
        DocumentRoot "/var/www/smp/public"
        ServerName stonedmonkeyproductions.com
        ServerAlias stonedmonkeyproductions.com *.stonedmonkeyproductions.com
        ErrorLog /var/www/logs/stonedmonkeyproductions-error_log
        CustomLog /var/www/logs/stonedmonkeyproductions-access_log combined
&lt;/VirtualHost&gt;
&lt;VirtualHost *:80&gt;
        DocumentRoot "/var/www/ta/public"
        ServerName trollattack.com
        ServerAlias trollattack.com *.trollattack.com
        ErrorLog /var/www/logs/trollattack-error_log
        CustomLog /var/www/logs/trollattack-access_log combined
&lt;/VirtualHost&gt;
</div>
<h2>Types of Virtual Host Configurations</h2>
<h3>Name Based Virtual Hosts</h3>
<p>There are two main types of virtual host configuration.  The first called "Name Based" virtual hosting matches the examples above.  In this case, the domain name provided as part of the request determines the site that apache matches. Name based hosting does not work with SSL because Apache doesn't know the domain name requested until AFTER the encryption negotiation is complete.</p>
<h3>Address Based Virtual Hosts</h3>
<p>The second type of virtual host is address based hosting.  This will only be used when the server has many IPs.  The server uses the interface (server ip or port) of the incoming request to determine the site to respond with.  This is almost always used to establish SSL hosting in combination with name based hosting.</p>
<p>Example address based virtual hosts:</p>
<div class="code">
&lt;VirtualHost 111.22.33.44&gt;
       ServerName www.customer-1.com
       DocumentRoot /www/hosts/www.customer-1.com/docs
       ScriptAlias /cgi-bin/ /www/hosts/www.customer-1.com/cgi-bin
&lt;/VirtualHost&gt;
&lt;VirtualHost 111.22.33.44&gt;
       ServerName www.customer-2.com
       DocumentRoot /www/hosts/www.customer-2.com/docs
       ScriptAlias /cgi-bin/ /www/hosts/www.customer-2.com/cgi-bin
&lt;/VirtualHost&gt;
</div>
<h3>Dynamic Virtual Hosts</h3>
<p>The third type (which is new to me) is mass or dynamically configured hosts. These hosts use the IP or Domain name to determine the DocumentRoot of the site.  <a href="http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html#interpol">Read the Apache spec here</a>.  Example of what would go in your <span class="code">httpd.conf</span> below:</p>
<div class="code">
UseCanonicalName Off
VirtualDocumentRoot /usr/local/apache/vhosts/%0
</div>
<p>The %0 when used with VirtualDocumentRoot replaces %0 with the domain name.</p>]]></description>
</item>
<item>
<title>Fixit: Cyanogen ROM Manager for G1 Broke Recovery Partition</title>
<link>http://mortalpowers.com/news/fixit-cyanogen-rom-manager-for-g1-broke-recovery-partition</link>
<pubDate>Tue, 13 Jul 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>After finally getting CyanogenMod 6.0 RC1 to work on my phone (Hurray for Froyo!), I felt like getting a little dangerous and checking out the ROM Manager, and updating my Recovery partition from the very old JesusFreke version. The problem was that running the "Install ClockworkMod Recovery" tool reported sucesss, but when restarting my phone, neither the recovery partition, nor normal boot worked.</p>
<p>I have learned a lot about my phone while fixing this, and below are the steps to resolve this and get a working Recovery partition.  I believe the entire issue is caused by a lack of memory on the G1 when running CM6.0 that results in the Recovery partition install failing, while still reporting success.  I'm going to assume you have the Danger SPL because this is required to get G1 working at all with CM 6.0.</p>
<h2>Steps to fix</h2>
<ol>
<li>Pull the battery or start your phone from the "off" position</li>
<li>Let your phone charge for around 20 minutes (or ensure you have at least that much battery power)</li>
<li>Hold the back button and press power - The phone should enter "fastboot" mode, which actually comes from your phone's SPL.</li>
<li>Press the button associated with "Reset",  which is also called "Send' or the "Call button".</li>
<li>Reboot your phone - You should now be able to get back into your main CM 6.0 install.</li>
<li>Turn off the phone again</li>
<li>Hold the back button and press power again - The phone should again enter "fastboot" mode.</li>
<li>Plug in a USB cable to your computer</li>
<li>Download fastboot from <a href="http://developer.htc.com/adp.html">http://developer.htc.com/adp.html</a></li>
<li>Download the Recovery Image you want (For me this was <a href="http://files.androidspin.com/downloads.php?dir=amon_ra/RECOVERY/&file=recovery-RA-dream-v1.7.0.img">RA-dream-v1.7.0.img</a>, but check the bottom of <a href="http://forum.xda-developers.com/showpost.php?p=4647751&postcount=1">this forum post</a> to make sure you have the most recent version.</li>
<li>Run fastboot flash recovery <file> (On linux this was <span class="code">sudo ./fastboot flash recovery ~/recovery-RA-dream-v1.7.0.img<span>) - This uses your "fastboot" mode phone that has plenty of memory to write the new recovery image properly.</li>
<li>Reboot (<span class="code">sudo ./fastboot reboot</span> works in linux)</li>
<li>Reboot or power on while holding "Home", and you should boot into your recovery partition.</li>
<li>Everything should work at this point, your SPL which you didn't touch, your recovery partition which you overwrote, and your main partition which you reset into a working state.  Congratulations!</li>
</ol>
<h2>Still having issues?</h2>
<p>Leave a comment and hopefully I or someone else can help you.</p>]]></description>
</item>
<item>
<title>Video Gallery now on separate pages</title>
<link>http://mortalpowers.com/news/video-gallery-now-on-separate-pages</link>
<pubDate>Mon, 12 Jul 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>Despite the recent minimal growth of the <a href="/video-gallery/"> HTML5 Video Gallery</a>, the page was beginning to become unwieldy, and with Chrome's recent change to autobuffer all HTML5 videos on every page, loading the gallery index page resulted in a large amount of bandwidth usage.  To fix this, I have split each video off onto it's own page, and filled the gallery home page with images from the videos.  Although this means an extra click to watch any individual video, the overall experience will be greater.</p>
<p>As the number of videos I upload and share on this site grow, I'll probably be adding additional ways to browse and navigate the content, similar to YouTube or Vimeo, or any of the large number of high quality video websites around.</p>
<h2>Still Ogg Theora and Ogg Vorbis?</h2>
<p>Until such a time as WebM Becomes popular and well supported, I will continue to support Ogg Theora and Ogg Vorbis.  Recently though, my resolve to resist .h264 has been decreasing.  In this case the pragmatism of having instant universal mobile device support is very enticing, despite the rejection of potential freedom that would accompany this idea.  I have read some scathing reviews of WebM and Free (as in Freedom) Video recently, making me question if Free Video is even possible with the current state of Patent Law in the United States.  I'll stay tuned, and begin supporting WebM as soon as reasonable, and keep a close eye on my desire to support .h264.</p>]]></description>
</item>
<item>
<title>Be Careful with CyanogenMod 6.0 RC1's Rom Manager</title>
<link>http://mortalpowers.com/news/be-careful-with-cyanogenmod-60-rc1s-rom-manager</link>
<pubDate>Sun, 11 Jul 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>This weekend I updated my phone from CyanogenMod 5.0.8 to CyanogenMod 6.0 RC1.  This is a great improvement that has improved the stability, speed, and visual appeal of my phone.   Despite some ongoing issues with the market, my phone is in the best state it has ever been in.</p>
<p>Since things were going so well, I decided to try using the ROM Manager included in the release.  The ROM Manager has a built in tool to install the ClockworkMod Recovery image.  A couple of taps later and my device reported that the ROM Manager was installed.  I attempted to reboot my phone and was left with a persistant "G1" message that would never go away.  This occurred regardless of whether I attempted to boot normally or into Recovery Mode.  Thinking my phone was permanently bricked scared me a lot.</p>
<p>The "fix" (although I still have no Recovery Image) was to hold the camera button when booting the phone, and then tell what I believe was Danger SPL to reset my phone.  This was a very scary menu option, but thinking my phone was bricked meant I had nothing to lose.  After pressing the reset button and restarting my phone, it booted fine back into CM 6.0 RC1, with all of my data, apps, and settings still in place.</p>
<h2>End Result</h2>
<p>In the end, I am running Froyo (Android 2.2) on my G1, and I'm pretty happy with it.  The market crashes and I can't install some apps that started downloaded but never finished. I have no recovery image, my phone is still slower than I would like it to be (Not CyanogenMod or Froyo's fault), and voice text entry doesn't work.  On the other hand the Gallery application now has 3D presentation of my photos and videos (including those stored on my device, but not taken from my device); it is reasonably fast too.</p>
<p>I'm waiting to see if any of these items are improved or fixed in the next release, as always.</p>]]></description>
</item>
<item>
<title>HTML Floats Being Affected by Grandparent Elements</title>
<link>http://mortalpowers.com/news/html-floats-being-affected-by-grandparent-elements</link>
<pubDate>Tue, 22 Jun 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>For the longest time I have been perplexed by the issue of an html div tag and its children being affected by a float present in the grandparent element.  The behavior I was seeing was that whenever I would float any element inside of my div, it would be pushed down to below the floated elements in the grandparent element.  This was definitely not desired, as it made the vertical location of the new floated element unpredictable.  Researching this issue lead me to very few details on the topic.</p>
<p>In the end, going back to the W3c specifications gave me my answer.  Specifically the section on <a href="http://www.w3.org/TR/CSS21/visuren.html#block-formatting">Block Formatting</a> was useful.  It seems that what I really wanted was to set up a new block formatting context.  To do so, I had to set the overflow property such as <span class="code">overflow:hidden;</span>.  Doing so set up a new context, and allowed my elements to float as desired., while ignoring the grandparent context.</p>
<p>As a strange and useful side effect, I was also able to remove the <span class="code">margin-right:200px;</span> from my main column CSS, as apparently that part is handled just fine by the <span class="code">overflow:hidden;</span>.  Testing in Firefox and Chromium show that this works great and looks just fine.  If someone wants to test it in another browser and let me know how bad I have broken my site, I'd appreciate it, :).</p>]]></description>
</item>
<item>
<title>iPad Frustrations (or how I learned to stop worrying and love Android)</title>
<link>http://mortalpowers.com/news/ipad-frustrations-or-how-i-learned-to-stop-worrying-and-love-android</link>
<pubDate>Mon, 21 Jun 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p><span class="fancy" style="float:left;font-size:24px;font-family: verdana, serif;padding:5px;border:1px solid #CCC;border-radius:10px;margin-right:5px;margin-bottom:5px;">iPad</span>For work I have needed to become accustomed to and extremely familiar with Apple's iPad.  Part of that process has been using it off and on for about two weeks now.  In that time I have learned many things.  I found out that to turn the device on for the first time, you need a windows or mac computer running iTunes.  I found out that every time you install an application, the device takes you to the home screen, and you have to manually relaunch the marketplace to install another from the same list or category.  I found out the screen gets smudged and covered in finger oils very quickly.  Finally, I found out that the iPad is a pretty decent device for small games in terms of form factor and touchscreen interface.</p>
<p>In regard to the overall concept of a tablet (be it iPad or Android), I'm not sure I'm fully sold.  It looks great, and it feels futuristic holding it in my hands, but at the same time data entry becomes a huge nuisance (I can type around 90 words per minute, but with any sort of touch screen, including a large screen like on the iPad, I'm reduced to ten to thirty words per minute).  This may be a level of lazy that most humans aren't prepared for, but I also found my hands getting tired or bored holding the screen up for long periods of time.  These could be solved with an attachable or bluetooth keyboard, and a case that allows propping the device up, but I'm not looking for a workaround for the iPad, I'm looking for a solution to my problems.  This means that in most cases I would recommend a netbook or laptop with a touch screen.</p>
<h2>The Biggest Failure of the iPad</h2>
<p>I'm not sure if this is something others have run into, or if it was just me.  On the other hand I can't believe this happens to anyone, when apple is so famous for "intuitive user experiences".  Today when I attempted to copy a photo or two to the iPad, I plugged it in using the provided cable, and iTunes told me that the device could not be connected to, and would need to be reformatted back to factory settings.  I was shocked.  It still told me there was a connection, it told me my software was up to date, and showed me the serial number of the device, but I couldn't connect or sync or transfer any data.</p>
<p>After fuming for a few minutes about the devices' inability to retrieve my data or recent interactions, I gave up and submitted to a factory reset.  After a few warnings asking me "Are you sure you are willing to delete all of your settings and data and media on the device?" (not that I had much choice), the device began reformatting.  When it was complete, I was happily surprised that it asked me if I wanted to restore a backup from the previous week.  I chose to do so and when it was complete, removed the device from USB.  When I launched the device, I was shocked to find none of my programs or settings had been restored, all of my applications were missing.  Once again being saddened, I reconnected the device to the computer and let it sync again.  This time the sync restored my applications and data.</p>
<p>I consider myself a power user or computer expert, but even I was at a loss as to what was going to happen after each of the steps.  How are normal users supposed to know that a "complete factory reset, losing all data media and settings", would later have the option to restore those pieces?  This type of experience glitch probably has a lot of people going to Apple and paying for extra support, which further incentivizes them to try to maintain a faulty product, along with a culture that believes everything they make is perfect.</p>
<h2>Apple is full of Jerks</h2>
<p>It's been seen over and over again, with everything from multitasking to copy and paste.  Apple releases a product stating "you don't need features x y or z, they are only for geeks and people don't need them", and consumers buy into that.  A year or two later, Apple adds those features and says "look, we added features x y and z because they are useful and good for consumers", and make consumers foot the bill for an entirely new product often.  This type of capitalistic behavior is one of the worse outcomes of capitalism because consumers aren't informed enough to know they they are buying into and supporting vendor lock-in.</p>
<p>Comparing all of this with Android and Google's development model shows they are on completely opposite ends of the spectrum . The Android developers want you to be able to use your phone or device or microwave however you want to.  This includes being able to get data off of your SD card when there is a hardware failure, as well as things like being able to use Flash.  As much as I hate to say it, we need to follow the early 90's Microsoft model and build an open platform so that everyone can build applications.  With Android, we can make sure that platform is truly free this time.</p>
]]></description>
</item>
<item>
<title>MortalPowers Now Uses OpenID</title>
<link>http://mortalpowers.com/news/mortalpowers-now-uses-openid</link>
<pubDate>Thu, 17 Jun 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>Tonight I worked on launching Google Account / OpenID integration on mortalpowers.com.  Now, instead of needing to register, or create a username/password, you can simply visit the registration page and sign up with Google's OpenID provider.</p>
<p>If you sign up right now, the only permission you will get is to submit to the <a href="/video-gallery/">HTML5 Video Gallery</a>.</p>
<h2>OpenID Implementation Details</h2>
<p>It turns out OpenID integration is much simpler than Facebook Connect.  I understand Facebook Connect and OAuth implementations have much more capabilities, but they also have much more complexity.</p>
<p>For this implementation, whenever a login request or signup request is made, the user will call up Google (or whatever OpenID provider is hardcoded into my script) with the requesting URL.  The OpenID provider will generate an authentication token if the user agrees to the request, and the authentication token will be passed back to my script for use.  The security model is that only my site and Google (with valid authentication) know or can generate this token, so anyone that has this token and can pass it to me can be trusted as having passed Google's authentication.</p>
<p>Hopefully I will be able to integrate with Facebook Connect or Google's OAuth services to get better information about users and start providing integration with other services and capabilities.  I have Facebook Connect code that used to work, but after moving all authenticated pages to https, the Facebook Connect code no longer works, and deserves a complete rewrite based on my knew cross-site authentication and authorization knowledge.</p>]]></description>
</item>
<item>
<title>New Features for Reddit Imager</title>
<link>http://mortalpowers.com/news/new-features-for-reddit-imager</link>
<pubDate>Wed, 16 Jun 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>One of the most common reasons to build a tool for an open source developer is when the developer him or herself wants the tool. This is the case with <a href="https://chrome.google.com/extensions/developer/edit/fccfbppkihgcoagmgoakhidhpmjbgpdo">Reddit Imager</a>, a tool designed to improve Reddit.  The concept is simple, whenever there is a URL or image format we recognize (very few right now), replace the tiny thumbnail with the blown up version, maximized to the screen width.  I launched this extension on the Chrome Extension Gallery because I wanted to try out the gallery at least once, despite my dislike of giving Google control.  Now the extension has a couple users, and I want to make sure they get the features and capabilities they want.</p>
<h2>What's new in 1.1?</h2>
<p>Reddit Imager 1.1 released today adds an options page where users can specify their mode.  Normal mode automatically replaces matching thumbnails with their blown up versions.  I also added activated mode, which waits for a user to try to click on the thumbnail before blowing it up.  I find this feature a little confusing because there are very few thumbnails we are actually capable of blowing up, but it was requested and I wanted to try it out.</p>
<p>Let me know if you think I should switch default modes, add other options, or add some type of visual indicator for which images can be blown up on the home page.</p>
<p>Report issues or feature requests here: <a href="http://github.com/PeEllAvaj/redditimager/issues">http://github.com/PeEllAvaj/redditimager/issues</a></p>]]></description>
</item>
<item>
<title>Shotwell Replaces F-Spot in Ubuntu and Trashes your Collection</title>
<link>http://mortalpowers.com/news/shotwell-replaces-f-spot-in-ubuntu-and-trashes-your-collection</link>
<pubDate>Tue, 15 Jun 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>It was allegedly announced that a new photo management tool called <strong>Shotwell</strong> will be replacing F-Spot in future Ubuntu releases.  Whether or not this is true remains to be seen, as the only evidence I have found comes from a slashdot article which refers to various tech blogs.</p>
<p>If it is the case that Shotwell is taking over for F-Spot as the photo management tool, I'm extremely disappointed.  I just installed Shotwell to try it out on my computer and was shocked by what I found.  After opening Shotwell, I discovered that in traditional Gnome fashion, there are <em>NO OPTIONS</em>, which means you can't configure how the import works, or where you store your collection.</p>
<p>The inability to do any configuration is a huge deal for me because although I store my photos in <span>~/Pictures</span>, I currently manage them with F-Spot.  This means that after I tried out an import with Shotwell, my F-Spot folders were being filled with unmanaged (by F-Spot) pictures.  Fortunately Shotwell makes copies of images, rather than moving them, so I was able simply to trash all of the photos in Shotwell to restore my computer to the earlier state.  Because there are no configuration options, there is absolutely no way for me to try out Shotwell, or to properly migrate my collection from what I have presently.</p>
<p>The other problem with Shotwell is that it seems very far from complete.  To add tags, you have to right click or use the menu to manually "Add Tags" which then allows you to manually type each of the tags you want associated with a photo or a set of photos.  This type of interface is clunky and takes users away from the ease of use and visual capabilities that F-Spot has.</p>
<h2>Shotwell Recommendation</h2>
<p>Perhaps things will get better in the future, but for now, stay very far away from Shotwell, or install it in a virtual machine.</p>]]></description>
</item>
<item>
<title>New Spam Capabilties for MortalPowers</title>
<link>http://mortalpowers.com/news/new-spam-capabilties-for-mortalpowers</link>
<pubDate>Mon, 14 Jun 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>It seems that over the past two days, a bot or two has begun spamming my comment form with junk content.  In general, I'm pretty trusting of users that comment on articles, requiring only that those who wish to comment pass a simple CAPTCHA.  I use ReCAPTCHA, but apparently this has been bypassed sufficiently well to allow spammers to make it through, or there are malicious human beings out there trying to make a buck by spamming my comment forms.</p>
<p>Despite the fact that all HTML is escaped before being displayed on my comment pages, this is still a nuisance and gets in the way of valid data on the comment pages of my site.  To deal with this, I have added a couple new protections.  I now track the IP of comments (for spam banning purposes alone), and have built in capabilities for myself to mark items as spam.  I'm actually keeping the spam in the database, because if I need to, I will apply some Bayesian filtering.</p>
<h2>How would Bayesian spam filtering work?</h2>
<p>Bayes' Theorem is a theorem that describes the likelihood of events given other events.  For more detailed information check out the wikipedia page for <a href="http://en.wikipedia.org/wiki/Bayes'_theorem">Bayes' Theorem</a>.  Using this theorem, computer systems can look at past messages that have been spam, or not spam, and based on the contents of a future message, make a prediction or assign a probability to whether or not it is spam, without human interaction.  This is most often used with email systems, but it would work just well for my commenting system.</p>
<p>Hopefully spammers realize it is futile, or I can just ban an IP block, but if those are unsuccessful, I don't want to manually need to groom all comments on my site, so I may implement a Bayesian filter.  If I do need to, I'll post details about the implementation, and possibly source code at that time. This could also have a big impact on my video submission system, but time will tell.  I've already had to change the URL of my comment system several times, and I've considered eliminating it entirely.</p>
<p>What do you think about spam and what steps are reasonable to vet visitors and content submitters?</p>]]></description>
</item>
<item>
<title>New Ogg Theora Videos in HTML5 Video Gallery</title>
<link>http://mortalpowers.com/news/new-ogg-theora-videos-in-html5-video-gallery</link>
<pubDate>Sun, 13 Jun 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>A set of new videos has been uploaded into the <a href="/video-gallery/">HTML5 Video Gallery</a>.  This set of videos was taken at the Minnesota Zoo, and features several different animals.  The quality, bitrate, and file size seem very reasonable at this point, but I'm excited to see what WebM will do when better encoding and decoding libraries and programs for it are released.</p>
<p>If you like what you see, or want to share something of your own, <a href="/video-upload.php">try uploading your own video to the gallery</a>.</p>]]></description>
</item>
<item>
<title>Humble Indie Bundle Open Source Update</title>
<link>http://mortalpowers.com/news/humble-indie-bundle-open-source-update</link>
<pubDate>Thu, 03 Jun 2010 00:00:00 -0500</pubDate>
<description><![CDATA[<p>The Humble Indie Bundle was a huge success, making over 1.25 Million Dollars for the game developers and the charities.  This has been a great example of what can be accomplished with the "Pay what you want" model, and a huge success for Linux Gaming, as well as DRM-free gaming.  As part of the promised outcome of this huge success was that 4 of the 5 games would be open sourced.  As of today, 3 of the 4 have been released. This isn't the complete success I was hoping for, but it definitely meets my expectations.  The reason it wasn't a complete success was because although they have released the source code sufficient for users to build the games, they are maintaining control of all of the arts and assets.  I see their perspective, being able to retain control of the creative side and the trademark, while sharing the logic and code with the world.</p>
<h2>Gish</h2>
<p>Gish can be downloaded or forked from Github at <a href="http://github.com/blinry/gish">http://github.com/blinry/gish</a>.</p>
<h2>Penumbra</h2>
<p>Penumbra can be downloaded or forked from Github at <a href="http://github.com/FrictionalGames">http://github.com/FrictionalGames</a>.  It is split into 3 different projects for the different modules the game is built into.</p>
<h2>Lugaru</h2>
<p>Although this project is being hosted and maintained on Icculus.org, there is a Github copy at <a href="http://github.com/pvtcupcakes/Lugaru">http://github.com/pvtcupcakes/Lugaru</a> being maintained by volunteers.</p>]]></description>
</item>
</channel>
</rss>