<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6960901088048265512</id><updated>2011-11-27T20:12:57.660-05:00</updated><category term='appletv'/><category term='linux'/><category term='xml'/><category term='java'/><category term='rpc'/><category term='tips'/><category term='howto'/><category term='sagetv'/><category term='gwt'/><category term='mediacenter'/><category term='eclipse'/><category term='review'/><category term='raid'/><category term='ideas'/><category term='metadata'/><category term='xbmc'/><title type='text'>Technosmatter</title><subtitle type='html'>Technosmatter is a blog about technologies that matter to me.  Technosmatter is also a play on words.  Technos Matter and Techno Smatter.  Smatter meaning to play around with, dabble in, or to speak unintelligently, which may sometimes apply.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-5285084389800175148</id><published>2010-03-17T13:49:00.000-04:00</published><updated>2010-03-17T13:49:31.522-04:00</updated><title type='text'>Apple removing protective film from their store</title><content type='html'>I recently read an article on &lt;a href="http://www.engadget.com/2010/03/17/apple-said-to-be-pulling-all-protective-screen-film-products-fro/#commentform"&gt;Engadget&lt;/a&gt; about how Apple is removing protective screens from their store.&amp;nbsp; There's a lot of sinister comments about how Apple is probably going to be making a competing product, or they are "censoring" products now... but I think the reality is much simpler; they are ugly. End of story.&lt;br /&gt;&lt;br /&gt;How many times as one of your iPhone/Touch friends came up to you and said, "Hey, check out my new ultra kool iPhone...", and then they proceed to hand you a condom wrapped device with the plastic screen protector starting to fall off, or chipped around the edges....&amp;nbsp; Yeah... we've all been there.&amp;nbsp; And then when you pull out your Nexus One and show them, they give you this look like... "Well, try to imagine mine without the condom and screen protector that's starting to peel away... mine would look way cooler than yours then..."&lt;br /&gt;&lt;br /&gt;Bottom line, is that Steve doesn't believe the iphone should be wrapped in condoms, duct tape, electrical tape, or plastic screen things.&amp;nbsp; The iPhone probably does look cool without all those things... but good luck finding one.&lt;br /&gt;&lt;br /&gt;Everytime I see people holding an iPhone wrapped in some awful wrapping, I imagine that if I walked into their livingroom, I'd probably find that their furniture draped in large plastic coverings....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-5285084389800175148?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.engadget.com/2010/03/17/apple-said-to-be-pulling-all-protective-screen-film-products-fro/#commentform' title='Apple removing protective film from their store'/><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/5285084389800175148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=5285084389800175148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/5285084389800175148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/5285084389800175148'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2010/03/apple-removing-protective-film-from.html' title='Apple removing protective film from their store'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-2296351283175131219</id><published>2010-03-03T13:10:00.000-05:00</published><updated>2010-03-03T13:10:14.509-05:00</updated><title type='text'>My App Store is Bigger Than Yours...</title><content type='html'>Really people, is this what it's come down to.&amp;nbsp; It seems that every few days I see a blog posting that heralds Apple because they have 140K+ apps, followed by, "oh and Android has a pitiful 20K+ apps".&lt;br /&gt;&lt;br /&gt;What's the obsession with this comparison.&amp;nbsp; Let's face it, once your get past the first 1000 apps, you really don't have much left for comparisons.&amp;nbsp; How many calculators, twitter clients, flashlights, farts, etc, do we need?&amp;nbsp;&amp;nbsp; I mean, using the # of apps as a success metric, would indicate that the Apple Mac OSX is basically a failure.&amp;nbsp; I mean windows has far more apps for the desktop than Apple, so, we must conclude that Apple has failed on the desktop, and should just fold up shop now.&amp;nbsp; The reality, is the Apple's desktop is probably just a strong as Windows, since again, after we get past the first several hundred apps... the rest really don't do much to attract a person to one OS vs the other.&lt;br /&gt;&lt;br /&gt;It seems that this obsession with App numbers goes even deeper making intelligent people making statements like... "Apple can't help but to succeed with the ipad... when it releases, it will have 140K+ apps at its disposal".&amp;nbsp; I had someone say those exact words to me.&amp;nbsp; My comment was, "Oh, so OSX doesn't have 140K apps".&amp;nbsp; Let's face it, OSX has more than 140K apps, so it would make more sense for Apple to install OSX on a tablet to gain access to the millions of applications available on OSX.&amp;nbsp; But wait, that would mean that Apple couldn't control what you do with the device, and they could install applications from other sources, other than Apple.&amp;nbsp; That's not good for Apple.&lt;br /&gt;&lt;br /&gt;I don't think that anyone is going to disagree that the iphone has more apps.&amp;nbsp; I have an ipod touch and an android phone.&amp;nbsp; I've installed about 20 apps on each, and beyond that, I can't say there's much more that really interests me.&amp;nbsp; Everyone is different, so chances are you are going to have a different set of 20 apps, but I'm willing to bet that even in those 20, we are going to have some overlap.&lt;br /&gt;&lt;br /&gt;The number of apps in the store is a good marketing metric, but it doesn't indicate a useful measure of applications.&amp;nbsp; I've had people say that "free apps" are useless because they are free.&amp;nbsp; You do realize that the difference in 95% of the cases between a free app and a paid one... is the price.&amp;nbsp; I mean, in most cases, it's still some poor smuck writing the application in his/her spare time after work.&amp;nbsp; One person decides to give it away (like doing charity) and the other person decides to charge 99 cents.&lt;br /&gt;&lt;br /&gt;I think a better metric is to look at metrics like month over month growth, and return rates, etc, but you don't see a lot of that happening.&lt;br /&gt;&lt;br /&gt;So, the next time you hear yourself croaking out the 140K stat about the Apple App Store, just ask yourself, is that a relevant statistic in your argument.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-2296351283175131219?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/2296351283175131219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=2296351283175131219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/2296351283175131219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/2296351283175131219'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2010/03/my-app-store-is-bigger-than-yours.html' title='My App Store is Bigger Than Yours...'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-7059413640437063245</id><published>2009-07-22T12:46:00.000-04:00</published><updated>2009-07-22T12:46:02.809-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='raid'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Setting up Linux Software RAID in Ubuntu 9.04</title><content type='html'>I decided that I needed some data redundancy for my media collection and personal documents.&amp;nbsp;&amp;nbsp; I was running zfs for awhile, with 2, 1 gig drives, but then I decided to switch to Linux Software Raid.&lt;br /&gt;&lt;br /&gt;I found 2 pretty articles on how to setup and configure a Linux Software RAID.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://wiki.ubuntu.com/Raid"&gt;RAID - Ubuntu Wiki&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mywheel.net/blog/index.php/software-raid-in-ubuntu/"&gt;Software Bytes - Software Raid in Ubuntu&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In my particular setup, I had 2, 1 gig disks, but I wanted to re-use those while switching to the software raid setup.&amp;nbsp; So, do that, I basically, stole a disk from the zfs raid setup, partitioned it, created the linux raid, formatted it, and then copied the zfs drive to the newly created linux raid device.&amp;nbsp; Pretty easy right?&amp;nbsp; Well, it was, but i'll into some extra details about the complete process.&lt;br /&gt;&lt;br /&gt;I had 2 sata devices, &lt;b&gt;/dev/sda&lt;/b&gt;, and &lt;b&gt;/dev/sdb&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;First, install mdadm&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;# sudo apt-get install mdadm&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;When you install mdadm, it will want to install &lt;b&gt;postfix&lt;/b&gt;.&amp;nbsp; I don't know why, but it does.&amp;nbsp; I just answered the basic install questions and carried on.&lt;br /&gt;&lt;br /&gt;Next, prepare 1 of your 2 disks for a linux raid.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;# sudo fdisk /dev/sda&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;If it doesn't have a partition, then create one (&lt;b&gt;n&lt;/b&gt;), and then change the partition type to Raid Auto Detect (&lt;b&gt;t&lt;/b&gt; then &lt;b&gt;fd&lt;/b&gt;)&lt;br /&gt;&lt;br /&gt;You should now have a &lt;b&gt;/dev/sda1&lt;/b&gt; device.&amp;nbsp; You can verify this using the print command (&lt;b&gt;p&lt;/b&gt;) and then write (&lt;b&gt;w&lt;/b&gt;) your changes.&lt;br /&gt;&lt;br /&gt;Next, we create the raid array.&amp;nbsp; In my case, I will eventually have 2 disks, but I wanted to create the array with just a single disk (/dev/sda1) for now, and then add in the other disk (/dev/sdb1) &lt;i&gt;later&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Creating the array was pretty simple.&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 missing&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Notice that for the second device, I used the word, "&lt;i&gt;&lt;b&gt;missing&lt;/b&gt;&lt;/i&gt;".&amp;nbsp; This is special reserved word for mdadm and it is used to acknowledge that you are creating an array, but you do not yet have all the devices.&amp;nbsp; You need at least 1 device, which I did have.&lt;br /&gt;&lt;br /&gt;Now that you've created the array, we need to format it.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;# sudo mkfs.ext4 /dev/md0&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;That should take a few minutes, and we are now ready to mount the device.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# sudo mkdir /media/Transfer&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;# sudo mount /dev/md0 /media/Transfer&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;We now have a mounted device under /media/Tranfer.&amp;nbsp; We'll use that to transfer all the files from our old device onto the new device.&amp;nbsp; In my case, my zfs drive was mounted under &lt;b&gt;/home&lt;/b&gt;, so I used rsync to sync the zfs mounted drive with my newly mounted linux raid device&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# sudo rsync -av /home /media/Transfer&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This will take a long time, depending on your disk size.&amp;nbsp; In my case, it took a couple of hours.&lt;br /&gt;&lt;br /&gt;Once the transfer is complete, I then added in my other zfs drive to my linux raid.&amp;nbsp; &lt;i&gt;This required that I partition the drive in the same way that I partitioned my other drive.&amp;nbsp; Basically, using fdisk, I created a new partition, and then set the partition type to fd (Linux Raid)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Once that was done, all I needed to do was add the new drive to my existing linux raid array.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# sudo mdadm --manage /dev/md0 -a /dev/sdb1&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Once you do this, you'll notice your hard drive light will remain on or flash very quickly.&amp;nbsp; Basically the Raid Array is now copying all data from the source disk to the newly added disk.&amp;nbsp; This will take a couple of hours as well, but the system is fully usable during that time.&lt;br /&gt;&lt;br /&gt;You can check the status of the Raid at any time by issuing the command&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;# cat /proc/mdstat&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;The output will be something like,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Personalities : [raid1] &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;md0 : active raid1 sda1[2] sdb1[0]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 976759936 blocks [2/1] [U_]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [========&amp;gt;............]&amp;nbsp; recovery = 44.4% (434131840/976759936) finish=135.6min speed=66645K/sec&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finally, don't forget to update your &lt;b&gt;/etc/fstab &lt;/b&gt;to reflect that your new mount device is &lt;b&gt;/dev/md0&lt;/b&gt; and not whatever it used to be.&amp;nbsp; In my case, it was a matter of changing the device to that &lt;b&gt;/home&lt;/b&gt; was mounted as device &lt;b&gt;/dev/md0&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-7059413640437063245?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/7059413640437063245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=7059413640437063245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/7059413640437063245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/7059413640437063245'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2009/07/setting-up-linux-software-raid-in.html' title='Setting up Linux Software RAID in Ubuntu 9.04'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-8355799913663201575</id><published>2009-03-31T14:27:00.001-04:00</published><updated>2009-03-31T14:28:14.261-04:00</updated><title type='text'>Tip: How to find to which jar a class file belongs</title><content type='html'>It's a common problem in larger projects, where you are using a Class reference, but you don't know which of the 20 jars in your project is actually providing the implementation.&lt;br /&gt;&lt;br /&gt;In my case, I needed to know which jar file was providing the Hex class.&lt;br /&gt;&lt;br /&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;System.out.println(Hex.class.getProtectionDomain().&lt;br /&gt;    getCodeSource().getLocation().toString());&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style="font-family:inherit;"&gt;&lt;span style="font-size:small;"&gt;It turns out that it's in axis2.jar :)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-8355799913663201575?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/8355799913663201575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=8355799913663201575' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/8355799913663201575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/8355799913663201575'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2009/03/tip-how-to-find-to-which-jar-class-file.html' title='Tip: How to find to which jar a class file belongs'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-3540670054022071643</id><published>2009-02-04T15:35:00.033-05:00</published><updated>2009-02-04T15:49:15.758-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Using Bookmarks in Your Development Projects</title><content type='html'>I've recently began helping with large project at work.&amp;nbsp; The project contains a very large codebase, and in working through all the pieces, I thought, &lt;i&gt;"I wish I could just bookmark some of these locations, so that I could return to particular areas later on"&lt;/i&gt;.&amp;nbsp;&amp;nbsp; This thought hit me after I spent about 10 minutes trying to find a piece of code that I knew I visited earlier in the week.&lt;br /&gt;&lt;br /&gt;It appears that I didn't have to look far for a bookmarking feature.&amp;nbsp; I use Eclipse, and the great folks on that project have already thought about this.&amp;nbsp; To bookmark a section of code, simply right click in the left hand margin of the code editor, and you'll see an "&lt;b&gt;Add Bookmark...&lt;/b&gt;" link.&amp;nbsp; Click it, and you will create a bookmark in the code that you can then use to quickly jump back to that location.&lt;br /&gt;&lt;br /&gt;You'll also want to add the "&lt;b&gt;Bookmarks&lt;/b&gt;" view to your perspective as well.&amp;nbsp; Simply click &lt;b&gt;Window -&amp;gt; Show View&lt;/b&gt; and enter Bookmark.&amp;nbsp; Then add that view.&lt;br /&gt;&lt;br /&gt;Bookmarks isn't something that you'll need/want when you are browsing your own projects, but it can certainly save time when you are browsing code in a larger project that you are not yet familiar with.&lt;br /&gt;&lt;br /&gt;Bookmarking... It's a good thing. (Sometimes)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-3540670054022071643?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/3540670054022071643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=3540670054022071643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/3540670054022071643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/3540670054022071643'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2009/02/using-bookmarks-in-your-development.html' title='Using Bookmarks in Your Development Projects'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-2593795566966939179</id><published>2009-01-06T14:37:00.000-05:00</published><updated>2009-01-06T14:41:09.289-05:00</updated><title type='text'>Apple Store: Music to be DRM Free this year</title><content type='html'>Well it appears that Apple music will finally become totally DRM free by the end of the first quarter of this year.&lt;br /&gt;&lt;br /&gt;The Apple Keynote for this year was quite dull, but that was one small piece of good news to come out of it.&lt;br /&gt;&lt;br /&gt;How long before TV and Video execs realize that DRM is bad for their content as well?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-2593795566966939179?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.engadget.com/2009/01/06/live-from-the-macworld-2009-keynote/' title='Apple Store: Music to be DRM Free this year'/><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/2593795566966939179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=2593795566966939179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/2593795566966939179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/2593795566966939179'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2009/01/apple-store-music-to-be-drm-free-this.html' title='Apple Store: Music to be DRM Free this year'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-8767170714811280680</id><published>2008-12-18T18:56:00.005-05:00</published><updated>2008-12-18T21:32:00.574-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediacenter'/><category scheme='http://www.blogger.com/atom/ns#' term='sagetv'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='xbmc'/><category scheme='http://www.blogger.com/atom/ns#' term='appletv'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>XBMC on AppleTV - Is is worth it?</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_us3iT7XKgMM/SUryHkvDmGI/AAAAAAAAABM/x5CZEhb1m0U/s1600-h/IMG_1633.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img src="http://2.bp.blogspot.com/_us3iT7XKgMM/SUryHkvDmGI/AAAAAAAAABM/x5CZEhb1m0U/s200/IMG_1633.JPG" border="0" /&gt;&lt;/a&gt;I Recently ordered an &lt;a href="http://www.apple.com/appletv/"&gt;AppleTV&lt;/a&gt; for a friend.  Our intentions were to use the AppleTV unit with &lt;a href="http://xbmc.org/"&gt;XMBC&lt;/a&gt;.  He currently has XMBC running the Xbox and we are both huge fans of the XMBC interface.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_us3iT7XKgMM/SUryYhfbzeI/AAAAAAAAABU/fwQgExQyp8A/s1600-h/IMG_1634.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="http://2.bp.blogspot.com/_us3iT7XKgMM/SUryYhfbzeI/AAAAAAAAABU/fwQgExQyp8A/s200/IMG_1634.JPG" border="0" /&gt;&lt;/a&gt;After unboxing the AppleTV, I immediately used &lt;a href="http://code.google.com/p/atvusb-creator/"&gt;atbusb-creator&lt;/a&gt; to create the boot loader that could install XMBC.  There is a Windows version, but I could not get it to actually write the image to a USB drive on my Windows machine.  Fortunately, I also have Leopard installed, so I was able to boot into OSX and run the Mac version, which ran fine.  I also ended up using 2 different usb drives because during my first attempt the AppleTV unit did not recognize my usb drive.  On my second attempt, using my Kingston Data Traveller, it worked fine.  My first usb drive was just a cheap, unbranded, 1gig drive that bought a few years back.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_us3iT7XKgMM/SUr6s2cyrSI/AAAAAAAAACE/LAbO50Iywas/s1600-h/IMG_1652.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="http://2.bp.blogspot.com/_us3iT7XKgMM/SUr6s2cyrSI/AAAAAAAAACE/LAbO50Iywas/s200/IMG_1652.JPG" border="0" /&gt;&lt;/a&gt;Patching the AppleTV was a snap.  I just followed the &lt;a href="http://code.google.com/p/atvusb-creator/"&gt;documentation&lt;/a&gt;.  Once I rebooted the AppleTV I had an XBMC menu, which then allowed me to download and install the latest version quite easily.&lt;br /&gt;&lt;br /&gt;This is where the fun stopped.  First, the AppleTV unit does not have a power off (at least nothing that was obvious), so, for every reboot, I had to unplug the unit.  While this wasn't a huge deal in my test environment, it's going to be annoying to anyone that has a unit in their home entertainment cabinet.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_us3iT7XKgMM/SUr6gqhYbbI/AAAAAAAAABk/oPfLFxZiDGU/s1600-h/IMG_1646.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img src="http://3.bp.blogspot.com/_us3iT7XKgMM/SUr6gqhYbbI/AAAAAAAAABk/oPfLFxZiDGU/s200/IMG_1646.JPG" border="0" /&gt;&lt;/a&gt;The AppleTV unit takes about 1 - 2 minutes to fully boot, and put you at the main menu.  I was pleased, and yet surprised, but the simplicity and plainness of the AppleTV main menu.  It's just a simple rectangular menu without a background image.  For Apple, I was surprised that there wasn't more, but at the same time, I was happy that Apple decided to forgo gimicky, and stick with functional.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_us3iT7XKgMM/SUr6kGf5mFI/AAAAAAAAABs/N61Qlh-8qlM/s1600-h/IMG_1648.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img src="http://2.bp.blogspot.com/_us3iT7XKgMM/SUr6kGf5mFI/AAAAAAAAABs/N61Qlh-8qlM/s200/IMG_1648.JPG" border="0" /&gt;&lt;/a&gt;I didn't spend too much time in the AppleTV UI, since it's not really a useful piece of software, unless you have iTunes installed, or you are willing to buy or rent DRM movies.   I did try out the YouTube videos.  It worked.  I went into the Movies section as well, and played a trailer.  It worked.  Since the AppleTV unit can't actually play anything over the network, without iTunes, I wasn't able to try out any streaming videos.&lt;br /&gt;&lt;br /&gt;So, after a few minutes, I decided to launch XBMC.  Having used XBMC on the XBOX for a couple of years, this was the real prize for me.  After XBMC launched, I was actually stuck in a window (not fullscreen).  I then used the Settings menu to make the application fullscreen.  I Also calibrated the screen, so that the UI could fill the entire area.  I wasn't disappointed with the UI.  It was responsive and worked pretty much like the XBOX version.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_us3iT7XKgMM/SUr6zHvE6LI/AAAAAAAAACU/Ye3yFh7kmHY/s1600-h/IMG_1655.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img src="http://1.bp.blogspot.com/_us3iT7XKgMM/SUr6zHvE6LI/AAAAAAAAACU/Ye3yFh7kmHY/s320/IMG_1655.JPG" border="0" /&gt;&lt;/a&gt;I immediately configured XBMC to connect back to my media share.  In a few minutes, I had complete access to all my movies and recorded shows.  Playing an SD avi file played fine.  Only having a 6 button remote proved to be challenging.  You don't realize the extent to which you use other remote buttons, until you only have 6 to choose from.  Let's just say, that in XMBC on the Xbox, having the extra buttons is really useful, and I'm sure they'd be useful on the AppleTV as well.&lt;br /&gt;&lt;br /&gt;To my disappointment, the XBMC on the AppleTV could not play any 720p x264 content in a mkv container.  I tried about 10 files, and all files were un watchable.  Audio was fine, but the video was completely jittery.  This was a huge disappointment for me.  The core reason my friend had purchased this unit was because he wanted to watch 720p content in XBMC.  That's not going to happen with this release.  It's not the fault of XMBC, it's a great product, but there's only so much you can do when you have decode and render in software on such a limited device.  Apparently the device will play 720p content if you convert it to mp4, but who wants to convert video?&lt;br /&gt;&lt;br /&gt;We both should have done more research into XBMC on the AppleTV before buying the unit.  But, we were such fans, we rushed in.  Given that XBMC can't play 720p x64 content (without re-encoding it), then he could have purchased and Xbox and put XBMC on that for only $50.    You can already play 720p content on an Xbox, if you are willing to convert it to mpeg2.  So, right now, we have 1 brand new AppleTV unit for sale.&lt;br /&gt;&lt;br /&gt;Is XBMC on the AppleTV worth it?  Well, if you're an AppleTV fan, and you have already purchased an AppleTV for the purposes of renting and downloading movies, then I'd say that Yes, putting on XBMC is well worth it.  XMBC will add functionality to the AppleTV unit, and you won't be disappointed, until you try to play your 720p content.  But, if you are looking at buying an AppleTV just to run XBMC, then buy a Xbox.  For much less, you will get the same features.&lt;br /&gt;&lt;br /&gt;A couple of weeks ago, I test drove a &lt;a href="http://www.popcornhour.com/onlinestore/"&gt;Popcorn Hour&lt;/a&gt; unit.  Even though I was unimpressed with the performance of the UI, I would certainly choose that unit over the AppleTV, solely based on the fact that it played my 720p mkv files without an issue.&lt;br /&gt;&lt;br /&gt;Recently, &lt;a href="http://www.sagetv.com/"&gt;SageTV&lt;/a&gt; released a stand alone HD Player, which I suspect would be the better than both the AppleTV or the Popcorn Hour.  I haven't tried it myself, but you can check out more on the &lt;a href="http://www.sagetv.com/hd_theater.html"&gt;SageTV HD Theatre&lt;/a&gt; (HD200) on &lt;a href="http://www.geektonic.com/2008/12/sagetv-hd200-media-player-unboxed.html"&gt;GeekTonic&lt;/a&gt;.  I currently own the HD100 that SageTV released previous to the HD200, and it plays all my current media without issue.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:large;"&gt;The Bad&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Slow boot time&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No cables (except for power)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Only 6 buttons on the remote&lt;/li&gt;&lt;li&gt;XBMC can't play HD files&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No power off button&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The unit runs very hot&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:large;"&gt;The Good&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Simple AppleTV interface&lt;/li&gt;&lt;li&gt;XBMC was easy to install&lt;/li&gt;&lt;li&gt;XBMC worked well (as long you don't need to play HD)&lt;/li&gt;&lt;li&gt;Slim and Sleek unit&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:large;"&gt;More AppleTV Images&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:large;"&gt;&lt;span style="font-size:small;"&gt;Movie Listings&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_us3iT7XKgMM/SUr6nQIvxqI/AAAAAAAAAB0/gHQiEGIiias/s1600-h/IMG_1650.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://1.bp.blogspot.com/_us3iT7XKgMM/SUr6nQIvxqI/AAAAAAAAAB0/gHQiEGIiias/s320/IMG_1650.JPG" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;The Mummy Movie Details&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_us3iT7XKgMM/SUr6qScDZKI/AAAAAAAAAB8/1yjAQhQq-xI/s1600-h/IMG_1651.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://1.bp.blogspot.com/_us3iT7XKgMM/SUr6qScDZKI/AAAAAAAAAB8/1yjAQhQq-xI/s320/IMG_1651.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-8767170714811280680?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://xbmc.org/wiki/?title=XBMC_for_Mac_on_Apple_TV' title='XBMC on AppleTV - Is is worth it?'/><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/8767170714811280680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=8767170714811280680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/8767170714811280680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/8767170714811280680'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/12/xbmc-on-appletv-is-is-worth-it.html' title='XBMC on AppleTV - Is is worth it?'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_us3iT7XKgMM/SUryHkvDmGI/AAAAAAAAABM/x5CZEhb1m0U/s72-c/IMG_1633.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-2844668763352753718</id><published>2008-12-14T08:45:00.004-05:00</published><updated>2008-12-14T08:57:55.628-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediacenter'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='sagetv'/><category scheme='http://www.blogger.com/atom/ns#' term='metadata'/><title type='text'>Batch Metadata Tools gets Custom Content Proivder</title><content type='html'>As of version 1.12, the &lt;a href="http://code.google.com/p/customsagetv/wiki/BatchMetadataImporter"&gt;Batch Metadata Tools&lt;/a&gt; now has a "build your own content provider".  This new feature, called a &lt;a href="http://code.google.com/p/customsagetv/wiki/CompositeProvider"&gt;CompositeMetadataProvider&lt;/a&gt;, is basically a way to compose or build a new content provider from 2 other content providers, using only configuration.&lt;br /&gt;&lt;br /&gt;For example, you can create a new content provider that uses the IMDB provider to search, but then uses themovidedb.com provider to fetch the details and thumbnail information.  You can also configure which fields from the search provider that you want to use instead of those in the detail provider.&lt;br /&gt;&lt;br /&gt;This new composite provider model may be a little tricky to understand at first, but it opens up some great potential to pull content from multiple sources when fetching metadata information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-2844668763352753718?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/customsagetv/wiki/BatchMetadataImporter' title='Batch Metadata Tools gets Custom Content Proivder'/><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/2844668763352753718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=2844668763352753718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/2844668763352753718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/2844668763352753718'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/12/batch-metadata-tools-gets-custom.html' title='Batch Metadata Tools gets Custom Content Proivder'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-4683541116541648846</id><published>2008-12-13T09:27:00.003-05:00</published><updated>2008-12-14T08:57:43.805-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediacenter'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='sagetv'/><category scheme='http://www.blogger.com/atom/ns#' term='metadata'/><title type='text'>Batch Metadata Tools gets new Metadata Provider</title><content type='html'>Last week I applied for an api_key for &lt;a href="http://www.themoviedb.org/"&gt;themoviedb.com&lt;/a&gt; for the &lt;a href="http://code.google.com/p/customsagetv/wiki/BatchMetadataImporter"&gt;Batch Metadata Tools&lt;/a&gt; project, and it was granted.  Then within a couple of hours, I had the full integration with &lt;a href="http://www.themoviedb.org/"&gt;themoviedb.com&lt;/a&gt; complete.&lt;br /&gt;&lt;br /&gt;Their api is really simple.  It mainly consists of two commands; Search and GetInfo.  The search takes a single search argument and returns a list of matches, and the get info command will return back the complete movie information for a given match.  Simple and easy.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/customsagetv/wiki/BatchMetadataImporter"&gt;Batch Metadata Tools&lt;/a&gt; is now at version 1.11, and you can red more about how to use this new provider in the &lt;a href="http://code.google.com/p/customsagetv/wiki/TheMovieDBProvider"&gt;project wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;About Batch Metadata Tools&lt;/b&gt;&lt;br /&gt;The Batch Metadata Tools project is a small java project that provide movie information and cover art for movie files.  Currently it's used within the &lt;a href="http://forums.sagetv.com/forums/showthread.php?t=34301"&gt;SageTV community&lt;/a&gt; for fetching movie information when you import a large collection of movies.  Although it is currently used for SageTV, it supports a pluggable output provider, so that it could be used to read/write other formats.&lt;br /&gt;&lt;br /&gt;Currently the Batch Metadata Tools has search providers for IMDB, DVDProfiler, and themoviedb.com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-4683541116541648846?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/customsagetv/wiki/BatchMetadataImporter' title='Batch Metadata Tools gets new Metadata Provider'/><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/4683541116541648846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=4683541116541648846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/4683541116541648846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/4683541116541648846'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/12/batch-metadat-tools-gets-new-metadata.html' title='Batch Metadata Tools gets new Metadata Provider'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-4532330952084804131</id><published>2008-12-04T09:21:00.001-05:00</published><updated>2008-12-14T08:58:26.659-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediacenter'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Popcorn Hour A-110</title><content type='html'>This week, I had the pleasure of trying out a new &lt;a href="http://www.popcornhour.com/onlinestore/index.php?pluginoption=catalog&amp;task=info&amp;item_id=10&amp;main_id=0&amp;category_id="&gt;Popcorn Hour A-110&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It would seem that this device is marketed at the regular consumer that just wants to watch HD content, without the hassle of configuring too much software/hardware.&lt;br /&gt;&lt;br /&gt;If my brother-in-law is a measure of the common person, then I think the unit falls short.  I have it now, because he could not get it working.  When I got the unit, I plugged it in, and the networking was configured for a static IP.  Because of that, pressing any option, other than Settings caused the unit to lock up.&lt;br /&gt;&lt;br /&gt;After I changed the IP to use DHCP, it worked fine.  I configured it to go against my media shares, and it played .mkv files, .ts files (HDPVR), and regular divx/xvid files.  The responsiveness of the unit was very good for starting and stopping the playback of a file.  Much faster than my SageTV HD-100.  But the menus were much more sluggish, especially the online vidoes.&lt;br /&gt;&lt;br /&gt;The online videos section is quite rich.  There is lots of selection, but the UI feels slow to render.&lt;br /&gt;&lt;br /&gt;A few months back, I showed my SageTV setup to my brother-in-law, and he wanted it.  He didn't need/want the PVR functionality, just the distributed nature of the system, and the HD-100 for HD content.  He is setup now with an Xbox running XBMC, which serves his needs quite well, except for HD content.&lt;br /&gt;&lt;br /&gt;I'm a huge SageTV fan, but I could not bring myself to recommend SageTV to him, since I did not want to spend my days supporting his setup, and mine.  So, I recommended that he get a popcorn hour; plug and play.  Well, as it turns out, I still need to support him, which is disappointing, to say the least.&lt;br /&gt;&lt;br /&gt;Of course, had I known that SageTV was going to be releasing a STB, and not just an extender, then I would have told him to wait for the SageTV STB.  It's too bad they didn't run a pre press release stating their intentions.&lt;br /&gt;&lt;br /&gt;Today, there are several options for HD STB Media Players.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.popcornhour.com/onlinestore/index.php?pluginoption=catalog&amp;task=info&amp;item_id=10&amp;main_id=0&amp;category_id="&gt;Popcorn Hour&lt;/a&gt;&lt;br /&gt;&lt;li&gt;AppleTV (Running &lt;a href="http://xbmc.org/"&gt;XBMC&lt;/a&gt;)&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.sagetv.com/hd_theater.html"&gt;SageTV HD Theater&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I think that now that I have played with the Popcorn Hour, it is a nice device.  UI is very spartan, but functional.  But, I think that if I wanted just a HD media center, then I'd either get the Apple TV and run XBMC on it, or I'd get the SageTV HD Theatre.  Given my setup I would lean towards the SageTV HD Theatre, since I already have SageTV installed.  If I had nothing, and I knew my needs didn't include a PVR, then I'd probably get the Apple TV running XBMC.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Of course the lesson learned here, is that no matter how much you think a device is easy to use, leave it up the consumer to prove you wrong every time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-4532330952084804131?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.popcornhour.com/onlinestore/index.php?pluginoption=catalog&amp;task=info&amp;item_id=10&amp;main_id=0&amp;category_id=' title='Popcorn Hour A-110'/><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/4532330952084804131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=4532330952084804131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/4532330952084804131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/4532330952084804131'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/12/popcorn-hour-110.html' title='Popcorn Hour A-110'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-6936429033435572969</id><published>2008-10-15T13:01:00.003-04:00</published><updated>2008-10-15T13:16:55.386-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediacenter'/><category scheme='http://www.blogger.com/atom/ns#' term='sagetv'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='rpc'/><title type='text'>Rest APIs for SageTV</title><content type='html'>Last week I reported that I had created a Java RPC api for SageTV.  This week I've released the Rest API addition.&lt;br /&gt;&lt;br /&gt;Using the Rest APIs you can access any of the SageTV services using a simple Url syntax.  It helps to know and understand the javadoc, since the Rest APIs follow that structure.&lt;br /&gt;&lt;br /&gt;For example to tell SageTV to refresh its media file collection, you can use the following url:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;http://server:8080/sagex/rpcXml/Global/RunLibraryImportScan/false&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or if you wanted to find a list of clients connected to your server:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;http://server:8080/sagex/rpcXml/Global/GetConnectedClients&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All responses are returned as Xml and documented in the &lt;a href="http://code.google.com/p/customsagetv/wiki/XmlRPCQuickStart"&gt;project's wiki&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-6936429033435572969?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/customsagetv/wiki/XmlRPCQuickStart' title='Rest APIs for SageTV'/><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/6936429033435572969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=6936429033435572969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/6936429033435572969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/6936429033435572969'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/10/rest-apis-for-sagetv.html' title='Rest APIs for SageTV'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-2850464325878867738</id><published>2008-10-06T13:30:00.002-04:00</published><updated>2008-10-06T14:08:11.854-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><title type='text'>Java 5 Features - Part 1 - Formatting</title><content type='html'>I've been using Java for a long time, and one of the first comments I made about Java, when I switched from C, was "Where's printf?".   Most people will never need to use printf, and in the few cases that you need to format something, you can use Java's MessageFormat class, at least that's what Java enthusiasts would have you believe.&lt;br /&gt;&lt;br /&gt;As you may know, Java 5 introduced the printf() function.  Even though I knew it was there, I still resisted using it until recently.  And now, I can't imagine not having it.  I don't know why I resisted using it?  I used Generics as soon as it was availble, but printf() just eluded me, even though I found it to a great function in C.&lt;br /&gt;&lt;br /&gt;I may be one of the last people that still write command line applications.  I like command line applications, and a well written command line application can support a gui, if needed.  But, command line applications require a lot of printing to the console screen.  In java, this resulted in a lot of ugly code like&lt;br /&gt;&lt;br /&gt;&lt;code&gt;System.out.println("Unable to open File: " + file.getAbsolutePath() + " for writing.  Please check permissions.");&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;But using printf, you can clean that up a little....&lt;br /&gt;&lt;code&gt;System.out.printf("Unable to open File: %s for writing.  Please check permissions.", file.getAbsolutePath());&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I don't suggest that you abuse the printf function, but know it's there.  Also know that the String function has a static method for using printf formatting.  This can be handy at times when you need to log a lot of data in a single line, or if you need to simply format a String for some reason.&lt;br /&gt;&lt;br /&gt;For example,&lt;br /&gt;&lt;code&gt;log.debug(String.format("The Process: %s took %sms to run.", process, time));&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;code&gt;String msg = String.format("%-20s: %s", cmd, description);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The whole &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax"&gt;printf&lt;/a&gt; function can do a lot of pretty complex formatting, so check it out, and the next your are printing messages to the console, just maybe you'll use printf().&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-2850464325878867738?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/2850464325878867738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=2850464325878867738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/2850464325878867738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/2850464325878867738'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/09/java-5-features-part-1-formatting.html' title='Java 5 Features - Part 1 - Formatting'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-4427566710642819883</id><published>2008-10-06T11:54:00.004-04:00</published><updated>2008-10-06T12:04:37.234-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediacenter'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='sagetv'/><category scheme='http://www.blogger.com/atom/ns#' term='rpc'/><title type='text'>Java RPC for SageTV</title><content type='html'>I released a &lt;a href="http://code.google.com/p/customsagetv/wiki/SageTVapi"&gt;Java RPC library for SageTV&lt;/a&gt;.  Sometimes, I find myself needing remote access to SageTV to do things that are just not convenient to do from the SageUI or the web server interface.&lt;br /&gt;&lt;br /&gt;Initially the small project started out as a part of the GUI redesign of the &lt;a href="http://code.google.com/p/customsagetv/wiki/BatchMetadataImporter"&gt;Batch Metadata&lt;/a&gt; tools that I released earlier, but I thought it would be useful in other cases.  (The GUI redesign is not released yet, but it's getting there)&lt;br /&gt;&lt;br /&gt;The API is completely generated from the public SageTV javadoc, so it is complete.  Also, the API enables you to write code and then choose to either embed it in SageTV or run it externally.&lt;br /&gt;&lt;br /&gt;An example use of this api would include... Write a small Java utility to find all Watched TV Shows and then move them to an archival area.  Or, on a nightly basis, find all HD recorded shows and transcode them into SD so that your SD MVP extenders can play them as well.&lt;br /&gt;&lt;br /&gt;Both the client and the server are included in the same small jar (~70k), and the client will attempt to automatically find the running RPC server, so it should be zero configuration from the client side.&lt;br /&gt;&lt;br /&gt;I hope the API may be of use to people that want to write java applications that interact with SageTV.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-4427566710642819883?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/customsagetv/wiki/SageTVapi' title='Java RPC for SageTV'/><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/4427566710642819883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=4427566710642819883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/4427566710642819883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/4427566710642819883'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/10/java-rpc-for-sagetv.html' title='Java RPC for SageTV'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-3772879856084512916</id><published>2008-09-18T13:17:00.010-04:00</published><updated>2008-09-29T09:45:54.063-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediacenter'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='sagetv'/><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><title type='text'>Media Center / PVR Concept</title><content type='html'>Recently, I had an idea for an open concept Media Center and PVR.    This concept includes a 3 tier system consisting of a Front End, Application Server, and Backend.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The First Tier&lt;/span&gt;&lt;br /&gt;The Front End consists of an Html/Css/Javascript rendering engine  combined with a media player.   WebKit and Mplayer would be a good choices for this, since both can already be ported to different hardware, including PCs and low powered devices.&lt;br /&gt;&lt;br /&gt;Using Html  as the front end seems like a logical choice since there is a large pool of existing web developers that are familiar with technologies.    The Front End engine will also require a robust media player engine such as mplayer or vlc.  Html pages can embed video windows into their pages, as when displaying the Guide data, or play fullscreen, when watching regular TV or movies.&lt;br /&gt;&lt;br /&gt;The Html UI itself would have several common branded UI elements, such as input boxes, tables, buttons, etc, and Application Designers would be encouraged to leverage those UI elements so that themes would would work with their custom applications.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Second Tier&lt;/span&gt;&lt;br /&gt;The second tier would be an Application Server.  My choice for this, because I use java, would be to use Tomcat or Jetty as the server.  The server's role would be to serve up resources to the Front End and to handle Rest services.     The Server, since it is a standard Application Server, can host any number of custom, server side applications.  The applications would be deployed to the Server and then accessible to any of the clients.    There would be a well defined set of restful services that would define the core interactions between the Client and the Application Server.&lt;br /&gt;&lt;br /&gt;Two standard applications that would be deployed on the the Server would be a Media Center application and a PVR Application.  These 2 core applications would simply be pluggable proxy applications that proxy Front End requests to the Back End.   For example, the Frond End may send to a request to the Server for a list of all movies in the Media Center.  The Server would dispatch that request to one or more Backend plugins, and send the formatted results to the Front End.  The Server, in this case, would accept plugins for different Back Ends, and the server could, in theory, utilize multiple backends or different types.  Examples of backends, could include MythTV or SageTV.&lt;br /&gt;&lt;br /&gt;When media is being streamed to the Client, it would either do so via a proxy service in the Application Server, or the Client would play the Url directly from the backend.  Using this model, if a back end can support exporting a media streams over http, then it can elect to have its stream read directly by the client.  In the case where the back end cannot export it's media stream over http, then the proxy application in the application server would provide an http stream to the client.  But, even if a client is receiving a stream directly from the backend, it would still be required to send its commands via the application server.  In order words, the backends are media exporters only, and should not be interacted with directly from a client.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Third Tier&lt;/span&gt;&lt;br /&gt;The third tier is the Back End.   As mentioned above, a back end would probably consist of using MythTV, SageTV, or some other extensible PVR/MediaCenter that is already well established.    By using an existing backend, as a plugin, the user is not locked into any technology, and they can move between different backend solutions.  This may not be an attractive feature to backend providers, but it is an attractive feature to consumers.&lt;br /&gt;&lt;br /&gt;Keep in mind, the concept here remains the same, no matter what the actual technology that is used.  The concept is an open media center consisting of 3 tiers; Html Frontend, Application Web Server, and PVR Backend.   I've chosen Java as the preferred Application Web Server, but in reality, it could be any open web server technology.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Pros and Cons&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;Pros&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Web technologies are widely used and fairly easy to understand&lt;/li&gt;&lt;li&gt;Using a middle tier means that you don't have vendor lock in&lt;/li&gt;&lt;li&gt;Doesn't "reinvent the wheel" when it comes to PVR solutions, since you are reusing existing PVR Backends.&lt;/li&gt;&lt;li&gt;WebKit and MPlayer haven been ported to many embedded devices.&lt;/li&gt;&lt;li&gt;Rapid development and deployment of Media Center applications using Html&lt;/li&gt;&lt;li&gt;Middle Tier can proxy more than 1 back end, allowing you to add/remove backends for testing, etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;Cons&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Many systems are single tier, some are 2.  Adding in a third tier (in this case ,the middle tier) adds some complexity.&lt;/li&gt;&lt;li&gt;Html won't allow from some of the eye candy that some Media Centers are using today.&lt;/li&gt;&lt;li&gt;Interaction between the Front-end and the Middle Tier needs to be well thought out.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;I own a number of small embedded devices, such as the MVP and HD-100.  At some point, I'd like to play around with seeing how well these devices could handle a WebKit rendering engine and see if this idea could actually come to life on these devices.  I know some people have played with the MVP and have used it as a front-end to ReplayTV and MythTV.  My challenge would be so see if WebKit could actually run on these devices and be usuable as a MediaCenter/PVR front end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-3772879856084512916?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/3772879856084512916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=3772879856084512916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/3772879856084512916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/3772879856084512916'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/09/media-center-pvr-concept-solution.html' title='Media Center / PVR Concept'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-8080287392657185416</id><published>2008-09-17T15:15:00.007-04:00</published><updated>2008-09-17T15:49:00.530-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediacenter'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><category scheme='http://www.blogger.com/atom/ns#' term='sagetv'/><title type='text'>Metadata Tool Goes Visual</title><content type='html'>I originally wrote the &lt;a href="http://code.google.com/p/customsagetv/wiki/BatchMetadataImporter"&gt;Batch Metadata&lt;/a&gt; tool because I had a large collection of movies, and Sage didn't provide a way to import my existing collection with metadata.   &lt;a href="http://forums.sagetv.com/forums/downloads.php?do=file&amp;amp;id=30"&gt;Nielm's IMDB tool&lt;/a&gt; was good, but it's a one at a time solution.&lt;br /&gt;&lt;br /&gt;So, a tool was born, and it works quite well at what it's meant to do; fetch metadata and create output properites and thumbnails.   Now, I'm looking at a bigger picture, that includes full media management.  Obviously the Batch Metadata tool is a part of the solution, &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_us3iT7XKgMM/SNFcfxot4CI/AAAAAAAAAAg/R3Kbwv3Zwck/s1600-h/Screenshot-MediaTools+.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_us3iT7XKgMM/SNFcfxot4CI/AAAAAAAAAAg/R3Kbwv3Zwck/s320/Screenshot-MediaTools+.png" alt="" id="BLOGGER_PHOTO_ID_5247076741833154594" border="0" /&gt;&lt;/a&gt;and I decided to use &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt; (Google Widget Toolkit) as the UI.  I was looking for an excuse to try out GWT and this project became my excuse.&lt;br /&gt;&lt;br /&gt;I decided to make this a web application for one main reason; I like web applications.  I read my email online, my photos are online, my calendar is online, and all this translates into convenient access to my information.  I wanted my media to be accessed in the same way.  I have 7 computers in my house.  I don't use all of them, but I do use 4 of them.  I wanted to be able to quickly access my media, make changes and import new movies from any of those computers.   A web application made sense.&lt;br /&gt;&lt;br /&gt;The features that I'm looking at putting into this application include&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Media importing from local filesystem.&lt;/li&gt;&lt;li&gt;Metadata fetching (from multiple sources)&lt;/li&gt;&lt;li&gt;Batch metadata updating (from multiple sources)&lt;/li&gt;&lt;li&gt;Metadata editing&lt;/li&gt;&lt;li&gt;Cover art updating (from mulitple sources)&lt;/li&gt;&lt;li&gt;File management (moving and deleting)&lt;/li&gt;&lt;li&gt;UPnP Server&lt;/li&gt;&lt;li&gt;Media playback&lt;/li&gt;&lt;li&gt;SageTV integration&lt;/li&gt;&lt;li&gt;Handle TV media (recorded shows) as well as movies.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;This project has started.  I'm hoping to have a beta of it ready to go in a few weeks.  Obviously the beta won't include all the features, but hopefully it will provide some of the core ones.  I realize that there are a couple of web project from SageTV, but this isn't a SageTV application.  It's a web application that may or may not integrate with SageTV.  It will not run in the same java process as a SageTV server (but it could).&lt;br /&gt;&lt;br /&gt;Stay in touch.  I'll update my blog on the progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-8080287392657185416?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/8080287392657185416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=8080287392657185416' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/8080287392657185416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/8080287392657185416'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/09/metadata-tool-goes-visual.html' title='Metadata Tool Goes Visual'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_us3iT7XKgMM/SNFcfxot4CI/AAAAAAAAAAg/R3Kbwv3Zwck/s72-c/Screenshot-MediaTools+.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-8304237341467304475</id><published>2008-09-15T11:45:00.014-04:00</published><updated>2008-09-16T11:50:30.042-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mediacenter'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='sagetv'/><title type='text'>SageTV - PVR and Media Center</title><content type='html'>Several months ago I decided to take &lt;a href="http://www.sagetv.com/"&gt;SageTV&lt;/a&gt; for a spin.  I'm a long time &lt;a href="http://xbmc.org/"&gt;XBMC&lt;/a&gt; fan, but with HD becoming ubiquitous, I needed to find a solution that could deliver HD content to my TV, and XBMC on the Xbox wasn't doing it.&lt;br /&gt;&lt;br /&gt;My first experience with SageTV was a little disappointing.  I only needed a HD Media Center, and Sage's Media Center functionality is severely lacking.  But, despite that, I forged ahead with a complete SageTV install.  The final selling point for me was the SageTV could use a thin client media extender as a front end.   Shortly after installing SageTV, I purchased the &lt;a href="http://www.sagetv.com/hd_extender.html"&gt;HD100 Media Extender&lt;/a&gt; for SageTV&lt;a style="font-family: arial;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_us3iT7XKgMM/SM7_GNiEkVI/AAAAAAAAAAQ/M2l4Z2TpU0Q/s1600-h/Screenshot-SageTV+Placeshifter.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_us3iT7XKgMM/SM7_GNiEkVI/AAAAAAAAAAQ/M2l4Z2TpU0Q/s320/Screenshot-SageTV+Placeshifter.png" alt="" id="BLOGGER_PHOTO_ID_5246411098110071122" border="0" /&gt;&lt;/a&gt;.   This extender product worked flawlessly on my divx, xvid, dvd, and HD content.  Without the HD extender, SageTV is just like any other Media Center solution, except that it costs money.&lt;br /&gt;&lt;br /&gt;One of the core features missing in the SageTV Media Center is the lack of an automated metadata import tool, that can import movie metadata from external sources, such as &lt;a href="http://www.imdb.com/"&gt;IMDB&lt;/a&gt;, or other locations.  This is a standard feature in my XMBC configuration and not having it made the movie experience so much less enjoyable.  Not having this feature bothered me so much that I decided to write an external tool that could scrape movie information from several sources and allow SageTV to import that information.  This tool is the &lt;a href="http://code.google.com/p/customsagetv/wiki/BatchMetadataImporter"&gt;Batch MetaData Tool&lt;/a&gt;.  Although the Batch MetaData Tool was written with SageTV in mind, it can be extended to output it's metadata information in different formats.  I'll post more about the this tool later.&lt;br /&gt;&lt;br /&gt;Since Installing SageTV and buying the HD100, I decided to give the PVR funtionality a try.  I started out with SD content, then I purchased the &lt;a href="http://store.sagetv.com/Merchant2/merchant.mv?Screen=PROD&amp;amp;Store_Code=SOS&amp;amp;Product_Code=HDPVR&amp;amp;Category_Code=HD"&gt;HD-PVR&lt;/a&gt; and a Bell 6141 reciever and I started recording HD content.  The quality and the performance was very good.  SageTV has a very nice interface for recording TV shows, resolving conflicts, and managing recorded shows.  I still can't use it to replace my Bell dual tuner HD PVR, but I do use it to supplement it.   The great thing about having SageTV is that all of my recordings can be accessed via any computer, or extender, in the house, or even over the internet using the Placeshifter client.  Record once, Watch anywhere; a dream come true.&lt;br /&gt;&lt;br /&gt;Unfortunately, it's not all bliss.  My SageTV setup has locked up from time to time.  It seems that it is a combination of SageTV and the HD-PVR.  If I disconnect the HD-PVR, then SageTV does not lock up at all.  In fact, my SageTV was up for several months until I hooked up the HD-PVR.  This may have nothing to do with SageTV and everything to do with the HD-PVR drivers.  I'm still investigating.&lt;br /&gt;&lt;br /&gt;Just for reference, I thought I'd make a Pros and Cons list of SageTV features.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;SageTV Pros&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Stable and reliable PVR and Media Center&lt;/li&gt;&lt;li&gt;Supports SD and HD extenders&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Supports Plugins&lt;/li&gt;&lt;li&gt;User-friendly UI&lt;/li&gt;&lt;li&gt;Java based (not everyone would consider this a Pro, but I do)&lt;/li&gt;&lt;li&gt;Runs on Windows/Linux/Mac&lt;/li&gt;&lt;li&gt;Has built-in EPG data&lt;/li&gt;&lt;li&gt;Great at managing recordings&lt;/li&gt;&lt;li&gt;Placeshifter that turns SageTV into a Sling like appliance.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;SageTV Cons&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Linux version has no trial&lt;/li&gt;&lt;li&gt;Plugin model requires learning a new Xml scripting language&lt;/li&gt;&lt;li&gt;Media Center is very lacking in features (IMDB lookup, Stacking, Genres)&lt;/li&gt;&lt;li&gt;Cost.  You license everything.  Server, Client and Extenders.&lt;/li&gt;&lt;li&gt;No UPnP Media Server or Renderer support.&lt;/li&gt;&lt;li&gt;Can't play DVDs unless they have been decrypted.&lt;/li&gt;&lt;li&gt;Can't play iso files.&lt;/li&gt;&lt;li&gt;Placeshifter can't play DVDs at all.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Despite its shortcommings, SageTV is still a great buy, in my oppinion.  Keep in mind that SageTV has a very active plugin community and many of it's shortcommings are addressed in user contributed plugins.  For example, IMDB support and Web support are both available as plugins.  Also, Microsoft Media Center converts are happy to find that there is a SageMC UI replacement that seems to appeal to their visual senses.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_us3iT7XKgMM/SM8KIwCzQQI/AAAAAAAAAAY/WuJhc4pmETo/s1600-h/Screenshot-SageTV+Placeshifter-1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_us3iT7XKgMM/SM8KIwCzQQI/AAAAAAAAAAY/WuJhc4pmETo/s320/Screenshot-SageTV+Placeshifter-1.png" alt="" id="BLOGGER_PHOTO_ID_5246423236361797890" border="0" /&gt;&lt;/a&gt;If you want a slick HD setup, without a computer in the living room,  then SageTV is your answer.  It may not be the most visually appealing software, but it will get the job done.  If you plan on having a full blown computer in the livingroom, then perhaps something free and open source might be a better option.  When I first bought SageTV, XMBC for Linux was not available.  Given all that I really wanted was a HD Media Center with lots of functionality, then XMBC for Linux would be been a great choice.   It would have required that I put a computer in the livingroom, but given what I've spent on SageTV licenses and hardware (HD-PVR and HD100), I could have put a computer in the livingroom.&lt;br /&gt;&lt;br /&gt;So, I've jumped into SageTV with both feet.  My next steps are to personalize it and make it better for my needs.  To achieve this, I've compiled a list of projects that I'm either working on, or plan to work on, in order to make SageTV better suit my needs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Proposed Personal Projects&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;GWT based media management tool (extending what I've already done with the Batch MetaData Tool) (&lt;span style="font-style: italic;"&gt;in progress&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add in UPnP Server support so that I can use my Xbox's as SD clients, and potentially a PS3 as a client. (&lt;span style="font-style: italic;"&gt;researching&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Remote API for SageTV (Export the SageAPI as a set of restful services) (&lt;span style="font-style: italic;"&gt;in progress&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;GWT based plugin manager.  Tool that will show plugins, and allow you install them from the web interface. (&lt;span style="font-style: italic;"&gt;researching&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Stay in touch, and I'll keep you posted on how I make out with these ambitious projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-8304237341467304475?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/8304237341467304475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=8304237341467304475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/8304237341467304475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/8304237341467304475'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/09/sagetv-pvr-and-media-center.html' title='SageTV - PVR and Media Center'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_us3iT7XKgMM/SM7_GNiEkVI/AAAAAAAAAAQ/M2l4Z2TpU0Q/s72-c/Screenshot-SageTV+Placeshifter.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6960901088048265512.post-3506036562760056098</id><published>2008-09-12T12:48:00.007-04:00</published><updated>2008-09-15T21:41:13.876-04:00</updated><title type='text'>First Contact</title><content type='html'>&lt;span style="font-family:arial;"&gt;I play with a lot of technologies, mainly java enabled ones, but still, I do my share of testing the bleeding edge.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;As I dabble in each of these new and old technologies, I find myself making notes about things I like and things I don't like.  I thought it might prove useful to others if I shared my experiences as I investigate and use technologies.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Over the past year, I've played with, OSGI, UPnP, GWT, MythTV, SageTV, and extending my knowledge of the Java language.  I have 13 years experience programming online commerce applications.  10 of those years were spent in Java.  The first few years I spent in C, until I was forced to move to Java.  I resisted the change, but now I am very much a Java technology evangelist.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Over the next few months, I'll post articles on my experiences with technology.  Some of the upcoming ideas that I'm currently working on include....&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;Writing applications using GWT&lt;/li&gt;&lt;li&gt;MythTV as a SageTV network encoder&lt;/li&gt;&lt;li&gt;Embedding OSGI in existing applications&lt;/li&gt;&lt;li&gt;Building a UPnP Server&lt;/li&gt;&lt;li&gt;Java Lessons&lt;/li&gt;&lt;li&gt;SageTV experiences&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:arial;"&gt;Stay tuned, and feedback is appreciated.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6960901088048265512-3506036562760056098?l=technosmatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technosmatter.blogspot.com/feeds/3506036562760056098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6960901088048265512&amp;postID=3506036562760056098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/3506036562760056098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6960901088048265512/posts/default/3506036562760056098'/><link rel='alternate' type='text/html' href='http://technosmatter.blogspot.com/2008/09/first-contact.html' title='First Contact'/><author><name>Sean Stuckless</name><uri>http://www.blogger.com/profile/07013244283031476859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
